首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C#】给无窗口的进程发送消息

注:本文适用.net2.0+的winform程序 一个winform程序,我希望它不能多开(但是如何防多开不是本文要讲的),那么在用户启动第二个实例的时候,作为第二个实例来说,大概可以有这么几种做法:...怎么发 SendMessage/PostMessage自然是指不上的,因为这俩货也是基于窗口的,其实我一度怀疑走消息这条路是否可行,这涉及到一个原理问题,就是如果消息一定是只能发送给窗口的话,那注定此路不通...该API是向指定线程发送消息(MSDN文档在此),这也说明在原理上,消息并非只可以发给窗口,还可以发给线程,至于还能不能发给别的什么东西就不知道了。...winform的主线程往往就是UI线程,天然存在消息循环,所以无需考虑这个问题。第2个参数是要发送的消息ID。...后面俩参数我没用,你想让消息更特别一点,或想携带其它信息的话也可以用上。方法返回true/false分别代表发送成功/失败。

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    dotnet X11 窗口之间发送鼠标消息 模拟鼠标输入

    本文记录我阅读 Avalonia 代码过程中所学习到的在 X11 的窗口之间发送鼠标消息,可以跨进程给其他进程的窗口发送鼠标消息,通过此方式可以实现模拟鼠标输入 直接使用 XSendEvent 给指定窗口发送消息即可...7636387e97780403ce473f553540a9cc1e0652ef 获取代码之后,进入 DikalehebeekaJaqunicobo 文件夹,即可获取到源代码 以上代码是对自己进程内的主窗口发送鼠标移动消息的示例...比如有两个窗口,可以通过此方式让窗口 2 收到鼠标消息时,自动转发给窗口 1 上,核心代码如下 var handle = XCreateWindow(display, rootWindow, 0, 0,...但行为上看起来和 Windows 下的句柄非常类似 如以下的测试代码,启动自身作为新的进程,然后传入当前进程的窗口,让另一个进程获取当前进程的窗口,接着测试在另一个进程将鼠标消息发送到当前进程上 var...在 XDrawLine 里面也是传入 GC 和 Window 指针即可绘制线段,我就想着如果传入别的进程的窗口是否适合,是否就能在其他进程的窗口上绘制出内容 我尝试从另一个进程将 GC 传回来,如下面代码

    13410

    MQ·将多消息合并为一条消息的发送、消费的设计与实现

    由于mq使用的是亚马逊的sqs服务,而sqs是按请求数消费的原因,所以才有的将多消息合并为一条消息发送的想法。...本篇将介绍如何将多个消息合并成一个消息发送而不影响服务的并发性能,以及由于合并后产生的大消息消费出现的消息堆积现象,开的消费者越多反而消息堆积越多的bug。 为什么要将多消息合并为一个消息发送?...由于sqs限制单条消息的大小最大为256k,根据业务场景估算每点击消息也不可能达到1k,,所以我将256个请求合并为一个消息发送,或者1s内未达到256个消息也合并为一个消息发送,这样每月的费用可以直接除以...如何将大量消息合并为一条消息发送而不影响服务的高并发性能呢? 其实不影响是不存在的,只是让影响变得微弱。...如果阻塞队列满,那么push会直接将消息发送到mq。因此,服务重启时如果使用kill 9强行结束进程,至多只会有1s的数据丢失。设置1s还有一个原因就是控制消息的实时性。

    4.1K10

    如何将消息按指定时间发送到钉钉群里

    如何将消息按指定时间发送到钉钉群里 目录 1、前言 2、添加机器人 3、编写脚本 4、Jenkins配置 5、消息通知效果 1、前言 根据项目组需求,组员每天都要写工作日报,但有时候忙起来,就忘记写日报这个事了...如图所示: 除了可以用群助手,也可以自定义消息来完成消息通知。 方法其实类似 爬取蒲公英内测发版信息推送到钉钉群 这篇文章。...pip3 install requests 发送消息有两种格式: 1、消息格式为:text #!...print(res.text) if __name__=="__main__": test_markdown() 4、Jenkins配置 1、创建日报通知项目,脚本可以上传到Git上来进行获取或者将脚本上传到本地服务器来进行获取...5、消息通知效果 1、控制台查看Jenkins构建日志。 2、钉钉群收到的消息,消息格式为:text。 3、钉钉群收到的消息,消息格式为:markdown。

    3K10

    知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)

    那么,作为不懂技术的普通人,有没有想过,你每次使用QQ或微这种IM聊天应用时,你所发送的消息,是如何被计算机送达给对方的?...《技术往事:史上最全QQ图标变迁过程,追寻IM巨人的演进历史》 《开发往事:深度讲述2010到2015,微信一路风雨的背后》 《开发往事:记录微信3.0版背后的故事(距微信1.0发布9个月时)》 《微信七年回顾...4、在微信里,我们发送一条聊天消息是如此简单 李雷在手机上打开微信(IM客户端),在聊天输框中输入“Hello!”,点击发送。...5、消息发送者:发送端是怎么工作的? 先看看发送端,李雷手机上的IM客户端中发生了什么? 从上图可以看出,发送一条信息经过三个步骤: 1)消息编辑: 李雷操作键盘输入要发送的文字,点击“发送”按钮。...一条IM消息就是一封信,本地数据库就是李雷家的邮箱; 3)消息发送: IM客户端中的网络模块通过长连接将IM消息发给IM服务端。这类似邮递员将信件汇总发往邮政局。

    1.9K30

    知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)

    那么,作为不懂技术的普通人,有没有想过,你每次使用QQ或微这种IM聊天应用时,你所发送的消息,是如何被计算机送达给对方的?...《技术往事:史上最全QQ图标变迁过程,追寻IM巨人的演进历史》 《开发往事:深度讲述2010到2015,微信一路风雨的背后》 《开发往事:记录微信3.0版背后的故事(距微信1.0发布9个月时)》...5、消息发送者:发送端是怎么工作的? 先看看发送端,李雷手机上的IM客户端中发生了什么? ?...从上图可以看出,发送一条信息经过三个步骤: 1)消息编辑: 李雷操作键盘输入要发送的文字,点击“发送”按钮。这一切都发生在IM客户端的界面模块中。...一条IM消息就是一封信,本地数据库就是李雷家的邮箱; 3)消息发送: IM客户端中的网络模块通过长连接将IM消息发给IM服务端。这类似邮递员将信件汇总发往邮政局。

    1.7K10

    Invalidate介绍

    窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。...调用Invalidate等函数后窗口不会立即重绘,这是由于WM_PAINT消息的优先级很低,它需要等消息队列中的其它消息发送完后才能被处理。...调用UpdateWindow函数可使WM_PAINT被直接发送到目标窗口,从而导致窗口立即重绘。...Delphi中的代码procedure TWinControl.Invalidate;begin Perform(CM_INVALIDATE, 0, 0);end;这个方法会使窗口重绘。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    40910

    什么是窗口句柄

    操作系统用这个编号来发送消息的.这就是[操作系统的消息机制。...如果可以隐藏一个窗口,就发送消息让他隐藏,这里就用到API,当然API是比较多的,所有的功能都是通过API实现的。...更专业一点: 在Windows中,是一个32为无符号整数值,句柄是一个系统内部数据结构的引用,例如,当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142...号窗口,就此,你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口极小化为图标,等等。...实际上许多Windows API函数把句柄作为它的第一个参数,如GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等等,不仅仅局限于窗口函数。

    1.3K20

    springboot整合rabbitMQ系列(一)第一个模型,直接将消息发送给队列,消费端在队列里面直接拿出消息

    我们之前将的是,直接使用java代码操作rabbitmq,相当于就是原生的代码操作rabbitmq,但是之后我们在项目里面,不会使用原生的java代码操作rabbitmq的,所以现在我们要将springboot...以后就可以直接使用rabbitTemplates 进行操作rabbitmq 3 在测试类里面直接操作rabbitmq 之前只用java原生代码操作rabbitmq的时候,有5种模型 第一个模型 直接发送消息到队列里面...,现在就等 提供者发消息了。...第一个参数 是 rabbitTemplate.convertAndSend("hello","hello world"); } } 意思就是使用rabbitTemplate直接发送消息...创建一个springboot项目 2 导入rabbitmq的依赖 3 配置用户名和密码 4 使用rabbittemplate 进行往 rabbitmq里面发数据 5 使用注解进行监听队列 ,并且将队列里面的消息输出

    1K30

    Delphi入门教程

    面向对象程序开发的基本概念 Delphi是面向对象的程序设计工具,以Objiect Pascal语言为基础,同过将常用的功能封装为组件放在VCL(可视化组件库)中,极大地提高了程序开发的效率。...6.事件(Event):在Windows系统中,事件就是消息。...【Reopen】:打开一个程序员最近使用过的文件,Delphi6每次关闭应用程序时会保存访问记录,以保证下次能够快速打开 5.【Save】:保存当前文件,以备后用 6....Form/Unit】:切换窗体窗口和单元文件窗口 【Units】:用于打开项目中所用到的单元文件 【Forms】:用于打开项目中所用到的窗体 【Toolbars】:调整主窗口下的工具栏 5....【Add to Project】:将各种Delphi6支持的文件加入当前项目 【Remove from Project】:将指定的文件从项目中移走 【View Source】:查看项目文件的源代码 【Compile

    7.3K20

    消息中间件RabbitMQ系列,利用代码将数据放到队列里面,使用直连模式,实现发送者(三)

    这个服务端的项目是要发消息 的,那么以什么模型进行发呢?rabbitmq提供了很多发消息的模型,现在开始先讲第一种,直连模型 直连模型 这个模型意思是,提供给你一个服务端,一个队列,一个消费者 ?...代码实现发送者 之前已经导入了rabbitmq的依赖,现在直接创建一个java类,这个类里面需要做的就是用rabbitmq依赖里面的一个工厂类创建工厂对象,之后利用这个工厂对象就可以连接这个rabbitmq...connectionFactory.newConnection(); // 创建通道 Channel channel = connection.createChannel(); // 让通道和消息队列进行绑定...以上是执行成功,这个执行完之后,意思就是已经利用代码 将消息发送到rabbitmq软件里面了,我们从rabbitmq软件的控制台里面看看有没有 ?...这个队列里面有一个消息,没有被消费了,我们再执行一次代码,看这个队列里面的变化 ? 看,变为了2,说明这个hello的队列里面有2个消息还没有被消费。 这个管理界面有一个自动刷新的按钮 ?

    71620

    directui

    即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上。...;    4、Skin++ 收到窗口创建等消息,根据类名、风格等一些条件来判断是否对该窗口进行子类化;    5、窗口子类化即可以收到该窗口所有的消息;    6、根据不同的消息进行相应的处理。...API函数来进行;    9、控件销毁时,Skin++即对其进行反子类化,将Skin++换肤前的消息过程地址重新设成当前的消息过程;    10、控件所有的消息不再经过Skin++消息处理函数。...控件执行其默认的窗口消息处理函数;    11、应用程序退出,Skin++库被卸载,在卸载之前Skin++获得通知,Skin++便在内部执行Hook的反初始化与资源文件的清理。...Net 2008;    支持 PowerBuilder 各种版本:PowerBuilder 6.0,7.0,8.0,9.0,10.0,10.5,11.0;    支持 Delphi各种版本:Delphi

    2.2K60

    截取程序的网络封包(Delphi Hook API)

    有时候我们需要对其它应用程序发送和接收的网络数据进行拦截,比如要对IE发送的**头进行分析,得到请求的地址等.这次我们可以用一些例如WPE, Sniffer之类的工具来达到目的.但是工具功能有限,要想实现更强大的功能...拦截网络数据封包的方法有三种,一是将网卡设为混杂模式,这次就可以监视到局域网上所有的数据包,二是HOOK目标进程的发送和接收的API函数,第三种方法是自己实现一个代理的DLL.在这里我们使用HOOK API...下面是一个尽量简化了的API HOOK的模版,原理是利用消息钩子将DLL中的代码注入到目标进程中,再用GetProcAddress得到API函数入口地址,将函数入口址改为自己定义的函数入口,这样就得到了...HOOK.DLL的代码: Delphi代码 ?...: Delphi代码 ?

    1.9K51

    delphi vcl_delphi数据类型

    TApplication所担负的任务有:管理图标、提供快捷帮助和基本消息处理。...每个Delphi应用程序都有一个指向TApplication对象的指针,此指针称为Application,用TApplication类主要执行消息框,管理快捷帮助,为按钮和状态栏设置提示文本。...其继承关系如下: 2、TForm类 TForm类封装了VCL中的窗体,窗体可用作主窗体、对话框、辅助窗口以及可以想像出的任何其他类型窗口。TForm是VCL中的主要功能类。...TDBNavigator组件提供了一些按钮,用这些按钮用户可以移动数据库表,这个类包括的按钮有下一个记录、前一个记录、第一个记录、最后一个记录、取消编辑、接收编辑和继续编辑等。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.7K10

    博客目录及索引,欢迎指导交流

    session管理 Openfire集群源码分析 openfire的组件(Component)开发 Openfire阶段实践总结 技术笔记:XMPP之openfire+spark+smack XMPP协议之消息回执解决方案...delphi相关 技术笔记:Indy IdSMTP支持腾讯QQ邮箱邮件发送 技术笔记:Indy的TIdSMTP改造,解决发送Html和主题截断问题 技术笔记:Delphi多线程应用读写锁 技术笔记:Indy...控件发送邮件 学习笔记:7z在delphi的应用 学习笔记 :DrawText 学习笔记:delphi之TStringGrid 学习笔记: Delphi之线程类TThread 学习笔记:delphi多线程知识...WEB开发相关 Http状态码之:301、302重定向 学点HTTP知识 学习笔记:URL Protocol在浏览器中打开本地应用程序 学习笔记:发现一个IE版本判断的好方法 使用js在网页上记录鼠标划圈的小程序

    1.7K90
    领券