mcrblog

vcpp-ml

2000年03月

31

[vcpp 00039270] アタッチするとIMEの状態が変化してしまいます

IME97で入力方式を「かな」に設定し、かな入力にした状態で、
入力モードを「全角ひらがな」にして、AttachThreadInput()を
呼ぶと
IMEの状態が「全角英数」モードになってしまいます。

何が原因か知っているかたはいないでしょうか。
31

[vcpp 00039269] Re: 他のウインドウのアクティブコントロールに漢字・CTRL+V等を送る


On Fri, 31 Mar 2000 17:43:54 +0900
jima <F...@mcn.ne.jp> wrote:

> 最終的には漢字(全角文字)を一文字ずつ送りたいのですが…。

  そのためにWM_IME_CHARメッセージで送ればOK。

-----------------------------------------------------------
   ヘヘ   ヘヘ    甕星  -- m...@pb3.so-net.ne.jp --
  ミ''ミ ミ..ミ   PCの潜在能力を眠りから覚ましてください
 ヽ(  )   (  )ζ  ....地球外知性体探査(SETI@home)に参加中...
===================http://www.setiathome.ssl.berkeley.edu/
31

[vcpp 00039268] Re: デスクトップ上のフォルダー

かおく@ガリバー です。

On Fri, 31 Mar 2000 09:07:37 +0900
Yuji Kawai♪ <y...@tokai-soft.co.jp> wrote:

> ご推測通り、Explorer のHWNDは取得できているのですが、
> そこから「Explorerが表示しているフォルダのパスを取得」が
> うまくいきません。難しいです。
いくつかアプローチの方法があると思います。

  1. Explorerのウィンドウキャプション
  2. Explorer - 左側リストビューの選択されているアイテム
  3. ShellWindowsで得られる、InternetExplorerオブジェクトの
     LocationURL

どれをとっても、完璧ではなさそうですが...。(^_^;)

'* --------------------------- Define of Signature Module ----- *
  Option Explicit
  Const MailTo  = "k...@venus.dti.ne.jp"
  Const Comment = ""
31

[vcpp 00039267] 他のウインドウのアクティブコントロールに漢字・CTRL+V等を送る

IMEまがいのようなプログラムを作っていて、とうとう今日中には実現出来なかったことがありました。
それは、他のウインドウのアクティブコントロールに漢字またはCTRL+V等を送る事です。

以前のMLの記事でも同じようなことが取り上げられていましたが、ちゃんとした解決方法が
載っていませんでした。keybd_event()を使うといいとも載っていましたが、それもどうもうまく
いかないようなのですが…。

SendMessageやPostMessageを使ってみたのですが、文字は送れても、文字列
ならびにCtrl+Vのようなものは送れません。
WM_PAST(Ctrl+Vの代わり)やWM_CHAR(CtrlキーとVキーを2回に分けて送る)を
使ってみたのですが、だめ(文字入力されない)でした。
普通にアクティブウインドウにWM_SETTEXTを送ると、タイトルバーの文字列が変わるだけです。


最終的には漢字(全角文字)を一文字ずつ送りたいのですが…。
送りたい対象はコンボボックスやエディットボックス、エクセルのセルとかにです。
名前を付けて保存ダイアログ等にも、すべての入力に使いたいと思っています。
ご存知の方がおられましたら、是非ご教授くださいませ。





私の環境:
Windows98:Pentium-MMX 233MHz メモリ96MB
VisualC++ Ver6.0 SP3

/******** 投稿者 *****************/
jima(MAIL, "F...@mcn.ne.jp");
puts("会社からの投稿ですので、");
puts("平日しか閲覧・返信できません。");
31

[vcpp 00039266] Re: アクティブなコントロールGET(解決)


00/03/31 12:56:31にnakka様がお送りになられたメール
「[vcpp 00039256] Re:  アクティブなコントロールGET」についての返信です。

 >しかし、アクティブなウインドウを入手できても、そのウインドウの中のアクティブな
 >コントロールはどうやって入手すればよいのでしょうか?
上記の件については、以下のコードにて解決いたしました。
nakkaさん、甕星 さん。アドバイスアリガトウ御座います。
確かにその他にも色々問題がありますので、たしかにIMEに沿って
作るほう方がいいと思います。英語サンプルみたいですが、
将来的には頑張って作って見ます。

nakka> //fWnd にフォーカスを持つウィンドウが取得される
nakka> DWORD idAttach;
nakka> hWnd fWnd;
nakka> 
nakka> idAttach = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
nakka> AttachThreadInput(idAttach, GetCurrentThreadId(), TRUE);
nakka> fWnd = GetFocus();
nakka> AttachThreadInput(idAttach, GetCurrentThreadId(), FALSE);



私の環境:
Windows98:Pentium-MMX 233MHz メモリ96MB
VisualC++ Ver6.0 SP3

/******** 投稿者 *****************/
jima(MAIL, "F...@mcn.ne.jp");
puts("会社からの投稿ですので、");
puts("平日しか閲覧・返信できません。");
記事検索
Amazon.co.jp
  • ライブドアブログ