Page 1 sur 1

problème avec RunProgram()

Publié : sam. 22/mai/2010 10:44
par lepiaf31
Bonjour, j'ai un petit souci avec la fonction RunProgram(). Je voudrais lancer l'explorateur de Windows (explorer.exe) et attendre la fin de l'execution de ce programme. Je fais donc:

Code : Tout sélectionner

RunProgram("explorer.exe", "C:\Users", "", #PB_Program_Wait)
Debug "ok"
Mais ca ne marche pas. "ok" s'affiche alors que je n'ai pas fermé l'explorateur. Est-ce normal ou c'est un bug ?

PS: j'ai déjà essayé de mettre l'option #PB_Program_Open et aussi d'utiliser la fonction WaitProgram().

Re: problème avec RunProgram()

Publié : sam. 22/mai/2010 12:54
par Ar-S

Code : Tout sélectionner

RunProgram("C:\","","",#PB_Program_Wait) ; j'ai pas users sous xp
Debug "ok"

Re: problème avec RunProgram()

Publié : sam. 22/mai/2010 13:07
par lepiaf31
Non j'ai toujours le même problème. "ok" apparait tout de suite après le lancement ... (je suis sous seven).

J'ai testé avec les APIs:

Code : Tout sélectionner

prog = RunProgram("explorer.exe", "C:\Users", "", #PB_Program_Open)
hProcess = OpenProcess_(#PROCESS_QUERY_INFORMATION, 0, ProgramID(prog))
exitCode.l
GetExitCodeProcess_(hProcess, @exitCode)
debug exitCode
Repeat
  GetExitCodeProcess_(hProcess, @exitCode)
  Debug exitCode
  Delay(1)
ForEver
et rapidement, exitCode prend la valeur 1 (alors qu'elle doit resté à 259 tant que le programme est lancé).

Re: problème avec RunProgram()

Publié : sam. 22/mai/2010 13:27
par lepiaf31
cela doit venir du processus explorer.exe car quand je fais:
RunProgram("notepad.exe", "", "", #PB_Program_Wait)
Debug "ok"
Ca marche très bien ..

Re: problème avec RunProgram()

Publié : sam. 22/mai/2010 13:28
par Ar-S
Peut-être est-ce encore du aux restrictions de Seven lorsqu'on farfouille dans les repertoires user ou system.
Car sous xp ça fonctionne, même si l'affichage des 2 est casi instantané.

Essaye en ouvrant un répertoire d'une autre partition si tu en a plusieurs histoire de confirmer ou d'infirmer mes dires.

Re: problème avec RunProgram()

Publié : sam. 22/mai/2010 13:38
par lepiaf31
Même resultat quand j'essaye d'ouvrir D:\ ou Mes Documents.

Re: problème avec RunProgram()

Publié : sam. 22/mai/2010 13:42
par Ar-S
3 pistes
- As tu les droits admin ?
- Peux tu faire un clique droit/proprieté sur l'explorer pour "l'ouvrir en tant qu'admin"
- Essaye de remplacer ton debug par un messagerequester puis de compiler ton exe et de l'executer en tant qu'admin.

Re: problème avec RunProgram()

Publié : sam. 22/mai/2010 13:47
par lepiaf31
Non rien à faire. J'ai tout testé et rien ne marche ... Quand on regarde les handles ou les PIDs avec l'API, on voit que le handle et le PID de l'application que je lance disparait presque tout de suite après son lancement ...

Re: problème avec RunProgram()

Publié : sam. 22/mai/2010 22:12
par Le Soldat Inconnu
surement une histoire de zone protéger (logiciels de windows, signé et tatata) et zone tout venant ou purebasic va se trouver. Et du coup, il n'y a peut-être pas de possibilité d'échange entre les 2 zones. c'est juste une hypothèse

Re: problème avec RunProgram()

Publié : sam. 22/mai/2010 22:54
par lepiaf31
Bon merci.
Je me suis débrouillé autrement: j'ai listé les fenetres avant l'execution de explorer.exe puis je les ai listées après. De là, j'en déduis quelle est la nouvelle fenetre ouverte par explorer.exe et je boucle jusqu'a ce que cette fenetre soit détruite (par l'utilisateur).

Re: problème avec RunProgram()

Publié : dim. 23/mai/2010 12:32
par Ar-S
C'est quand même très relou de devoir en arriver là. C'est vraiment mon principale reproche à vista/seven. Cette rigidité outrancière est vraiment saoulante.

Re: problème avec RunProgram()

Publié : dim. 23/mai/2010 14:18
par lepiaf31
Oui ca m'embete aussi mais bon ... Quand on n'a pas le choix

Re: problème avec RunProgram()

Publié : dim. 23/mai/2010 14:35
par Geo Trouvpatou
Salut.

[Hors sujet] Si ton programme doit créer, modifier, bidouiller des fichiers un peu partout, dans les options du compilo tu coches "L'application nécessite les droits administrateurs..." et au lancement de ton prog, il te sera demandé de lancer ton prog en admin pour justement que les modifs autre qu'aux endroits autorisés puissent se faire.