оболочка — C ++ ShellExecute MSG проблема

у меня есть .bat файл, который отправляет локальное сообщение. Когда я запускаю его сам (двойной щелчок), он работает (выскакивает сообщение). Это не работает, когда я запускаю .bat с ShellExecute(); хоть. В чем может быть дело? Вот код:

message.bat

msg * hello

main.cpp

#include <windows.h>

int main()
{
ShellExecute(NULL, "open", "message.bat", NULL, NULL, 0);
}

Другие вещи в .bat такие как start <something>, shutdownи т. д. работать с ShellExecute();,

РЕДАКТИРОВАТЬ Я даже не могу бежать msg с system();, Работает только вручную с cmd или .bat файл.

0

Решение

Может быть, вы собираете его как 32-битную на 64-битной ОС? в этом случае не будет разрешено запускать msg.exe

0

Другие решения

Вы должны запустить командные файлы, как это:

const TCHAR batchFilePath[MAX_PATH] = _T("C:\\Test\\message.bat");

TCHAR systemDirPath[MAX_PATH] = _T("");
::GetSystemDirectory( systemDirPath, sizeof(systemDirPath)/sizeof(_TCHAR) );

TCHAR commandLine[2 * MAX_PATH + 16] = _T("");

_sntprintf( commandLine, sizeof(commandLine)/sizeof(_TCHAR),
_T("\"%s\\cmd.exe\" /C \"%s\""), systemDirPath, batchFilePath );

STARTUPINFO si = {0};
si.cb = sizeof(si);
PROCESS_INFORMATION pi = {0};

if( !::CreateProcess( NULL,
commandLine,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi )
)
{
_tprintf( _T("CreateProcess failed (%d)\n"), GetLastError() );
return FALSE;
}

::WaitForSingleObject( pi.hProcess, INFINITE );
::CloseHandle( pi.hProcess );
::CloseHandle( pi.hThread );
0

По вопросам рекламы [email protected]