• ベストアンサー

exeファイルをプログラムから操作する。

お世話になります。 VisualStudio2019(C#またはVB)で下記を実装したいと思っています。 ①あるプログラム(1.exe)のフォーム内にいくつかある指定のボタンを押す。  ⇒ウィンドウを取得、ウィンドウハンドルを取得してボタン押下 ②①の操作でプログラム(2.exe)が起動する。 ③2.exeプログラムの複数あるテキストボックスの中から指定のテキストボックスに文字を入力  ⇒ウィンドウを取得、テキストボックスのウィンドウハンドルを取得してテキストに値をセット いろいろサイトを探したのですが、「まさにコレ」といったものがなく困っています。 もしご教授いただければ幸いです。 よろしくお願いいたします。

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

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

> ①あるプログラム(1.exe)のフォーム内にいくつかある指定のボタンを押す。 お行儀のよいプログラムで作成されたフォームなら、APIとかでWindowsメッセージ送れば、素直に動作するかも。 > ②①の操作でプログラム(2.exe)が起動する。 それは1.exeがやる事で、外からどうこうする必要が無いのでは。 > ③2.exeプログラムの複数あるテキストボックスの中から こちらも、2.exeがお行儀良い作りなら、メッセージ送って動作するかも。 -- そういう操作の自動化を行ってくれるツール使うのが手っ取り早いと思う。 Vector - UWSC https://www.vector.co.jp/soft/cmt/winnt/util/se115105.html ネット情報によると、作者の方が亡くなられているそうで、Pro版の登録が出来ない状態だと思います。 自分は何年か前にPro版のパスワードの再発行お願いした事があって対応して頂いたんですが、非常に残念です。 その他、AutoHotkeyとか、MicrosoftもPower Automate Desktopってのを提供してるとか。

smllslp622
質問者

お礼

その後いろいろ調べて実現することができました。 ありがとうございました。

その他の回答 (1)

  • iijijii
  • ベストアンサー率55% (503/912)
回答No.1

> あるプログラム(1.exe)のフォーム内にいくつかある指定のボタンを押す。 Windowsフォームのことでしょうか? Windowsフォームは主にイベントドリブンで処理をすすめることを目的に作られたフレームワークです。 ウィンドウハンドルを便利に扱うようには作られていません。 ですから探すだけ無駄です。 Windowsフォームじゃないなら、開発環境を書いてください。 またXY問題に陥っている可能性が高いです。 https://ja.wikipedia.org/wiki/XY%E5%95%8F%E9%A1%8C 貴方が考えた手段ではなく、本当にやりたいことを書いてください。

関連するQ&A

  • exe間での引き値の受け取り方法

    VB.net 2003を使用しています。 テキストボックス2つとコマンドボタンが1つある画面(exe)があります。コマンドボタンを押すと引き値を今作成しているプログラム(exe)に送るプログラムがあるのですが、引き値の受け取り方法がわかりません。 検索などで調べたところコマンドラインなどを使用すればよいことがわかったのですが、使用方法がよくわかりません。 http://dobon.net/vb/dotnet/programing/commandline.html 上記のサイトを参考に見ているのですが、System.Environment.CommandLineで引き値を取り出すexeを指定しているのではないのでしょうか?メッセージボックスなどで値を調べたところ引き値を受け取るexe(このコードが書いてあるexe)が指定されているみたいなのですが、引き値を取り出すexeの指定はどこで行っているのでしょうか? ちなみにテキストボックス2つとコマンドボタンが1つある画面(exe)は他の人が作成しており、VBでは作成されていません。 どうか回答お願い致します。

  • ASP.NET/VBでのユーザコントロールを使用したプログラム

    開発環境:VS2005 言語:ASP.NET(VB) 質問させてください。 現在ASP.NETでプログラムを作っています。 プログラム等は経験なくほぼ初心者です。 内容としては テキストボックス(txtB)1個のユーザコントロールを ボタン(btn1)1個とテキストボックス(txtA)1個のフォーム(aspx)に貼り付け、 ボタンを押下することでフォームのテキストボックス内の値を ユーザコントロールのテキストボックスに表示させるという プログラムを作りたいのですがうまくいきません。 色々調べたのですが、 ユーザコントロールのテキスト内の値をフォームのテキストに表示させる方法は あったのですが逆の方法は見つけられませんでした。 説明等わかりにくいところもあるかもしれませんが 回答よろしくお願いいたします。

  • VB.Netでexe間のアクセス方法

    VB.Netでexe間のアクセス方法を教えて下さい。 おそらく、ウィンドウハンドルを取得してから、 ハンドルを元に、exeにアクセスすると思うのですが、 ウィンドウハンドルの取得方法が分かりません。 または、そのexeのオブジェクトを作り、いつもの フォームみたいに、いろいろなプロパティ、メソッドの アクセスを試みたいのですが。 Shellでexeを実行する方法もお願いします。

  • VisualStudio2008で作成したプログラムは旧バージョンでも使えますか?

    家の環境がVisualStudio2008 学校の環境がVisualStudio.NET 2003です。 情報系の学校に私は通っています。 家でVisualStudio2008を利用してVBのプログラムを1本作りました。 学校にそのプログラムを持ち込んで完成させ、課題として提出したいのですが、2008で作ったVBのプログラムは、学校の環境でも使用できますでしょうか? プログラム自体はボタンとラベル、テキストボックスで構成された、円の半径を入力し、その円の面積を求めるという基礎的で簡単なフォームアプリケーションプログラムです。 できればどこからどこまでの範囲でなら転用可能かも教えて頂けたら幸いです。 少々不安に思ったので質問しました。ご教授宜しくお願いします。

  • ActiveX EXEとタイマーとVB

    いつもお世話になってます。 さっそく質問ですが、 ActiveX EXE側にタイマーとテキストボックスを持っています。 VB側のフォームにテキストボックスがあります。 VBからActiveX EXEを起動させ、決まった時間(例えば5秒おき)にVBのテキストボックスに ある文字を表示させる、ということがしたいです。 条件として、 VB側の動きは、 (1)最初のActiveXを起動 (2)ActiveXのSetとNothingだけしかしない                   しかしません。 なので、ActiveXからは「RaiseEvents」はしません。 ActiveX側で、タイマーイベント部分に、 ActiveXのフォームのテキストボックス.text = "文字" set △△ = ActiveXのフォームのテキストボックス (△△は、ActiveXのフォームのテキストボックスとしてセットされています。) のように、プログラムしてみたのですが、 VB側のテキストボックスに表示できませんでした。 尚、VB側は、ActiveX以外の処理があるので、途中からActiveXを起動させることになります。 この条件で、VBのテキストボックスに文字を表示させることはできますか? もしできるとしたら、どのような方法がありますか?? まだネットや本で調べ途中なので、もし何か参考ページがありましたら教えていただきたいです。 よろしくお願いします。

  • 他アプリのコントロール操作

    2つのアプリA.exeとB.exeがあります。A.exeの特定のテキストボックスに入力された内容をB.exeで監視しようとしているのですが次の2点問題があります。 説明がうまくできないのですが回答をいただければと思います。よろしくお願いします。 1.FindWindowを使ってウィンドウハンドルを取得しようとしているが,同じウィンドウ名を持つA.exe以外のウィンドウが存在するとA.exeのウィンドウかどうか判断できない? 2.ウィンドウハンドルが取得できたとして,複数のテキストボックスがある場合,それぞれのテキストボックスを区別する方法は?

  • 【VB2005】別のプログラムから別のプログラム起動

    "A"というVB2005で、作成したプログラムがありまして、 メインのフォームがあり、 そこにボタンがあります。 Shellの関数を使って、クリックイベントで、 指定したExe"B"を立ち上げます。 そのExe"B"は、VB2005で作成したオリジナルのプログラムです。 プロジェクトは別で作った物と考えてください。 Exe"B"を起動した画面を[フォーム1]と考えて、 ボタンがあり、クリックすると 別の[フォーム2]が表示するはずなのですが、 特にエラーも掴まずに、Showで開くことができません。 しかし、Exe"B"からダイレクトに起動させて ボタンをクリックしたら[フォーム2]が表示されます。 どうしたら、Exe"A"からExe"B"を起動して Exe"B"からフォーム2を呼び出すことができるか、 考えられる要因などをアドヴァイスして頂けたら助かります。

  • VB.NETでプログラム間通信を簡単に行いたい

    VB.NETからShellで呼び出すプログラム(.EXE .VB .DLL etc)の中のテキストボックスやラベル等に対して値を渡したいのですがどうすれば簡単に 出来るでしょうか?VB6で言うDDE通信ですが・・ 宜しくお願いします。

  • ブラウザのテキストボックスへの入力

    WEBブラウザにHTMLで構成されているテキストボックスにVBプログラムから文字列を入力することができますでしょうか。 イメージとしては、ブラウザにHTML表示されたID,パスワード欄にVBプログラムから入力を行い、同じくHTMLのsubmitボタンをVBから押下するという感じです。 また、可能である場合、具体的にどのようにすればできるか、参考情報、サイト等教えていただけませんでしょうか。 ベーシック認証時などにポップアップ表示されるダイアログへのID/パスワードなどの入力プログラムを以前作成した際は、ウィンドウハンドルを取得して、sendmessageすることができたのですが、HTMLの部品はウィンドウハンドルで特定することができないので、苦慮しています。 以上、よろしくお願い致します。

  • 1つのテキストボックスを、2つのボタンで利用したいのです。

    ASP初心者です。 宜しくお願いします。 1つの画面に 1.「検索ボタン」 2.「EXCEL出力」ボタン 3.「テキストボックス1」 4.「テキストボックス2」 を作成しました。 「検索ボタン」を押下した時も「EXCEL出力ボタン」を押下した時も、 テキストボックス1と2に入力された値を利用するにはどのようにしたら良いのでしょうか? (テキストボックスへ入力された値は、DBへの問い合わせの際のwhere句指定で使用します。) ボタンが1つだけの時は<form>~</from>の間に、テキストボックスの記述を行い、 受け側ではRequest.Formで値を取得する事ができたのですが、 テキストボックスを共用しようとした途端、分からなくなってしまいました。 有識者の皆様、よろしくお願い致します。

専門家に質問してみよう