[R] Pb compatibilité de script entre win 32 bits et w 64

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

[R] Pb compatibilité de script entre win 32 bits et w 64

#1

Message par fred39 »

Bonjour,
Il y a 2 ans, javais fait un script qui permettait aux utilisateurs du réseau de sauvegarder et restaurer la disposition des icônes sur le bureau.
une partie du code:

Code : Tout sélectionner

#include <GuiListView.au3>



; récupération du handle du bureau
$H_desktop = ControlGetHandle("[CLASS:Progman]", "", "SysListView321")
MsgBox(0,@ScriptName,$H_desktop)
MsgBox(0,@scriptname,_GUICtrlListView_GetItemCount($H_desktop))
; liste des éléments, et sauvegarde  de leur position dans le fichier ini.
        For $nIdx = 0 To _GUICtrlListView_GetItemCount($H_desktop) - 1
            $sIconText = _GUICtrlListView_GetItemText($H_desktop, $nIdx)
            if @error Then MsgBox(0, @scriptname, "pb lecturetexte icone" & $sIconText)
            $aPos = _GUICtrlListView_GetItemPosition($H_desktop, $nIdx)
            If @error Then MsgBox(0, @ScriptName, "Il y a eu une erreur lors de la lecture la position de l'icône " & $sIconText)
MsgBox(0,@ScriptName,$nIdx&@crlf&$sIconText&@crlf&$aPos[0]&":"&$aPos[1])

        Next

le problème, c'est que pour faire fonctionner ce script sur les Windows 7 64bits, il faut que je le compile en 64 bits.
Le parc Stations étant hétérogène 32 et 64, il est beaucoup plus simple d'avoir un seul exécutable, qui test l'archi de l'os et envois les commandes en fonction.

la fonction _GUICtrlListView_GetItemText renvois un champs vide sur le 64 quand le script est compilé en 32.
Sur les 64, le handle du bureau est
0x00010164 compilé en 32
0x0000000000010164 compilé en 64

Dans les 2 cas, on compte bien le bon nombre d'icones.

Si vous avez une idée....
merci
Modifié en dernier par fred39 le jeu. 28 mars 2013 22:03, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Pb compatibilité de script entre win 32 bits et w 6

#2

Message par jguinch »

Salut
Dans la doc de la fonction ControlListView :
Some commands may fail when using a 32-bit AutoIt process to read from a 64-bit process. Likewise commands may fail when using a 64-bit AutoIt process to read from a 32-bit process.
Donc à priori, pas d'autre solution avec _GUICtrlListView_GetItemText

En tout cas, j'adore l'idée : je vais te la piquer... :P


Edit : j'ai essayé avec ControlListView, ça plante l'explorer.
C'est pas gagné l'affaire : http://www.autoitscript.com/forum/topic ... windows-7/
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Pb compatibilité de script entre win 32 bits et w 6

#3

Message par mikell »

jguinchard a écrit :En tout cas, j'adore l'idée : je vais te la piquer...
Intéressante mais pas nouvelle l'idée
http://www.autoitscript.fr/forum/viewto ... f=6&t=7999
Quoique avec w7 ... :P
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: [..] Pb compatibilité de script entre win 32 bits et w 6

#4

Message par fred39 »

à l'époque j'étais parti de ça:
http://www.autoitscript.com/forum/topic ... ntry397684
:wink:
J'aimerais plutôt trouver une solution compatible 32 et 64....
++
Fred
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Pb compatibilité de script entre win 32 bits et w 6

#5

Message par mikell »

Moi aussi j'étais parti de là, c'est mentionné dans le texte de mon post :wink:

Pour un code unique qui marcherait aussi bien en 32 qu'en 64 bits, c'est mal barré
En effet sur le forum US après Melba23 c'est KaFu qui s'est le plus penché sur la question
http://www.autoitscript.com/forum/topic ... ntry937982
Donc j'ai foncé consulter la source de son soft, et de suite on tombe sur ça :

Code : Tout sélectionner

If @OSArch = "X64" And Not @AutoItX64 Then
_39("Fatal Error" & @CRLF & "This version of ICU is 32bit compiled and will not run correctly with a 64bit OS.")
ElseIf @OSArch <> "X64" And @AutoItX64 Then
_39("Fatal Error" & @CRLF & "This version of ICU is 64bit compiled and will not run correctly with a 32bit OS.")
EndIf
Ce qui si je sais encore lire l'autoit dans le texte, veut dire en gros : "si tu compiles en 32 et utilises sur du 64 (et réciproquement), t'es marron" :mrgreen:
Donc 2 exe ...

PS : apparemment le pb n'est pas nouveau (et impossible)
http://social.msdn.microsoft.com/Forums ... 8360968a1/
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: [R] Pb compatibilité de script entre win 32 bits et w 64

#6

Message par fred39 »

OK,
dommage, c'est un petit exe utilisé sur les serveurs en établissements. Appelé avec 2 arguments, Il permet aux utilisateurs de sauvegarder la disposition de leurs icônes, et qu'elle soit restaurée à chaque fois qu'ils se connectent sur une station.
Je ferai un petit prog en amont qui aiguillera vers le bon exe.
Je vais faire un bond vers la version 2 :wink:
Pour ceux que ça intéresse, voici le code actuel
► Afficher le texte
Le projet complet est ici :
http://dev-eole.ac-dijon.fr/attachments ... es.1.3.zip
Merci pour vos réponses. :)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Pb compatibilité de script entre win 32 bits et w 64

#7

Message par jguinch »

J'ai testé, j'ai eu un petit pb car sur mon bureau j'ai deux icônes qui ont le même nom (une dans mon profil\bureau et une dans le AllUsers\Bureau).

A part ça c'est c'est sympa.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre