Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как запустить дочрний процесс.

247
26 мая 2011 года
wanja
1.2K / / 03.02.2003
Пытаюсь запустить программано cmd.exe. Просто появляется окно, и закрывается, а должон появиться command prompt. Делаю так:
Код:
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
using namespace std;

PROCESS_INFORMATION pinf;
STARTUPINFO SI;//Нужно для запуска новых процессов
double m[3],d[3];
char WDir[500],CDir[500],comm[500];

int main()
{
AllocConsole();//Чтоб консоль появилась
GetWindowsDirectoryA(LPSTR(WDir),500);//Где у нас директория с WINDOWS
GetCurrentDirectoryA(500,LPSTR(CDir));//Текущая директория
//comm:=PChar(@wdir)+'\COMMAND.com /C '+comm;
strcpy(comm,WDir);
strcat(comm,"\\System32\\cmd.exe");//Командная строка(сеанс MS-DOS)
ZeroMemory(&SI,sizeof(SI));//Обнуляем память
SI.cb=sizeof(SI);//Размер структуры
SI.dwFlags=STARTF_RUNFULLSCREEN;

if (CreateProcessA(LPSTR(comm),NULL,NULL,NULL,false,CREATE_NEW_CONSOLE||DETACHED_PROCESS || NORMAL_PRIORITY_CLASS || CREATE_DEFAULT_ERROR_MODE,NULL,LPSTR(CDir),LPSTARTUPINFOA(&SI),&pinf)==0)
   cout<<"Error!\n";

cin.get();
FreeConsole();//Закрываем консоль
return 0;
}
278
26 мая 2011 года
Alexander92
1.1K / / 04.08.2008
[QUOTE=wanja]
 
Код:
CreateProcessA(LPSTR(comm),NULL,NULL,NULL,false,CREATE_NEW_CONSOLE||DETACHED_PROCESS || NORMAL_PRIORITY_CLASS || CREATE_DEFAULT_ERROR_MODE,NULL,LPSTR(CDir),LPSTARTUPINFOA(&SI),&pinf)

[/QUOTE]

1. В маске стоит побитовое ИЛИ, то бишь одна вертикальная черта, а не двойная, как у вас.
2. [QUOTE=MSDN]
CREATE_NEW_CONSOLE cannot be used with DETACHED_PROCESS.
[/QUOTE]
Соответственно, один из этих флагов лишний.
3. А почему проблему нельзя решить банально через ShellExecute()? Для чего понадобился CreateProcess()?
316
26 мая 2011 года
Alm3n
889 / / 29.05.2009
 
Код:
CreateProcessA("C:\\WINDOWS\\System32\\cmd.exe",NULL,NULL,NULL,0,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог