¿Cómo puedo usar la API de Win32 en Python?
¿Cuál es la mejor y más fácil forma de hacerlo?
¿Podría darnos algunos ejemplos?¿Cómo usar las API de win32 con python?
Respuesta
PyWin32 es el camino a seguir, pero ¿cómo usarlo? Un enfoque es comenzar con un problema concreto que tenga y tratar de resolverlo. PyWin32 proporciona enlaces para las funciones de API de Win32 para los que hay muchos, y realmente tiene que elegir un objetivo específico primero.
En mi instalación de Python 2.5 (ActiveState en Windows) el paquete win32 tiene una carpeta Demos empaquetada con código de muestra de varias partes de la biblioteca.
Por ejemplo, aquí está CopyFileEx.py:
import win32file, win32api
import os
def ProgressRoutine(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred,
StreamNumber, CallbackReason, SourceFile, DestinationFile, Data):
print Data
print TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred, StreamNumber, CallbackReason, SourceFile, DestinationFile
##if TotalBytesTransferred > 100000:
## return win32file.PROGRESS_STOP
return win32file.PROGRESS_CONTINUE
temp_dir=win32api.GetTempPath()
fsrc=win32api.GetTempFileName(temp_dir,'cfe')[0]
fdst=win32api.GetTempFileName(temp_dir,'cfe')[0]
print fsrc, fdst
f=open(fsrc,'w')
f.write('xxxxxxxxxxxxxxxx\n'*32768)
f.close()
## add a couple of extra data streams
f=open(fsrc+':stream_y','w')
f.write('yyyyyyyyyyyyyyyy\n'*32768)
f.close()
f=open(fsrc+':stream_z','w')
f.write('zzzzzzzzzzzzzzzz\n'*32768)
f.close()
operation_desc='Copying '+fsrc+' to '+fdst
win32file.CopyFileEx(fsrc, fdst, ProgressRoutine, operation_desc, False, win32file.COPY_FILE_RESTARTABLE)
Se muestra cómo utilizar la función CopyFileEx con algunos otros (como GetTempPath y GetTempFileName). A partir de este ejemplo, puede obtener una "sensación general" de cómo trabajar con esta biblioteca.
Comentario de estilo: 3 líneas 'open (fn, 'w'). Write ('data')' en CPython comunican el mismo mensaje que 9 líneas 'abrir, escribir, cerrar'. – jfs
PyWin32, mencionado por @ chaos, es probablemente la opción más popular; la alternativa es ctypes que es parte de la biblioteca estándar de Python. Por ejemplo, print ctypes.windll.kernel32.GetModuleHandleA(None)
mostrará el módulo de manejo del módulo actual (EXE o DLL). Un ejemplo más extenso del uso de ctypes para obtener las API de win32 es here.
El enlace al ejemplo no funciona para mí. –
@RadimCernej: Pruebe una búsqueda en Google de 'import ctypes github'. Obtendrás muchos éxitos. O pruebe este ejemplo en GitHub que usa 'from ctypes import *': https://github.com/erochest/snippets/blob/master/win32named.py – kevinarpe
No han conseguido que pyWin32 funcione con la versión MSYS2 de Python. CTypes lo hace. –
Las funciones importantes que puede utilizar en win32 Python son los cuadros de mensaje, este es el ejemplo clásico de Aceptar o Cancelar.
result = win32api.MessageBox(None,"Do you want to open a file?", "title",1)
if result == 1:
print 'Ok'
elif result == 2:
print 'cancel'
La colección:
win32api.MessageBox(0,"msgbox", "title")
win32api.MessageBox(0,"ok cancel?", "title",1)
win32api.MessageBox(0,"abort retry ignore?", "title",2)
win32api.MessageBox(0,"yes no cancel?", "title",3)
- 1. Gui's con Win32 API
- 2. ¿Cómo crear hilos con Win32 API?
- 3. ¿Cómo usar las API de Java?
- 4. Cómo extraer automáticamente las declaraciones API de Win32 en C#?
- 5. Win32 pila API caminar con MinGW/MSYS?
- 6. Ruby win32 api interface
- 7. ¿Cómo matar procesos por nombre? (Win32 API)
- 8. Cómo convertir entre zonas horarias con API win32?
- 9. Llamadas de API de Mocking y Win32
- 10. Controle la carga de la batería con Win32 API
- 11. Cómo hacer varias ventanas usando Win32 API
- 12. tecla de acceso rápido global con API WIN32?
- 13. Win32 API analógica de envío/captura SIGTERM
- 14. ¿Cómo puedo usar valgrind con las extensiones de Python C++?
- 15. C++: implementando canalizaciones con nombre utilizando la API de Win32
- 16. C++ Win32 API documentación fuera de línea?
- 17. Creando una tabla usando Win32 API
- 18. Traducción de las llamadas a Win32 Crypto API a C# con System.Security.Cryptography
- 19. Instalar Python 2.6 sin usar el instalador en Win32
- 20. elección entre win32 API y .NET framework
- 21. Juego de bucle en Win32 API
- 22. WinRT como reemplazo de Win32 API
- 23. ¿Las ventanas Win32 son seguras?
- 24. Llamando al método Win32 API desde Java
- 25. Win32 API GetShortPathName llamada error en Fa #
- 26. Google Docs API con Python
- 27. Cómo usar Emacs con Python
- 28. Debug Break en Win32 Api funciones
- 29. Cómo usar las API privadas de SDK de iPhone
- 30. Cómo usar Corba con Python
Sólo me preguntaba, ¿Ha buscado en absoluto? http://www.google.com/search?q=python+win32+api –
sí, en realidad lo hice antes de hacer la pregunta y encontré varios resultados. mi objetivo es comenzar a aprender la solución más recomendada para mi problema. además, esa pregunta no se ha hecho antes en desbordamiento de pila, así que pensé que las buenas respuestas de programadores más experimentados pueden mostrar el camino correcto para principiantes como yo =) – kolistivra
Busqué en Google y seguí los enlaces y todavía no sé cómo . – Nosredna