Articles of 消息

有人可以给我一个例子,说明如何select()提醒fd变成“ready”

我不知道为什么我很难find这个,但我正在看一些我们正在使用select()等待文件描述符的linux代码来报告它已经准备好了。 从select的手册页: select() and pselect() allow a program to monitor multiple file descriptors, waiting until one or more of the file descriptors become "ready" for some class of I/O operation 所以,这很好…我打电话给一些描述符select,给它一些时间的价值,并开始等待指示去。 文件描述符(或描述符的所有者)如何报告它已经“准备就绪”,使得select()语句返回?

如何在UWP XAML MVVM应用程序上接收最简单的Windows消息?

我的大问题:我需要从Windows 10桌面应用程序(或服务)发送信号到同一OS实例/机器上的 UWP XAML MVVM应用程序。 我在全局命名空间中使用了命名的信号量,但是这些在UWP上完全不起作用(出于安全原因,可能是devise的)。 没有快乐。 我尝试了UWP套接字, 只有当客户端在远程计算机上时,它才能与UWP一起作为监听器。 这也是一个安全devise的决定吗? 不知道。 豁免应用程序从回送限制没有帮助,因为这只适用于如果UWP应用程序是提出请求的客户端。 没有快乐。 好的,所以我留下了一个Windows消息发送到操作系统上的特定窗口… 我的testing应用程序是GitHub上UWP的AdventureWorks示例。 我如何得到这个来处理从不同进程发送的Windows消息? 我很难过 以下是我的testing客户端代码。 问题:如何在AdventureWorks中处理此消息? 将代码更改保持在最低限度是非常重要的,但目前我陷入困境,不知道要继续。 (这似乎是一个严密的秘密…) 请帮忙! 请示例代码。 class Program { [DllImport("user32.dll")] public static extern IntPtr FindWindow(string lpClassName, String lpWindowName); [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, uint wMsg, IntPtr wParam, IntPtr lParam); [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] […]

滚动鼠标下的窗口

如果你看看Visual Studio 2012,你会注意到,如果你使用鼠标滚轮,鼠标下的窗口将滚动,而不是焦点窗口。 也就是说,如果您在代码编辑器中有光标,并将鼠标移动到“解决scheme资源pipe理器”窗口并滚动,解决scheme资源pipe理器将滚动,而不是代码编辑器。 WM_MOUSEWHEEL消息,但是,只被发送到聚焦的窗口,所以在这种情况下,代码编辑器。 我们怎样才能实现我们的程序,使得WM_MOUSEWHEEL消息在鼠标下滚动,这是直观的,而不是聚焦的窗口?

捕获MFC应用程序在纯C ++ dll中生成的Windows消息

首先:这是可能的吗? 我有一个第三方DLL连接一些硬件。 它是用MFC编写的。 我收到(从DLL供应商)示例Visual Studio 2010解决scheme,它只有一个项目:一个MFC应用程序(.exe)调用第三方DLL有问题。 它工作正常。 当我尝试从我的DLL(这是简单的C ++,没有MFC,没有.NET)使用第三方DLL,我可以调用它的function很好,但有一个catch:示例MFC应用程序似乎“重写”按顺序MessageProc捕获第三方dll生成的某些消息。 虽然DLL有一个名为“RegisterFuncCallback”的函数,我使用它,我的callback永远不会被调用。 所以这里的问题是:如何在不创buildMFC应用程序的情况下捕获这些消息? (这甚至有可能吗?)

我需要一个消息泵,不会弄乱我打开的窗口

我的应用程序(我正在使用的安装程序的引导程序应用程序需要启动一些其他应用程序(我的安装程序和第三方安装程序的安装程序的先决条件),并等待它们完成。为了允许GUI执行屏幕更新在等待一个应用程序完成的时候,我使用Visual Studio文档中关于空闲循环处理的'兼容MFC'的例子,在等待循环中放置了一个消息泵作为指导。我的代码(在CWinApp的成员函数中派生类)如下: if (::CreateProcess(lpAppName, szCmdLineBuffer, NULL, NULL, TRUE, 0, NULL, NULL, &StartupInfo, &ProcessInfo)) { ::GetExitCodeProcess(ProcessInfo.hProcess, &dwExitCode); if (bWait) while (dwExitCode == STILL_ACTIVE) { // In order to allow updates of the GUI to happen while we're waiting for // the application to finish, we must run a mini message pump here to // allow messages […]

键盘钩在Windows C ++或什么?

我想build立我自己的应用程序,可以发送键盘命令(消息)到Windows操作系统。 例如,当我按ctrl + shit + n,我希望启动notepad.exe。 我怎样才能做到这一点? 你对我所使用的概念有一些build议吗? 我读过这是可能的时候使用键盘钩子? 这是唯一的方法? 你知道一个免费的和开源的应用程序,这可能是简单的吗?

无限的Windows消息循环

我在我的程序中有这个消息循环: while (true) { if (PeekMessage(&msg, window, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) { MessageBox(NULL, L"Quit", L"", 0); break; } TranslateMessage(&msg); DispatchMessage(&msg); } else { Render(); } } 这个循环不会结束。 即使主窗口消失,它也不会显示消息框。 这是WndProc代码: switch (msg) { case WM_CLOSE : DestroyWindow(hwnd); break; case WM_DESTROY : PostQuitMessage(0); break; default : return DefWindowProc(hwnd, msg, wParam, lParam); break; } […]

如何禁用Shift / Ctrl / Alt键的WM_KEYDOWN重复事件?

我有一个Windows应用程序对待Windows键事件。 该应用程序传达Windows消息。 当我按住Shift键时,重复发生WM_KEYDOWN消息。 即使按住Shift键,我也只想传达一个WM_KEYDOWN消息。 请你让我知道如何解决这个问题?

如何从C#中的工作线程发布UI消息

我正在用C#编写一个简单的Winforms应用程序。 我创build了一个工作线程,我希望主窗口响应完成工作的步骤 – 只需更改文本字段testField.Text =“就绪”中的某些文本即可。 我尝试了事件和callback,但是它们都是在调用线程的上下文中执行的,并且不能从工作线程执行UI。 我知道如何在C / C ++中做到这一点:从工作线程调用PostMessage。 我假设我可以从C#调用Windows API,但没有更多的.NET特定的解决scheme?

delphi:如何响应WM_SettingChange / WM_WinIniChange?

我需要知道什么时候我的应用程序WM_WININICHANGE WM_SETTINGCHANGE消息(以前称为WM_WININICHANGE )。 问题在于TApplication中的消息泵会在黑洞(默认处理程序)中将其发送出去 ,然后我才有机会看到它: procedure TApplication.WndProc(var Message: TMessage); … begin Message.Result := 0; for I := 0 to FWindowHooks.Count – 1 do if TWindowHook(FWindowHooks[I]^)(Message) then Exit; CheckIniChange(Message); with Message do case Msg of WM_SETTINGCHANGE: begin Mouse.SettingChanged(wParam); Default; <———————-*poof* down the sink hole end; … end; … end; 过程CheckIniChange()不会抛出任何我可以处理的事件, Mouse.SettingChanged()也不会。 一旦代码path达到Default ,它将被发送到DefWindowProc排水孔,永远不会再被看到(因为WndProc所做的第一件事是将Message.Result设置为零。 我希望分配一个处理程序TApplicationEvents.OnMessage事件: procedure TdmGlobal.ApplicationEvents1Message(var […]