Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include "StdArg.h"
- LONG WINAPI WndProc(HWND, UINT, WPARAM, LPARAM); // функция обработки сообщений окна
- HWND msg;
- unsigned long uThrID;
- int WINAPI WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- HWND hwnd; // дескриптор окна
- MSG msg; // структура сообщения
- WNDCLASS w; // структура класса окна
- memset(&w, 0, sizeof(WNDCLASS)); // очистка памяти для структуры
- w.style = CS_HREDRAW | CS_VREDRAW;
- w.lpfnWndProc = WndProc;
- w.hInstance = hInstance;
- w.hbrBackground = CreateSolidBrush(0x00FFFFFF);
- w.lpszClassName = L"MyClass";
- RegisterClass(&w); // регистрация класса окна
- // Создание окна
- hwnd = CreateWindow(L"MyClass", L"Главное окно",
- WS_OVERLAPPEDWINDOW,
- 500, 300, 500, 380,
- NULL, NULL, hInstance, NULL);
- ShowWindow(hwnd, nCmdShow); // отображение окна
- UpdateWindow(hwnd); // перерисовка окна
- // Цикл обработки сообщений
- while (GetMessage(&msg, NULL, 0, 0)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return msg.wParam;
- }
- bool fl = false;
- bool cl = false;
- LONG WINAPI WndProc(HWND hwnd, UINT Message,
- WPARAM wparam, LPARAM lparam)
- {
- HDC hdc;
- HINSTANCE hInst;
- PAINTSTRUCT ps;
- static HWND hBtn, b1, b2; // дескриптор кнопки
- HANDLE hM/*, Close*/;
- hM = CreateMutex(NULL, false, L"name");
- STARTUPINFO si1;
- ZeroMemory(&si1, sizeof(si1));
- si1.cb=sizeof(si1);
- PROCESS_INFORMATION pi1, pi2, pi3, pi4;
- ZeroMemory(&pi1, sizeof(pi1));
- ZeroMemory(&pi2, sizeof(pi2));
- ZeroMemory(&pi3, sizeof(pi3));
- ZeroMemory(&pi3, sizeof(pi4));
- fl = false;
- GetStartupInfo(&si1);
- switch (Message)
- {
- case WM_CREATE: // сообщение создания окна
- hInst = ((LPCREATESTRUCT)lparam)->hInstance; // дескриптор приложения
- hBtn = CreateWindow(L"button", L"Запустить", WS_CHILD | WS_VISIBLE | WS_BORDER, 50, 100, 120, 30, hwnd, 0, hInst, NULL);
- b1 = CreateWindow(L"button", L"Пуск", WS_CHILD | WS_VISIBLE | WS_BORDER, 50, 200, 100, 30, hwnd, 0, hInst, NULL);
- b2 = CreateWindow(L"button", L"Стоп", WS_CHILD | WS_VISIBLE | WS_BORDER, 200, 200, 100, 30, hwnd, 0, hInst, NULL);
- break;
- case WM_COMMAND: // сообщение о команде
- if (lparam == (LPARAM)hBtn) // если нажали на кнопку
- CreateProcess(L"C:\\Users\\Я\\Documents\\Visual Studio 2010\\Projects\\ОСИ_3лаба_k\\Debug\\ОСИ_3лаба_k.exe",
- NULL, // Командная строка. Здесь передаются параметры
- NULL, // Здесь определяются атрибуты защиты для нового приложения
- NULL, // Здесь определяются атрибуты защиты для первого потока созданного приложением.
- FALSE, // Флаг наследования от процесса производящего запуск
- 0, // Флаг способа создание процесса и его приоритет.
- NULL, // Указывает на блок среды.
- NULL, // Указывает текущий диск и каталог.
- &si1, // Используется для настройки свойств процесса, например расположения окон и заголовок.
- &pi1); // Структура PROCESS_INFORMATION с информацией о процессе
- if (lparam == (LPARAM)b2) //стоп
- {if (fl) ReleaseMutex(hM);
- else WaitForSingleObject(hM, INFINITE); }
- if (lparam == (LPARAM)b1) //пуск
- {if (fl) WaitForSingleObject(hM, INFINITE);
- else ReleaseMutex(hM); }
- /* if (lparam == (LPARAM)b3)
- {/*cl = true;
- if (cl) WaitForSingleObject(Close, 0);
- else ReleaseMutex(Close);*/
- //if (pr == true)
- /*
- int err = GetLastError();
- }*/
- break;
- case WM_DESTROY: // закрытие окна
- PostQuitMessage(0);
- break;
- default: // обработка сообщения по умолчанию
- /*if (fl)
- WaitForSingleObject(hM, 0);
- else
- ReleaseMutex(hM);*/
- return DefWindowProc(hwnd, Message, wparam, lparam);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement