
| ||||||||||||||||||||||||
| Comfort Software :: Forums :: Development | |||
|
|||
|
| Author | Post |
| JohnVb |
| ||
![]() Joined: Sat Jul 05 2008, 05:07pm Posts: 1 | Hi I also had a problem using the registry to load different kb set for the floating kb . I wanted to load different kb before the user click the floating kb button but it did not work, it seems that it is not reading the kb setting on every click (bug?). so I used the post msg approach and it is working ok now thanks! I am evaluating On-Screen Keyboard V4.0 with vb6 the code converted to vb: Private Type COPYDATASTRUCT dwData As Long cbData As Long lpData As Long End Type Private Const WM_COPYDATA = &H4A Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long) Public Function VKBLoadKeyboard(ByVal xi_KeyboardName As String) As Boolean Dim KeyboardName(1 To 255) As Byte Dim hwnd As Long Dim MyCDS As COPYDATASTRUCT Dim sString As String sString = Trim$(xi_KeyboardName) If sString = "" Then Exit Function Call CopyMemory(KeyboardName(1), ByVal sString, Len(sString)) ' Fill the COPYDATA structure ' MyCDS.dwData = 1 ' function identifier MyCDS.cbData = Len(sString) + 1 ' size of data MyCDS.lpData = VarPtr(KeyboardName(1)) ' data structure ' ' Call function, passing data in &MyCDS ' hwnd = FindWindow("TFirstForm", "CKeyboardFirstForm") If (hwnd <> 0) Then Call SendMessage(hwnd, WM_COPYDATA, 0, MyCDS) End If End Function | ||
| Back to top |
| Moderators: Comfort |