Страница 2 из 4

Добавлено: 04 июл 2006, 11:50
P1ece
код с путем?
p:\p.bat - путь
тока сомневаюсь что лучше от этого станет

Добавлено: 04 июл 2006, 16:00
Absurd
У меня так работает:

Код: Выделить всё

	WCHAR exepath[MAX_PATH];
	::GetSystemDirectoryW(exepath, MAX_PATH);
	::lstrcatW(exepath, L"\\cmd.exe");
	WCHAR cmdline[MAX_PATH];
	::lstrcpyW(cmdline, exepath);
	::lstrcatW(cmdline, L" /c p:\\p.bat");
	STARTUPINFOW si;
	memset(&si, 0, sizeof(si));
	PROCESS_INFORMATION pi;
	memset(&pi, 0, sizeof(pi));
	::CreateProcessW(exepath, cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

Добавлено: 04 июл 2006, 18:34
BBB
Absurd писал(а):У меня так работает:
Ну, у меня и вот так работает :) /Win98, Win2k/

Текст программы, запускающей указанный как параметр командной строки файл (компилировал на Microsoft VC++ 6.0):

Код: Выделить всё

#include "Windows.H"

int WINAPI WinMain &#40]

Добавлено: 04 июл 2006, 21:05
Eugie
P1ece, так бы сразу и написал: не могу программно запустить bat-файл. Тут на форуме телепаты не водятся :)
Собственно, за меня уже ответили, но повторение - мать учения :) Вот такой код должен работать:

Код: Выделить всё

ShellExecute(Handle, 0, "cmd.exe", "/c p:\\p.bat", 0, SW_SHOWNORMAL);

Добавлено: 04 июл 2006, 21:11
Eugie
Да, вот еще что: если путь содержит длинные имена, нужно его заключать в кавычки, чтобы командный процессор смог его коррктно обработать. Т.е. например для пути c:\Program Files\p.bat четвертый параметр в ShellExecute() будет выглядеть так:

Код: Выделить всё

"/c \"c:\\Program Files\\p.bat\""

Добавлено: 04 июл 2006, 23:04
P1ece
Eugie писал(а):P1ece, так бы сразу и написал: не могу программно запустить bat-файл. Тут на форуме телепаты не водятся :)
Собственно, за меня уже ответили, но повторение - мать учения :) Вот такой код должен работать:

Код: Выделить всё

ShellExecute&#40][/quote]
дык а подрубать ничего кроме windows.h не надо?

Добавлено: 05 июл 2006, 14:44
Eugie
Включи еще Shellapi.h и в настройках проекта подключи библиотеку импорта Shell32.lib

Добавлено: 05 июл 2006, 14:46
BBB
P1ece писал(а):дык а подрубать ничего кроме windows.h не надо?
А у тебя возникает ошибка компилятора? Или линкера?
Если ошибок компиляции/линковки нет, то встречный вопрос: зачем еще что-то "подрубать кроме windows.h"?

Добавлено: 05 июл 2006, 15:00
Eugie
ShellExecute() без Shellapi.h + Shell32.lib не скомпилируется и не слинкуется

Добавлено: 06 июл 2006, 10:00
BBB
Eugie писал(а):ShellExecute() без Shellapi.h + Shell32.lib не скомпилируется и не слинкуется
Что касаемо исходного текста, то у меня компилируется (MS VC++ 6.0) без явного подключения Shellapi.h (см. исходник выше). Возможно, подключение Windows.H неявно подключает много всего, в т.ч. и Shellapi.h.
Посмотрел свойства проекта, Shell32.lib присутствует в списке (среди многого прочено), но, опять-таки, сам я вручную его туда не цеплял. Походу, при создании проекта VC сам прописывает туда весь набор стандартных lib-ов.