写了一个windows 服务,内部使用定时器结合ShellExecute 启动第3方程序,
但是针对netcore api接口只能看到进程接口,window桌面看不到。
Hh.Mes.Api.exe就是一个nercore 接口api程序
代码:
var result = ShellExecute(IntPtr.Zero, "Open", val.start, string.Empty, val.directory);
/// <summary>
/// Shell命令启动程序
/// 返回值大于32表示执行成功 返回值小于32表示执行错误
/// </summary>
/// <param name="hwnd">用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口</param>
/// <param name="operation">用于指定要进行的操作</param>
/// <param name="fileName">用于指定要打开的文件名</param>
/// <param name="parameters">若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)</param>
/// <param name="directory">用于指定默认目录</param>
/// <param name="showCmd">若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0</param>
/// <returns></returns>
[DllImport("shell32.dll", CharSet = CharSet.Unicode)]
public static extern int ShellExecute(IntPtr hwnd, string operation, string fileName, string parameters, string directory, int showCmd = 1);
Windows服务一般在Session0里,EXE应用一般在Session1里,Win7及以后的系统将服务与应用程序进行了Session隔离,不允许其进行UI交互,可以考虑穿透Session隔离来启动。
https://blog.csdn.net/chen_2008_good/article/details/120194804
推荐你使用nssm工具