0

我有一个程序 A.exe,它引导另一个进程 B.exe,将动态命令行参数传递给 B.exe。默认的 Windows 7 任务栏任务列表将提供启动另一个 B.exe 实例的选项作为其顶部选项。例如:http ://cl.ly/image/2C1X2g1A2K0k顶部选项将打开命令窗口的另一个实例。

我希望通过 Win32/Shell API 自定义此默认任务列表,以便顶部选项实际上打开 A.exe 而不是 B.exe。这可能吗?这也适用于“固定”应用程序时;固定按钮应指向并加载 A.exe。因为 B.exe 需要由 A.exe 确定的动态命令行参数,所以这是一个要求。B.exe 不知道 A.exe。

如果这不可能,是否有任何其他解决方法(即外壳链接、快捷方式等)可用于获得此功能?还是有一种方法可以完全禁用该任务列表?

提前致谢。如果这个问题不清楚,请告诉我,我会更新描述。

4

1 回答 1

0

此问题的一个很好的解决方案是使用快捷方式 (.lnk) 文件,并结合MSDN 页面上解释STARTF_TITLEISLINKNAME的标志。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);

希望对有类似利基用例的人有所帮助。

于 2013-01-09T22:01:35.647 回答