【发布时间】:2022-01-17 19:05:33
【问题描述】:
我是 rust 和 windows API 的新手,我正在尝试通过 windows-rs crate 使用 PostMessage 函数。但是,我不确定 WPARAM 期望什么数据类型。我试过猜测,因为 windows-rs 文档似乎没有说。 C++ 的官方 microsoft 文档似乎期望下面找到的常量.. 但是当我尝试将它们与 rust crate 一起使用时出现错误。
https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-postmessagea
use windows::{
Win32::System::Threading::*, Win32::UI::WindowsAndMessaging::*, Win32::UI::Input::KeyboardAndMouse::*
};
fn main() {
unsafe {
Sleep(1000);
let wh = GetActiveWindow();
PostMessageA(wh, WM_KEYDOWN, VK_ADD, None);
}
}
我收到一条错误消息,告诉我 WPARAM 没有“VIRTUAL_KEY”的实现。我也尝试过以各种方式对 VK_ADD 使用十六进制。但每个人都会抛出关于 WPARAM 没有实现我尝试使用的类型的错误。
PostMessageA(wh, WM_KEYDOWN, 0x6B, None);
PostMessageA(wh, WM_KEYDOWN, "0x6B", None);
let hex: u32 = 0x6B;
PostMessageA(wh, WM_KEYDOWN, hex, None);
我也不确定如何发送正确格式的十六进制,所以我可能做错了。有没有人有任何想法,或者任何对 rust 有更好理解的人可以查看 crate 的源代码吗?
【问题讨论】:
-
试试
WPARAM (VK_ADD.0 as _)
标签: windows rust hex postmessage