[..] Problème avec AutoIX3

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
lludol
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 oct. 2009 21:15
Status : Hors ligne

[..] Problème avec AutoIX3

#1

Message 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...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#2

Message 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) ?
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é".
lludol
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 oct. 2009 21:15
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#3

Message 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 !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#4

Message 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:
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é".
lludol
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 oct. 2009 21:15
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#5

Message 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 !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#6

Message 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.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
lludol
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 oct. 2009 21:15
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#7

Message 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é !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#8

Message 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;
}
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
lludol
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 oct. 2009 21:15
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#9

Message 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 !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#10

Message 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()...
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
lludol
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 oct. 2009 21:15
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#11

Message par lludol »

OK !
Donc c'est galère !!
Bon, je laisse tomber !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#12

Message 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.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
FastFrench
Niveau 1
Niveau 1
Messages : 13
Enregistré le : mar. 25 janv. 2011 11:57
Status : Hors ligne

Re: [..] Problème avec AutoIX3

#13

Message 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
Répondre