Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <string>
  5.  
  6. #include <vector>
  7. #include <iostream>
  8.  
  9. #define _SECOND 10000000
  10.  
  11. DWORD WINAPI myFunc(LPVOID lpParam) {
  12. HANDLE wTimer;
  13. __int64 endTime;
  14. LARGE_INTEGER quitTime;
  15. SYSTEMTIME now;
  16.  
  17. //task 1A ---------
  18. /*std::cout << "Write K seconds: ";
  19. int k = 0;
  20. std::cin >> k;
  21. if (k <= 0) {
  22. std::cout << "NO";
  23. }*/
  24.  
  25. int k = rand() % 10;
  26.  
  27. wTimer = CreateWaitableTimer(NULL, FALSE, NULL);
  28. endTime = -k * _SECOND;
  29. quitTime.LowPart = (DWORD)(endTime & 0xFFFFFFFF);
  30. quitTime.HighPart = (LONG)(endTime >> 32);
  31. SetWaitableTimer(wTimer, &quitTime, 0, NULL, NULL, FALSE);
  32. GetLocalTime(&now);
  33. printf("%d thread: System Time %d %d %d\n", *((int *)lpParam), now.wHour, now.wMinute, now.wSecond);
  34. WaitForSingleObject(wTimer, INFINITE);
  35. printf("%d thread: Waitable Timer sent signal\n", *((int*)lpParam));
  36. GetLocalTime(&now);
  37. printf("%d thread:System Time %d %d %d\n", *((int*)lpParam), now.wHour, now.wMinute, now.wSecond);
  38. CloseHandle(wTimer);
  39.  
  40.  
  41. return 0;
  42. }
  43.  
  44.  
  45. int main(int argc, char *argv[])
  46. {
  47. if (argc != 2) {
  48. std::cout << "NO!";
  49. }
  50. char *ptr = nullptr;
  51. const int n = std::strtol(argv[1], &ptr, 10);
  52.  
  53. std::vector <HANDLE> handles;
  54.  
  55. for (int i = 0; i < n; ++i) {
  56. STARTUPINFO startupinfo;
  57.  
  58. PROCESS_INFORMATION processInfo;
  59. wchar_t p[100] = L"C:\\WINDOWS\\SYSTEM32\\NOTEPAD.EXE";
  60.  
  61. wchar_t lpCommandLine[128];
  62. wcscpy_s(lpCommandLine, p);
  63.  
  64.  
  65. ZeroMemory(&startupinfo, sizeof(STARTUPINFO));
  66. startupinfo.cb = sizeof(startupinfo);
  67. if (!CreateProcess(NULL, lpCommandLine, NULL, NULL, FALSE,
  68. HIGH_PRIORITY_CLASS | CREATE_NEW_CONSOLE, NULL, NULL, &startupinfo, &processInfo))
  69. {
  70. fprintf(stderr, "CreateProcess failed on error % d\n", GetLastError());
  71. ExitProcess(1);
  72. }
  73. else {
  74. handles.push_back(processInfo.hProcess);
  75. }
  76. }
  77.  
  78. char ch;
  79. int i = 0;
  80. std::cout << "Type something to kill the next process!" << '\n';
  81. std::cout << "(type e to exit)" << std::endl;
  82. do {
  83. ch = '0';
  84. std::cin >> ch;
  85. if (i > (n-1) || ch == 'e') {
  86. for (int j = 0; j < n; ++j) {
  87. (TerminateProcess(handles[j], 0) ? "Killed" : "Missed");
  88. }
  89. break;
  90. }
  91. std::cout << '\n' << (TerminateProcess(handles[i++], 0) ? "Killed successfully" : "Miss") << '\n';
  92.  
  93. std::cout << "Time to sleep..." << std::endl;
  94. Sleep(1000);
  95.  
  96. } while (ch != 'e');
  97.  
  98. return 0;
  99.  
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement