こんばんは。API初心者です。宜しくお願いします。
今、他のプロセスのテキストボックスの文字をWM_GETTEXTで取得しています。ここまでは出来るのですが、その文字を削除したい時に、WM_CLEARを使用して削除しようとしたのですが、なかなか上手くいきません。
SendMessage ChWnd, WM_CLEAR, 0&, 0&
このような感じで記述しています。ハンドルは取得できているみたいです。
どのようにしたら、削除できるようになるでしょうか。
WM_SETTEXTを使ってみるとか。
EM_SETSELでエディとコントロール内の文字を全て選択した後(wParam=0,lParam=-1)
WM_CLEARで消えるみたいですね。
SendMessage()ではなく、SetWindowText()でやるべきでは? :-p
他方のアプリも自作のプログラムなら、TextBoxのLink系メソッドで
DDE通信を行うと言う手もあるかも。
> SendMessage()ではなく、SetWindowText()でやるべきでは? :-p
自プロセスのテキストボックスなら、SetWindowText でもいけますが、
今回は「他のプロセス」ですから、WM_SETTEXT を使うべきかと。> java.lang.Nullpoさん
をを、ホントですね。
しっかり読まずに回答しておりました。
他プロセスならば、SendMessage()になりますね。(^_^;
失礼しました。
皆様有難うございます。
SendMessage CLhWnd, EM_SETSEL, 0, -1
SendMessage CLhWnd, WM_CLEAR, 0, 0
文字列を選択するコードを追加してやってみたのですが、出来ませんでした。
今他のアプリのエディットボックスのようなものを対象としているのですが、
少し特殊なのかもしれません。つまり、普通マウスで文字列をドラッグすると
文字列が反転して選択されますが、そうなりません。あと、その部分を
クリップボードにコピーも出来ないので、EM_SETSELで文字列も選択できてな
い事が原因なのかもしれません。
> 今他のアプリのエディットボックスのようなものを対象としているのですが、
そもそも、CLhWnd で示されているウィンドウは、EditBoxなのでしょうか?
対象としているウィンドウを、SPYXX.EXE で確認してみてください。
ツイート | ![]() |