Comment puis-je utiliser l'API win32 en Python?
Quelle est la meilleure et la plus simple façon de le faire?
Pouvez-vous s'il vous plaît fournir quelques exemples?Comment utiliser les API win32 avec python?
Répondre
PyWin32 est le chemin à parcourir - mais comment l'utiliser? Une approche consiste à commencer par un problème concret que vous rencontrez et à tenter de le résoudre. PyWin32 fournit des liaisons pour les fonctions API Win32 pour lesquelles il y en a beaucoup, et vous devez d'abord choisir un objectif spécifique.
Dans mon installation de Python 2.5 (ActiveState sous Windows), le paquetage win32 contient un dossier Demos contenant un exemple de code de différentes parties de la bibliothèque.
Par exemple, voici 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)
Il montre comment utiliser la fonction CopyFileEx avec quelques autres (comme GetTempPath et GetTempFileName). De cet exemple, vous pouvez avoir une «idée générale» de la façon de travailler avec cette bibliothèque.
Remarque sur le style: 3 'open (fn, 'w'). Write ('data')' les lignes dans CPython communiquent le même message que les lignes 9 'open, write, close'. – jfs
PyWin32, comme mentionné par @chaos, est probablement le choix le plus populaire; l'alternative est ctypes qui fait partie de la bibliothèque standard de Python. Par exemple, print ctypes.windll.kernel32.GetModuleHandleA(None)
affichera le module-handle du module en cours (EXE ou DLL). Un exemple plus complet d'utilisation de ctypes pour obtenir les API win32 est here.
Le lien vers l'exemple ne fonctionne pas pour moi. –
@RadimCernej: Essayez une recherche google pour 'import ctypes github'. Vous obtiendrez de nombreux hits. Ou essayez cet exemple sur GitHub qui utilise 'from ctypes import *': https://github.com/erochest/snippets/blob/master/win32named.py – kevinarpe
Ils n'ont pas eu pyWin32 pour fonctionner avec la version MSYS2 de Python. CTypes fait. –
Les fonctions importantes que vous pouvez utiliser dans win32 Python sont les boîtes de message, c'est un exemple classique de OK ou Annuler.
result = win32api.MessageBox(None,"Do you want to open a file?", "title",1)
if result == 1:
print 'Ok'
elif result == 2:
print 'cancel'
La collection:
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. Ruby win32 api interface
- 2. Comment utiliser Marshal.ReleaseComObject avec Win32 fonctions natives
- 3. win32 api pour Process.BeginOutputReadLine
- 4. Comment utiliser Numerical Python avec Python 2.6
- 5. Surveiller la charge de la batterie avec Win32 API
- 6. mysqldb sur python 2.6+ (win32)
- 7. Comment utiliser les dates dans l'axe des X avec Google API API?
- 8. python win32 extensions documentation
- 9. Comment faire pour convertir entre les fuseaux horaires avec Win32 API?
- 10. Comptage des interfaces réseau avec la fonction WSAIoctl (API WIN32)
- 11. Pamie et python-win32 question
- 12. Python Win32 - DriveInfo sur le lecteur mappé
- 13. Win32 appel API via un serivce
- 14. Comment trouvez-vous rapidement l'URL d'une API Win32 sur MSDN?
- 15. Quelle est la fonction API Win32 pour les octets privés?
- 16. Utiliser GNU gettext sur Win32
- 17. Python win32 com: comment gérer le paramètre 'out'?
- 18. Création d'un service python win32
- 19. Comment savoir si une fenêtre est active? (Win32 API)
- 20. Comment faire des appels API Win32 à partir de PHP?
- 21. Interrogation à l'aide d'objets wmi et win32.client avec python
- 22. Comment utiliser wikipedia api si elle existe?
- 23. Créer une icône en mémoire avec win32 en python
- 24. Comment puis-je utiliser le json google translate api?
- 25. Comment obtenir une liste de comptes d'utilisateur de domaine avec win32 api?
- 26. Allocation d'objet C-API Python
- 27. Comment utiliser les dates sur l'axe des x avec google chart api
- 28. Besoin d'une signature C# pour AcquireCredentialsHandle win32 api fonction
- 29. quelle API cloud utiliser - simplecloud?
- 30. Requêtes paramétrées avec psycopg2/Python DB-API et PostgreSQL
Je me demandais, avez-vous recherche à tout? http://www.google.com/search?q=python+win32+api –
oui, je l'ai fait avant de poser la question, et j'ai trouvé plusieurs résultats. mon but est de commencer à apprendre la solution la plus recommandée à mon problème. d'ailleurs, pas une telle question n'a été posée en débordement de pile avant, donc je pensais que les bonnes réponses des programmeurs plus expérimentés peuvent montrer le bon chemin à prendre pour les débutants comme moi =) – kolistivra
J'ai googlé et suivi les liens et je ne sais toujours pas comment . – Nosredna