
在a、b下的txtbox中輸入資料,點擊計算后,會參考外部exe計算程式,生成2.txt輸出檔案
請問輸入什么代碼才能在VB中運行完exe檔案后,再呼叫2.txt的資料
uj5u.com熱心網友回復:
很抱歉,這個我學的是C#,不是VB,幫不了你,抱歉。
uj5u.com熱心網友回復:
很遺憾,你的exe程式是做什么的,不清楚,運行它起什么作用,不清楚,你的變數txt在哪里賦的值,沒有看到,因此寫入2.txt應該沒有什么內容。VB呼叫外部的exe檔案,必須知道這個add.exe檔案的句柄,才能呼叫這個exe的內容,這些比較麻煩,你應該好好了解VB呼叫外部exe檔案的操作。
uj5u.com熱心網友回復:
這玩意自己算好了,還要呼叫外部的計算器嗎?uj5u.com熱心網友回復:
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Const STATUS_PENDING = &H103
Private Sub RunShell(cmdline As String)
Dim hProcess As Long
Dim ProcessId As Long
Dim ExitCode As Long
ProcessId = Shell(cmdline, 1)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId)
Do
Call GetExitCodeProcess(hProcess, ExitCode)
DoEvents
Loop While ExitCode = STATUS_PENDING
Call CloseHandle(hProcess)
End Sub
用上面的函式呼叫吧。會等待另外一個程式結束后再往下走的。
step1 RunShell 你要呼叫的程式
step2 讀取2.txt
uj5u.com熱心網友回復:
剛才沒看樓主代碼。樓主應該是在聯系。他在add.exe里已經做好了讀取檔案,然后相加并寫入到2.txt的作業。 樓主按照我的方法操作即可。shell改用RunShell
其他什么都不用改即可。
uj5u.com熱心網友回復:
1、啟用外部程式時,由外部程式寫ini檔案值為空。2、外部程式計算完畢,寫ini檔案為非空值。
3、主程式讀取ini檔案,來確定是否運行完畢了,沒運行完,延時等待,設一個最大值,超過最大時間,則判斷出錯,重新計算。
uj5u.com熱心網友回復:
這種問題我也是用4樓那樣的方法處理。不過在Do回圈中我都是加了Sleep的,這樣不會造成CPU占用過高。
只要對實時性不是太苛刻(允許15ms左右的延遲),建議還是加上Sleep。
這種方式很靈活,可以設定最長等待時間、可以“人工終止等待”等等。
我覺得6樓說的跟這個相比,沒有任何優勢可言;
特別是樓主所說“外部程式”是第三方的、它根本不給你寫什么ini檔案,你就完全沒轍了。
uj5u.com熱心網友回復:
需要有個機制去判斷外部程式什么時候完成它的作業.沒有的話,那就用個定時器定期檢查那個程式必然會生成的一個結果檔案,有的話就延時一段時間再讀取.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/73805.html
標籤:VB基礎類
