C#程序的启动显示方案(无窗口进程发送消息) - 开源研究系列文章

本文介绍了如何在C#WinForm程序中,当主窗体被隐藏在托盘时,通过向已启动的实例发送消息来控制显示。作者提供了项目结构、代码示例和源码下载,以及提及了消息处理在Windows应用程序中的应用场景,如Winamp媒体播放器的控制功能。
摘要由CSDN通过智能技术生成

  今天继续研究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的基于消息处理的应用程序的例子。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzhdim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值