是否可以将子进程作为父进程运行?
我的目录结构如下:
program.exe
仅使用一些参数执行internal.exe
。
#include <stdio.h>
#include <process.h>
int main(void) {
_execl(".\\bin\\internal.exe",
"internal.exe", "some args", NULL);
return 0;
}
论点很重要;没有他们internal.exe
不会做任何事情。
大多数情况下都可以,但是不能与任务栏很好地集成。该程序在任务栏中显示为internal.exe
,并将其固定在任务栏上没有用,因为单击固定的快捷方式将执行internal.exe
,而无需添加参数,并且会立即关闭。>
我希望它以program.exe
的形式显示在任务栏上,以便将其固定在任务栏上可以固定工作的“启动器”,而不是内部零件。
这可能吗?
答案 0 :(得分:1)
就实际流程而言,您不能将孩子变成父母。任务栏在更高级别上起作用,并为您提供更多控制权。
以下各项描述了需要明确的AppUserModelID 的常见方案。他们还指出了应该使用多个显式AppUserModelID的情况。
...
对用户而言,属于同一应用程序的协作或链接流程应将相同的AppUserModelID应用于每个流程。例如带有启动程序进程(链接)和Microsoft Windows Media Player的游戏,Microsoft Windows Media Player具有在一个进程中运行的首次运行/设置经验,而主应用程序在另一个进程中(合作)运行。
如果您不是子应用程序的作者,事情将会变得复杂。
如果是Java或其他类型的框架,则应设置IsHostApp
值。否则,您可以尝试使用UseExecutableForTaskbarGroupIcon
and TaskbarGroupIcon
进行播放,但是这些操作不会更改AppUserModelID。设置NoStartPage
将阻止用户固定子应用程序。
如果您知道如何找到子应用程序的窗口,则可以在父级中调用SHGetPropertyStoreForWindow
并将ID设置为相同的id as your parent process和/或设置System.AppUserModel.Relaunch*
属性。