VB6でZipファイルを移動させるプログラムを作成しています。
処理自体は
fsIni.MoveFile 移動元ファイル,移動先ファイル
なのですが、ネットワーク越しに行うため処理に時間がかかり、
”応答なし”のメッセージが出てしまいます。
移動そのものはできています。
DoEventsを入れても同様に応答なしメッセージが出ます。
どなたか解決策を教えてください。
お手数をおかけいたしますがよろしくお願いいたします。
通常の方法では難しいのではないでしょうか。
DoEventsではシステムへ制御を移しますが、次の処理が直ぐに開始される場合にはHOLD状態が継続される為「HOLD=応答なし」となります。
VB6ではDelegate型が使えない為に、AddressOffを使っての別プロセス起動は難しです。
敢えて、別プロセスを使う場合には、このプログラムを別プログラムから起動して、APIで終了を監視する方法や、同様にAPIのSendMessageで終了状態を送信受信する方法があります。
参考URL:http://nonsoft.la.coocan.jp/SoftSample/SampleRecvMsg.html
質問欄にDoEventsを入れたと有りますので、処理自体は1バッチ処理を複数回繰返し行っているのでしょうか。
1バッチの処理時間が短い様であれば、Timerからこの処理を数秒間隔で起動すると、その時間だけは入力可能となる為、HOLDから解放されます。
Timer1.Interval = 1000
sub Timer1_Timer()
Timer1.Enabled = False
call バッチ処理
DoEvents
Timer1.Enabled = True
end sub
この様な感じです。
APIを利用する場合には難易度か高くなりす。また、APIで終了を監視する場合にもTimerで数秒間隔で確認処理を動かす様にしないとHOLDは無くなりません。
お答えいただきありがとうございます。
一度Timerを入れて試してみようと思います。
場合によってはAPIを利用することも視野に入れてみます。
回答1件
あなたの回答
tips
プレビュー