Createprocess() help
Fermé
Yvan64320
Messages postés
33
Date d'inscription
jeudi 28 juillet 2011
Statut
Membre
Dernière intervention
25 août 2011
-
19 août 2011 à 12:05
Yvan64320 Messages postés 33 Date d'inscription jeudi 28 juillet 2011 Statut Membre Dernière intervention 25 août 2011 - 25 août 2011 à 17:12
Yvan64320 Messages postés 33 Date d'inscription jeudi 28 juillet 2011 Statut Membre Dernière intervention 25 août 2011 - 25 août 2011 à 17:12
3 réponses
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
19 août 2011 à 14:17
19 août 2011 à 14:17
Salut.
Je ne connais pas les spécificités win. La première tâche consiste à savoir ce qu'est un LPTSTR pour savoir comment le remplir.
Je pense qu'il faut utiliser directement la commande, c'est à dire un truc dans le genre :
LPTSTR lpCommandLine = ligne1.c_str();
la commande telle que tu l'as écrit est une commande C, pas une commande shell.
Je ne connais pas les spécificités win. La première tâche consiste à savoir ce qu'est un LPTSTR pour savoir comment le remplir.
Je pense qu'il faut utiliser directement la commande, c'est à dire un truc dans le genre :
LPTSTR lpCommandLine = ligne1.c_str();
la commande telle que tu l'as écrit est une commande C, pas une commande shell.
Yvan64320
Messages postés
33
Date d'inscription
jeudi 28 juillet 2011
Statut
Membre
Dernière intervention
25 août 2011
19 août 2011 à 16:16
19 août 2011 à 16:16
Ok merci de ta réponse char snipeur comme toujours ;) je fais des recherche du côté de LPTSTR, j'avais déjà testé sans system j'ai toujours le même message d'erreur :(
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
19 août 2011 à 16:49
19 août 2011 à 16:49
bon, j'ai pris 30s pour chercher sur google (je suis curieux) je ne sais pas ce que c'est que ce type de merde, mais je sais comment l'initialiser :
LPTSTR szCmdline = _tcsdup(TEXT("C:\\Program Files\\MyApp -L -S"));
vu là :
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa?redirectedfrom=MSDN
En voyant ça, je pense que l'adage "pourquoi faire simple lorsque l'on peut faire compliqué ?" a du être créer pour Windows.
LPTSTR szCmdline = _tcsdup(TEXT("C:\\Program Files\\MyApp -L -S"));
vu là :
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessa?redirectedfrom=MSDN
En voyant ça, je pense que l'adage "pourquoi faire simple lorsque l'on peut faire compliqué ?" a du être créer pour Windows.
Yvan64320
Messages postés
33
Date d'inscription
jeudi 28 juillet 2011
Statut
Membre
Dernière intervention
25 août 2011
19 août 2011 à 17:19
19 août 2011 à 17:19
Ok merci encore, je vais regarder franchement la prochaine fois je ferais tout sous Unix ça à l'air bien plus simple !!!
Yvan64320
Messages postés
33
Date d'inscription
jeudi 28 juillet 2011
Statut
Membre
Dernière intervention
25 août 2011
25 août 2011 à 17:12
25 août 2011 à 17:12
Bonjour,
J'ai un petit soucis avec mon code que je n'arrive pas à résoudre.
Tout d'abord le but de mon code est de récupérer dans un fichier texte le chemin d'accès d'un fichier et l'exécute. Il vérifit ensuite toutes les x secondes si le chemin a changé.Si non il continu à exécuter le fichier ,si oui il ferme l'ancien fichier et exécute le nouveau.
Je suis arrivé avec de l'aide sur les forums à tout faire mais je n'arrive pas a fermé le premier fichier exécuté lorsque l'on doit exécuté le nouveau.
Ma boucle n'est pas parfaite je sais si quelqu'un pourrait m'aiguiller ou m'expliquer qq trucs ça serait gentil.
Mon code :
De plus il y a un truc déjà qui me dérange dans ma boucle infini (while(true)) comment se fait il qu'il execute la partie du code dans if(ligne2.compare(ligne1)!=0) alors que la condition n'est même pas remplit ?
Merci.
Cordialement,
J'ai un petit soucis avec mon code que je n'arrive pas à résoudre.
Tout d'abord le but de mon code est de récupérer dans un fichier texte le chemin d'accès d'un fichier et l'exécute. Il vérifit ensuite toutes les x secondes si le chemin a changé.Si non il continu à exécuter le fichier ,si oui il ferme l'ancien fichier et exécute le nouveau.
Je suis arrivé avec de l'aide sur les forums à tout faire mais je n'arrive pas a fermé le premier fichier exécuté lorsque l'on doit exécuté le nouveau.
Ma boucle n'est pas parfaite je sais si quelqu'un pourrait m'aiguiller ou m'expliquer qq trucs ça serait gentil.
Mon code :
int main() { string ligne1, ligne2; HANDLE hProcess; UINT uExitCode; PROCESS_INFORMATION pi; STARTUPINFO si = {sizeof(si)}; while(true) { ligne1=enTete("D:\\test.txt"); if(ligne2.compare(ligne1)!=0) { string cmdline = (string("C:\\Program Files (x86)\\Microsoft Office\\Office14\\PPTVIEW.exe \"") + ligne1 + "\""); if (!CreateProcess(0, (LPSTR)cmdline.c_str(), 0, 0, 0, CREATE_SUSPENDED, 0, 0, &si, &pi)) break; ligne2=ligne1; ResumeThread(pi.hThread); CloseHandle(pi.hThread); Sleep(4000); TerminateProcess(pi.hProcess,0); CloseHandle(pi.hProcess); } Sleep(10000); } }
De plus il y a un truc déjà qui me dérange dans ma boucle infini (while(true)) comment se fait il qu'il execute la partie du code dans if(ligne2.compare(ligne1)!=0) alors que la condition n'est même pas remplit ?
Merci.
Cordialement,