tagCANDY CGI VBレスキュー(花ちゃん) - Shell関数等で起動したアプリが表示されるまで待つ(VB6.0) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
Shell関数等で起動したアプリが表示されるまで待つ(VB6.0)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

Shell関数等で起動したアプリが表示されるまで待つ(VB6.0) [No.198の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2008/10/10 15:38
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[他のアプリ関係][][]                                                *
* キーワード:Shell関数,待機処理,表示されるまで待つ,WaitForInputIdle API,処理待ち *
***********************************************************************************
タイトル : sleep関数の待機について
記 事 No : 13030
投 稿 日 : 2008/09/10(Wed) 09:07
元質問者 : 悩める子羊  

そこで、一番の解決策としてshell関数を使ってCADを起動させて
起動し終わるまで待機して次の動作に行くにはどうすればいいでしょうか?
今は、sleep関数で時間(秒)を調整しています。

-----------------------------------------------------------------------------------
記事No : 13031
投稿日 : 2008/09/10(Wed) 10:52
回答者 : 魔界の仮面弁士  
-----------------------------------------------------------------------------------
> そこで、一番の解決策としてshell関数を使ってCADを起動させて
> 起動し終わるまで待機して次の動作に行くにはどうすればいいでしょうか?

WaitForInputIdle API で。

http://hanatyan.sakura.ne.jp/logbbs/wforum.cgi?mode=allread&no=8150&page=330
http://jeanne.wankuma.com/tips/vb6/process/waitforinputidle.html



-----------------------------------------------------------------------------------
記事No : 13033
投稿日 : 2008/09/10(Wed) 18:24
回答者 : 花ちゃん
-----------------------------------------------------------------------------------
そのまま使用すればよかったはずですが。
下記を貼り付けて、CAD のパスだけ書き換えて試して見て下さい。

Option Explicit

Private Declare Function OpenProcess Lib "kernel32" _
   (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Boolean, _
    ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
   (ByVal hObject As Long) As Long
Private Declare Function WaitForInputIdle Lib "user32" _
   (ByVal hProcess As Long, ByVal dwMilliseconds As Long) As Long
Private Const SYNCHRONIZE As Long = &H100000

Private Sub Command1_Click()
   Dim TaskID As Long
   Dim hProcess As Long
   Dim Ret      As Long
  
   TaskID = Shell("C:\Program Files\CAD\***.exe", vbMaximizedFocus)
  
   hProcess = OpenProcess(SYNCHRONIZE, False, TaskID)
   If hProcess = 0 Then
      MsgBox "ハンドルが取得できません"
      Exit Sub
   End If
   Ret = WaitForInputIdle(hProcess, &HFFFF)
   Call CloseHandle(hProcess)
   MsgBox "表示しました"
End Sub
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ