Exe для запуска приложения
Модераторы: Duncon, Hawk, Romeo, Eugie
код с путем?
p:\p.bat - путь
тока сомневаюсь что лучше от этого станет
p:\p.bat - путь
тока сомневаюсь что лучше от этого станет
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
У меня так работает:
Код: Выделить всё
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);
2B OR NOT(2B) = FF
Ну, у меня и вот так работаетAbsurd писал(а):У меня так работает:

Текст программы, запускающей указанный как параметр командной строки файл (компилировал на Microsoft VC++ 6.0):
Код: Выделить всё
#include "Windows.H"
int WINAPI WinMain (]
P1ece, так бы сразу и написал: не могу программно запустить bat-файл. Тут на форуме телепаты не водятся 
Собственно, за меня уже ответили, но повторение - мать учения
Вот такой код должен работать:

Собственно, за меня уже ответили, но повторение - мать учения

Код: Выделить всё
ShellExecute(Handle, 0, "cmd.exe", "/c p:\\p.bat", 0, SW_SHOWNORMAL);
Да, вот еще что: если путь содержит длинные имена, нужно его заключать в кавычки, чтобы командный процессор смог его коррктно обработать. Т.е. например для пути c:\Program Files\p.bat четвертый параметр в ShellExecute() будет выглядеть так:
Код: Выделить всё
"/c \"c:\\Program Files\\p.bat\""
Eugie писал(а):P1ece, так бы сразу и написал: не могу программно запустить bat-файл. Тут на форуме телепаты не водятся
Собственно, за меня уже ответили, но повторение - мать ученияВот такой код должен работать:
Код: Выделить всё
ShellExecute(][/quote] дык а подрубать ничего кроме windows.h не надо?
Включи еще Shellapi.h и в настройках проекта подключи библиотеку импорта Shell32.lib
А у тебя возникает ошибка компилятора? Или линкера?P1ece писал(а):дык а подрубать ничего кроме windows.h не надо?
Если ошибок компиляции/линковки нет, то встречный вопрос: зачем еще что-то "подрубать кроме windows.h"?
ShellExecute() без Shellapi.h + Shell32.lib не скомпилируется и не слинкуется
Что касаемо исходного текста, то у меня компилируется (MS VC++ 6.0) без явного подключения Shellapi.h (см. исходник выше). Возможно, подключение Windows.H неявно подключает много всего, в т.ч. и Shellapi.h.Eugie писал(а):ShellExecute() без Shellapi.h + Shell32.lib не скомпилируется и не слинкуется
Посмотрел свойства проекта, Shell32.lib присутствует в списке (среди многого прочено), но, опять-таки, сам я вручную его туда не цеплял. Походу, при создании проекта VC сам прописывает туда весь набор стандартных lib-ов.