|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre émérite
![]() Inscription : janvier 2006 Messages : 1 396 ![]() |
Bonjour à toutes et à tous,
Dans mon application, j'utilise la fonction "Function Wow64DisableWow64FsRedirection" comme elle tourne sous Seven 64bits. Cette application ne me sert que pour afficher "msconfig.exe" afin de gérer le démarrage. Cette application devrait fonctionner sous XP à condition d'indiquer le chemin de "msconfig.exe" qui n'est pas le même que sous Seven. A ce stade les deux applications fonctionnent séparément sous Seven et sous XP. Ma question, si je ne fais qu'une seule application, sous Seven cela fonctionne correctement mais sur Xp, j'ai le message concernant la fonction "Function Wow64DisableWow64FsRedirection" qui n'existe pas, logique. Y aurait t'il une astuce pour éviter ce message lorsque je suis sous XP ? Merci d'avance, @+, Cincap |
|
|
00
|
|
|
#2 |
![]() ![]() Yves LemaireBiologiste ; Progr(amateur) Inscription : mars 2005 Messages : 1 684 ![]() |
Il suffit donc de tester la version de Windows, le mode 64 Bits, et de traiter chaque cas de manière différenciée.
__________________
Delphi 5 Pro et Code Typhon 2.80 sous Win 7 64 bits - Code Typhon 2.70 / Ubuntu 12.04 64 bits |
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() Inscription : janvier 2006 Messages : 1 396 ![]() |
@ Tourlourou, merci de ta suggestion, ce n'est pas autour du code qui charge "msconfig.exe" qu'il y a le message d'erreur mais directement au lancement, soit autour de la fonction déclarée, hors cette fonction doit être déclarée après "implementation".
Je vais quand même faire le test. @+, Cincap |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : septembre 2008 Messages : 2 857 ![]() |
ShellExecute(Ex) sait retrouver les chemins dans la base des registres contrairement à CreateProcess. Tu n'aurais pas ce problème si tu l'utilisais
Avec un Delphi récent, il est possible de déclarer les fonctions statiques en delayed pour en retarder le chargement au premier appel. Donc comme dit Tourlourou un test de version avant d'invoquer la fonction suffit. Sinon, à l'ancienne, LoadLibrary, GetProcAdress et test sur nil. |
|
|
00
|
|
|
#5 | ||
|
Membre émérite
![]() Inscription : janvier 2006 Messages : 1 396 ![]() |
@ Andnotor, merci de ta réponse, en effet j'utilise bien "ShellExecute".
Code :
A moins qu'il existe une autre méthode ? @+, Cincap |
||
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Inscription : août 2002 Messages : 1 073 ![]() |
Il faut utiliser des liaisons dynamiques:
Par exemple: Code :
__________________
Delphi 7 Windows XP/Vista |
||
|
|
00
|
|
|
#7 | ||||||||
|
Membre émérite
![]() Inscription : janvier 2006 Messages : 1 396 ![]() |
@ Linkin, merci de ta suggestion (que je connaissai et que je n'ai pas utilisé dans ce cas), en fait j'avais deux façons de procéder,
La 1ère : Code :
Code :
Code :
Code :
Pourtant ce n'est pas à l'appui du code de "ShellExecute" que le problème se fait mais au démarrage ! @+, Cincap |
||||||||
|
|
00
|
|
|
#8 | ||
![]() ![]() Inscription : septembre 2008 Messages : 2 857 ![]() |
Tester la validité de hHandle après GetProcAddress ne sert pas à grand chose
J'ai fait un essai en XE3 qui passe par la redirection de la base des registres et du système de fichiers. Code :
Code :
ShellExecute64(0, 'open', 'msconfig.exe', '', '', SW_SHOWDEFAULT); |
||
|
|
00
|
|
|
#9 |
|
Membre émérite
![]() Inscription : janvier 2006 Messages : 1 396 ![]() |
@ Andnotor, merci pour ton explication, si j'ai bien compris, j'execute mon application sur XP et "msconfig.exe" s'affichera sans problème et sans me soucier de son répertoire ou il se trouve et forcément sous Seven.
Edit : je viens de tester et j'ai le message :"Directive inconnue" "Delayed" sous Seven et ce soir je testerai sous XP @+, Cincap |
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : septembre 2008 Messages : 2 857 ![]() |
C'est ça !
Testé sous XP 32, Seven 32 et 64, 8 32. |
|
|
00
|
|
|
#11 | |
|
Membre émérite
![]() Inscription : janvier 2006 Messages : 1 396 ![]() |
@ Andnotor, après test sous Seven 64bits et D6, voici le message :
Citation:
Cincap |
|
|
|
00
|
|
|
#12 | ||
![]() ![]() Inscription : septembre 2008 Messages : 2 857 ![]() |
Delayed a été introduit sous D2010. Donc GetProcAddress obligatoire en D6.
Code :
|
||
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Inscription : août 2002 Messages : 1 073 ![]() |
@Andnotor:
__________________
Delphi 7 Windows XP/Vista |
|
|
00
|
|
|
#14 | ||
|
Membre émérite
![]() Inscription : janvier 2006 Messages : 1 396 ![]() |
@ Andnotor, je viens de tester, cela compile bien mais "msconfig" ne s'affiche pas sous Seven, je testerai avec XP tantôt.
Code :
|
||
|
|
00
|
|
|
#15 |
![]() ![]() Inscription : septembre 2008 Messages : 2 857 ![]() |
Si tu ne copie que la moitié de la procédure, c'est sûr que ça va pas marcher
|
|
|
00
|
|
|
#16 | |||
|
Membre émérite
![]() Inscription : janvier 2006 Messages : 1 396 ![]() |
@ Andnotor :
Citation:
Code :
Edit : ok c'est bon, décidément tu mérites bien ton titre, grand merci à toi. ![]() @+, Cincap |
|||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com