[英]C++ ShellExecute msg issue
我有一个.bat
文件,用于发送本地消息。 当我自己运行它(双击)时,它可以工作(弹出一条消息)。 当我使用ShellExecute();
启动.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();
。
编辑我什至无法使用system();
运行msg
system();
。 它只能从cmd
或.bat
文件手动工作。
您应该像这样运行批处理文件:
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 );
难道是您要在64位操作系统上将其编译为32位? 在这种情况下,将不允许运行msg.exe
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.