【发布时间】:2013-11-29 05:41:18
【问题描述】:
我用 C++ 创建了一个 Windows 服务,它在特定事件上运行一个 VBScript 文件。当我从 C++ 中的 Win32 应用程序执行此操作时,这工作正常,但在 Windows 服务中的工作方式不同。
CPP文件代码:
SHELLEXECUTEINFO ExecuteInfo;
memset(&ExecuteInfo, 0, sizeof(ExecuteInfo));
ExecuteInfo.cbSize = sizeof(ExecuteInfo);
ExecuteInfo.fMask = 0;
ExecuteInfo.hwnd = 0;
ExecuteInfo.lpVerb = _T("open"); // Operation to perform
ExecuteInfo.lpFile = _T("D:\\demo.vbs"); // Application name
ExecuteInfo.lpParameters = 0; // Additional parameters
ExecuteInfo.lpDirectory = 0; // Default directory
ExecuteInfo.nShow = SW_SHOW;
ExecuteInfo.hInstApp = 0;
if(ShellExecuteEx(&ExecuteInfo) == FALSE)
{
}
【问题讨论】:
-
默认情况下,VBScript 使用“GUI”解释器
wscript.exe运行。尝试使用cscript.exe运行它。 -
“工作方式不同”究竟是什么意思?
-
@MC ND 这一行 "Set objShellWindows = objShell.Windows" 给出了当前从 exe 打开的所有窗口选项卡,但是当它从 Windows 服务调用时什么也没提供。
标签: c++ vbscript windows-services