cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 2009
-
4 juil. 2004 à 01:11
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
4 juil. 2004 à 13:20
voici un bout de mon code :
#include <windows.h>
#include <stdio.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
SHELLEXECUTEINFO info = {sizeof(info)};
info.lpVerb = "open";
info.lpFile = "iexplore";
info.lpParameters = "-nohome";
info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_DDEWAIT;
info.nShow = SW_HIDE;
if (!ShellExecuteEx(&info))
{
MessageBox(0,"Erreur lors de l'execution de IE","info",0);
DWORD err = GetLastError();
char texte[200];
sprintf(texte,"valeur : %d\n",err);
MessageBox(0,texte,"info",0);
return 0;
}
HANDLE Proc = info.hProcess;
...
CloseHandle(Proc);
return 0;
}
le problème est que de manière assez aléatoire, shellexecuteex ne marche pas. GetLastError renvoie alors 5, cad ERROR_ACCESS_DENIED.
le truc c'est que je vois pas du tout pourquoi !! (aléatoire = en général ca marche, desfois non... ca a pas l'air de dépendre si une fenetre de IE est déja ouverte ou non)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 4 juil. 2004 à 09:03
hProcess:
Handle to the newly started application. This member is set on return and is always NULL unless fMask is set to SEE_MASK_NOCLOSEPROCESS. Even if fMask is set to SEE_MASK_NOCLOSEPROCESS, hProcess will be NULL if no process was launched. For example, if a document to be launched is a URL and an instance of Microsoft Internet Explorer is already running, it will display the document. No new process is launched, and hProcess will be NULL.
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 4 juil. 2004 à 12:08
non je pense pas, car la, le verbe c'est "open" sur le programme, pas sur un document. et j'ai besoin de l'handle du process lancé donc... ('For example, if a document to be launched is a URL' -> j'ouvre pas une URL la, mais iexplore)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 4 juil. 2004 à 12:47
Ben oui en effet va impec, je viens de lancer 20 fois de suite et pas une fois hprocces null, et meme en mettant une adresse valide en param.
Bizzare...
ciao...
BruNews, Admin CS, MVP Visual C++
Vous n’avez pas trouvé la réponse que vous recherchez ?
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 4 juil. 2004 à 13:14
"cbSize etait mis exact par ta 1ere ligne: SHELLEXECUTEINFO info = {sizeof(info)};"
peut etre mais il est possible que qd ca marchait pas je n'avais pas mis ca mais :
SHELLEXECUTEINFO info;// = {sizeof(info)};
ZeroMemory(&info,sizeof(SHELLEXECUTEINFO));
est ce que 'SHELLEXECUTEINFO info = {sizeof(info)};' mets a zero les autres champs de info, ou ca se contente d'initialiser le premier champ a sizeof(info) ?
en tout cas je ne reussis plus a avoir d'erreurs... ca signifie presque que le prob est reglé ;)