Читайте также:
|
|
Створення нового процесу
BOOL CreateProcess (
LPCTSTR lpszModuleName, // покажчик на рядок з назвою файлу, що
містить виконуючий код
LPCTSTR lpszCommandLine, // покажчик на рядок з вмістом командного
рядка
LPSECURITY_ATTRIBUTES l pProcessSecurity, // покажчик на атрибути безпеки процесу
LPSECURITY_ATTRIBUTES lpThreadSecurity, // покажчик на атрибути безпеки потоку
BOOL bInheritHendles, // прапор успадкування дескрипторів
батьківського процесу (FALSE)
DWORD dwCreateFlags, // прапор, що керує створенням процесу
(табл. 23)
LPVOID lpvEnvironment, // покажчик на блок параметрів середовища
LPCTSTR lpszCurrentDir, // покажчик на рядок зі шляхом до поточного
каталогу процесу (NULL)
LPSTARTUPINFO lpStartInfo, // покажчик на структуру STARTUPINFO
LPPROCESS_INFORMATION lpProcessInfo // покажчик на структуру
PROCESS_INFORMATION
);
Повертає значення TRUE в разі успішного створення нового процесу.
Таблиця 1
Прапор | Опис прапору |
CREATE_NEW_CONSOLE | Створення нового консольного вікна для нового процесу |
CREARE_NO_WINDOW | Виконання процесу без консольного вікна |
DEACHED_PROCESS | Процес на має своєї консолі і не має доступу до консолі батьківського процесу; для створення консолі викликається функція AllocConsole |
CREATE_NEW_PROCESS_GROUP | Процес є кореневим для нової групи процесів |
CREATE_SUSPENDED | Створення процесу з призупиненим потоком; для виконання потоку викликається функція ResumeThread |
CREATE_UNICODE_ENVIRONMENT | Для змінних середовища використовуються символи в коді UNICODE |
typedef struct _SECURITY_ATTRIBUTES {
DWORD nLength; // розмір структури в байтах
LPVOID lpSecurityDescriptor; // покажчик на дескриптор безпеки об’єкту
BOOL bInheritHandle; // прапор, що визначає можливість
успадкування дескриптора процесу (TRUE)
} SECURITY_ATTRIBUTES;
typedef struct _STARTUPINFO {
DWORD cb; // розмір структури в байтах
LPTSTR lpReserved; // зарезервоване значення (NULL)
LPTSTR lpDesktop; // покажчик на рядок з назвою робочого столу,
на якому запускається процес (NULL)
LPTSTR lpTitle; // покажчик на рядок з заголовком вікна
консолі
DWORD dwX; // координата X лівого верхнього кута вікна
консолі процесу (в пікселах)
DWORD dwY; // координата Y лівого верхнього кута вікна
консолі процесу (в пікселах)
DWORD dwXSize; // ширина вікна консолі процесу (в пікселах)
DWORD dwYSize; // висота вікна консолі процесу (в пікселах)
DWORD dwXCountChars; // ширина вікна консолі процесу (в символах)
DWORD dwYCountChars; // висота вікна консолі процесу (в символах)
DWORD dwFillAttribute; // колір тексту та фону вікна консолі
(бітові прапори з табл. 24)
DWORD dwFlags; // бітові прапори (табл. 25)
WORD wShowWindow; // отримує значення, яке встановлюється при
першому виклику функції ShowWindow
WORD cbReserved2; // зарезервоване значення (0)
LPBYTE lpReserved2; // зарезервоване значення (NULL)
HANDLE hStdInput; // дескриптор стандартного потоку введення
HANDLE hStdOutput; // дескриптор стандартного потоку виведення
HANDLE hStdError; // дескриптор стандартного потоку виведення
помилок
} STARTUPINFO, *LP STARTUPINFO;
Таблиця 24
Бітовий прапор | Опис |
FOREGROUND_BLUE | синій колір тексту |
FOREGROUND_GREEN | зелений колір тексту |
FOREGROUND_RED | червоний колір тексту |
FOREGROUND_INTENSITY | збільшена інтенсивність кольору тексту |
BACKGROUND_ BLUE | синій колір фону |
BACKGROUND_ GREEN | зелений колір фону |
BACKGROUND_ RED | червоний колір фону |
BACKGROUND_ INTENSITY | збільшена інтенсивність кольору фону |
Таблиця 25
Бітовий прапор | Опис призначення прапору |
STARTF_USESHOWWINDOW | Дозволяє використання елемента wShowWindow |
STARTF_USEPOSITION | Дозволяє використання елементів dwX та dwY |
STARTF_USESIZE | Дозволяє використання елементів dwXSize та dwYSize |
STARTF_USECOUNTCHARS | Дозволяє використання елементів dwXCountChars та dwYCountChars |
STARTF_USEFILLATTRIBUTE | Дозволяє використання елемента dwFillAttribute |
STARTF_USESTDHANDLES | Дозволяє використання елементів hStdInput, hStdOutput та hStdError |
typedef struct _PROCESS_INFORMATION {
HANDLE hProcess; // дескриптор створеного процесу
HANDLE hThread; // дескриптор створеного потоку
DWORD dwProcessId; // глобальний ідентифікатор створеного процесу
DWORD dwThreadId; // глобальний ідентифікатор створеного потоку
} PROCESS_INFORMATION;
Ініціювання змінної типу STARTUPINFO
VOID GetStartupInfo (
LPSTARTUPINFO lpsi // покажчик на структуру STARTUPINFO
);
Очікування звільнення об’єкту
DWORD WaitForSingleObject (
HANDLE hObject, // дескриптор об’єкту
DWORD dwTimeoutInterval // період очікування в мілісекундах
(0 – без очікування, INFINITE – нескінченно)
);
Повертає значення WAIT_OBJECT_0, WAIT_ABANDONED, WAIT_TIMEOUT або, в разі неуспішного виконання, значення WAIT_FAILED.
Дата добавления: 2014-12-19; просмотров: 127 | Поможем написать вашу работу | Нарушение авторских прав |