他のプロセスのコントロール(テキストボックス)の文字を削除するには?


simo  2004-10-26 07:54:21  No: 86238

こんばんは。API初心者です。宜しくお願いします。
今、他のプロセスのテキストボックスの文字をWM_GETTEXTで取得しています。ここまでは出来るのですが、その文字を削除したい時に、WM_CLEARを使用して削除しようとしたのですが、なかなか上手くいきません。
SendMessage ChWnd, WM_CLEAR, 0&, 0&
このような感じで記述しています。ハンドルは取得できているみたいです。
どのようにしたら、削除できるようになるでしょうか。


ガッ  2004-10-26 08:08:42  No: 86239

WM_SETTEXTを使ってみるとか。


split( )  2004-10-26 11:09:32  No: 86240

EM_SETSELでエディとコントロール内の文字を全て選択した後(wParam=0,lParam=-1)
WM_CLEARで消えるみたいですね。


java.lang.Nullpo  2004-10-26 18:29:22  No: 86241

SendMessage()ではなく、SetWindowText()でやるべきでは? :-p


魔界の仮面弁士  2004-10-26 19:20:26  No: 86242

他方のアプリも自作のプログラムなら、TextBoxのLink系メソッドで
DDE通信を行うと言う手もあるかも。

> SendMessage()ではなく、SetWindowText()でやるべきでは? :-p
自プロセスのテキストボックスなら、SetWindowText でもいけますが、
今回は「他のプロセス」ですから、WM_SETTEXT を使うべきかと。> java.lang.Nullpoさん


java.lang.Nullpo  2004-10-26 20:59:59  No: 86243

をを、ホントですね。
しっかり読まずに回答しておりました。
他プロセスならば、SendMessage()になりますね。(^_^;
失礼しました。


simo  2004-10-27 02:45:06  No: 86244

皆様有難うございます。
  SendMessage CLhWnd, EM_SETSEL, 0, -1 
  SendMessage CLhWnd, WM_CLEAR, 0, 0
文字列を選択するコードを追加してやってみたのですが、出来ませんでした。
今他のアプリのエディットボックスのようなものを対象としているのですが、
少し特殊なのかもしれません。つまり、普通マウスで文字列をドラッグすると
文字列が反転して選択されますが、そうなりません。あと、その部分を
クリップボードにコピーも出来ないので、EM_SETSELで文字列も選択できてな
い事が原因なのかもしれません。


Dental  2004-10-27 03:11:16  No: 86245

> 今他のアプリのエディットボックスのようなものを対象としているのですが、
そもそも、CLhWnd で示されているウィンドウは、EditBoxなのでしょうか?
対象としているウィンドウを、SPYXX.EXE で確認してみてください。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加