程序的快捷方式如下:
目标类型: 应用程序
目标位置: AutoCAD R14
目标: "C:\Program Files\AutoCAD R14\acad.exe" /p Tch14
起始位置: C:\Tangent\Tch14
运行方式: 常规窗口
CString path; //保存为目标值,也就是:"C:\Program Files\AutoCAD R14\acad.exe" /p Tch14
我在程序中使用: WinExec(path, SW_SHOW)与
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof STARTUPINFO;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
PROCESS_INFORMATION pi;
BOOL res = CreateProcess(
NULL,
(LPSTR)(LPCTSTR)path,
NULL,
NULL,
NULL,
NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW,
NULL,
NULL,
&si,
&pi);
if (TRUE == res)
{
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
其运行结果与我把快捷方式的"起始位置: C:\Tangent\Tch14"值清空一样, 出现错误.
请问我要如何在程序中正确打开上述程序.
注: 我把"目标:"C:\Program Files\AutoCAD R14\acad.exe" /p Tch14"的值放在
开始菜单的运行中可以正常打开.
昏,又漏了,应该是:
CString path="\"C:\\Program Files\\AutoCAD R14\\acad.exe\" /p Tch14"
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof STARTUPINFO;
si.wShowWindow = SW_SHOW;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
PROCESS_INFORMATION pi;
BOOL res = CreateProcess(
NULL,
(LPSTR)(LPCTSTR)path,
NULL,
NULL,
NULL,
NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW,
NULL,
"C:\\Tangent\\Tch14",
&si,
&pi);
if (TRUE == res)
{
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
改变当前路径,设为快捷方式的起始位置, 设显示方式为: SW_SHOW, 否则你会看不过窗口