VB.NETですが、
趣味でアプリケーションを作成しています。
下記のコードで処理を実行させています。
Call Shell("C:\aaa.exe c:\test.txt c:\test2.txt", AppWinStyle.Hide)
(A)
Dim sr As New System.IO.StreamReader("c:\test2.txt", System.Text.Encoding.Default)
Dim sb As New System.Text.StringBuilder(CInt(Microsoft.VisualBasic.FileSystem.FileLen("c:\test2.txt") * 1.1))
'ファイルの最後までループ
Do Until sr.Peek = -1
sb.Append(sr.ReadLine & vbCrLf)
Loop
sr.Close()
"aaa"はtest.txtを加工してtest2.txtとして出力するプログラムです。
その後、test2を最後まで読み出しているのですが、
どうもプログラムaaaが処理を終了する前に
次の読み出し処理に移ってしまっているようなのです。
そこで、素人なりに上記(A)の部分に
For i = 0 To 2000000000
Next
For i = 0 To 2000000000
Next
とForループを加えて時間稼ぎしているのですが、
状況によって時間稼ぎがうまくいかない場合があります。どのように問題を回避すべきでしょうか?
aaaはDLLでも組み込み可能になっているプログラム
なのですがDLLで実行させると何らかのメリット
があるのでしょうか?
その点を教えていただけると助かります。
回答よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
Dim hProc As System.Diagnostics.Process
'プロセス作成
hProc = System.Diagnostics.Process.Start("C:\aaa.exe c:\test.txt c:\test2.txt")
'プロセス終了待機
hProc.WaitForExit()
hProc.Close()
hProc.Dispose()
Dim sr As New System.IO.StreamReader("c:\test2.txt", System.Text.Encoding.Default)
Dim sb As New System.Text.StringBuilder(CInt(Microsoft.VisualBasic.FileSystem.FileLen("c:\test2.txt") * 1.1))
'ファイルの最後までループ
Do Until sr.Peek = -1
sb.Append(sr.ReadLine & vbCrLf)
Loop
sr.Close()
これでどうでしょうか。
回答ありがとうございます。
お返事遅れました。
プロセスの終了まで待機すればよいわけですね。
プログラムの動作確認ができました。
ありがとうございます。
No.4
- 回答日時:
shell関数の第3引数が省略されていると、終了を待ちません
trueを指定すると終了を待つようになります。
呼び出したプログラムがハングアップする可能性がある場合には、第4引数でタイムアウト時間をミリ秒で指定することができます。(integerの範囲で)
回答ありがとうございます。
お返事遅れました。
第3引数があるとは思いませんでした。
動作確認したところうまくいきました。
ありがとうございます。
No.3
- 回答日時:
回答ありがとうございます。
お返事遅れました。
#1さんの方法と同じ方法ですね。
プロセスの終了まで待機すればよいわけですね。
ありがとうございます。
No.2
- 回答日時:
VBはVer6までしか触ってないので、.NETでどうなるかは自信がありませんけど。
同期/非同期の問題ですね。
shellは、確かに結果を待たずに次行を実行します。
そのため、結果を待つ処理が必要になります。
このカテゴリで「同期」で検索してみてください。
下記、過去問の#2さんの回答が適用できそうに思います。
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=325703
回答ありがとうございます。
お返事遅れました。
VB6の方法のように思いますが、、、、。
よくわかりませんでしたので、
動作確認してません。
でもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
マクロで、次のコードへ行く前に時間をおくにはどうしたらいいのでしょうか?
その他(Microsoft Office)
-
VB6でのファイルコピーの終了検知について
Visual Basic(VBA)
-
VBAでExcelの保存終了を取得したい
Excel(エクセル)
-
-
4
DoEventsがやはり分からない
Visual Basic(VBA)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
8
shell関数について
Visual Basic(VBA)
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
Access VBA SQL文で教えてください
PowerPoint(パワーポイント)
-
11
CloseとDisposeの違い
Visual Basic(VBA)
-
12
エクセルVBAが途中で止まります
Visual Basic(VBA)
-
13
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
14
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
15
VBA メッセージボックスを自動で消したい
Visual Basic(VBA)
-
16
Vba アプリケーションが立ち上がるまで待つ
Excel(エクセル)
-
17
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
18
Access クエリ実行が急に非常に遅くなりました。
Access(アクセス)
-
19
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
20
ASP(VBS) ←→ JavaScript の変数値のやりとり
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
多数のサブディレクトリ内のフ...
-
VBAでワークシートを引数として...
-
拡張子を元に戻す
-
テキストファイルのファイル名...
-
.txtではなく.logの方が良いの...
-
MATLABで行列を配列に格納する方法
-
バッチファイルからVBAに引数を...
-
テキストファイルで提出とは?
-
javaで大量のファイルを読み込...
-
Windowsのバッチファイルを利用...
-
【Excel】 VBAを使って毎回名前...
-
forfilesで検索したファイルを...
-
フォルダを自動作成・移動を複...
-
accessでSQL文を使ってcsvファ...
-
ファイルの最後に文字列挿入
-
COPYコマンドで結合すると余計...
-
OpenCVの正解生成のcreatesamples
-
ファイル名の一部をbatで変更し...
-
EXCEl/VBAで拡張子なしのファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
バッチファイル 複数ファイル...
-
テキストファイルで提出とは?
-
バッチファイルで文字列削除に...
-
Windowsのバッチファイルを利用...
-
テキストファイルのファイル名...
-
ファイルの最後に文字列挿入
-
psqlでエラーログをとりたい
-
forfilesで検索したファイルを...
-
バッチファイルからVBAに引数を...
-
accessでSQL文を使ってcsvファ...
-
MATLABで行列を配列に格納する方法
-
テキストファイルのタブをカン...
-
renameコマンドについて
-
【Excel】 VBAを使って毎回名前...
おすすめ情報