[Tuto] Divers Exemples de DllCall()

Espace contenant des tutoriels divers concernant AutoIt.
Règles du forum
.

Tutoriel "La programmation avec Autoit" : https://openclassrooms.com/fr/courses/1 ... vec-autoit
Répondre
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

[Tuto] Divers Exemples de DllCall()

#1

Message par SagePourpre »

Le but de ce sujet est de partager vos utilisations de DllCall
afin d'en faire profiter les autres.

:arrow: Si vous n'y connaissez rien, allez tout d'abord voir ce tutoriel pour
vous initier à DllCall et ces possibilités énormes .
http://autoitscript.fr/forum/viewtopic. ... 147#p36147

:arrow: Ensuite, pour pouvoir voir les fonctions à l'intérieur d'un dll précis,
vous aurez besoin de Dll Export Viewer
Site : http://www.nirsoft.net/utils/dll_export_viewer.html
Lien de téléchargement direct ( 32 bits ) : http://www.nirsoft.net/utils/dllexp.zip
Lien de téléchargement direct ( 64 bits ) : http://www.nirsoft.net/utils/dllexp-x64.zip

:arrow: Enfin, si ce n'a pas été fait, un petit tour dans l'aide d'autoit pour la fonction DllCall peut vous
éclairer un peu plus.


:arrow: Finalement, connaître le nom d'une fonction ne suffit pas, pour l'utiliser, il vous faut les renseignements
sur son fonctionnement. Vous pourrez trouver ces renseignement très facilement dans le cas
des dll de Windows sur MSDN : http://msdn.microsoft.com/en-us/library ... 85%29.aspx
(Fonction Sleep dans le lien suivant )



Afin que le tout soit clair, veuillez utiliser la formule suivante

Courte description

Code : Tout sélectionner

DllCall()
[Spoiler]Informations supplémentaires + exemple concis [/Spoiler]


*****************************************************


P.s. : Si vous voulez apprendre à utiliser DllCall correctement, je vous conseille vivement
de commencer par le tutoriel au début de ce message ( tutoriel en anglais )




edit : Pour commencer, voici un exemple facile à comprendre

Message Box

Code : Tout sélectionner

DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "text", "str", "title", "int", 0)
► Afficher le texte
Modifié en dernier par SagePourpre le jeu. 25 mars 2010 06:32, modifié 4 fois.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [..] Vos DllCall()

#2

Message par SagePourpre »

Déplacer une fenêtre à l'aide de la souris.

Code : Tout sélectionner

DllCall("user32.dll", "long", "SendMessage", "hwnd", $gui, "int", $WM_SYSCOMMAND, "int", 0xF009, "int", 0)
► Afficher le texte

Ouvrir un processus

Code : Tout sélectionner

$ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
► Afficher le texte


Libérer la mémoire vive d'une application

Code : Tout sélectionner

DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
► Afficher le texte
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#3

Message par SagePourpre »

Obtenir la position du curseur de la souris

Code : Tout sélectionner

$tPOINTAPI = DllStructCreate("long x;long y")
DllCall("user32.dll","long","GetCursorPos","ptr",DllStructGetPtr($tPOINTAPI))
► Afficher le texte
Obtenir les informations sur un Volume (complexe)
Utilisation de DllStructCreate, DllStructGetPtr et DllStructGetData

Code : Tout sélectionner

DllCall('kernel32.dll','long','GetVolumeInformationW', _
'ptr' , DllStructGetPtr($lpRootPathName), _
'ptr' , DllStructGetPtr($lpVolumeNameBuffer), _
'long', $nVolumeNameSize, _
'ptr' , DllStructGetPtr($lpVolumeSerialNumber), _
'ptr' , DllStructGetPtr($lpMacimumComponentLength), _
'ptr' , DllStructGetPtr($lpFileSystemFlags), _
'ptr' , DllStructGetPtr($lpFileSystemNameBuffer), _
'long',$nFileSystemNameSize)
► Afficher le texte

J'ai traduis ces 2 exemples trouvés sur autoit.de. 8)
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#4

Message par SagePourpre »

Qu'est-ce que j'ai pour vous aujourd'hui ?
*pige 1 bout de papier dans son chapeau de dllcall*


Appui sur une touche

Code : Tout sélectionner

DllCall ("user32.dll","int","keybd_event","int",0x20,"int",0,"long",0,"long",0)
► Afficher le texte
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#5

Message par SagePourpre »

Astuce du jour : Si vous êtes avide d'étudier plus de DllCall, les #include d'autoit
sont une bonne manière de voir les dllcall en action. (exemple : GdiPlus.au3)


Un très bon #include à ajouter dans votre librairie et qui de plus regorge de dllcall
de toutes sortes ...

WinAPIEx UDF
http://www.autoitscript.com/forum/index ... opic=98712
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#6

Message par timmalos »

Tuto tres utile, bravo ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#7

Message par Tlem »

Pour WinAPIEx, j'ai prévu de le rajouter dans le prochain Pack AutoIt-Fr. ;)
UDF, api, properties, exemples et fichier d'aide, cet add-on est vraiment très complet. 8)

Il faut juste que je regarde comment je pourrait le rajouter dans l'aide principale de AutoIt. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
GMib
Niveau 4
Niveau 4
Messages : 57
Enregistré le : sam. 23 janv. 2010 12:39
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#8

Message par GMib »

Il me semble que les sources de l'aide son disponible.
http://www.autoitscript.com/autoit3/fil ... .0-src.exe
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#9

Message par Tlem »

Certes, mais cela ne suffit pas. Il faut aussi des UDF non présents et le HTML Help Author de Microsoft. ;)

Mais j'avais déjà tout cà. ;)
J'ai donc terminé de re-créer le fichier AutoIt.chm pour prendre en compte WinAPIEx.chm. 8)

Par contre, le fichier AutoIt.chm contient deux pages HTML dont une qui présente la dernière version de AutoIt. Donc le fichier AutoIt.chm contient le numéro de la version en cours de AutoIt. :roll:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#10

Message par SagePourpre »

timmalos a écrit :Tuto tres utile, bravo ;)

Merci ! ...

J'aurais aimé pouvoir mettre plus de théorie pour accompagner ces quelques exemples
mais l'information sur le sujet est peu abondante.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#11

Message par Tlem »

Pour ceux ou celles qui n'ont pas envie d'attendre la prochaine version du Pack AutoIt-FR mais qui souhaiteraient obtenir la version WinAPIEx avec la modification du fichier d'aide AutoIt.chm afin de prendre en compte WinAPIEx.chm, vous pouvez télécharger une archive autoextractible qui réalise l'installation complète ici : http://www.autoitscript.fr/download/ind ... Ex_2.4.exe

*** N'oubliez pas que la page principale AutoIt.chm affichera les infos de la version 3.3.6.0 de AutoIt.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Tuto] Vos DllCall()

#12

Message par Tlem »

Mise à jour du message précédent pour WinAPIEx_2.4. :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre