Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / CreateProcess / 9 сообщений из 9, страница 1 из 1
14.08.2007, 14:14
    #34726610
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcess
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	// запускаю аналогичную программу в каталоге ниже
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	ZeroMemory( &si, sizeof(si) );
	si.cb = sizeof(si);
	ZeroMemory( &pi, sizeof(pi) );

	bool bl = CreateProcess( NULL,  // No module name (use command line). 
		"next\\Test.exe",		  // Command line. 
		NULL,             // Process handle not inheritable. 
		NULL,             // Thread handle not inheritable. 
		FALSE,            // Set handle inheritance to FALSE. 
		 0 ,                // No creation flags. 
		NULL,             // Use parent's environment block. 
		NULL,             // Use parent's starting directory. 
		&si,              // Pointer to STARTUPINFO structure.
		&pi );            // Pointer to PROCESS_INFORMATION structure.

Выполняю CreateProcess в консольном приложении, но вместо того, чтобы повявилось второе окошко (test.exe тоже консольное, фактически это копия выполняемого exe) он начинает выполняться в этом же консольном окошке. В чем тут дело?
...
Рейтинг: 0 / 0
14.08.2007, 14:19
    #34726634
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcess
CREATE_NEW_CONSOLE пробовал?
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
14.08.2007, 14:20
    #34726637
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcess
Tubrik T> Выполняю CreateProcess в консольном приложении, но вместо
T> того, чтобы повявилось второе окошко (test.exe тоже
T> консольное, фактически это копия выполняемого exe) он
T> начинает выполняться в этом же консольном окошке. В чем
T> тут дело?в чтении документации:
MS SDK
CREATE_NEW_CONSOLE
The new process has a new console, instead of inheriting the parent's console. This flag cannot be used with the DETACHED_PROCESS flag.

DETACHED_PROCESS
For console processes, the new process does not have access to the console of the parent process. The new process can call the AllocConsole function at a later time to create a new console. This flag cannot be used with the CREATE_NEW_CONSOLE flag.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.08.2007, 14:43
    #34726757
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcess
получилось с DETACHED_PROCESS
...
Рейтинг: 0 / 0
14.08.2007, 14:50
    #34726797
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcess
Tubrikполучилось с DETACHED_PROCESS

вру, получилось но не совсем то
...
Рейтинг: 0 / 0
14.08.2007, 17:02
    #34727412
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcess
Код: plaintext
1.
NULL,             // Use parent's starting directory. 

т.е. выходи он наследует путь от родительского процесса, если я правильно понял

получается бесконечный запуск, т.к. "next\\Test.exe" он все время видит из родитеского каталога

как ему сказать, чтобы использовал свой каталог? только задать путь вручную из вызова CreateProcess вместо NULL? или есть другие способы?
...
Рейтинг: 0 / 0
14.08.2007, 17:25
    #34727488
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcess
BOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
--------------------------------------------------------------
[не претендую на уникальность]
...
Рейтинг: 0 / 0
14.08.2007, 17:27
    #34727493
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcess
CerebrumBOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
--------------------------------------------------------------
[не претендую на уникальность]

lpCurrentDirectory
[in] Pointer to a null-terminated string that specifies the full path to the current directory for the process. The string can also specify a UNC path.
If this parameter is NULL, the new process will have the same current drive and directory as the calling process. (This feature is provided primarily for shells that need to start an application and specify its initial drive and working directory.)
...
Рейтинг: 0 / 0
14.08.2007, 17:31
    #34727510
Tubrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcess
это я понимаю, но надеялся, что есть флажек специальный, спасибо
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / CreateProcess / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]