广告公司记账管理软件,英文seo网站建设,网上做广告的网站,产品线下推广活动方案今天继续研究C#的WinForm的实例显示效果。 我们上次介绍了Winform窗体的唯一实例运行代码(见博文#xff1a;基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章 )。这就有一个问题#xff0c;程序已经打开了#xff0c;这时候再次运行该应用程序#xff0c;… 今天继续研究C#的WinForm的实例显示效果。 我们上次介绍了Winform窗体的唯一实例运行代码(见博文基于C#的应用程序单例唯一运行的完美解决方案 - 开源研究系列文章 )。这就有一个问题程序已经打开了这时候再次运行该应用程序我们的方案是将该应用的主窗体显示出来。这个在单例运行方案中已经有介绍当时用的是Windows API的ShowWindowAsync函数。但是这里有一个问题就是该窗体显示在Windows操作系统的任务栏里才有效如果窗体是托盘窗体的话窗体隐藏到托盘这时候该函数就无法获取到主窗体的句柄从而就无法打开该主窗体了。 为了解决这个问题笔者想到的是向已经启动的实例程序发送消息根据消息进行处理显示该主窗体下面是介绍。 1、 项目目录 下面是项目目录由基本的窗体及操作类组成。 2、 代码介绍 使用下面的API函数向线程发送消息 3、 运行界面 因为是基本的操作没录制GIF所以这里不提供界面。 4、 使用方法 参考该项目直接将操作类复制到自己的项目中然后修改操作函数即可。 5、 源码下载 这里提供源码例子下载 https://download.csdn.net/download/lzhdim/88171197 上面介绍了C#程序的无窗体进程发送消息的方案。其实我们将该程序修改一下就能够将该代码复用成窗体的消息处理即定义窗体的消息处理函数从而其它程序通过向该应用程序发送相对应的消息就能够控制该应用程序的处理了。笔者在2002年的时候对媒体播放器Winamp研究过该应用就是定义了很多的应用程序消息列表比如播放、暂停、快进、快退、下一首、停止等操作都是能够进行控制的。这个就是Windows的基于消息处理的应用程序的例子。