>VB.NETのSendMessageを教えてください入力中の回答があります。ページを離れますか?※ページを離れると、回答が消えてしまいますページを離れるA回答を続ける入力中のお礼があります。"test"と同じ結果をSendMessageでやってみたいのですが下のようにしてみたのですが、変更になりませんでした。どのようにすれば良いかご教授頂ければ幸いです。SubVB.NET2003FrameWork1.1WindowsXP-PRO(SP2)です。通報するこの質問への回答は締め切られました。11:11このように書いてください。Basic(VBA)VB.NETで子ウィンドウの列挙の仕方がわかりません。Basic(VBA)13VB.NETでマウスクリックイベントを発生させたい。Basic(VBA)VB.NETで子ウィンドウの列挙の仕方がわかりません。Basic(VBA)13VB.NETでマウスクリックイベントを発生させたい。カスタムコントロール作ってます(VB.NET)。回答数ランキングです。2003sendmessageを使用して電卓を閉じるプログラムを作成しているのですが、どうもあと少しでうまくいかないので質問させていただきます。ThenMsgBox("電卓動いてます。ifこの時点で電卓が開いているかどうかの判定はうまくいっています。sendmessageのところでうまくいっておらず、hfwndに取得したウインドハンドルが代入されていない?と思いGetWindowTextでタイトル取得してみたところ空白でした。クラス名を同じにしても電卓をいうキャプションを持っているのがcalcだけの為、結局は同じ結果になってしまうのです。貴方のおっしゃりたい事は分かりますが・・・でしたら、ちゃんと、同じにしたコードを提示してください。問題はifで判断している時は成功しているということは、ハンドルは正常に持ってきているのでこのIf文で分かるのは、『「FindWindowEx」の結果が「True」と判断されるものである。『ハンドルは正常』かどうかは分からないのでは?#全然関係ないWindowのハンドルを持ってきている可能性だってあります。#いや、実際「GetWindowTextでタイトル取得してみたところ空白でした。」って事は、全然関係ないハンドルって事でしょうね。Longとなってますが、WindowのハンドルってIntegerの範囲なのでは・・・#VB6までなら、Long型で良かったですが、#VB.NETでは、型の有効範囲が変わってますのでLongだと誤動作する可能性が・・・#特に「FindWindowEx」や「SendMessage」の宣言でLong型にしていると、#ほぼ確実に誤動作を起こすでしょうね。クラス名を同じにしても電卓をいうキャプションを持っているのがcalcだけの為、結局は同じ結果になってしまうのです。貴方のおっしゃりたい事は分かりますが・・・でしたら、ちゃんと、同じにしたコードを提示してください。Longとやってあります....続きを読むAベストアンサーあちゃぁ、英語のサイトから持ってきたのでコメント診て無かったです。翻訳しても良くわからなかったですが、どう見ても記述が違いますね。~Integerを全てLongに書き換えてやってますよね。引数・戻り値を全てIntegerにしてやって見てください。当方では、問題なくウィンドウハンドルの取得が出来ましたよ。ちなみに、MarshalAs属性は使用しなくてOKでした。使用すると、戻り値が0になりました。当方で確認したソースを記述します。Subあちゃぁ、英語のサイトから持ってきたのでコメント診て無かったです。翻訳しても良くわからなかったですが、どう見ても記述が違いますね。~Integerを全てLongに書き換えてやってますよね。引数・戻り値を全てIntegerにしてやって見てください。当方では、問題なくウィンドウハンドルの取得が出来ましたよ。ちなみに、MarshalAs属性は使用しなくてOKでした。使用すると、戻り値が0になりました。システムの既定のコードページに変換する)は、VB.NETでは使用できないようです。思いっきり、例文に「COM1」と書いてますが、USBに書き換えてくださいね^^;それとふと思ったのですがudtReaderWriterModeWithoutEncryption変数は構造体ですよね?メンバがlngPortNamelngBardRateというのは、型宣言をINTEGERに変換してますよね?ちょっとばかり不安に思ったので、追記しておきました。参考URL:http://okweb.jp/kotaeru.php3?q=1257613他の回答も見るQCloseとDisposeの違いみなさまこんばんわです。2008でコーディングしています。CloseとDisposeの違いについて教えていただきたいのです。)のみに限ったこととしてお話しさせていただきます。しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。すると、きれいにプロセスは終了し、イベントは発生しない模様です。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。変えるとうまくいきました。わけわからなくなってきました。ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。ここで4つの仮説を立ててみました。ありがとうございました。みなさまこんばんわです。2008でコーディングしています。CloseとDisposeの違いについて教えていただきたいのです。)のみに限ったこととしてお話しさせていただきます。しても、プロセスは残り、たとえば、...続きを読むAベストアンサーMe.Close()Me.Dispose()は根本的に違うものです。formについて、Close()メソッドはフォームの表示を終了させるメソッドです。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。>再利用できる、できないの違いDispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。Close()はインスタンスが残っているので、それを利用することができます。ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。変えるとうまくいきました。通常はどちらでもうまくいきます。ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できるShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。呼び出し方ではなく、別の要因が存在するそう思います。併記する必要がある場合があるインスタンスを明示的に破棄したほうがよい場合は多く存在します。Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。これらのメンバは、外部とのやり取りを行うものが多くあります。SQLClientに含まれるようなメンバです。外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。Using構文を使用するのとまったく同じ理由になります。正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。上記のような理由により、Me.Close()Me.Dispose()は両方書いたほうがよいと思います。蛇足ですが、Me.Dispose()Me.Close()はエラーになります。Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。存在しないMeに対してCloseメソッドを要求することはできないためです。Me.Close()Me.Dispose()は根本的に違うものです。formについて、Close()メソッドはフォームの表示を終了させるメソッドです。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。>再利用できる、できないの違いDispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。Close()はインスタンスが残っているので、それを利用することができます。非常に基本的なことを質問して申し訳ございません。●やりたいこと●ある親ウィンドウに「テキスト」と「OKボタン」があります。OKボタンはひとつだけです。このOKボタンを押して、親ウィンドウを閉じるだけです。OKボタンを押せば、親ウィンドウは勝手に閉じます。子ウィンドウ(ボタン"OK")のハンドルが取得できず、その後の処理もできておりません。初心者の浅知恵で申し訳ございません。ボタンのハンドルを取得して、押すコマンドを実行しないといけないのでしょうか?ボタンのハンドルを取得して、押すコマンドを実行する場合、その方法を教えていただけると幸いです。親ウィンドウのハンドルは変数「hWindow」に入っているとして、コードをお願いいたします。親ウィンドウのハンドル取得に使ったFindWindow以外に宣言が必要であればご教授お願いいたします。非常に基本的なことを質問して申し訳ございません。●やりたいこと●ある親ウィンドウに「テキスト」と「OKボタン」があります。OKボタンはひとつだけです。このOKボタンを押して、親ウィンドウを閉じるだけです。OKボタンを押せば、親ウィンドウは勝手に閉じます。子ウィンドウ(ボタン"OK")のハンドルが取得できず、その後の処理もできておりません。子ウィンドウを探すには、下の2つのAPIの使います。親ウィンドウのハンドルと、子ウィンドウを受け取る関数を与えます。標準モジュールにないと駄目です。すると与えた子ウィンドウを受け取る関数に、親ウィンドウに含まれる全ての子ウィンドウのハンドルが返ってきます。クラス名を取得し、ボタンのウィンドウを特定します。今回の場合は、ボタンが1個しかないとのことなので、取得したクラス名がButtonであればそのハンドルがボタンのハンドルになります。参考までに、複数個のボタンがあれば、この場合、どのボタンがOKボタンなのかを特定しないといけません。子ウィンドウに含まれる、上記の手順で得た全てのボタンのハンドルに対して、プログラムでBM_CLICKのメッセージを送り一つづつ確認していくしかありません。特性があって、親ウィンドウに複数個のボタンがあっても、子ウィンドウを受け取る関数には必ず一定の順番にしか、ハンドルが返ってきないので、最初に一度だけ何番目のボタンかを特定すればよいです。対象のアプリケーションを再度起動してもこの順番は変わりません。ウエイトの方法だとか、制御するアプリが確実に動作しているか、確認する操作を1ステップずつ挿入していかないと駄目です。すれば、全ての他のアプリケーションを自由に操る事ができます。本格的に作るとなると大変なので、フリーのソフトで沢山でていると思います。一度さがされたらよいと思います。DLLタイプになっているのがよいとは思います。以前私も使ったことがありますが、憶えていません。現在は自作しております。自作のがよりきめ細かく制御出来るからです。子ウィンドウを探すには、下の2つのAPIの使います。親ウィンドウのハンドルと、子ウィンドウを受け取る関数を与えます。標準モジュールにないと駄目です。すると与えた子ウィンドウを受け取る関数に、親ウィンドウに含まれる全ての子ウィンドウのハンドルが返ってきます。G...続きを読む他の回答も見るQ他のアプリケーションとの連携VBを使って他の既存のソフトなどへ何らかの命令をかけることは可能でしょうか?具体的には起動中のほかのアプリケーションへキー操作をさせる...というようなことは可能でしょうか?たとえば、コマンドを設置しておいて、そのコマンドをクリックすると起動中の別のアプリケーション上でEnterキーを押した状態を引き起こさせるというようなことです。それとは逆に他のアプリケーションを監視して、キーが押されたときに反応させるというようなことは可能でしょうか?API関数等を使用するのでしたらどういう関数を使用すればよいか教えてください。