exe内で別exeを起動し、別exeが終了した時元exeにフォーカスを戻すには?


少年K  2003-06-11 23:38:22  No: 78225

OS WindowsNT4.0SP6
言語 VB6.0SP5
以上の環境でプログラムを作成しています。
EXEを起動して、その中にShellで別EXEを起動した時、
別EXEが終了すると、元EXEにフォーカスが戻らないのですが、
どうすればいいでしょうか?

別EXEが終わったら、Setfocusするしかないのでしょうか?
別のやり方があれば教えてください
また、Windowsのバージョンによって動作に違いはあるのでしょうか?
よろしくお願いします


Say  2003-06-11 23:54:20  No: 78226

別EXEの終了を待つのか、非同期並列実行するのかで
やりかたが若干変わりますが、
元EXEから別EXEを終了監視して、
終了したら自分をActiveにしたらどうでしょう。

>Windowsのバージョンによって動作に違いはあるのでしょうか?
組み方次第です。


少年K  2003-06-12 00:14:49  No: 78227

Sayさん、返信ありがとうございます。

Private Sub menBackUp_Click()
    Dim ShellID&
    Dim ExitCode&
    Dim ret As Long
    
    frmCostIn.Enabled = False
    ShellID& = Shell(App.Path & "\BackUp\" & "DbBackUp.exe", vbNormalFocus)
    
    ExitCode& = ProcessWait(ShellID&, True)'待ち
    
    frmCostIn.Enabled = True
    AppActivate frmCostIn.Caption
End Sub

のように書いてみました。フォーカスは戻ってきました。Windowsのバージョンによってですが、NT4.0SP6だとフォーカスを失うだけなのですが、2000だとウィンドウが一番後ろまでいってしまいます。ここの書き方なのでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加