Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 190


227

О процессах можно рассказать намного больше, но надеюсь, что на­писанного хватит для того, чтобы приступить к программированию. Для того чтобы проиллюстрировать все эти длинные рассуждения, приведу в качестве примера небольшую программу.

ДЕМОНСТРАЦИОННАЯ ПРОГРАММА

В этой программе не происходит ничего интересного. Просто при вы­боре элемента меню «Создать процесс» создается процесс, в котором запускается обычный Notepad (надеюсь, он у всех в доступной директо­рии? Если нет, то вы можете заменить Notepad любой другой програм­мой). Максимум может быть запущено 10 процессов. По команде «Kill process» процессы уничтожаются в порядке, обратном их созданию. Предлагаю читателю обратить внимание на то, что я завершаю процесс посредством вызова TerminateProcess(), а не ExitProcessQ. Для того чтобы завершить процесс обычным способом, пришлось бы писать программу, которая вызывала бы функцию ExitProcessQ изнутри процесса, а мне бы не хотелось рассеивать внимание читателя. Результаты создания процес­са, взятые из структуры типа PROCESS_ INFORMATION, отображаются в окне сообщений. Если кого-то раздражает необходимость постоянно убирать окно сообщений с отображения, рекомендую воспользоваться программой pview95.exe, которая поставляется с SDK.

Текст демонстрационной программы приведен ниже:

#include <windows.h>

#include <stdio.h>

#include "proc.h"

LRESULT CALLBACK ProcessesWndProc ( HWND, UINT, UINT, LONG );

int WINAPI WinMain (HINSTANCE hlnstance, HINSTANCE hPrevInstancc, LPSTR IpszCmdParam, int nCmdShow )

HWND hWnd ;

WNDCLASS WndClass ;

MSG Msg;

char szClassName[] = "Processes"; /* Registering our window class */ /* Fill WNDCLASS structure */

WndClass.style = CS_HREDRAW  CS_VREDRAW;

WndClass. IpfnWndProc = ProcessesWndProc;

WndClass.cbClsExtra = 0;

WndClass.cbWndExtra - 0;

WndClass. hlnstance = hlnstance ;

WndClass.hlcon = Loadlcon (NULL,IDI_APPLICATION);

228

WndClass.hCursor= LoadCursor (NULL, IDC_ARROW); WndClass.hbrBackground - (HBRUSH) GetStockObject (WHITE_BRUSH); WndClass.IpszMcnuName = "ProcessesMeivu"; WndClass.IpszClassName = szClassName;




Начало  Назад  Вперед



Книжный магазин