2011-09-30 29 views
0

我想用改變我的默認鍵盤佈局爲一個安裝在另一臺鍵盤佈局我的VB application.I一派關於這方面的工作,並找到功能LoadKeyboardLayout()函數來完成that.But這是在VB 2010.When支持我寫了下面的代碼並沒有語法error.But當我運行的程序有一個叫做錯誤「檢測PInvokeStackImbalance ......」 我怎樣才能解決這個問題在VB 2010年 這裏是我的代碼:LoadKeyboardLayout()函數不會在VB 2010

Private Const KLF_ACTIVATE As Long = &H1 
Private Const KLF_NOTELLSHELL As Long = &H80 
Private Const KLF_REORDER As Long = &H8 
Private Const KLF_REPLACELANG As Long = &H10 
Private Const KLF_RESET As Long = &H40000000 
Private Const KLF_SETFORPROCESS As Long = &H100 
Private Const KLF_SHIFTLOCK As Long = &H10000 
Private Const KLF_SUBSTITUTE_OK As Long = &H2 
Private Const KLF_UNLOADPREVIOUS As Long = &H4 

Private Declare Function LoadKeyboardLayout _ 
Lib "user32.dll" _ 
Alias "LoadKeyboardLayoutA" (_ 
    ByVal pwszKLID As String, _ 
    ByVal flags As Long) As Long 

'Inside a button click event 
    LoadKeyboardLayout("00000409", KLF_ACTIVATE) 

誰能幫我...

+0

<的DllImport( 「user32.dll中」)> _ 私人共享功能LoadKeyboardLayout(pwszKLID作爲字符串,旗作爲UInteger)作爲IntPtr的 端功能 – Thusitha

+0

有了這個功能,我設法做到這一點只有內部app.But我想改變佈局globally.Any想法... – Thusitha

+0

這是不對的。改用LoadKeyboardLayoutW。 – Elmue

回答

1

所有你需要做的是多頭切換到整數...

Private Declare Function LoadKeyboardLayout Lib "user32.dll" _ 
Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, _ 
    ByVal flags As Integer) As Integer