我需要以編程方式將一個字符輸入到Delphi網格(在其他應用程序中)的單元格中。在Delphi中使用WinAPI模擬鍵盤輸入
爲了手動做到這一點,需要以下步驟:
- 按F3鍵。
- 按向右箭頭鍵3次。
- 按空格按鈕。
- 在鍵盤上鍵入字母'E'。
按右箭頭鍵。
// Press F3 button keybd_event(VK_F3, 0, 0, 0); // Press right arrow key 3 times keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, 0, 0); keybd_event(VK_RIGHT, 0, 0, 0); // Press the space button keybd_event(VK_SPACE, 0, 0, 0); // Type letter E keybd_event(Ord('E'), 0, 0, 0); // Move to the right keybd_event(VK_RIGHT, 0, 0, 0);
但它不工作。當我運行這個代碼時,似乎沒有任何事情發生。
我應該如何修改這段代碼才能真正模擬用戶輸入?
前段時間我做了一些關於['虛擬鍵盤'](http://stackoverflow.com/a/12565963/960757)(還有很多其他的)。但是對於你的問題,如果你的目標是'TStringGrid',我認爲你不能做任何事情而不是關注它並模擬你的擊鍵(如果我記得沒錯,'TStringGrid'不響應任何類型的消息能夠設置單元格的文本)。 – TLama
在這個特定的應用程序中,只能通過鍵盤將值輸入到網格中。我已經使用AutoHotKey和MS UI Automation完成了這一工作,但現在需要在Delphi中重寫此代碼。 –
我不能依賴被聚焦的網格,因爲目標系統上有一個程序,它每200毫秒激活一次。 –