

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にて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード
- マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法
- VBAが止まります。
- エクセルのマクロについて教えてください。
- 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ
- Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1
- VBAのユーザーフォームのテキストボックスに入力制限をしたい
- 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存
- マクロVBAについて
- VBA フォルダ見える化のコードについて
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
マクロで、次のコードへ行く前に時間をおくにはどうしたらいいのでしょうか?
その他(Microsoft Office)
-
VB6でのファイルコピーの終了検知について
Visual Basic(VBA)
-
Vba アプリケーションが立ち上がるまで待つ
Excel(エクセル)
-
-
4
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
7
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
8
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
DoEvents関数って何?
Visual Basic(VBA)
-
11
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
12
VBAでExcelの保存終了を取得したい
Excel(エクセル)
-
13
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
14
VBA PDFファイル印刷後のAcrobatReaderDCの起動画面を閉じたい
Excel(エクセル)
-
15
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
16
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
-
17
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
18
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
19
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
20
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
COPYコマンドで結合すると余計...
-
拡張子を元に戻す
-
バッチファイル 複数ファイル...
-
psqlでエラーログをとりたい
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
ファイルの最後に文字列挿入
-
多数のサブディレクトリ内のフ...
-
Windowsのバッチファイルを利用...
-
UWSCでファイルを開く方法
-
【Excel】 VBAを使って毎回名前...
-
forfilesで検索したファイルを...
-
UWSCでテキストファイルを開い...
-
accessでSQL文を使ってcsvファ...
-
テキストファイルのタブをカン...
-
コマンドプロンプトで指定した...
-
VB6で日付、時間をファイル名...
-
テキストファイルで提出とは?
-
バッチファイルからVBAに引数を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
拡張子を元に戻す
-
VBAでワークシートを引数として...
-
バッチファイルについて
-
COPYコマンドで結合すると余計...
-
.txtではなく.logの方が良いの...
-
多数のサブディレクトリ内のフ...
-
psqlでエラーログをとりたい
-
バッチファイル 複数ファイル...
-
Windowsのバッチファイルを利用...
-
ファイルを処理中に次の処理に...
-
テキストファイルで提出とは?
-
テキストファイルのタブをカン...
-
バッチファイルからVBAに引数を...
-
forfilesで検索したファイルを...
-
ファイルの最後に文字列挿入
-
accessでSQL文を使ってcsvファ...
-
テキスト(txt)→ワード(docx)へ...
-
renameコマンドについて
-
【Excel】 VBAを使って毎回名前...
おすすめ情報