如何发送组合键/Windows Mobile 6.5
How to send key combination / Windows Mobile 6.5
我有一个 windows 移动 6.5 设备(霍尼韦尔)与 SOTI 结合使用。我需要实现的是,如果设备的 akku 状态 <10%,它应该关闭。那是我可以用 SOTI 做的部分。
在此关机之前,我需要发送 F12 键五次。我怎么能意识到这一点?我知道有一个虚拟键码 (https://msdn.microsoft.com/en-us/library/ms927178.aspx) 但我不知道如何触发它们。
您可以使用keybd_event函数
keybd_event( VK_F12, 0, 0, 0 );
keybd_event( VK_F12, 0, KEYEVENTF_KEYUP, 0 );
要从 .NET 使用它,请参阅 pinvoke
using System.Runtime.InteropServices;
...
public const uint KEYEVENTF_KEYUP = 2;
[DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)]
public static extern void keybd_event
(
byte bVk,
byte bScan,
int dwFlags,
int dwExtraInfo
);
始终使用具有相同键值的两次调用,一次用于键 dwon,一次用于 KEYEVENTF_KEYUP。
扫描码的 bScan 通常可以为 0,或者您需要查找 PS/2 键盘扫描码以查找您发送的按键。
我有一个 windows 移动 6.5 设备(霍尼韦尔)与 SOTI 结合使用。我需要实现的是,如果设备的 akku 状态 <10%,它应该关闭。那是我可以用 SOTI 做的部分。
在此关机之前,我需要发送 F12 键五次。我怎么能意识到这一点?我知道有一个虚拟键码 (https://msdn.microsoft.com/en-us/library/ms927178.aspx) 但我不知道如何触发它们。
您可以使用keybd_event函数
keybd_event( VK_F12, 0, 0, 0 );
keybd_event( VK_F12, 0, KEYEVENTF_KEYUP, 0 );
要从 .NET 使用它,请参阅 pinvoke
using System.Runtime.InteropServices;
...
public const uint KEYEVENTF_KEYUP = 2;
[DllImport("coredll.dll", EntryPoint = "keybd_event", SetLastError = true)]
public static extern void keybd_event
(
byte bVk,
byte bScan,
int dwFlags,
int dwExtraInfo
);
始终使用具有相同键值的两次调用,一次用于键 dwon,一次用于 KEYEVENTF_KEYUP。
扫描码的 bScan 通常可以为 0,或者您需要查找 PS/2 键盘扫描码以查找您发送的按键。