C#使用Process类运行外部程序,已运行的程序自动还原主窗体
C#使用Process类运行外部程序,已运行的程序自动还原主窗体
C# Code:
private const int WS_SHOWNORMAL = 1; [DllImport("User32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); [DllImport("User32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); /// <summary> /// 运行外部程序,如程序已运行自动还原主窗体 /// </summary> /// <param name="processName">进程名称</param> /// <param name="filePath">需要运行的程序文件</param> /// <param name="args">启动程序的命令行参数</param> public static void RunProgram(string processName, string filePath, string args) { try { //查找进程 Process por = FindProcess(processName, filePath); if (por != null) { //如程序已运行自动还原主窗体 ShowWindowAsync(por.MainWindowHandle, WS_SHOWNORMAL); SetForegroundWindow(por.MainWindowHandle); return; } //启动进程 ProcessStartInfo p = new ProcessStartInfo(); p.FileName = filePath; p.WindowStyle = ProcessWindowStyle.Normal; p.Arguments = args; Process pr = Process.Start(p); Application.DoEvents(); Thread.Sleep(2000);//等待启动程序 } catch (Exception ex) { Msg.ShowException(ex); } } //来源:C/S框架网(www.csframework.com) QQ:1980854898
C# Code:
string file = Application.StartupPath @"\ERP.AttendImporter.exe"; MdiTools.RunProgram("ERP.AttendImporter", file, "User:" Loginer.CurrentUser.Account);
参考文档:
Delphi程序调用C#.Net编译的DLL并打开窗体(详解) C#创建批处理文件并自动运行 C#.Net版本自动更新程序及3种策略实现 C#.NET 监视操作系统打开程序(使用Window消息实现全局系统勾子) 自动升级是封装在框架里吧?运行客户端程序就自动升级? C#.Net组件开发 - 使用Attach to Process实时调试设计器代码 C#使用using语法自动关闭SQLConnection数据库连接 C#启动程序时检测运行多个实例 C# 调用API枚举窗体,根据标题还原窗体 运行程序,主窗体显示指定的模块 C#.NET VS2015运行时调试Windows服务(宿主)承载的WCF程序 C#.NET VS2015运行时调试Windows服务承载的WCF程序(新) C# WinForm程序出错的时候,自动重启程序 C#程序升级框架-软件版本自动升级系统|C/S框架网 软件自动升级程序之执行dos命令和自运行程序的升级包|C/S框架网
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |