Создание и управление процессами и потоками
Задание 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. При появлении окна с вопросом о выполнении построения проекта выберите Да.
Если все сделано правильно, должно запуститься созданное приложение (консольное окно), а затем приложение "Блокнот".
Закройте "Блокнот" – при этом должно завершиться ваше приложение.