Как программно активировать разные виды клавиатур
Способ 1
Чтобы активировать экранную клавиатуру с определенным именем, измените в реесте HKEY_CURRENT_USER\Software\ComfortSoftware\CKeyboard параметр KeyboardName.
Если экранная клавиатура уже открыта, то можно послать сообщение Windows вида PostMessage(FindWindow('TFirstForm', 'CKeyboardFirstForm'), WM_CSKEYBOARD, 1, 0) и программа повторно загрузит установленную клавиатуру.
Способ 2
Скачайте и используйте следующий файл: https://www.comfortsoftware.com/download/SetNameKB.exe
Формат комманды: SetNameKB.exe "keyboard name"
Например: SetNameKB.exe Mini
Способ 3
Этот способ более предпочтительный, т.к. позволяет менять вид без лишнего открытия и закрытия клавиатуры.
char KeyboardName[80];
COPYDATASTRUCT MyCDS;
KeyboardName = "Standard";
// Fill the COPYDATA structure
MyCDS.dwData = 1; // function identifier
MyCDS.cbData = sizeof(KeyboardName); // size of data
MyCDS.lpData = &KeyboardName; // data structure
// Call function, passing data in &MyCDS
HWND hwDispatch = FindWindow( "TFirstForm", "CKeyboardFirstForm" );
if( hwDispatch != NULL )
SendMessage( hwDispatch,
WM_COPYDATA,
(WPARAM)(HWND) NULL,
(LPARAM) (LPVOID) &MyCDS );