
VB6.0について困っております。
VB6.0にてファイル管理ソフトを開発しています。VBより他アプリ(MS OfficeやAutoCAD等)ファイルを起動させ、終了を監視(終了処理実行のため)しています。
具体的にはWshのshell.Runコマンドを使用して wsh.run("アプリ",NormalFocus,True)として起動させています。
ここで、複数ファイルを起動した場合、最後に起動したファイルが終了しないと、他の終了が検知できません。
例)
ファイルAを起動
ファイルBを起動
ファイルCを起動
ファイルDを起動
↓
ファイルAを終了 ←終了しても終了検知しない
ファイルBを終了 ←終了しても終了検知しない
ファイルCを終了 ←終了しても終了検知しない
ファイルDを終了 ←終了するとA・B・C・Dの終了をまとめて検知し終了処理実行
これを、各ファイルごとに終了を検知させる方法はありませんでしょうか?
よろしくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
#1の再提案です。
(^@^)再度確認しますが、複数のソフトを非同期実行して、ファイルの終了
検知をおこなえばよいのですよね?
VB6をつかっているということでしたから、
wsh.run(.....,false)
のようにrunの第3引数をfalseにして起動すれば非同期実行できます。
ただ、非同期実行するだけなら
Call Shell(実行ファイル名)
べつにwshオブジェクトをつかうまでもないとおもうのですが、どちらでも
変わらないとおもいます。
終了検知のほうはAPIビューアで、FindWindowAPIを定義しておいて、
これでwindow検出を連続しておこない、検出できなくなったら
ソフトが終了したと仮定し、すべてのソフトの終了が確認されたら
という風にもっていけばよいだけのこととおもっていました。
もし、どうしてもWshをつかってやりたいなら、私なら
AppActivateでもつかうでしょうか。
タイトル文字がわかっていれば使えるという手軽さもありますし、
戻り値として、正常終了かどうかが得られますので、FindWindowと
おなじことが可能となるとおもいます。ただし、このメソッドをつかうと
見つかったアプリにフォーカス移動が生じてしまうので、気になる場合は
最小化起動でもしておくほかはないとおもいます。
遅くなって大変申し訳ありません。
ご提案いただいた通り、非同期実行にしてアプリ監視にしたいと思います。
ありがとうございました。
No.2
- 回答日時:
参考です。
Shellは同期動作をさせないので、終了監視が必要になると思います。私は、終了監視のコードを作るのが、不要に面倒だと感じます。Office系であれば、Object Liblaryを参照させて、Application Objectのインスタンスでファイル操作を行います。問題は、AutoCAD等の部分ですが、少なくとも最近のAutoCADであれば、同じ事が出来るようになってないかな?、と思います。AutoCADのObjectも大分公開されてきましたので。
ご回答いただきまして誠にありがとうございます。
ご指摘の通り、インスタンスで制御できればいいのですが、取り扱う起動アプリが10種類以上あり、すべてを実現するのは難しい現状です。
ありがとうございました。
No.1
- 回答日時:
Wshはつかったことがないのですが、wsh.runの第三引数でTrueを指定しているので、ファイルDを終了したときにはかならずA~Cは終了しているとおもうのですが。
やりたい内容がいまいち判然としないのですが、
1,ファイルA~Dを起動(終了待ちなし)
2.それぞれのファイルを個別にチェックして、終了確認
3.全ファイルが終了していたら、終了処理へ
という内容を想定しているなら、
runの第3引数をfalseにして起動すれば、上記1ができますね。
上記2は少し、細工がいるかもしれませんが、わたしが実装するなら
FindWindow APIをつかうでしょうか。
ただし、Window名があることが前提ですが、ExcelやAutoCADなら
大丈夫でしょう。
ご回答いただきまして誠にありがとうございます。
ファイルをひとつしか起動させないのなら、引数True指定で開いたファイルが終了するまで他の操作をさせないことことで実現可能なのですが、同時に複数起動を認めているため、このような事象が発生しております。
実アプリファイルをサーバからクライアントに転送し。DBにて排他管理を行っています。ですので。複数起動時に個々に終了を検知させ。排他クリアとクライアント⇒サーバへのアップを行いたいと考えています。
現状ですと、ファイルDを閉じないとファイルA・B・C・Dの終了処理(排他クリア・サーバアップ)ができないため困っております。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- フリーソフト タスクソフト? 1 2023/01/14 07:52
- スピーカー・コンポ・ステレオ 動画再生も可能なファイル管理のできる音楽再生ソフトはありますか。 2 2022/09/24 19:34
- Visual Basic(VBA) VBAでOutlookを終了させたい ExcelVBAで既に起動されているOutlookを終了させる 3 2022/03/24 07:37
- Windows 10 バッチファイルでのエクスプローラー終了 1 2022/05/30 14:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- Windows 10 windowsの回復ドライブや復元ポイントを使用した場合の戻る位置を教えてください。 5 2023/08/19 14:52
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
- Windows 7 Media Playerが開かない。ファイルアイコンを右クリックしても「プロパティ」が表示されない。 2 2023/02/05 14:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
html上で、バッチやexeファイル...
-
EXE間で同期をとりながらデータ...
-
GUIアプリをコマンドラインで使...
-
VB2008によるOCX作成、またはHT...
-
VB5が起動しない
-
*.asp の拡張子名がついたht...
-
jspのエラーが修正できません。
-
VBAで作成したマクロをデスクト...
-
VB6.0 Shellによる終了監視に...
-
64ビットでのビジュアルスタイ...
-
ファイルタイプ関連付を調べる...
-
LabVIEWでEXCELファイルを操作...
-
Eclipseで、プロジェクト名のと...
-
正しいURL指定しているにもかか...
-
Eclipse(JAVA)のデバッグで他...
-
javaが文字コードの影響でコン...
-
classファイルについて
-
EclipseでのJDBCドライバについて
-
Eclipse・プロジェクトで、フォ...
-
JAVAにのeclipseに関する質問で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
html上で、バッチやexeファイル...
-
VBAで作成したマクロをデスクト...
-
HTMLファイルからexeファイルを...
-
Access VBAよりシート名を取得...
-
GUIアプリをコマンドラインで使...
-
VBA Application visibleの...
-
system.mdwを見つけることが出...
-
jspのエラーが修正できません。
-
EXE間で同期をとりながらデータ...
-
量子化学計算ソフト GAMESS の...
-
64ビットでのビジュアルスタイ...
-
exeファイルが実行中かどうか、...
-
別のAccessファイルのフォーム...
-
*.asp の拡張子名がついたht...
-
VB5が起動しない
-
LabVIEWでEXCELファイルを操作...
-
エラー この変数は宣言されて...
-
vb.netでフォルダをcab圧縮する...
-
ブラウザからexeファイルを起動...
-
vbsかバッチファイルでmp3を再...
おすすめ情報