Chinaunix首页 | 论坛 | 博客
  • 博客访问: 205272
  • 博文数量: 48
  • 博客积分: 1935
  • 博客等级: 上尉
  • 技术积分: 491
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-29 00:59
文章分类

全部博文(48)

文章存档

2011年(1)

2010年(47)

我的朋友

分类: Python/Ruby

2010-11-03 02:43:22

python win32 调用win32下的API
2010-10-30 12:24

python调用vc中的API
准备工作: 安装pywin32-210.5.win32-py2.5.exe

例1:最简单的MessageBox函数
import win32api, win32gui
import win32con, winerror,win32event,pywintypes
import sys, os,time
win32api.MessageBox(0,'hello', 'WYM',win32con.MB_OK)

例2:进程监控
#Mutex.py
mutex=None
mutex=win32event.CreateMutex(None,pywintypes.FALSE,"MutexWym")
if(win32api.GetLastError() == winerror.ERROR_ALREADY_EXISTS):
    print"Opened existing mutex object", mutex
else:
    print "Created new mutex"
time.sleep(10)
win32api.CloseHandle(mutex)
print "close Mutex"
time.sleep(10)

#MonitorProcess.py

import win32api, win32gui
import win32con, winerror,win32event ,pywintypes
import sys, os,time

STANDARD_RIGHTS_REQUIRED = 0x000F0000L
SYNCHRONIZE = 0x00100000L
MUTANT_QUERY_STATE = 0x0001
MUTEX_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE
try:
    while 1:
        time.sleep(2)
        hMutex=win32event.OpenMutex(MUTEX_ALL_ACCESS,pywintypes.FALSE,"MutexWym")
        print win32api.GetLastError()        
        if hMutex is not None:
            print "Mutex open"
            win32api.CloseHandle(hMutex)
        else:
            print "Mutex not open"
            break
except pywintypes.error, (errno, object, strerror):
    print "Error in", object, ":", strerror

如何使用kernel32的API呢
例3:
import pywintypes
import winerror, win32con
import win32api, win32event, win32file, win32pipe, win32process, win32security
import win32service, win32serviceutil, servicemanager,ntsecuritycon
from ctypes import *   #本例包括这个头文件

hMutex = windll.kernel32.CreateMutexA(None, 0, "szMutex")
#其它API同理,比如像windll.kernel32.InitializeCriticalSection() 等等


a、python中涉及的windows下的类型?
通过pywintypes 可以获得这个数据类型
b、获得窗口句柄
通过FindWindow这API来查找相应的窗口的句柄,然后发消息给这个窗口,就可以实现这个功能
ct = win32api.GetConsoleTitle()   
hd = win32gui.FindWindow(0,ct)  

win32gui.ShowWindow(hd,
0
)

 
 
 

将Python程序编译为exe可执行程序

Python很强大,这个py2exe程序能够把.py文件编译为.exe可执行文件,真是如虎添翼啊。

我注意到这个细节:这篇文章发表于 2005-6-5 23:34作者wolfg太犀利了。

原文出处:

py2exe是什么?

py2exe是一种python发布工具,可以把python脚本转换成windows下的可执行程序,不需要安装python便可运行。
py2exe现在可以用来创建使用了wxPython, Tkinter, Pmw, PyGTK, pygame, win32com client and server 等模块的程序。
详细介绍可以看它的官方网站

1. 下载安装py2exe

py2exe目前的版本是0.5.4,根据你安装的python的版本选择下载的文件
(现在是0.6.9-alswl)


安装后的文件应该在你的python安装目录下的Lib\site-packages\py2exe

2.  使用py2exe

我们先准备一个简单的python程序hello.py

# hello.py
def main():
    print "Hello, World!"
if __name__ == '__main__':
     main()

然后为使用py2exe写一个脚本setup.py

# setup.py
from distutils.core import setup
import py2exe
setup(console=["hello.py"])

运行setup.py,记得要传一个参数给它

python setup.py py2exe

应该看到一些输出信息

running py2exe
creating E:\Projects\WorkSpace\Python\build
creating E:\Projects\WorkSpace\Python\build\bdist.win32
creating E:\Projects\WorkSpace\Python\build\bdist.win32\winexe
creating E:\Projects\WorkSpace\Python\build\bdist.win32\winexe\collect
creating E:\Projects\WorkSpace\Python\build\bdist.win32\winexe\temp
creating E:\Projects\WorkSpace\Python\dist
*** searching for required modules ***
*** parsing results ***
creating python loader for extension '_sre'
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
byte-compiling C:\Python23\lib\copy_reg.py to copy_reg.pyc
byte-compiling C:\Python23\lib\sre_compile.py to sre_compile.pyc
byte-compiling E:\Projects\WorkSpace\Python\build\bdist.win32\winexe\temp\_sre.py to _sre.pyc
byte-compiling C:\Python23\lib\macpath.py to macpath.pyc
byte-compiling C:\Python23\lib\popen2.py to popen2.pyc
byte-compiling C:\Python23\lib\atexit.py to atexit.pyc
byte-compiling C:\Python23\lib\os2emxpath.py to os2emxpath.pyc
byte-compiling C:\Python23\lib\sre_constants.py to sre_constants.pyc
byte-compiling C:\Python23\lib\re.py to re.pyc
byte-compiling C:\Python23\lib\ntpath.py to ntpath.pyc
byte-compiling C:\Python23\lib\stat.py to stat.pyc
byte-compiling C:\Python23\lib\string.py to string.pyc
byte-compiling C:\Python23\lib\warnings.py to warnings.pyc
byte-compiling C:\Python23\lib\UserDict.py to UserDict.pyc
byte-compiling C:\Python23\lib\repr.py to repr.pyc
byte-compiling C:\Python23\lib\copy.py to copy.pyc
byte-compiling C:\Python23\lib\types.py to types.pyc
byte-compiling C:\Python23\lib\posixpath.py to posixpath.pyc
byte-compiling C:\Python23\lib\sre.py to sre.pyc
byte-compiling C:\Python23\lib\linecache.py to linecache.pyc
byte-compiling C:\Python23\lib\sre_parse.py to sre_parse.pyc
byte-compiling C:\Python23\lib\os.py to os.pyc
*** copy extensions ***
copying C:\Python23\DLLs\_sre.pyd ->; E:\Projects\WorkSpace\Python\dist
*** copy dlls ***

py2exe会在当前目录下生成两个目录 build和dist

build里是一些py2exe运行时产生的中间文件,dist里有最终的可执行文件

library.zip

w9xpopen.exe

python23.dll

hello.exe

现在可以运行hello.exe了

E:\Projects\WorkSpace\Python\dist>;hello
Hello, World!

不过记得如果要发布到别的机器上时,library.zip、 w9xpopen.exe、python23.dll这几个文件是必须要和hello.exe在一起的。

好了,这次先到这里,下次我们做一个wxPython的例子

最后,大家试试运行

python setup.py py2exe --help

看看py2exe都有哪些参数

版权所有 © 2010 转载本站文章请注明: 转载自
原文链接: http://dddspace.com/2009/09/python-program-will-be-compiled-into-an-executable-program-exe.html
您可以随意地转载本站的文章,但是必须在醒目位置注明来源及本站链接,不可以将本站文章商业化使用,或者修改、转换或者以本作品为基础进行创作。
3a1ff193cee606bd1e2ea554a16353ee

阅读(7432) | 评论(1) | 转发(0) |
0

上一篇:Python+PAMIE

下一篇:Use FCKeditor in Python

给主人留下些什么吧!~~

chinaunix网友2010-11-03 16:22:24

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com