もうちょいggって
これ参考
https://wiki.hsp.moe/%ef%bc%a9%ef%bc%ad%ef%bc%a5%e3%81%ae%e5%88%b6%e5%be%a1.html
上の奴を参考にしたモジュールとソース↓
#module "Ime_Control"
//IMEの設定や取得に必要となるAPIや関数の定義
#uselib "imm32.dll"
#cfunc global ImmGetContext "ImmGetContext" int
#cfunc global ImmGetOpenStatus "ImmGetOpenStatus" int
#func global ImmReleaseContext "ImmReleaseContext" int, int
#func global ImmSetOpenStatus "ImmSetOpenStatus" int, int
//IME定数
#define global IME_NOT_ERROR 0 ;異常なし
#define global IME_ERROR -1 ;異常あり(エラー)
#define global IME_OFF 0 ;IMEがOFF状態
#define global IME_ON 1 ;IMEがON状態
// IMEの設定をする
// prm1を0(IME_OFF)に設定した場合はIMEはOFF
// prm1を1(IME_ON)に設定した場合はIMEはON
// それ以外をprm1で指定した場合は戻り値が-1(IME_ERROR)になる
#deffunc ImeSet int prm1
imesw = prm1
if imesw < 0 | imesw > 1 {
return IME_ERROR
}
himc = ImmGetContext(hwnd)
ImmSetOpenStatus himc, imesw
ImmReleaseContext hwnd, himc
return IME_NOT_ERROR
// IMEの情報を取得する
// 戻り値が0(IME_OFF)の場合はIMEはOFF
// 戻り値が1(IME_ON)の場合はIMEはON
// 戻り値が-1(IME_ERROR)の場合はIME取得エラー
#defcfunc ImeGet
himc = ImmGetContext(hwnd)
imesw = ImmGetOpenStatus(himc)
ImmReleaseContext hwnd, himc
if imesw = IME_OFF {
return IME_OFF
} else {
return IME_ON
}
return IME_ERROR
#global
// ==============サンプル============== \\
screen 0, 320, 80, 0
title "Ime_Control sample"
objsize 100, 32
pos 10, 40
button gosub "IME ON/OFF", *imesw
repeat
redraw 0
color 255, 255, 255
boxf
color 0, 0, 0
pos 10, 10
mes "IME:"+ImeGet()
redraw 1
await 1
loop
*imesw
isw ^= 1
ImeSet isw
return