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" );     
}