近藤です。なんかご指名されたようなので・・・

On Fri, 29 Jan 1999 15:57:05 +0900 (JST)
"[vcpp 00025514] アクティブなアプリと focusに関して:" で
Yan Deng <y...@yahoo.co.jp> さんは書きました。:


> 以下の質問を宜しくお願い致します
> (a)NotepadやwordpadなどのEditorのようなアプリが実行されているか
> どうかをどのように判断すれば宜しいでしょうか

 「Editorのようなアプリ」を一般的に判断する方法はないと思います。
相手をNotepadに限定するなら::FindWindow( "NotePad" , NULL )が簡
単です。実際には NotePad をデフォルトにしておき、ユーザーに対象
エディターを指定してもらう形になるでしょう。

> (b)myAppが何かを処理しても,Notepadのアプリがずっと
> アクティブな状態になって,更にfocusがずっとNotepadの
> アクティブなWindow上に置いてあると言うことはどう実現
> しますか

 Yan Dengさんが何を目的にしているのか、また入力フォーカスについ
てどの程度理解しているかが不明なので答えにくいのですが・・・

 ユーザーにはエディター上で入力しているように見せかけて入力され
た文字を横取り、変更を加えた上でエディタに渡すと言う処理なのでし
ょうか?。
 SetWindowHookEx で WM_CHAR または WM_IME_CHAR をフックする方法
があると思います。ただし、これでは WordPad や MSWord には対応で
きないので、その場合は WM_IME_COMPOSITION をフックして
ImmGetCompositionString と ImmSetCompositionString を駆使する形
になると思います。(でもこれらのAPI の実装が MSIME と ATOK で微
妙に違っていたりするので実際にやるとなると深みにはまりそう・・・)

*-----------------------------------------------------------
|    近藤 良一
|    Ryoichi KONDO
| ...@a2.mbn.or.jp
*-----------------------------------------------------------