Вятский государственный гуманитарный университет
Опубликован: 27.05.2013 | Доступ: свободный | Студентов: 3661 / 1041 | Длительность: 09:18:00
Самостоятельная работа 2:

Создание и управление процессами и потоками

< Лекция 6 || Самостоятельная работа 2: 1234 || Лекция 7 >

Задание 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. Проверьте работоспособность созданного приложения.

Нажмите кнопку Play на панели инструментов или нажмите F5. При появлении окна с вопросом о выполнении построения проекта выберите Да.

Если все сделано правильно, должно запуститься созданное приложение (консольное окно), а затем приложение "Блокнот".


Закройте "Блокнот" – при этом должно завершиться ваше приложение.

< Лекция 6 || Самостоятельная работа 2: 1234 || Лекция 7 >
Анар Шенер
Анар Шенер
Екатерина Гастева
Екатерина Гастева

Добрый день. Не работают ссылки для скачивания на начальном этапе первой самостоятельной работы. Возможно и далее встречаются старые ссылки. Как быть с этим?

Может есть какой-то более новый несложный курс по устройству windows c практическими заданиями?  Заранее спасибо.

"1. Скачайте и установите программу виртуализации Microsoft Virtual PC 2007 SP1, доступную по адресу:

http://www.microsoft.com/en-us/download/details.aspx?id=24439"

"Microsoft Windows Server 2003 SP1" также не находится.