win32api之虛擬鍵盤

在做開發的時候,UI上的一些快捷鍵可以使用虛擬鍵來觸發。比如:revit二次開發中的快捷鍵後臺觸發。

/// <summary>
/// 虛擬鍵盤.
/// </summary>
/// <author>YangSen</author>
/// <date>2016/12/1</date>
public class VirtualKeyboard
{
    /// <summary>
    /// 模擬按單個按鍵.
    /// </summary>
    /// <param name="key">The key.</param>
    /// <author>YangSen</author>
    public static void Press(System.Windows.Forms.Keys key)
    {
        Methods.keybd_event((byte)key, 0, 0, 0);
        Methods.keybd_event((byte)key, 0, 2, 0);
    }

    /// <summary>
    /// 模擬按組合鍵.
    /// </summary>
    /// <param name="key1">The key1.</param>
    /// <param name="key2">The key2.</param>
    /// <author>YangSen</author>
    public static void Press(System.Windows.Forms.Keys key1, System.Windows.Forms.Keys key2)
    {
        Methods.keybd_event((byte)key1, 0, 0, 0);
        Methods.keybd_event((byte)key2, 0, 0, 0);
        Methods.keybd_event((byte)key1, 0, 2, 0);
        Methods.keybd_event((byte)key2, 0, 2, 0);
    }
}
[DllImport("user32.dll", EntryPoint = "keybd_event")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

在revit中的用法舉例,比如我想在後臺出發創建牆的命令,通常的操作是去點擊UI,現在用虛擬鍵盤測試一下:

後臺執行便會觸發創建牆的命令。

VirtualKeyboard.Press(Keys.W, Keys.A);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章