• 締切済み

外部アプリケーションをタスクバーから元のサイズに

VB2005の初心者です。 色々調べたつもりなのですが解らなくて・・・。 外部アプリケーションをshell関数やProcess.Start("○○.EXE")などで起動は出来るのですが、起動後、一旦VB2005アプリケーションで作業を行う為、最小化しています。VB2005アプリケーションのある作業を終了したとき自動的に最小化した外部アプリケーションを元のサイズに戻しアクティブにしたいのですがよく解りません、制御する方法を教えて頂けないでしょうか。

みんなの回答

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.1

当方、環境VB.NET2003なので違うかもしれませんが、参考とまで。 ProcessIDをとっておいてMicrosoft.VisualBasic.AppActicateでアクティブにはできますが、サイズを元には戻せないみたいです。 後はWinAPIを使ってやるしかないみたいです。 参考URL貼っておきます。

参考URL:
http://jeanne.wankuma.com/tips/process/activewindow.html
wingtodo
質問者

お礼

ご回答ありがとうございます。 やはり、サイズを元に戻すのは難しいようですね。 URL参考になりました。

関連するQ&A

  • アプリケーションAから外部アプリケーションBを

    アプリケーションAから外部アプリケーションBを 呼び出す処理。 Bのフォームを常に最前面にして、Aのフォームを操作できないようにしたいです。 ただしAにあるタイマーを止めないようにもしたいです。 そこで [C#] //ファイルを開いて終了まで待機する System.Diagnostics.Process p = System.Diagnostics.Process.Start("C:\\test.exe"); p.WaitForExit(); ※「test.exe」を外部アプリケーションBとする。 を使ったのですが、Aのタイマーが止まってしまいます。 何か良い方法はないでしょうか? 言語はC#です。

  • 外部アプリケーションの呼び出し方

    現在VC++で環境ウィンドウズ2000でプログラミングを行っています。 メニュー画面上のボタンをクリックすると外部のアプリケーションを呼び出し作業したいと思っています。関数CreateProcessを使うとできるということまではわかったのですが、どうもうまくいきません。 下記のプログラムはメモ帳を呼び出すものでこれはうまくできました。 STARTUPINFO sin; PROCESS_INFORMATION pin; ZeroMemory( &sin, sizeof( STARTUPINFO ) ); ZeroMemory( &pin, sizeof( PROCESS_INFORMATION ) ); sin.cb = sizeof( STARTUPINFO ); sin.dwFlags = STARTF_USESHOWWINDOW; sin.wShowWindow = SW_SHOWNORMAL; if ( !CreateProcess( NULL, _T("notepad.exe C:\\foo.txt), NULL, NULL, FALSE, 0, NULL, NULL, &sin, &pin ) ) { // 起動失敗 } } 実際はデスクトップに置いてあるアプリケーションを呼び出したいと思っています。自分ではアプリケーション名の書き方等が間違っているのではないかと思っていろいろ試したのですが、どうもうまくいきません。 初心者で説明も不十分な点もあると思いますがどうかよろしくお願い致します。

  • 外部アプリケーションの起動について

    Windows 7 32ビット機で、VC++ 2010 Express を利用して Windowsフォームアプリケーションを作成しております。文字コードはマルチバイト文字を選択しました。 アプリケーション自体は、メニュー画面にいくつかのボタンを設け、押下すると所定の実行ファイルが起動するといった非常に簡単なものです。 外部アプリケーションの起動方法ですが、ShellExecute()関数またはCreateProcess()関数を使用するのが一般的との事ですので、今回はCreateProces()関数を使うことにしました。大きな理由は、アプリケーションの実行待機機能が使いたかったためです。 とくに問題なくビルドが完了し実行してみたところ、殆どのアプリケーションは起動できるのですが、ひとつだけ起動できないものがありました。正確には、起動できないというよりは、タスクマネージャーにより起動されていることは確認できるのですが、バックグラウンドで動作するかのように肝心の画面が表示されません。 この状態になると(主プロセスである?)メニュー画面の制御がきかず(応答なし状態)、タスクマネージャーにより強制終了すると、ここでやっと表示されなかった画面が表示されるといった具合です。 何故このような現象が起こるのか、どのようにすれば解決するのかわかりません。誠に恐れ入りますがご教示賜りたく、何卒よろしくお願いいたします。 なお、下記にご参考となり得る情報を記載します。 1. 関数部分の記述は以下のとおりです。 rVal = CreateProcess ((LPTSTR)Fname, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); Fnameは、フルパスのファイル名がセットされたchar型変数で、ここでは第1引数に記述していますが、第2引数に記述した場合でも結果は同じです。 2. 上記の(LPTSTR)の記述はおまじない的なもので、この記述が無くても挙動は変わりません。どこかの記事で、Windows 7 で動作しない場合の対応と紹介されていましたので。 3. 実行ファイルは、R社のプリンタドライバーのインストーラ(.exe)です。 4. Z社のプリンタドライバーのインストーラやその他のアプリケーション(.exe)は問題なく動作します。 5. メニュー画面には複数のボタンがありますが、対応するロジックはすべて同じで、Fnameにセットされた値のみ異なります。 6. ShellExecute()関数を利用すると、問題なく動作します。

  • 他のアプリケーションの終了処理

    Shell関数を使って起動した他アプリケーションを 今度はその、他アプリケーションからではなく、V Bで作成したメイン画面の終了と同時に終了させた いのですが方法、又は適切な文法が分かりません。 よろしくお願いします。 ※ちなみにVBで作成したメイン画面の終了と同時 に終了させたい他アプリケーションは1つだけです。 しかも決まったパスに置いていて、この先もずっと 固定です。条件としては以上です。

  • コマンドライン引数について

    フォームの中にボタン(button1)があり、ボタンを押すと別のアプリケーションを起動するようなプログラムを作っています。 別アプリケーションを起動するのに次のようにShell関数を使ってコマンドライン引数"A"を渡していますが、     Shell("Test.exe A", AppWinStyle.NormalFocus) アプリケーションの終了を確認する必要があり、ProcessコンポーネントのExitedイベントを利用したいので、Shell関数を止めて以下のようなコードにしたいと思っています。 Private Sub Button1_Click(ByVal sender As System.Object, _             ByVal e As System.EventArgs) Handles Button1.Click     Process1.StartInfo.FileName = "Test.exe"     Process1.Start() End Sub Private Sub Process1_Exited(ByVal sender As System.Object, _             ByVal e As System.EventArgs) Handles Process1.Exited     '(ここにアプリケーション終了時の処理コードを記述) End Sub このとき、コマンドライン引数を渡すにはどのようにすればよいでしょうか? どなかたご教授いただけると助かります。どうぞよろしくお願い致します。

  • VB6.0から起動したexeファイルを終了するとエラーが発生して困っています

    VB6.0(OSはWindowsXP)中からShell関数を利用してexeファイルを起動したのですが、そのexeファイルを終了すると決まってアプリケーションエラーが発生します。これを直接かショートカットで実行して終了するとエラーは出ません。どなたか考えられる原因や解決策をご存じの方、教えて頂けませんでしょうか?よろしくお願い致します。

  • 外部プロセスを終了したい!!

    こんにちは。 ご多忙の中、申し訳ありませんが皆さんの知恵をお貸しください。 私はVBは初心者中の初心者なのですが、 あるアプリケーションからEXEをキックし(このEXEは永久ループ)、 ある程度の処理をしたら、キックしたEXEを終了させたいと考えております。 基本的にキックされたEXEがウェイトして自らおちるのではなく、キックした アプリから落としたいと考えています。 簡単に言えば、UNIXでいうKILLコマンドのような関数はありますかと 言うことです。(プロセスIDを使用して・・・) ご存知の方がいらっしゃいましたら、教えてください。 宜しくお願い致します。m(_ _)m

  • 他アプリケーションの終了

    Shell関数を使って起動した他アプリケーションを 今度はその、他アプリケーションからではなく、V Bで作成したメイン画面の終了と同時に終了させた いのですが方法、又は適切な文法が分かりません。 よろしくお願いします。

  • exe実行後、プロセスが残ってしまう

    VB初心者(初日)です。 よろしくお願いします。 あるアプリケーションで「アプリケーションの連動」 の設定があります。 私はperlをキックしてほしいのですが、 VBのexeしか指定できません。 なので、VBのexeを作ることにしました。 ただperlをキックしたいだけのexeです。 Private Sub Form_Load() Ret = Shell("E:\Perl\bin\perl.exe G:\InetPub\wwwroot\cgi-bin\test.cgi", vbAbort) End Sub うまくキックしてくれるのですが、タスクマネージャーで 確認すると、プロセスが残ってしまいます。 shell実行後、完全に終了するにはどうしたらよいですか?

  • VBについて教えてください。

    1.a.exeでShell関数でb.exe起動したときにa.exeはみれなくして   b.exeで終了するとb.exeはなくなりa.exeだけにしたいのですが   どうすればよいのかおしえてください。   a.vbp   RetVal = Shell("c:\b.exe", 1)   ← b.exeの起動 b.vbp end ← 終了   b.exeが起動中はヤククにa.exeがなくなり、b.exeが終了すると   a.exeが起動するようにしたいのです   よろしくお願いします。   WINDOWS98でvb6.0で開発しています。   

専門家に質問してみよう