Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 14:07   #1
Alinka_
Пользователь
 
Регистрация: 11.10.2012
Сообщений: 31
Радость задача на c++

эта программа работает: когда мы пишем (например) calc.exe,то программа открывает это приложение и ждёт завершение этого процесса,т.е я не могу ввести другое имя файла,пока не закрою calk

подскажите,как в этом коде добавить функцию,чтобы когда мы пишем в консоли (например) calc.exe & , то программа не ждёт завершения процесса calk, а позволяет ввести другое ямя файла и открыть его
Код:
#include "StdAfx.h"
#include <windows.h>
#include <iostream>
#include <iomanip>
#include <TCHAR.h>
#include <time.h>
#include <conio.h>

int _tmain( int argc, TCHAR *argv[] )
{

STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
char szBuf[256];
wchar_t szWBuf[256];

scanf ("%s", szBuf);

mbstowcs(szWBuf, szBuf, 256);     

while (strcmp(szBuf, "exit") != 0)
{

// Запустим дочерний процесс.

if( !CreateProcess(
NULL,       // Нет имени модуля (используется командная строка).
            szWBuf,     // Командная строка.
NULL,       // Дескриптор процесса не наследуемый.
NULL,       // Дескриптор потока не наследуемый.
FALSE,      // Установим наследование дескриптора в FALSE.
   0,          // Флажков создания нет.
   NULL,       // Используйте блок конфигурации родителя.
   NULL,      // Используйте стартовый каталог родителя.
     &si,       // Указатель на структуру STARTUPINFO.
   &pi )     // Указатель на структуру PROCESS_INFORMATION.
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return 0;
}

// Ждать до тех пор, пока дочерний процесс не выйдет из работы.
WaitForSingleObject( pi.hProcess, INFINITE );

// Закроем дескрипторы процесса и потока.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );

scanf ("%s", szBuf);
mbstowcs(szWBuf, szBuf, 256); 
}
}

Последний раз редактировалось Stilet; 25.12.2012 в 15:13.
Alinka_ вне форума Ответить с цитированием
Старый 26.12.2012, 19:36   #2
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Так убери этот кусок ожидания-процесса.
Код:
// Ждать до тех пор, пока дочерний процесс не выйдет из работы.
WaitForSingleObject( pi.hProcess, INFINITE );
Nuklon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по подсчёту статистики использования букв. Другая задача - по длинной арифметике Pascal ABC kimberly Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 17:03
задача на структуру(struct)/задача на работу с файлом SevenArth Помощь студентам 0 26.04.2012 19:06
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51