投稿日 | : 2003/05/08(Thu) 11:13 |
投稿者 | : 西一 |
Eメール | : |
URL | : |
タイトル | : 同じ処理を複数起動する方法 |
こんにちは、皆さん。
単純な質問かも知れませが、同じ処理を複数起動する方法について教えて下さい。
処理は"あるフォルダ"のファイルを監視するプログラムです。
(FindFirstChangeNotificationを使って監視しようかと思っています。)
"あるフォルダ"と言うのは実行環境に依って複数あります。(数は決められません)
現状、メインプログラムから監視プログラムを起動すると、ファイルの監視中はメインプログラム
も止まってしまいます。
これを、何とか止まらずに"あるフォルダ"分監視し続ける良い方法はないでしょうか?
メインプログラム終了時は全ての監視処理を終了します。
*----監視プログラム-------------------------------------------------------------------
Private Sub Surveillance(ImgFolder As String)
'ImgFolderは呼び元から受け渡されるフォルダ名x:\xxxx\xxx
Dim NotificationHandele
Dim bWaiting As Boolean
Dim ErrCode
Dim lngResult
Dim lngSTARTTick As Long
Dim strDcmFile As String
Const WAIT_OBJECT_0 As Long = 0
Dim ImgFolder As String
'ImgFolder = "c:\&&Temp\#1" '監視フォルダ()
Set objFS = CreateObject("Scripting.FileSystemObject")
'*** ファイル変更通知object のスタート
NotificationHandele = FindFirstChangeNotification _
(pImgFolder, False, FILE_NOTIFY_CHANGE_FILE_NAME)
If NotificationHandele = INVALID_HANDLE_VALUE Then '関数エラーの場合
ErrCode = GetLastError
Call EndRTN(ErrCode) '*** 終了処理の実行
End If
bWaiting = True
Do While bWaiting = True
lngResult = WaitForSingleObject(NotificationHandele, INFINITE)
If (lngResult = WAIT_OBJECT_0) Then 'ファイル作成を感知した場合
strDcmFile = Dir$(pImgFolder & "\*.*") 'ファイル名の取得
Call FileRegist '****** 登録処理を実行
FindNextChangeNotification _
(pImgFolder & NotificationHandele) 'ファイル変更通知object のリスタート
End If
Loop
'*** 通知オブジェクトをクローズ
FindCloseChangeNotification (NotificationHandele)
End Sub
*----監視プログラム-------------------------------------------------------------------
【理想】
+--------------+ +--------------+
| メイン |<-----+---->|Aファルダ監視 |
+--------------+ | +--------------+
| +--------------+
+<--->|Bファルダ監視 |
| +--------------+
| +--------------+
+<--->|Cファルダ監視 |
: +--------------+
: :
<--->:ファイルが作成されるとそのファイル名を取得。
メインプログラムではそのファイルを読んで処理を行ないます。
複数起動出来て、各々監視出るようにしたいです。