Создание и управление процессами и потоками
Задание 3. Создать программу, в которой запускается другое приложение.
Указания к выполнению.
1. Создайте пустой проект С/С++ в Visual Studio (Файл – Создать – Проект…) с названием CreateProcess. Выберите расположение проекта (кнопка Обзор…), например, C:\Programs:
2. Добавьте в проект файл исходного кода с расширением CPP.
Для этого щелкните правой кнопкой мыши на папке Файлы исходного кода в Обозревателе решений, выберите Добавить, затем Создать элемент…
В открывшемся окне выберите пункт Файл C++ (.cpp) и введите его название, например, main:
3. Откройте добавленный файл и вставьте в него следующий код (взят с сайта MSDN):
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
void _tmain( int argc, TCHAR *argv[] )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Запуск дочернего процесса
if( !CreateProcess( NULL,
"notepad.exe", // Имя образа запускаемого процесса
NULL, // Дескриптор процесса не наследуется
NULL, // Дескриптор потока не наследуется
FALSE, // Дескрипторы не наследуются
0, // Флагов создания нет
NULL, // Родительский environment block
NULL, // Родительский текущий каталог
&si, // Указатель на структуру STARTUPINFO
&pi ) // Указатель на PROCESS_INFORMATION
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}
// Ожидаем, пока созданный процесс не завершится
WaitForSingleObject( pi.hProcess, INFINITE );
// Закрываем дескрипторы процесса и потока
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}Приведенная программа будет запускать другой процесс (в данном случае стандартное приложение Windows "Блокнот") и ждать, пока он не завершится.
4. Установите требуемые свойства проекта.
Для этого выберите конфигурацию Release на панели инструментов:
В конфигурации Release проект будет компилироваться без отладочной информации и с оптимизацией кода.
Затем щелкните правой кнопкой мыши на заголовке проекта в окне Обозреватель решений и выберите пункт Свойства (или щелкните левой кнопкой мыши на заголовке проекта и нажмите Alt+Enter):
В свойствах проекта найдите опцию Свойства конфигурации – C/C++ – Создание кода – Библиотека времени выполнения. Выберите параметр Многопоточная (/MT). Если этого не сделать, то приложение при запуске в Windows Server 2003, возможно, будет требовать библиотеку msvcr100.dll (для Visual Studio 2010).
5. Проверьте работоспособность созданного приложения.
Нажмите кнопку
на панели инструментов или нажмите F5. При появлении окна с вопросом о выполнении построения проекта выберите Да.
Если все сделано правильно, должно запуститься созданное приложение (консольное окно), а затем приложение "Блокнот".
Закройте "Блокнот" – при этом должно завершиться ваше приложение.






