首页 新闻 会员 周边 捐助

c# 启动第3方程序 页面不显示

0
悬赏园豆:40 [已解决问题] 解决于 2023-01-29 14:05

写了一个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);

s_p的主页 s_p | 初学一级 | 园豆:140
提问于:2022-12-09 09:13
< >
分享
最佳答案
0

Windows服务一般在Session0里,EXE应用一般在Session1里,Win7及以后的系统将服务与应用程序进行了Session隔离,不允许其进行UI交互,可以考虑穿透Session隔离来启动。

https://blog.csdn.net/chen_2008_good/article/details/120194804

收获园豆:20
残生 | 初学一级 |园豆:140 | 2022-12-09 09:26
其他回答(1)
0

推荐你使用nssm工具

收获园豆:20
SonyXbox | 园豆:370 (菜鸟二级) | 2022-12-09 15:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册