• ベストアンサー

VB2008でほかのアプリケーションを操作したい

VB2008でほかのアプリケーションを操作したい VBでButton1を押したらメモ帳で「ABC」と入力し新規保存させたり プリンタドライバーの設定を変更したりという操作をボタン一発でできるプログラムを作ろうと思ったのですが、どの様なコードの記述をしたらいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

・メモ帳で「ABC」と入力し新規保存 ・プリンタドライバーの設定を変更 この操作は全く別物です。 SendKeysでキーストローク http://dobon.net/vb/dotnet/vb6/sendkeys.html この方法は、プログラム実行中にユーザが途中でキーボードを操作すると、思わぬ動きになってしまいます。 でもマルチに対応するなら、このようなキーストロークの送信しかありません。 思わぬ動きを嫌うのであれば、画面でオペレーションをしたように見せるには、キーボードの操作を直接アプリケーション内部のハンドルに送る必要があります。 それにはSendMessageというAPIを使用します。 そのSendMessageはどこにメッセージを送るのかを指定する引数があるのですが、汎用的な操作を行えるようにするのが目的となると、現実的な話では無くなります。 [特定のアプリにファイルを渡す方法] http://okwave.jp/qa/q5877792.html という質問でも答えたのですが、そちらを一読してください。 最近、探し方の質問もありました。、 [VB.NETで、Windows Vistaのスタートボタンを消すプログラム] http://okwave.jp/qa/q5901553.html 一つのアプリケーションに、ハンドルは多数存在しています。 sendkeysを使わないのであれば、汎用的なアプリの作成ではなく、個別の機能として作成される事を勧めます。

その他の回答 (1)

  • rk_les
  • ベストアンサー率63% (23/36)
回答No.2

SendKeyでの方法だけ補足しておきます。 using System.Runtime.InteropServices; [DllImport("user32.dll")] extern static IntPtr GetWindow(IntPtr hWnd, uint uCmd); [DllImport("user32.dll")] extern static IntPtr GetForegroundWindow(); [DllImport("user32.dll")] extern static int GetWindowText(IntPtr hWnd, StringBuilder lpStr, int nMaxCount); [DllImport("user32.dll")] extern static bool IsWindowVisible(IntPtr hWnd); [DllImport("user32.dll")] extern static bool SetForegroundWindow(IntPtr hWnd); //ButtonClickイベント const int GW_HWNDNEXT = 2; StringBuilder sb = new StringBuilder(100); IntPtr hwnd = GetForegroundWindow(); while (hwnd != IntPtr.Zero) { if (IsWindowVisible(hwnd)) { GetWindowText(hwnd, sb, sb.Capacity); // タイトルバー文字列を取得 if (sb.ToString().IndexOf(textBox1.Text) != -1) { SetForegroundWindow(hwnd); // アクティブ /*** *ここにSendKeys.SendWaitでキーを送ります。 *ラジオボタンがある場合Tabキーでラジオボタンをアクティブにし「↑」「↓」ボタンで変更 *チェックボックスの場合スペースキーでOnOff切り替え可能 *下記にキーコードが記述されています。 *MSDN SendKeys:http://msdn.microsoft.com/ja-jp/library/system.windows.forms.sendkeys(VS.80).aspx * * ***/ break; } } hwnd = GetWindow(hwnd, GW_HWNDNEXT); } この例ではTextBox1に別アプリケーションの名前の一部を入れることでアクティブにしています。 Ex)GoogleChrome → Google を入力し、Button1をクリックでGoogleChromeがアクティブになります。 力技すぎて汎用性も何もありませんが・・・ご参考までに

関連するQ&A

  • VBでアプリケーションを自動操作したい。

    VBでアプリケーション(動画編集ソフトなど)の特定の操作をワンクリックで実行させたいと思っています。そのようなことが載っている書籍をさがしているのですが、なかなか見つけられません。 具体的なコードがわかれば、その機能に関する記述のある書籍を探せば見つけられるかなと思いました。 そこで、VBでアプリケーション(動画編集ソフトなど)を操作する際に、どのようなコードを使用するのか教えていただけないでしょうか?

  • VBで他のアプリケーションを操作する

    VBを使って、たとえばブラウザや適当なアプリケーションのテキストボックスに文字を書いて検索ボタンを押すことはできますか。 ブラウザなどは立ち上げておいて、最大化してテキストボックスの位置がわかっているものとして構いません。 マウスの位置を動かして、ウインドウをクリックして(VBのフォーカスは失われる)、文字列を送り込んで、ボタンを押すということができるのでしょうか。 もちろんVBのFormの中では個々の操作ができることはわかっています。 まるで人が操作しているかのように他のアプリケーションを間接的に操作できるかどうかを教えてください。

  • 別アプリケーションの操作

    こんにちは。 タイトルの件についてお聞きしたいことがあるのでよろしくお願いします。 既存のVB.netアプリケーションがあります。 ログイン画面があるのですが、毎回入力するのが面倒なので、自動ログインツールを作成しようと思っています。 ツール側もVB.netです。 そこで、別のアプリケーションのテキストボックスやコマンドボタンの操作というのはどのようにしたらいいのでしょうか? 既存アプリケーション側は変更したくありません。 どなたかアドバイスよろしくお願いします。

  • VB 2005 色データの保存、読出し、設定

    VB6では、色の設定を Button.Backcolor = &HC000& とコードに記述していれば、Buttonの色が変更されていたのですが(&HC000& をファイルに保存していれば、読み出して設定もできていましたが)、VB2005で同じようにするとエラーがでてしまいます。Button.Backcolor = Color.Redとすればいいのですが、色データを保存したり、読み出したりして設定したいのですが、どうすれば良いのか分かりません。どなたか知っていれば教えて頂きたいのですが。よろしくお願いします。

  • VB.NET Webアプリケーションで、コードでボタンのサイズを指定する方法

    VB.NETのWebアプリケーションで、条件によって ボタンの大きさを変える部分を作っております。 ボタンの大きさは普段プロパティで設定しておりますが、 この場合はコードで設定すべきと思うのですが、 どのようにすればよいのでしょう? Windowsアプリケーションと同じように、Button1.Widthなどとやるとエラーになってしまいます。 どうぞよろしくお願いいたします。

  • VB2008

    初心者です。よろしくお願いいたします。 現在、VB2008を使い、あるアプリケーションの作成に挑戦中です。 フォーム上にWebBrowserを配置しているのですが、このWebBrowserはVBのプログラム上でのみ操作したいのです。 つまり、キーボード操作、マウス操作を一切無効にするにはどのようにしたら良いでしょうか? フォーム自体にはButtonやtextboxが配置してあり、フォームの下半分にWebBrowserが配置してあります。 WebBrowserのみ操作禁止にしたいのです。 なにぶん、VBを始めてまだ日が浅いので、この操作が難しいのか簡単なのかもわかりません。 昨日から書籍やWEBでいろいろ探したのですが、これと言った内容は見つかりませんでした、よろしくお願いいたします。

  • VB6.0のエクセル操作について。

    VB6.0のエクセル操作について。 環境:XP,VB6.0です。 VB6.0でのエクセル操作や印刷についての質問です。 VB6.0で、リストビューに表示されている行のデータをエクセルに移してそれを印刷するというプログラムを組みたいのですが、 流れとしては、 1.リストビューから選択行を取得。 2.選択行の項目を既存のエクセルテンプレートに沿ってエクセルに入力。 (出来れば毎回違う名前で保存したいです。) 3.そのエクセルを印刷。 という流れなんですが、とりあえず1番までは出来ているのですが、 2,3の部分、エクセル操作と印刷の部分が分かりません。 ややこしい質問ですが、どなたかご教授お願いします。

  • Javaで、他のアプリケーションを操作したい

    USBを制御するプログラムをVBで作って、Javaで操作したいのですが、こんなことは可能でしょうか。 具体的には、VBで作ったUSB制御プログラムのフォーム上のボタンを、Javaで押す、みたいなイメージです。

  • VB.NET 2003 でグラフィックの表示。

    VB.NETをはじめたばかりです。 プログラムのスタート時、まずフォーム内でGraphicsオブジェクトを取得して表示させたいのですが、グラフィックに関する事項が表示しません。 一方、同じコード記述をButtonイベント内に記述し、ボタンONではグラフィック部分の描画が可能です。 フォーム内の記述だけでスタート時にグラフィックを表示するにはどのようにすればよろしいのでしょうか。 なお、フォーム内のテキスト表示、ラベルなどはイベントの発生なしでも表示します。

  • VB2008で入力した値やチェックボックスの状態を終了時点で保存してお

    VB2008で入力した値やチェックボックスの状態を終了時点で保存しておいて、次の起動時に保存内容を呼び出すプログラムを作ろうとしています。 テストプログラムでいきなり躓いて困っています。ご助言のほどよろしくお願いします。 1.プロジェクトのプロパティ アプリケーションで  『名前:abc、型:integer、スコープ:アプリケーション、値:0』と設定しました。 2.プログラムエディターでプログラムサブルーチン中に  『My.Settings.abc = 12』 と記載したところ、  『プロパティabcはReadOnlyです。』とエラーが出ます。  型を文字型に変えて『My.Settings.abc = ”12”』でも同様でした。 よろしくお願いします。