43. FAQ o Win API

Q> How to make that my program could not be killed?  
A> I did not try, but imho from End Task it does not rescue  

 From: V. Liseev             

To do not killed process very simply. 
Before killing Windows at first tries to complete 
It in an amicable way. Here it also should launch the copy 
And to transfer it all necessary data before the safe 
End. 

LRESULT WINAPI WndProc (HWND hWnd, UINT msg, 
     WPARAM wParam, LPARAM lParam) 
{ 
  switch (msg) 
  { 
     //HANDLE_MSG (hWnd, WM_CREATE, WndProc_OnCreate); 
     HANDLE_MSG (hWnd, WM_DESTROY, WndProc_OnDestroy); 
     //HANDLE_MSG (hWnd, WM_SIZE, WndProc_OnSize); 
     //HANDLE_MSG (hWnd, WM_COMMAND, WndProc_OnCommand); 
     default: 
        return DefWindowProc (hWnd, msg, wParam, lParam); 
  }
}

void WndProc_OnDestroy (HWND hWnd) 
{ 
  STARTUPINFO si; 
  PROCESS_INFORMATION pi; 

  //we Create other process, and this safely we complete. 
  memset (&si, 0, sizeof (STARTUPINFO)); 
  si.cb = sizeof (STARTUPINFO); 
  CreateProcess (NULL, "program.exe", NULL, NULL, 
      FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi); 
  CloseHandle (pi.hThread); 
  CloseHandle (pi.hProcess); 
  PostQuitMessage (0); 
  //return FORWARD_WM_DESTROY (hWnd, DefWindowProc); 
}

2000 (c) DM