Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. #include <windows.h>
  2. #include "StdArg.h"
  3. LONG WINAPI WndProc(HWND, UINT, WPARAM, LPARAM); // функция обработки сообщений окна
  4. HWND msg;
  5. unsigned long uThrID;
  6. int WINAPI WinMain(HINSTANCE hInstance,
  7. HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  8. {
  9. HWND hwnd; // дескриптор окна
  10. MSG msg; // структура сообщения
  11. WNDCLASS w; // структура класса окна
  12. memset(&w, 0, sizeof(WNDCLASS)); // очистка памяти для структуры
  13. w.style = CS_HREDRAW | CS_VREDRAW;
  14. w.lpfnWndProc = WndProc;
  15. w.hInstance = hInstance;
  16. w.hbrBackground = CreateSolidBrush(0x00FFFFFF);
  17. w.lpszClassName = L"MyClass";
  18. RegisterClass(&w); // регистрация класса окна
  19. // Создание окна
  20. hwnd = CreateWindow(L"MyClass", L"Главное окно",
  21. WS_OVERLAPPEDWINDOW,
  22. 500, 300, 500, 380,
  23. NULL, NULL, hInstance, NULL);
  24. ShowWindow(hwnd, nCmdShow); // отображение окна
  25. UpdateWindow(hwnd); // перерисовка окна
  26. // Цикл обработки сообщений
  27. while (GetMessage(&msg, NULL, 0, 0)) {
  28. TranslateMessage(&msg);
  29. DispatchMessage(&msg);
  30. }
  31. return msg.wParam;
  32. }
  33.  
  34. bool fl = false;
  35. bool cl = false;
  36.  
  37. LONG WINAPI WndProc(HWND hwnd, UINT Message,
  38. WPARAM wparam, LPARAM lparam)
  39. {
  40. HDC hdc;
  41. HINSTANCE hInst;
  42. PAINTSTRUCT ps;
  43. static HWND hBtn, b1, b2; // дескриптор кнопки
  44.  
  45.  
  46. HANDLE hM/*, Close*/;
  47. hM = CreateMutex(NULL, false, L"name");
  48. STARTUPINFO si1;
  49. ZeroMemory(&si1, sizeof(si1));
  50. si1.cb=sizeof(si1);
  51.  
  52. PROCESS_INFORMATION pi1, pi2, pi3, pi4;
  53.  
  54. ZeroMemory(&pi1, sizeof(pi1));
  55. ZeroMemory(&pi2, sizeof(pi2));
  56. ZeroMemory(&pi3, sizeof(pi3));
  57. ZeroMemory(&pi3, sizeof(pi4));
  58. fl = false;
  59. GetStartupInfo(&si1);
  60. switch (Message)
  61. {
  62.  
  63. case WM_CREATE: // сообщение создания окна
  64. hInst = ((LPCREATESTRUCT)lparam)->hInstance; // дескриптор приложения
  65. hBtn = CreateWindow(L"button", L"Запустить", WS_CHILD | WS_VISIBLE | WS_BORDER, 50, 100, 120, 30, hwnd, 0, hInst, NULL);
  66. b1 = CreateWindow(L"button", L"Пуск", WS_CHILD | WS_VISIBLE | WS_BORDER, 50, 200, 100, 30, hwnd, 0, hInst, NULL);
  67. b2 = CreateWindow(L"button", L"Стоп", WS_CHILD | WS_VISIBLE | WS_BORDER, 200, 200, 100, 30, hwnd, 0, hInst, NULL);
  68.  
  69. break;
  70.  
  71. case WM_COMMAND: // сообщение о команде
  72. if (lparam == (LPARAM)hBtn) // если нажали на кнопку
  73. CreateProcess(L"C:\\Users\\Я\\Documents\\Visual Studio 2010\\Projects\\ОСИ_3лаба_k\\Debug\\ОСИ_3лаба_k.exe",
  74. NULL, // Командная строка. Здесь передаются параметры
  75. NULL, // Здесь определяются атрибуты защиты для нового приложения
  76. NULL, // Здесь определяются атрибуты защиты для первого потока созданного приложением.
  77. FALSE, // Флаг наследования от процесса производящего запуск
  78. 0, // Флаг способа создание процесса и его приоритет.
  79. NULL, // Указывает на блок среды.
  80. NULL, // Указывает текущий диск и каталог.
  81. &si1, // Используется для настройки свойств процесса, например расположения окон и заголовок.
  82. &pi1); // Структура PROCESS_INFORMATION с информацией о процессе
  83. if (lparam == (LPARAM)b2) //стоп
  84. {if (fl) ReleaseMutex(hM);
  85. else WaitForSingleObject(hM, INFINITE); }
  86. if (lparam == (LPARAM)b1) //пуск
  87. {if (fl) WaitForSingleObject(hM, INFINITE);
  88. else ReleaseMutex(hM); }
  89. /* if (lparam == (LPARAM)b3)
  90. {/*cl = true;
  91. if (cl) WaitForSingleObject(Close, 0);
  92. else ReleaseMutex(Close);*/
  93. //if (pr == true)
  94. /*
  95. int err = GetLastError();
  96. }*/
  97. break;
  98.  
  99. case WM_DESTROY: // закрытие окна
  100.  
  101.  
  102. PostQuitMessage(0);
  103.  
  104. break;
  105. default: // обработка сообщения по умолчанию
  106. /*if (fl)
  107. WaitForSingleObject(hM, 0);
  108.  
  109. else
  110. ReleaseMutex(hM);*/
  111.  
  112.  
  113. return DefWindowProc(hwnd, Message, wparam, lparam);
  114. }
  115.  
  116. return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement