Advertisement
nevadies

Untitled

Sep 21st, 2014
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. {
  2. #ifdef _WIN32
  3.  
  4. // this only way to terminate CLI thread exist at Win32 (alt. way exist only in Windows Vista API)
  5. //_exit(1);
  6. // send keyboard input to safely unblock the CLI thread
  7. INPUT_RECORD b[5];
  8. HANDLE hStdIn = GetStdHandle(STD_INPUT_HANDLE);
  9. b[0].EventType = KEY_EVENT;
  10. b[0].Event.KeyEvent.bKeyDown = TRUE;
  11. b[0].Event.KeyEvent.uChar.AsciiChar = 'X';
  12. b[0].Event.KeyEvent.wVirtualKeyCode = 'X';
  13. b[0].Event.KeyEvent.wRepeatCount = 1;
  14.  
  15. b[1].EventType = KEY_EVENT;
  16. b[1].Event.KeyEvent.bKeyDown = FALSE;
  17. b[1].Event.KeyEvent.uChar.AsciiChar = 'X';
  18. b[1].Event.KeyEvent.wVirtualKeyCode = 'X';
  19. b[1].Event.KeyEvent.wRepeatCount = 1;
  20.  
  21. b[2].EventType = KEY_EVENT;
  22. b[2].Event.KeyEvent.bKeyDown = TRUE;
  23. b[2].Event.KeyEvent.dwControlKeyState = 0;
  24. b[2].Event.KeyEvent.uChar.AsciiChar = '\r';
  25. b[2].Event.KeyEvent.wVirtualKeyCode = VK_RETURN;
  26. b[2].Event.KeyEvent.wRepeatCount = 1;
  27. b[2].Event.KeyEvent.wVirtualScanCode = 0x1c;
  28.  
  29. b[3].EventType = KEY_EVENT;
  30. b[3].Event.KeyEvent.bKeyDown = FALSE;
  31. b[3].Event.KeyEvent.dwControlKeyState = 0;
  32. b[3].Event.KeyEvent.uChar.AsciiChar = '\r';
  33. b[3].Event.KeyEvent.wVirtualKeyCode = VK_RETURN;
  34. b[3].Event.KeyEvent.wVirtualScanCode = 0x1c;
  35. b[3].Event.KeyEvent.wRepeatCount = 1;
  36. DWORD numb;
  37. WriteConsoleInput(hStdIn, b, 4, &numb);
  38.  
  39. cliThread->wait();
  40.  
  41. #else
  42.  
  43. cliThread->destroy();
  44.  
  45. #endif
  46.  
  47. delete cliThread;
  48. }
  49.  
  50. // for some unknown reason, unloading scripts here and not in worldrunnable
  51. // fixes a memory leak related to detaching threads from the module
  52. //UnloadScriptingModule();
  53.  
  54. // Exit the process with specified return value
  55. return World::GetExitCode();
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement