Hi, what this application does (or atleast should do) is to run notepad.exe in a suspended state, and when I input '1' it resumes notepad. I'm not sure ResumeThread works for applications too though... When I run the program it says "ResumeThread() error: 6". The process ID and handle are found, so I don't know where does this error come from... Here's the code:
Code:#include <stdio.h> #include <windows.h> #include <Tlhelp32.h> DWORD FindProcessId( char *processName ) { PROCESSENTRY32 processInfo; processInfo.dwSize = sizeof(processInfo); HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if ( processesSnapshot == INVALID_HANDLE_VALUE ) return 0; Process32First(processesSnapshot, &processInfo); if ( strcmp( processName, processInfo.szExeFile ) == 0 ) { CloseHandle(processesSnapshot); return processInfo.th32ProcessID; } while ( Process32Next(processesSnapshot, &processInfo) ) { if ( strcmp( processName, processInfo.szExeFile ) == 0 ) { CloseHandle(processesSnapshot); return processInfo.th32ProcessID; } } CloseHandle(processesSnapshot); return 0; } int main( void ) { char lpApplicationName[ ] = "notepad.exe"; PROCESS_INFORMATION pi; STARTUPINFO info = { sizeof(info) }; HANDLE hwnd; int flag; if ( CreateProcess( lpApplicationName, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &info, &pi) == 0) printf( "Erro ao criar processo - erro %d.\n", GetLastError() ); Sleep(5000); hwnd = OpenProcess( 0x0800, FALSE, FindProcessId( "notepad.exe" ) ); if ( hwnd == NULL ) printf( "Erro ao abrir processo - erro %d\n", GetLastError() ); scanf( "%d", &flag ); if ( flag == 1 ) { if ( ResumeThread( hwnd ) == -1 ) printf( "ResumeThread() error: %d\n", GetLastError() ); } system( "PAUSE" ); }




Reply With Quote
