繁体   English   中英

C ++ ShellExecute信息问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM