Advertisement
Serdalis

C++ Open Program

Apr 23rd, 2012
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.17 KB | None | 0 0
  1. #include <algorithm>
  2. #include <string>
  3. #include <windows.h>
  4.  
  5. size_t ExecuteProcess(std::wstring, std::wstring, size_t);
  6.  
  7. int main( int argc, char **argv ) {
  8.  
  9.     while(true) {
  10.         HWND hwndWindow = FindWindow(NULL, "Putty.exe");
  11.         if(!hwndWindow) {
  12.             ExecuteProcess(L"C:\\putty.exe",L"",1);
  13.         }
  14.         Sleep(5000);
  15.     }
  16. }
  17.  
  18. size_t ExecuteProcess(std::wstring FullPathToExe, std::wstring Parameters, size_t SecondsToWait) {
  19.     size_t iMyCounter = 0, iReturnVal = 0, iPos = 0;
  20.     DWORD dwExitCode = 0;
  21.     std::wstring sTempStr = L"";
  22.  
  23.     /* Add a space to the beginning of the Parameters */
  24.     if (Parameters.size() != 0) {
  25.         if (Parameters[0] != L' ') {
  26.             Parameters.insert(0,L" ");
  27.         }
  28.     }
  29.  
  30.     /* The first parameter needs to be the exe itself */
  31.     sTempStr = FullPathToExe;
  32.     iPos = sTempStr.find_last_of(L"\\");
  33.     sTempStr.erase(0, iPos +1);
  34.     Parameters = sTempStr.append(Parameters);
  35.  
  36.      /* CreateProcessW can modify Parameters thus we allocate needed memory */
  37.     wchar_t * pwszParam = new wchar_t[Parameters.size() + 1];
  38.     if (pwszParam == 0) {
  39.         return 1;
  40.     }
  41.  
  42.     const wchar_t* pchrTemp = Parameters.c_str();
  43.     wcscpy_s(pwszParam, Parameters.size() + 1, pchrTemp);
  44.  
  45.     /* CreateProcess API initialization */
  46.     STARTUPINFOW siStartupInfo;
  47.     PROCESS_INFORMATION piProcessInfo;
  48.  
  49.     memset(&siStartupInfo, 0, sizeof(siStartupInfo));
  50.     memset(&piProcessInfo, 0, sizeof(piProcessInfo));
  51.  
  52.     siStartupInfo.cb = sizeof(siStartupInfo);
  53.  
  54.     if (CreateProcessW(const_cast<LPCWSTR>(FullPathToExe.c_str()),
  55.                             pwszParam, 0, 0, false,
  56.                             CREATE_DEFAULT_ERROR_MODE, 0, 0,
  57.                             &siStartupInfo, &piProcessInfo) != false) {
  58.          /* Watch the process. */
  59.         dwExitCode = WaitForSingleObject(piProcessInfo.hProcess, (SecondsToWait * 1000));
  60.     } else {
  61.         /* CreateProcess failed */
  62.         iReturnVal = GetLastError();
  63.     }
  64.  
  65.     /* Free memory */
  66.     delete[]pwszParam;
  67.     pwszParam = 0;
  68.  
  69.     /* Release handles */
  70.     CloseHandle(piProcessInfo.hProcess);
  71.     CloseHandle(piProcessInfo.hThread);
  72.  
  73.     return iReturnVal;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement