Page 1 sur 1

[..] Problème avec AutoIX3

Posté : lun. 09 nov. 2009 20:56
par lludol
Bonjour,
J'ai vu que l'on pouvait utiliser les fonctions d'autoit dans d'autres langages de programmation.
J'ai voulu le tester avec le langage C, avec Visual C++ Express : ça fonctionne pas !!
J'ai testé avec l'exemple (dans le dossier d'installation de autoit) : la compilation ne fonctionne pas !!
J'ai aussi mis la dll AutoItX3 dans "C:\Windows\system32\" mais ça change rien (c'est sur un autre site que j'ai vu qu'il fallait la mettre là).
Je pense que le problème vient de la dll... mais ou la placer ??

Aidez moi SVP.
Merci d'avance...

Re: [..] Problème avec AutoIX3

Posté : lun. 09 nov. 2009 21:21
par Tlem
Avez-vous lu l'aide (C:\Program Files\AutoIt3\AutoItX\AutoItX.chm) ?

Avez-vous copié et enregistré la dll correspondante à votre environnement (AutoItX3.dll ou AutoItX3_x64.dll) ?

Re: [..] Problème avec AutoIX3

Posté : lun. 09 nov. 2009 21:30
par lludol
Oui j'ai lu l'aide et j'ai fait ce qu'ils disent avec la dll (et avec la bonne dll).
Mais ça ne fonctionne pas !

Re: [..] Problème avec AutoIX3

Posté : lun. 09 nov. 2009 21:49
par Tlem
Si vous avez lu ma signature, vous comprendrez que votre réponse n'est pas suffisante.

Je viens de tester à l'instant les deux exemples du dossier C:\Program Files\AutoIt3\AutoItX\ActiveX\VBScript, et ils fonctionnent parfaitement !!!
Peut être avez-vous omis que vous êtes sur un système Français et que AutoIt à été développé sur un système Anglais ... :roll:

Re: [..] Problème avec AutoIX3

Posté : mar. 10 nov. 2009 16:52
par lludol
Bonjour,
Voici ce que j'ai fait :
J'ai testé VC6 (le dossier dans StandardDLL) : pour le lange C avec Visual C++ Express : j'ai ouvert "main.vcproj".
J'ai rien modifié et j'ai appuyé sur F5 pour la compilation. Dans la fenêtre sortie j'ai ça :

Code : Tout sélectionner

1>------ Début de la génération : Projet : main, Configuration : Debug Win32 ------
1>Compilation en cours...
1>main.cpp
1>c:\program files\autoit3\autoitx\standarddll\vc6\example\main.cpp(17) : error C2664: 'AU3_Run' : impossible de convertir le paramètre 1 de 'const char [12]' en 'LPCWSTR'
1>        Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
1>c:\program files\autoit3\autoitx\standarddll\vc6\example\main.cpp(18) : error C2664: 'AU3_WinWaitActive' : impossible de convertir le paramètre 1 de 'const char [11]' en 'LPCWSTR'
1>        Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
1>c:\program files\autoit3\autoitx\standarddll\vc6\example\main.cpp(19) : error C2664: 'AU3_Send' : impossible de convertir le paramètre 1 de 'const char [9]' en 'LPCWSTR'
1>        Les types pointés n'ont aucun rapport entre eux ; conversion nécessitant reinterpret_cast, cast de style C ou cast de style fonction
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Program Files\AutoIt3\AutoItX\StandardDLL\VC6\Example\Debug\BuildLog.htm"
1>main - 3 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
J'ai bien fait ce qui est marqué dans l'aide avec la dll.
Comment faire pour que ça fonctionne ??
Et peut être c'est parce que je suis sous Windows 7...
Et C:\Program Files\AutoIt3\AutoItX\ActiveX\VBScript fonctionne aussi sur mon pc !

Re: [..] Problème avec AutoIX3

Posté : mar. 10 nov. 2009 20:12
par orax
J'ai essayé avec Visual C++ 6 sous Windows XP et j'ai les mêmes erreurs... Image
Par contre, si dans le WinMain() je ne mets que MessageBox(NULL, "test", "Text:", MB_OK);, je n'ai pas d'erreur à la compilation et j'ai bien la MessageBox qui s'affiche.

Re: [..] Problème avec AutoIX3

Posté : mer. 11 nov. 2009 14:15
par lludol
Ca ne fonctionne toujours pas !
J'ai mis MessageBox(NULL, "test", "Text:", MB_OK) dans WinMain() : int APIENTRY WinMain(MessageBox(NULL, "test", "Text:", MB_OK)) et ça ne fonctionne pas.
Et dans la fenêtre sortie il y a ça :
1>------ Début de la génération : Projet : main, Configuration : Debug Win32 ------
1>Compilation en cours...
1>main.cpp
1>c:\program files\autoit3\autoitx\standarddll\vc6\example\main.cpp(11) : error C2448: 'WinMain' : l'initialiseur de style fonction semble être une définition de fonction
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Program Files\AutoIt3\AutoItX\StandardDLL\VC6\Example\Debug\BuildLog.htm"
1>main - 1 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

Donc maintenant, ça vient de WinMain()...
POURQUOI...
J'ai regardé sur le forum officiel mais j'ai rien trouvé !

Re: [..] Problème avec AutoIX3

Posté : mer. 11 nov. 2009 18:01
par orax
:shock: Eh... quand je dis dans le WinMain(), je veux dire dans la fonction WinMain().

Code : Tout sélectionner

#include <Windows.h>
#include "AutoIt3.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    MessageBox(NULL, "test", "Text:", MB_OK);

    return 0;
}

Re: [..] Problème avec AutoIX3

Posté : jeu. 12 nov. 2009 20:06
par lludol
A OK lol... je suis bête...
Mais après, si je met :

Code : Tout sélectionner

#include <Windows.h>
#include "AutoIt3.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    AU3_Run("C:\Program Files\Spybot - Search & Destroy\SpybotSD.exe"); //fonctionne très bien si compilé avec AutoIt

    return 0;
}
Voici ce qu'il y a dans la fenêtre sortie :
1>------ Début de la génération : Projet : main, Configuration : Debug Win32 ------
1>Compilation en cours...
1>main.cpp
1>c:\program files\autoit3\autoitx\standarddll\vc6\example\main.cpp(9) : warning C4129: 'P' : caractère de séquence d'échappement non reconnu
1>c:\program files\autoit3\autoitx\standarddll\vc6\example\main.cpp(9) : warning C4129: 'S' : caractère de séquence d'échappement non reconnu
1>c:\program files\autoit3\autoitx\standarddll\vc6\example\main.cpp(9) : warning C4129: 'S' : caractère de séquence d'échappement non reconnu
1>c:\program files\autoit3\autoitx\standarddll\vc6\example\main.cpp(9) : error C2660: 'AU3_Run' : la fonction ne prend pas 1 arguments
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Program Files\AutoIt3\AutoItX\StandardDLL\VC6\Example\Debug\BuildLog.htm"
1>main - 1 erreur(s), 3 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

Et donc, ça ne fonctionne toujours pas !

Re: [..] Problème avec AutoIX3

Posté : jeu. 12 nov. 2009 23:45
par orax
Pour l'exemple précédent, j'avais dit n'importe quoi Image puisque MessageBox() n'est pas une fonction de la DLL autoit, donc forcément c'est pour ça que ça marchait... :lol:
Et sinon, pour les warning, je crois qu'il faut doubler les "\", ce qui donnerait "C:\\Program Files\\Spybot - Search & Destroy\\SpybotSD.exe".
Pour l'erreur, je pense que AU3_Run attend non pas 1 paramètre, mais 3 paramètres. Mais même avec les 3 paramètres je doute que ça marche, puisque le premier paramètre attend un LPCWSTR et on lui donne un char[]. :cry: Il me semble qu'il faut utiliser MultiByteToWideChar ou un truc comme ça pour faire la conversion, mais je n'en suis pas sûr. Peut-être que sur un forum de C++ ils seraient plus à même de résoudre le problème.
Il y a quand même un truc qui marche : AU3_WinMinimizeAll(); (en mettant AutoItX3.dll dans le même répertoire du programme).


:arrow: Edition !!! En fait, en mettant AU3_Run(L"C:\\Program Files\\Spybot - Search & Destroy\\SpybotSD.exe",L"",SW_SHOW); ou un truc du genre ça devrait marcher. Pour les paramètres qui demande un LPCWSTR, je pense qu'il faut ajouter un L avant, à moins que ce soit plus propre avec MultiByteToWideChar()...

Re: [..] Problème avec AutoIX3

Posté : ven. 13 nov. 2009 20:04
par lludol
OK !
Donc c'est galère !!
Bon, je laisse tomber !

Re: [..] Problème avec AutoIX3

Posté : ven. 13 nov. 2009 21:07
par orax
C'est pas tellement la galère, il faut juste ajouter un L. Voilà un exemple avec ping :

Code : Tout sélectionner

#include <Windows.h>
#include "AutoIt3.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    AU3_Run(L"ping -t yahoo.fr",L"",SW_SHOW);

    return 0;
}
C'est juste que je ne sais pas si c'est vraiment la bonne manière de faire.

Re: [..] Problème avec AutoIX3

Posté : jeu. 27 janv. 2011 16:29
par FastFrench
Bonjour,

le plus simple est de faire un projet avec le support Unicode activé (suffit de trouver l'option à la création du projet, ou - mais ça pose souvent des problèmes - après coup dans les propriétés du projet). Ca lui indique que par défaut les chaînes sont en WCHAR* (LP[C]WSTR) et non en char* (LP[C]STR).

Dans une version non Unicode, l'utilisation du L avant les chaînes littérale est tout à fait correct pour forcer la conversion en WCHAR. Par contre c'est plus compliqué avec les variables de type chaîne...

Edit : Oops... j'avais pas fait attention à la date du dernier post :p Pas très active cette section du forum...
FF