親愛的各位大大:
小弟在這個討論區裡爬文中,發現了有許多人討論使用win API控制鍵盤的方法,也有使用USER32.DLL裡面KEYBD_EVENT FUNCTION的例子,不過小弟最近碰到一個問題,因為要在某一個應用程式中做重複性的動作,想要把這個部分加入應用,可是確發現,除了0~1 、 A~Z之外的功能鍵好像都不能用於這個視窗,其中包括了很重要很重要的ENTER鍵。不知道為何,在其他的文字編輯視窗中就可以。(像是NOTEPAD)
所以小弟又想用另外一個在USER32.DLL中的SENDINPUT FUNCTION來試試看,(因為在MSDN (
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/keybd_event.asp
)中說到,在XP中已經用這個FUNCTION 取代了。所以我又轉往這一個方向時,確碰到了定義上的不了解。
在SENDINPUT的說明(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/sendinput.asp)中提到,總共有三個參數要輸入,分別是nInput(32bit unsign I), pInput (32 bit Sign Array), cbSize(32 bit Sign I),而nInput指的是-sendinput發生的事件數,pinput是sendinput的架構(我想我的錯誤應該是在這發生的,不知道填入的值,是包括滑鼠的和鍵盤的input架構都要填入,還是只要填入我想使用的keyboard),第三個cbsize他的說明說寫到(Specifies the size, in bytes, of an INPUT structure),我只能猜想他指的是array的size然後用hex數值輸入,因為在google查到c語言的example中,他們也只是用size(input)這個方式來寫。於是我的sendinput就一直停擺在這了。
第三種方式,是用send message的function,可是碰到的狀況也是一樣的,我想在labview的領域中,比較沒有這一類的例子,所以在c的定義下,常常不知道該怎麼去下參數。