[求助]如何让一个exe程序(不是自己写的)可以最小化到托盘运行

long7782 2014-04-07 10:03:47
我现在有一个程序,是exe可运行文件,依赖于好些dll和skin等资源文件,但这些的都不是主要的。
问题是:这个程序运行后,最小化时不在系统托盘,而是在任务栏,也不像一般的程序点X后会到托盘区。我想通过编写代码,在代码中让这个程序运行,实现可以在托盘运行。求解决方案。
我到网上搜索了一下,都是让用NotifyIcon控件,但是这个控件仅仅是解决自己编写的程序在托盘去运行的问题。
查到一个Actual Window Minimizer软件,可以让任何程序都可以托盘运行,虽然可以实现我的目的,但是还要多装一个软件,是在感觉不爽。既然它这个软件可以实现这个功能,那么我编写一个东西,直接针对于我的exe程序应该是可行的。
求大神提供解决方案,甚至是代码,万分感激!

...全文
1259 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
btman52 2014-04-13
  • 打赏
  • 举报
回复
引用 5 楼 long7782 的回复:
感谢各位,已经用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匹配最精确。
long7782 2014-04-13
  • 打赏
  • 举报
回复
感谢大家,所有问题已经解决,使用win32来控制外部的程序,使用ManagementScope ,WqlEventQuery ,ManagementEventWatcher 来侦测外部事件,长经验了!
long7782 2014-04-12
  • 打赏
  • 举报
回复
感谢各位,已经用win32API解决问题。 但是还有一个问题是,如何检测到外部的exe程序的退出,有没有什么方法让外部程序退出的时候我这边能收到一个消息?
zj_zwl 2014-04-08
  • 打赏
  • 举报
回复
1楼正解......
卧_槽 2014-04-08
  • 打赏
  • 举报
回复
找到窗口句柄,发送最小化消息。
_小黑_ 2014-04-08
  • 打赏
  • 举报
回复

[DllImport("user32.dll", EntryPoint = "ShowWindow")]
        private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);//恢复窗口 1是 SW_SHOWNORMAL
threenewbee 2014-04-07
  • 打赏
  • 举报
回复
自己写一个程序,使用NotifyIcon控件。 双击,调用ShowWindow API让那个程序显示或者隐藏,隐藏起来,就在任务栏看不见了。

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧