tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル他のプログラムが漢字入力モードであるか
記事No10215
投稿日: 2010/08/27(Fri) 16:24
投稿者そこいら
指定したハンドルのアプリが漢字入力モードであるかを取得する。
scanf.exe(VisualBasicで作った物でないと思う)と言うプログラムが起動していて
このプログラムが現在漢字入力モードになっているかをVisualBasicのプログラムで判定したい。可能でしょうか?

[ツリー表示へ]
タイトルRe: 他のプログラムが漢字入力モードであるか
記事No10216
投稿日: 2010/08/27(Fri) 20:07
投稿者花ちゃん
>このプログラムが現在漢字入力モードになっているかをVisualBasicの
>プログラムで判定したい。可能でしょうか?
可能です。 今、VB6.0 で別の方法を試していたら取得できました。
但し、scanf.exe がどのようなものか、解らないのでメモ帳での動作結果ですが。

OS や IME のバージョン等が解れば(VB のバージョンも書いていなかったか) .NET でも
試してみたいと思いますが、返事もないようだし。
(休みの間にやっておいてくれって事かな)

VB2010 / Windows 7 で、Excel 2007 と メモ帳 で動作確認。
後は、ご自分で、ImmGetDefaultIMEWnd をキーにしてWEB上を検索して調べて下さい。

[ツリー表示へ]
タイトルRe^2: 他のプログラムが漢字入力モードであるか
記事No10220
投稿日: 2010/08/30(Mon) 14:36
投稿者そこいら
お返事出来なくて申し訳御座いませんでした。
実はプログラミング始めたばかりで殆ど理解出来て無い状態からやりたいことが先走ってます。

何とかIMEのハンドルはこうして取得するのだろうとまで来ましたが、これってscanf.exeの
ハンドルでは無いですから、どうするのだろう?となってます。

Module Module1
    'IMEのハンドル取得
    Private Declare Function ImmGetDefaultIMEWnd Lib "imm32.dll" (ByVal lhWnd As Long) As Long

    Public Sub IMETaskBarVisible() '(ByVal blnFlg As Boolean)
        Dim lngIMEWnd As Long 'IMEのハンドル用変数
        'IMEのハンドルを取得する
        lngIMEWnd = ImmGetDefaultIMEWnd(0&)
        Debug.Print(lngIMEWnd)
    End Sub
End Module


またウインドウのハンドルを取得と言う事で
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _
lpClassName As String, ByVal lpWindowName As String) As Long
Dim lRet As Long
lRet = FindWindow(vbNullString, sTitle)
Debug.Print(lRet)
とするらしいのですが、sTitleにはscanf.exeの名前"scf/s"を入れれば良いのだと思うのですが取得出来ません。
"scf/s"は、別のソフトuwscで調べてみました。

こんな状況なのですが、助けて頂く事は出来ますでしょうか?

[ツリー表示へ]