message-pump相关内容
当在 STA 线程上实例化 COM 对象时,该线程通常必须实现消息泵,以便编组对其他线程的调用(请参阅 这里). 可以手动泵送消息,也可以依靠某些但不是全部线程阻塞操作会在等待时自动泵送与 COM 相关的消息这一事实.文档通常无助于确定哪个是哪个(请参阅此相关问题). 如何确定线程阻塞操作是否会在 STA 上泵送 COM 消息? 到目前为止的部分列表: 阻止进行抽水的操作*
..
当异常在消息泵中抛出时,我们遇到了 Windows 静默处理异常并允许应用程序继续运行的问题.例如,我们创建了一个测试 MFC MDI 应用程序,并覆盖了 OnDraw: void CTestView::OnDraw(CDC*/*pDC*/){*(int*)0 = 0;//碰撞CTestDoc* pDoc = GetDocument();断言有效(pDoc);如果(!pDoc)返回;//TODO
..
我有一个用 C# 编写的 Windows 服务,用于处理自助服务终端应用程序的所有外部硬件 I/O.我们的新设备之一是带有原生 DLL 中的 API 的 USB 设备.我创建了一个适当的 P/Invoke 包装类.但是,此 API 必须使用 Windows 应用程序的 HWnd 进行初始化,因为它使用消息泵来引发异步事件. 除了请求硬件制造商为我们提供不依赖于 Windows 消息泵的 AP
..
跳到问题底部;这只是一些额外的信息 我正在使用一个组件(GeckoFX)来渲染一些网站,很好,但它只能在 Windows 窗体中使用;因为它必须绑定到可以绘制的 WinForms 对象.因为所有的 WinForms 都在同一个线程中运行,所以我一次只能使用一个 GeckoFX 实例;所以我决定以 WinForm 的形式创建一个“工人类",并在其中添加所有逻辑.该表单不需要与主表单进行通信.
..
Windows 消息似乎是在 Windows 操作系统上通知应用程序的好方法.它实际上运行良好,但我想到的问题很少: 如何为 SendMessage 例程的 lparam 指定结构化数据(就像许多消息代码一样)?我的意思是...当然参数是一个指针,但是进程如何访问它呢?也许它是由发送/接收消息的进程加载的 DLL 分配的? 是否可以共享消息结构化参数(在发送方和接收方之间)?它们被编组
..
我有一个第三方开放源代码控件(真的不重要,但它是CefSharp的Chromium Web浏览器[v 43]). 最初,存在一个问题,如果您在控件内单击时打开了一个窗体菜单,则该菜单不会自行消失(就像控件吞没了click事件一样). 为避免这种情况,示例应用程序建议拦截 WM_MOUSEACTIVATE ,并通过发布但是,它创建了另一个.现在,一旦您在控件(触摸屏)内部至少触摸了3次,
..
pythoncom.PumpMessages() 据我了解,这一行基本上告诉程序永远等待.对我来说,它似乎正在工作.但是,我希望能够在适当的刺激下结束该程序.如何结束上述行,或停止程序进一步运行. 解决方案 根据这些 docs ,pythoncom.PumpMessages(): 为当前线程抽取所有消息,直到出现WM_QUIT消息为止. 因此,停止收集消息的一种方法是使用
..
我有一个用.NET编写的相当简单的控制台应用程序。有时,应用程序在没有操作员的情况下以批处理模式运行,而有时它是“自费”运行的。如果以批处理模式运行,则有一个已定义的默认选项,该选项可使程序自动运行。如果存在操作员,则还有其他选项允许用户从功能列表中进行选择。 由于我不想进入的原因,请使用命令-line参数不是首选。相反,我创建了一个10秒的窗口,操作员可以在其中选择功能。目前,我正在使用一
..
通常的VB处理繁重的任务的方法是将其放在后台工作线程中,而主线程则继续处理UI. 无论出于何种原因,我都需要以另一种方式进行操作:主线程执行繁重的工作,而后台线程则更新UI. 这是我到目前为止所拥有的.唯一的问题是,虽然UI窗口(Form1)确实被重绘,但您无法与之交互,甚至无法移动或调整它的大小(鼠标光标变成沙漏状且不会单击). Public Class ProgressDis
..
跳到底部询问该问题;这只是一些额外的信息 我正在使用组件(GeckoFX)渲染一些网站,很好,但是只能在Windows窗体中使用;因为它必须绑定到可以绘制的WinForms对象.因为所有WinForms都在同一线程中运行,所以我一次只能使用一个GeckoFX实例.因此,我决定以WinForm的形式创建一个“工人阶级",并在其中添加所有逻辑.该表单不需要与主表单进行通信. 现在我可以启动
..
当消息泵中抛出异常时,我们在Windows中静静地进入异常并允许应用程序继续运行。例如,我们创建了一个测试MFC MDI应用程序,并覆盖了OnDraw: void CTestView :: OnDraw(CDC * / * pDC * /) { *(int *)0 = 0; // Crash CTestDoc * pDoc = GetDocument(); ASSERT_V
..
当异常被抛入消息泵中时,我们遇到了Windows静默地吃异常并允许应用程序继续运行的问题。例如,我们创建了一个测试MFC MDI应用程序,并覆盖OnDraw: void CTestView :: OnDraw(CDC * / * pDC * /) { *(int *)0 = 0; // Crash CTestDoc * pDoc = GetDocument(); ASSER
..
我需要在后台坐着,当用户连接到一个RDP会话它会做一些环境设置,然后启动一个程序的程序。当程序关闭时它会做一些家务和注销会话。 我做它目前的方式是我的终端服务器启动该应用程序。这是建立一个Windows窗体应用程序,以保持控制台窗口的显示出来: 公共静态无效的主要() { //(略...)做一些设置工作 过程PROC =新工艺(); //(略...)安装的过程 proc.
..
当一个COM对象在STA线程实例化,线程通常实行以通话编组来来回回其他线程的消息泵(见的这里)。 一个既可以泵手动的消息,还是要靠在等待一些,但不是全部,线程阻塞操作会自动泵COM相关的消息的事实。文档通常不会在决定哪个是哪个了帮助(请参见此相关的问题)。 我怎么能确定一个线程阻塞操作将泵上的STA? COM消息 部分列出了目前为止: 阻止它的操作做泵*: Thread.Join
..
在
..
我有一个Windows服务在C#编写处理我们所有的外部硬件的I / O亭应用。我们的一个新的设备是配备在本机DLL中的API USB设备。我有一个适当的P / Invoke包装类创建。但是,此API必须用HWND到Windows应用程序初始化,因为它使用消息泵来提高异步事件。 另外投入要求硬件制造商,为我们提供了不依赖于Windows消息泵的API,是有什么办法可以手动实例在我的Windows服
..