掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
他のウインドウのEdit Boxなどに入力するには? (ID:1009)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ふむふむそうですねぇ、 まず、Windowsというものは、たとえばメモ帳などの画面そのものを、 メモ帳の親ウィンドウとして、 そして、メモ帳の実際にメモをかく部分を、メモ帳の子ウィンドウとして扱います。 こういう仕組みが全てのソフトにも通用して、 たとえばDelphiで作ったフォームなら、親ウィンドウ(フォーム)をつくって、 その中に子ウィンドウ(コンポーネント)をいっぱいおいていく…という感じになりますね、 (厳密に言うとどこか違うのかもしれませんけど、 とりあえずわたしはそれで理解してて問題ありません^^;) …で、親・子ウィンドウはそれぞれ、Windowsからの識別番号として、 ハンドルをもらいます。 このハンドルを知ることができれば、 たとえどんなソフトのウィンドウでも、いじったりすることができるんです。 さて、1.2は、で、相手のウィンドウのハンドルを知るのが、 FindWindowとかのAPIです。 FindWindowは、親ウィンドウのみ、FindWindowExは、指定した親ウィンドウ(ハンドル)が持っている子ウィンドウの中から、 好きな(ともいかない場合もありますけど)ウィンドウのハンドルを知ることができるAPIです。 それから、クラス名というのは、ウィンドウにそれぞれつけられた名前です。 Delphiアプリケーションでは、コンポーネントとおなじ名前になります。(フォームのはNameプロパティのと同じ) これと、キャプションをうまく使えば、だいたいのウィンドウは探せますよね。 (VBの親ウィンドウというのは、みんなThunderRT6Formとかになっているので、見分けがつきませんけど) まあ、相手のウィンドウクラスとかは、ここにあるソフトとかを使えばいいでしょう。 http://www.h3.dion.ne.jp/~hanagex/ 適当なウィンドウを調べたりして遊んでみれば、ウィンドウとかハンドルとかの概念が分かってくるかと。 さて、3.4ですけど、PostMessage(よく似たAPIでSendMessageというのもあります、この場合はこっちがいいかもしれません)は、 ウィンドウハンドルに、ウィンドウメッセージを送るAPIです。 ウィンドウメッセージとは、Windowsがそれぞれのウィンドウを管理するために使っているもので、 これを自分が送ることで、Windowsがやってることができます。 (うえとおなじく厳密に言うとちょっと違うのかもしれませんけど、 とりあえずわたしはそれで理解してて問題ありません^^;) それで、WM_GETTEXTとは、指定したハンドルのウィンドウのキャプション(テキストボックスだったらその中の文章…など)を、 知るためのメッセージです。 これを指定したウィンドウに送れば、相手ウィンドウのキャプションが分かりますね。 それと、WM_SETTEXTとは、指定したウィンドウのキャプションを、 好きなものに指定するメッセージです。 目的からすると、使うのはこっちですね。 さて、長文ですけど、これで原理は分かったでしょうか?説明下手なのでわからないかもしれませんけど…。 くわしい使いかたは…。定型文になってしまいますねぇ、 ここにそれを書くのも長くなるだけなので、 これらのサイトなどで調べてみてください。 [ でべろっぱのすすめ ]と[ じあぴ ] http://www.ab.wakwak.com/~greenspace/dev-api/ (DelphiでのAPIの使いかたとか分かると思います) ちょくとのページ http://yokohama.cool.ne.jp/chokuto/ (HSPという言語のページですが、ウィンドウメッセージが詳しく書いてあります) それでも分からない場合は、検索エンジンなどで、API名を入れて探してみるのも手かと思います。 その場合、SendMessageでは言葉としてありふれているのか関係ないページもたまに引っかかりますので、 "Delphi SendMessage"とか "API SendMessage"とかするといいでしょう。 (逆に使われにくいAPIで、一般的な言葉でないものの場合、 API名のみで検索しないと何も引っかからないことがしばしばあります^^;) ちなみに、EditBoxのテキストがとても大きい(1Mとか)場合、 keybd_eventというAPIで、Ctrl+Cを押させ、 クリップボードにコピーしてもらうとかの方が安全だと思います。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.