我有一个程序A.exe,它引导另一个进程B.exe,将动态命令行参数传递给B.exe。默认的Windows 7任务栏任务列表将提供一个选项,以启动另一个B.exe实例作为其顶级选项。例如:http://cl.ly/image/2C1X2g1A2K0k top选项将打开命令窗口的另一个实例。
我想要的是通过Win32 / Shell API自定义此默认任务列表,以便top选项实际打开A.exe而不是B.exe。这可能吗?这也适用于应用程序被“固定”的情况;固定按钮应指向,并加载A.exe。由于B.exe需要由A.exe确定的动态命令行参数,因此这是一项要求。 B.exe不了解A.exe。
如果无法做到这一点,是否还有其他解决方法(即shell链接,快捷方式等)可用于获取此功能?或者只是一种完全禁用该任务列表的方法吗?
提前致谢。如果这个问题不明确,请告诉我,我会更新说明。
答案 0 :(得分:0)
此问题的一个很好的解决方案是使用快捷方式(.lnk)文件,并结合STARTF_TITLEISLINKNAME
标记as explained on the MSDN page。 Windows将使用快捷方式作为其任务栏任务项来启动应用程序的新实例(任务列表中的顶部条目)以及将应用程序固定到任务栏时。
例如,假设B.lnk指向B.exe,我们可以输入A.exe:
PROCESS_INFORMATION piProcInfo;
ZeroMemory(&piProcInfo, sizeof(PROCESS_INFORMATION));
STARTUPINFO siStartInfo;
ZeroMemory(&siStartInfo, sizeof(STARTUPINFO));
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.lpTitle = (LPTSTR)L"C:\Path\to\B.lnk";
siStartInfo.dwFlags = STARTF_TITLEISLINKNAME;
CreateProcess(NULL,
(LPTSTR)L"C:\Path\to\B.exe",
NULL,
NULL,
TRUE,
CREATE_NO_WINDOW,
NULL,
NULL,
&siStartInfo,
&piProcInfo);
希望能帮助有类似利基用例的人。