humm... moi j'aurais utilise CreateProcess() j'ai ecrit un bout de code qui marche pas trop mal pour ce que tu veux faire, enfin je crois Les infos a envoyer sont contenu dans C:\test.in.txt et celle recu sont dans C:\test.out.txt Apres tu peux toujours faire de l'IPC en utilisant des pipes et pas des CreateFiles() pour envoyer et recevoir tes donnes, mais je ne sais pas trop comment on fait (j'ai pas trop chercher a vrai dire, si tu comprends vraiement rien, je pourrais regarder)
v'la l'code, en esperant qu'il t'aide
int main() { SECURITY_ATTRIBUTES sa; STARTUPINFO si; PROCESS_INFORMATION pi; HANDLE hStdIn; HANDLE hStdOut; BOOL bRes;
sa.nLength = sizeof ( SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; sa.bInheritHandle = TRUE;
DWORD dwFlags = FILE_ATTRIBUTE_NORMAL;
hStdIn = CreateFile ( "c:\\test.in.txt", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, OPEN_ALWAYS, dwFlags, NULL );
if( hStdIn == INVALID_HANDLE_VALUE ) { printf( "Cannot open input file\n" ); return EXIT_FAILURE; }
hStdOut = CreateFile ( "c:\\test.out.txt", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, CREATE_ALWAYS, dwFlags, NULL );
if( hStdOut == INVALID_HANDLE_VALUE ) { printf( "Cannot open output file\n" ); return EXIT_FAILURE; }
ZeroMemory ( &si, sizeof ( STARTUPINFO));
si.cb = sizeof ( STARTUPINFO); si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; si.wShowWindow = SW_HIDE; si.hStdInput = hStdIn; si.hStdOutput = hStdOut; si.hStdError = NULL;
bRes = CreateProcess ( "C:\\Windows\\System32\\ftp.exe", "ftp.exe ftp.monsite.fr", NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, GetEnvironmentStrings (), "C:\\", &si, &pi );
if(bRes) printf("process sucessfully launched\n"); else printf("error launching process\n");
WaitForSingleObject ( pi.hProcess, INFINITE);
system("PAUSE"); return 0; }
|