草庐IT

消息延迟

全部标签

windows - 在多宿主 Windows PC 上接收多播消息

我正在基于multicast/udp在具有多个网络接口(interface)的PC上开发诊断工具。用户可以选择一个NIC,应用程序创建套接字,将它们绑定(bind)到这个NIC并将它们添加到特定的多播组。多播消息的发送工作正常。但是,只有当我将套接字绑定(bind)到我PC的特定NIC时,消息接收才会成功。它几乎看起来像是在Windows中有一个用于接收多播消息的“默认”NIC,它始终是GetAdapterInfo函数返回的第一个NIC。我用Wireshark监控网络,发现“IGMPJoinGroup”消息不是从我绑定(bind)套接字的NIC发送的,而是由这个“默认”NIC发送的。如

windows - 在第 3 方 DLL 中查看可用的消息字符串(来自 mc.exe)

有没有办法查看DLL中可用的所有消息(即由mc.exe消息编译器为FormatMessage创建的消息)?看起来它们是作为类型11的单个资源添加的。不幸的是,该资源是二进制的。 最佳答案 我使用ResourceHacker对于所有与资源相关的事物。这些消息显示为“消息表”资源,其中包含所有人类可读的字符串及其ID。 关于windows-在第3方DLL中查看可用的消息字符串(来自mc.exe),我们在StackOverflow上找到一个类似的问题: https:

windows - 关于消息循环的问题

有个问题困扰了我很久。简短版:WindowsMessageLoop的工作范式是什么?详细版本:当我们启动一个Windows应用程序(不是控制台应用程序)时,我们可以通过鼠标或键盘与它进行交互。该应用程序从其消息队列中检索代表我们Action的各种消息。Windows负责收集我们的操作并将消息正确地馈送到该队列中。但这种情况是否意味着Windows必须无限地运行?我认为Windows调度程序应该一直在运行。它可能会在预定义的时间间隔内由时间中断调用。当调度程序被时间中断触发时,它将当前线程切换到下一个挂起的线程。单个线程只能通过GetMessage()获取其消息计划运行时间。我想知道如果

c# - 如何在 C# 中从工作线程发布 UI 消息

我正在用C#编写一个简单的winforms应用程序。我创建了一个工作线程,我希望主窗口响应完成其工作的胎面——只需更改文本字段中的一些文本,testField.Text=“Ready”。我尝试了事件和回调,但它们都在调用线程的上下文中执行,你不能从工作线程执行UI。我知道如何在C/C++中执行此操作:从工作线程调用PostMessage。我假设我可以从C#中调用WindowsAPI,但是没有更具体的.NET解决方案吗? 最佳答案 在来自已完成线程的事件回调中,使用InvokeRequired模式,正如对这篇SO帖子的各种回答所展示的

c++ - DLL 中的 Windows 消息队列处理

我有一个由应用程序加载的dll,我无法修改应用程序的源代码(因为我没有源代码)并且我想使用插件注册一个系统范围的热键。我可以通过RegisterHotKey(NULL,1,MOD_CONTROL|MOD_NOREPEAT,0x42)之类的方式注册热键(参见here),但我不确定应该如何处理消息队列,我应该一个新线程并在dll初始化时创建消息处理循环?接收消息的是我的dll还是加载dll的应用程序,最后还有更好的方法吗? 最佳答案 这是应该如何完成的:你的DLL创建一个线程此线程运行消息循环(GetMessage()/Dispatch

c++ - 模态消息循环中的 WM_CLOSE

我正在为自定义对话框使用特殊的消息循环。当对话框打开并且窗口关闭时,我想达到下面的第二个if(msg.message==WM_CLOSE)。for(;;){if(PeekMessage(&msg,0,0,0,PM_NOREMOVE)){if(msg.message==WM_CLOSE){GetMessage(&msg,0,0,0);break;}else{if(GetMessage(&msg,0,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}if(msg.message==msgEnd)break;}}问题是此if中的代码从未达

windows - 将 Windows 对话框错误消息重定向到控制台

有谁知道如何重定向/捕获模态Windows错误对话框?对于仅尝试运行程序并捕获退出代码和stdout/stderr输出的非交互式命令行程序来说,这确实是个问题。此问题的最新实例是具有以下形式的模态Windows对话框:Theprogramcan'tstartbecauseismissingfromyourcomputer.Tryreinstallingtheprogramtofixthisproblem.(模态GUI窗口的标题是“系统错误”) 最佳答案 可以使用SetErrorMode()抑制这些系统错误对话框.在这种情况下,Cre

windows - 如何通过控制台应用程序延迟 Windows 中的系统关闭?

我有一个正在运行的应用程序,用户已发出关闭系统的命令,但我想将关闭推迟到我的应用程序运行时。应用程序工作完成后,系统应关闭。 最佳答案 这取决于您所谈论的是哪个版本的Windows。在WindowsXP中,您可以响应WM_QUERYENDSESSION之类的消息以阻止关闭。(由于您是控制台应用程序,您可能需要在控制台应用程序仍在运行时生成一个小窗口应用程序来执行此操作。)但是Vista让应用程序很难阻止关机。(Microsoft声称根本无法做到这一点,但我确实看到VisualStudio2010设法做到这一点。)您可以延迟关闭大约五

c++ - CFileDialog 延迟崩溃

我在基于对话框的MFC应用程序中添加了一个“打开文件”对话框。现在,在通过按下“打开”或“取消”按钮关闭打开的文件对话框后整整一分钟(!),我的应用程序崩溃了。当它崩溃时,输出中会发生以下情况:1)一堆Windows线程正在退出;2)正在抛出一堆COM异常(0x80010108“调用的对象已与其客户端断开连接”和0x800401FD“对象未连接到服务器”);3)最后,出现了一个未处理的异常:0xC0000005:访问冲突读取位置0xfeeefeee,调用堆栈指向ole32.dll。说我很困惑是轻描淡写的说法。调用对话框的代码如下:CFileDialogfileDlg(TRUE,_T("

windows - 具有延迟的全局键盘 Hook

我正在为条形码扫描仪制作“驱动程序”。这个特定的扫描仪基本上是一个USB键盘,只要扫描到某些东西就会生成击键。我想找到一种方法来区分这些击键和正确键盘发送的那些击键。不幸的是,唯一的区别是扫描仪生成击键的速度真的很快,在几分之一秒内完成了一系列的按键操作。我的看法是,我必须设置一个全局键盘钩子(Hook)来拦截所有输入,以某种方式存储它,稍等片刻,然后将这些击键发送到钩子(Hook)链的更下方,或者假设它们是扫描仪生成的并适本地处理它们。但是,由于之前没有使用钩子(Hook)的经验,我不确定正确的方法。我可以只调用CallNextHookEx()中的某些方法而不是其他线程中的Keybo