- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试向应用程序发送 WM_INPUT 消息,但我遇到了一些未能解决的障碍。我创建了如下所示的 RAWINPUT 结构:
//try sending 'W'
RAWINPUT raw = {0};
char c = 'W';
//header
raw.header.dwSize = sizeof(raw);
raw.header.dwType = RIM_TYPEKEYBOARD;
raw.header.wParam = 0; //(wParam & 0xff =0 => 0)
raw.header.hDevice = hDevice;
//data
raw.data.keyboard.Reserved = 0;
raw.data.keyboard.Flags = RI_KEY_MAKE; //Key down
raw.data.keyboard.MakeCode = static_cast<WORD>(MapVirtualKeyEx(c, MAPVK_VK_TO_VSC, GetKeyboardLayout(0)));
raw.data.keyboard.Message = WM_KEYDOWN;
raw.data.keyboard.VKey = VkKeyScanEx(c, GetKeyboardLayout(0));
raw.data.keyboard.ExtraInformation = 0; //???
//Send the message
SendMessage(hPSWnd, WM_INPUT, 0, (LPARAM)raw/*Raw input handle*/); //TODO: Handle to raw input
我被困在至少两个位置:
是否需要向 raw.data.keyboard.ExtraInformation
传递一些特殊的东西,或者是 GetMessageExtraInfo()
,还是不需要在这里传递任何东西?
WM_INPUT 消息的 LPARAM 参数包含 RAWINPUT 结构的句柄,而不是地址或结构本身...如何创建这样的句柄?
我不想使用 SendInput,因为它要求窗口是事件窗口。我已经这样做了,而且效果很好,但是当我激活另一个窗口时 - 当然 - 它停止在前一个窗口上工作。
所以我想要实现的是,将输入发送到不需要处于事件状态的应用程序。
最佳答案
所有 raw input documentation 都是针对如何处理系统发送到您的应用程序的原始消息而设计的。如果您的应用程序将此类消息发送到另一个应用程序,则几乎没有迹象表明它会正常工作。接收应用程序必须 register to receive WM_INPUT
messages ,而大多数应用程序不需要。
您可能想改用 Microsoft UI Automation。
但是如果你想试验 WM_INPUT
...
The LPARAM-parameter of the WM_INPUT-message contains a handle to a RAWINPUT-structure not an address or the structure itself... How to create such a handle?
这是一个非常古老的 API,它希望您使用来自基于句柄的内存管理器之一的句柄。
HGLOBAL hRaw = ::GlobalAlloc(GHND, sizeof(RAWINPUT));
RAWINPUT *pRaw = reinterpret_cast<RAWINPUT*>(::GlobalLock(hRaw));
// initialize the structure using pRaw
::GlobalUnlock(hRaw);
// use hRaw as the LPARAM
关于c++ - 如何模拟原始输入/以正确的方式向应用程序发送 WM_INPUT 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12590145/
我想捕捉发送到我的窗口的按键以存储每个键的状态,并区分键的左右实例,如 WM_LCONTROL 和 WM_RCONTROL. 因为 WM_KEYUP/DOWN 不提供此功能,所以我转向原始输入,我需要
精简版: 在我正在测试的系统中,USB 设备和电缆应始终连接在相同的连接器上,因此在 USBview 应用程序中查看时,USB 树看起来应该始终相同。但由于我没有从该树中识别设备的信息,我仍然无法判断
我刚开始在我的应用中使用原始输入。直接进入问题,在遗留 WM_KEYDOWN 消息中,可以检查 lParam 以获得有关按键的额外信息。像这些- Bits Meaning 0-15
关于 我正在尝试为 Unity 构建自定义鼠标输入,以直接从 HID 获取数据。我这样做是因为我想尝试为我提供原始鼠标输入的 Unity API 是否有任何差异(当使用我自己的自定义鼠标输入时)。 另
我正在尝试向应用程序发送 WM_INPUT 消息,但我遇到了一些未能解决的障碍。我创建了如下所示的 RAWINPUT 结构: //try sending 'W' RAWINPUT raw =
我不知道我应该用什么标题,但请阅读这个。 我正在制作一个在鼠标指针位置显示颜色的程序。我想使用 WM_INPUT,因为 WM_MOUSEMOVE 更新不够快。 这是我的一些主要代码。 #include
当在 WM_INPUT 事件中读取鼠标位置时,鼠标光标被隐藏,当通过远程桌面使用应用程序时,SetCursorPos 似乎不起作用。 当应用程序不通过远程桌面使用时,同样的代码也能正常工作。即,我可以
我正在使用原始输入来处理通用设备的输入,到目前为止,我的所有测试用例都有效(键盘、游戏 handle 和鼠标),但我的笔记本电脑触控板给我带来了一个奇怪的问题。当我得到 WM_INPUT来自触控板的消
有谁知道如何使用 Raw Input从 WX Python 应用程序在 Windows 上运行? 我需要做的是能够区分来自多个键盘的输入。因此,如果有另一种方法可以实现这一目标,那也行得通。 最佳答案
[编辑] 到目前为止,这是我收集到的有关鼠标输入处理的信息。请注意,我是通过许多不同的来源和实验了解到这一点的,所以不要把它当作福音:1)鼠标事件起源于鼠标移动2) SetWindowsHookEx(
我正在编写一个应用程序来控制 Windows 7,尤其是 Windows Media Center。我可以发送击键、执行命令等,但我想模拟 Media Center Remote 上的一些按钮。 其中
我需要编写一个程序来修改Windows下某个 usb hid键盘(条码扫描器)的输入。应适用以下工作流程: 监听来自设备的输入 -> 记录输入 -> 停止输入到达事件应用程序 -> 处理记录的输入并将
我是一名优秀的程序员,十分优秀!