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()语句返回?

我的应用程序如何findWindows消息的发件人?

我有一个应用程序在库中使用键盘钩子程序。 在一个消息的钩子wParam是255,我们认为是“(保留/ OEMClear)”。 我想找出这个消息的来源,因为它会导致我的应用程序在图书馆崩溃,并且鉴于它不应该发生,这将是很好的识别它。 信息只能在一台PC上重复出现 – 其他电脑根本看不到信息。 那么,有没有办法跟踪发送到窗口的消息的来源,或者系统上的所有消息?

如何防止控制改变Z命令?

我有.Net中的用户控件,我在WndProc中使用命中testing来允许在运行时用鼠标调整它的大小。 问题是,在命中testing成功后(鼠标按下,拖动resize,鼠标释放),控件以Z顺序向上跳,并将其废弃在窗体中。 我需要命中testing,因为它是一个非常自定义的控件。 WndProc有没有办法阻止控件改变它的Z顺序? 谢谢。 命中testing代码: protected override void WndProc(ref Message m) { if (!DesignMode && Sizeable && (m.Msg == Win32Wrapper.WM_NCHITTEST)) { Point Hit = new Point((int)m.LParam & 0xFFFF, (int)m.LParam >> 16); Hit = this.PointToClient(Hit); int DistToBorder = 5; if (Hit.X < DistToBorder) { if (Hit.Y < DistToBorder) { m.Result = (IntPtr)Win32Wrapper.HTTOPLEFT; return; } if […]

使用sendmessage将wm_close发送到另一个进程

我想发送wm_close到另一个进程,我想要安全地结束这个进程。 int _tmain(int argc, _TCHAR* argv[]) { DWORD SetOfPID; SetOfPID = GetProcId(_T("abc.exe")); //this will return pid HANDLE h = OpenProcess(PROCESS_ALL_ACCESS,false, SetOfPID); HWND hwnd = ::GetTopWindow(NULL); while(hwnd) { DWORD pid; DWORD dwThreadId = ::GetWindowThreadProcessId(hwnd, &pid); if(pid == SetOfPID) { break; } hwnd = ::GetNextWindow(hwnd, GW_HWNDNEXT); } //DestroyWindow(hwnd); bool temp = IsWindow(hwnd); **//this gives true** LRESULT res […]

处理来自其他进程的窗口的消息

我正在开发一个C#WPF应用程序,通过调用Win32 SetParent()来修复另一个应用程序的主窗口。 这个进程外子窗口的句柄被一个名为FormHost的类包装,这个类是从HwndHost派生的。 除了一件事情之外,所有工作都很好:重新窗口化窗口的消息不会传递给FormHost。 MSDN文档明确指出,HwndHost窗口过程WndProc()不能用于进程外窗口。 另外,MessageHook也不起作用。 我也尝试调用AttachThreadInput()来结合两个窗口的input处理。 没有运气。 有什么build议么?

捕获所有Windows消息

我想利用机器学习来模拟用户的意图,并可能自动执行常见的任务。 为此,我希望能够访问有关用户操作和机器状态的信息。 为此,我目前的想法是,获得Windows消息stream可能是前进的方向。 我希望获得尽可能多的信息,将信息过滤到我想留给机器学习工具的相关信息中。 这将如何完成? (最好用C#)。 请假设我知道如何pipe理和使用这些大量的数据。 任何帮助将不胜感激。

如何在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 […]