J'ai amélioré le code source de 7Zip.au3, du moins pour l'ouverture de la DLL.
Code : Tout sélectionner
Func _7ZipStartup()
If Not @Compiled Then ; If not compiled, test and open the right dll
If Not FileExists($sNoCompiledPath & $sZip32Dll) And _
Not FileExists($sNoCompiledPath & $sZip64Dll) Then Return SetError(2, 0, 0)
If @ProcessorArch = "X86" Then
$hDLL_7ZIP = DllOpen($sNoCompiledPath & $sZip32Dll) ; Open x32 dll from no compiled path
Else
$hDLL_7ZIP = DllOpen($sNoCompiledPath & $sZip64Dll) ; Open x64 dll from no compiled path
EndIf
Else ; If compiled, test and open the right dll (that must be in ScriptDir for compiling)
If @ProcessorArch = "X86" Then
If Not FileInstall("7-zip32.dll", $sCompiledPath & $sZip32Dll, 1) Then Return SetError(3, 0, 0)
$hDLL_7ZIP = DllOpen($sCompiledPath & $sZip32Dll) ; Open x32 dll from FileInstall path
Else
If Not FileInstall("7-zip64.dll", $sCompiledPath & $sZip64Dll, 1) Then Return SetError(3, 0, 0)
$hDLL_7ZIP = DllOpen($sCompiledPath & $sZip64Dll) ; Open x64 dll from FileInstall path
EndIf
EndIf
If $hDLL_7ZIP = -1 Then Return SetError(1, 0, 0) ; If no dll handle, return error
Return 1
EndFunc ;==>_7ZipStartup
Si on regarde bien, avant le @ProcessorArch c'était @OSArch, qui n'existe plus.
Donc quand je lance la version X64, la valeur retourne 0, donc il prends la seconde condition qui est la DLL x64. Donc en fait ça fonctionne.
Et quand on lance la version x86, il prend aussi la seconde valeur puis-ce qu'il ne connaissait pas @OSArch, et il charge la DLL x64 qui forcément ne passe pas sous x86. Et donc le programme plante.
J'espère que c'est ça mais je suis quasiment sur ^^
EDIT : Après quelque corrections supplémentaire, le programme fonctionne à 100%, et même la version x86 fonctionne (j'ai regardé sur le gestionnaire des taches il y a bien *32) à la fin de mon programme.
Je suis super content. Je vais pouvoir ajouté les clés dans le registre.
Merci à vous !!!
Et ce que vous savez pas c'est que des fois j'écris un sujet et en l'écrivant je trouve la réponse xD
PS: Parcontre la programmation nuit gravement à la tête
