Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Создание нового процесса (отдельной задачи)

Rusa


Создание нового процесса (отдельно 23223q1614x 81; задачи)



Windows API CreateProcess

BOOL CreateProcess(LPCSTR lpszName,

LPCSTR lpszComLine,

LPSECURITY_ATTRIBUTES lpProcAttr,

LPSECURITY_ATTRIBUTES lpThreadAttr,

BOOL InheritAttr, DWORD How,

LPVOID lpEnv, LPSTR lpszDir,

LPSTARTUPINFO lpStartInfo,

LPPROCESS_INFORMATION lpPInfo);

lpszName lpszComLine lpszName NULL lpszComLine lpszName NULL lpszComLine

lpProcAttr lpThreadAttr NULL Windows XP

InheritAttr TRUE FALSE TRUE FALSE являются макросами, определенными в стандартно 23223q1614x 84; файле определений Windows h

How Windows

lpEnv NULL

lpszDir NULL

lpStartInfo STARTUPINFO STARTUPINFO

typedef struct STARTUPINFO

STARTUPINFO;

Windows Windows dwX dwY dwXSize dwYSize dwXCountChars dwYCountChars dwFillAtribute dwShowWindow dwFlags dwFlags



dwFlags

START USESHOWWINDOW

dwShowWindow

STARTF_USESIZE

dwXSize dwYSize

STARTF_USEPOSITION

dwX dwY

STARTF_USECOUNTCHARS

dwXCountChars dwYCount-Chars

STARTF_USEFILLATTRIBUTE

dwFillAttribute

STARTF_USESTDHANDLES

hStdInput

STARTF FORCEONFEEDBACK

STARTF FORCEOFFFEEDBACK

STARTF SCREENSAVER

screen saver

STARTUPINFO cb NULL STARTUPINFO

STARTUPINFO startin

startin.cb  = sizeof(STARTUPINFO);

startin.lpReserved = NULL;

startin.lpDesktop  = NULL;

startin.lpTitle  = NULL;

startin.dwFlags  = STARTF_USESHOWWINDOW;

startin.cbReserved2 = 0;

startin.lpReserved2 = NULL;

startin. wShowWindow = SW_SHOWMINIMIZED;

dwFlags STARTF USESHOW WINDOW wShowWindow Windows



CreateProcess lpPInfo PROCESS INFORMATION

typedef struct _PROCESS_INFORMATION

PROCESS INFORMATION

hProcess hThread dwProcessId dwThreadId

CreateProcess

API TerminateProcess()

BOOL TerminateProcess(HANDLE hProcess, UINT status);

hProcess hProcess lpPInfo CreateProcess status

Следующая программа демонстрирует создание и завершение процессов. Эта программа предоставляет возможность создавать до пяти порожденных процессов одновременно. Она также позволяет завершать порожденные процессы в порядке, обратно 23223q1614x 84; их созданию. Порождаемый в ней процесс будет иметь имя Test exe Test exe Windows

В приведенной ниже программе, как и в других примерах главы, используется техно­логия виртуально 23223q1614x 75;о окна для отображения и обновления содержимого реально 23223q1614x 75;о окна.

// с использованием виртуально 23223q1614x 75;о окна

#include <Windows.h>

#include <String.h>

#include <Stdio.h>

#include "Proc.h"

#define Procmax 5

LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM);

char szWinName[] = " "; //

char str[255]; // Буфер строки вывода

int X=0, Y=0; // Текущие координаты строки

int procnum=0; // Количество активных процессов

int maxX, maxY; // Размеры экрана

HDC  memdc; // DC виртуально 23223q1614x 75;о окна

HBITMAP hbit; // Растр - это виртуально 23223q1614x 77; окно

HBRUSH hbrush; //

PROCESS_INFORMATION pinfo[Procmax];

int WINAPI WinMain (HINSTANCE hThisInst,

HINSTANCE hPrevInst,

LPSTR lpszArgs,

int nWinMode)

return msg. wParam;

}

// Windows и получает в качестве параметров сообщения

LRESULT CALLBACK WindowFunc(HWND hwnd,

UINT message,



WPARAM wParam,

LPARAM lParam)

// Не более чем Procmax

// Получить метрики текста */

GetTextMetrics(memdc, &tm);

sprintf(str, "Порождается процесс %d",

procnum);

TextOut(memdc, X, Y, str, strlen(str));

Y = Y+tm.tmHeight+tm.tmExternalLeading;

InvalidateRect(hwnd,NULL,1); //Сообщить

// Порождение нового процесса

startin.cb=sizeof(STARTUPINFO);

startin.lpReserved = NULL;

startin.lpDesktop = NULL;

startin.lpTitle = NULL;

startin.dwFlags =STARTF_USESHOWWINDOW;

startin.cbReserved2 = 0;

startin.lpReserved2 = NULL;

startin.wShowWindow = SW_SHOWMINIMIZED;

CreateProcess(NULL, "Test.exe", NULL,

NULL, FALSE, 0, NULL,

NULL, &startin,

&(pinfo[procnum]));

procnum++;

break;

case ID_KILLPROC:

if(procnum)

procnum--;

else

// Получить метрики текста

GetTextMetrics(memdc, &tm);

TerminateProcess

(pinfo[procnum].hProcess, 0);

sprintf(str, " %d ",

procnum);

TextOut(memdc, X, Y, str, strlen(str));

Y = Y+tm.tmHeight+tm.tmExternalLeading;

InvalidateRect(hwnd,NULL,1); //

break;

case ID_HELP:

MessageBox(hwnd,

"F2: Новый процесс\n"

"F3: Завершить процесс",

" :", MB_OK);

InvalidateRect(hwnd,NULL,1); //

break;

}

break;

case WM_PAINT: //

hdc=BeginPaint(hwnd,&paintstruct); // DC

// Теперь копируем растр из памяти на экран

BitBlt(hdc,0,0,maxX,maxY,memdc,0,0,SRCCOPY);

EndPaint(hwnd,&paintstruct); // DC

break;

case WM_DESTROY: // Завершение программы

DeleteDC(memdc); // Удалить виртуально 23223q1614x 77; окно

PostQuitMessage(0);

break;

default:

// Все сообщения, не обрабатываемые в данной

// функции, направляются на обработку по

// умолчанию

return DefWindowProc(hwnd,message,

wParam,lParam);

return 0;

}

Proc h

#define ID_PROCESS 100

#define ID_KILLPROC 101

define ID HELP 103

Process rc

#include <Windows.h>

#include "Proc.h"

MYMENU MENU

MENUITEM " ", ID_HELP

}

MYMENU ACCELERATORS




Document Info


Accesari: 1182
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )