[求助]如何让一个exe程序(不是自己写的)可以最小化到托盘运行 exe解决方案托盘运行 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己写一个程序,使用NotifyIcon控件。双击,调用ShowWindow API让那个程序显示或者隐藏,隐藏起来,就在任务栏看不见了。 [DllImport("user32.dll", EntryPoint = "ShowWindow")] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);//恢复窗口 1是 SW_SHOWNORMAL 感谢各位,已经用win32API解决问题。但是还有一个问题是,如何检测到外部的exe程序的退出,有没有什么方法让外部程序退出的时候我这边能收到一个消息? 用wmi轮询,原帖:http://bbs.csdn.net/topics/390721596,这里略作修改以符合你所需情况static void Main(string[] args) { ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2"); WqlEventQuery query = new WqlEventQuery( "__InstanceDeletionEvent", new TimeSpan(0, 0, 1), "TargetInstance isa \"Win32_Process\""); ManagementEventWatcher watcher = new ManagementEventWatcher(scope, query); watcher.EventArrived += (s, e) => { Console.WriteLine("Process {0} has been closed.", ((ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value).Properties["Handle"].Value); }; watcher.Start(); Console.ReadKey(); }输出的就是退出进程的pid,Handle换成Name就是进程名称,ExecutablePath是映像路径,CommandLine是命令行,后两个有可能获取不到(例如win7下非管理员权限时的某些系统进程)。用PID匹配最精确。 感谢大家,所有问题已经解决,使用win32来控制外部的程序,使用ManagementScope ,WqlEventQuery ,ManagementEventWatcher 来侦测外部事件,长经验了! 接口不能实例化? 依赖倒置和依赖注入的关系 剪切图片,为什么是空白,第一个解决100分 NHibernate 插入二进制数据到MySql Blob 中报错... 满足一定要求的排序 算法问题,求大家帮忙,TKS。 菜鸟问题 C# 如何通过一个窗体上控件控制另一个窗体上的控件的属性 C#中实现集合的运算问题 散分给一个人(其他人不要进) c#调用c编写的dll 关于指针问题 那个控件可以实时显示raw图片
双击,调用ShowWindow API让那个程序显示或者隐藏,隐藏起来,就在任务栏看不见了。
[DllImport("user32.dll", EntryPoint = "ShowWindow")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);//恢复窗口 1是 SW_SHOWNORMAL
但是还有一个问题是,如何检测到外部的exe程序的退出,有没有什么方法让外部程序退出的时候我这边能收到一个消息?
{
ManagementScope scope = new System.Management.ManagementScope(@"\\.\root\CIMV2");
WqlEventQuery query = new WqlEventQuery(
"__InstanceDeletionEvent",
new TimeSpan(0, 0, 1),
"TargetInstance isa \"Win32_Process\"");
ManagementEventWatcher watcher = new ManagementEventWatcher(scope, query);
watcher.EventArrived += (s, e) => {
Console.WriteLine("Process {0} has been closed.",
((ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value).Properties["Handle"].Value);
};
watcher.Start();
Console.ReadKey();
}输出的就是退出进程的pid,Handle换成Name就是进程名称,ExecutablePath是映像路径,CommandLine是命令行,后两个有可能获取不到(例如win7下非管理员权限时的某些系统进程)。用PID匹配最精确。