[C++]Executer une application
Salut !
J'ai du mal à réutiliser une fonction trouvée dans le gestionnaire des tâches de desk bsd. J'ai fais un mini prog en console pour lancer une application, mais ca ne marche pas. J'utilise un scanf pour écrire dans handle. J'ai peur que ce soit ca qui bloque...
Voici le code complet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #include <windows.h>
#include <Tlhelp32.h>
#include <stdio.h>
#include <string.h>
#include <commctrl.h>
BOOL Exe(HWND hwExe);
int main(int argc, char *argv[])
{
static HWND hwExe;
scanf("%s", &hwExe);
Exe(hwExe);
system("PAUSE");
}
/* Executer un processus. */
BOOL Exe(HWND hwExe)
{
char * szBuffer;
unsigned int uiSize;
unsigned int uiCount;
if((uiSize = SendMessage(hwExe,WM_GETTEXTLENGTH,0,0)) == 0) return FALSE;
szBuffer = (char*)malloc(sizeof(char)*(uiSize+1));
if(szBuffer == NULL){
return FALSE;
}
GetWindowText(hwExe,szBuffer,(uiSize+1));
szBuffer[uiSize] = '\0';
for(uiCount = 0 ; uiCount<uiSize ; uiCount++){
if(szBuffer[uiCount] == ' '){ /* Si il y à un espace, c'est qu'il y a un argument. */
char * szAppName;
char * szArgument;
szAppName = (char*)malloc(sizeof(char)*(uiCount+1));
szArgument = (char*)malloc(sizeof(char)*(uiSize-uiCount)+1);
sscanf(szBuffer,"%s %s",szAppName,szArgument);
szAppName[uiCount] = '\0';
szArgument[(uiSize-uiCount)] = '\0';
ShellExecute(NULL,"open",szAppName,szArgument,NULL,SW_SHOWNORMAL);
free(szAppName);
free(szArgument);
break;
}else if(uiCount == (uiSize-1)){ /* Sinon. */
ShellExecute(NULL,"open",szBuffer,0,NULL,SW_SHOWNORMAL);
}
}
free(szBuffer);
} |
Voila.
Merci pour votre aide !
PS: je cherche un tuto sur les Handles, Processus et compagnie. Quelqu'un peut-il m'informer ? Merci.