全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5649
推到 Plurk!
推到 Facebook!

如何擷取別的程式所輸出的訊息??

答題得分者是:axsoft
lgw
一般會員


發表:24
回覆:76
積分:22
註冊:2002-08-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-29 12:42:58 IP:61.222.xxx.xxx 未訂閱
Hi~~ 請教眾家高手,現在我需要在自己的程式中呼叫一個 DOS Mode 的應用程式 那我要如何把此程式的輸出訊息抓到我自己的視窗畫面??? 謝謝!!
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-30 09:08:21 IP:61.218.xxx.xxx 未訂閱
引言: Hi~~ 請教眾家高手,現在我需要在自己的程式中呼叫一個 DOS Mode 的應用程式 那我要如何把此程式的輸出訊息抓到我自己的視窗畫面??? 謝謝!!
您可以參考這三篇的做法將訊息導入你要輸出的位址 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23904 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23905 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20897 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-30 10:40:34 IP:203.75.xxx.xxx 未訂閱
如果不想那複雜的話, 我提供一個小偏方, 先把 console 程式的輸出重導到一個檔案去, console.exe >> output.txt, 然後定時去 polling 它有沒有變化 (間隔可依 console 程式 IO 的頻繁度加減), 如果有的話就去讀取檔案多出來的部份(記得把這次的位置記錄下來), 然後加到 TMemo 中, 這個方法的好處是簡單, 而且寫一支可設定檔案名稱及 polling 間隔的程式就可以到處用, 參考一下吧. Jesse Chan
------
Jesse Chan
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-31 09:52:14 IP:61.218.xxx.xxx 未訂閱
引言: 如果不想那複雜的話, 我提供一個小偏方, 先把 console 程式的輸出重導到一個檔案去, console.exe >> output.txt, 然後定時去 polling 它有沒有變化 (間隔可依 console 程式 IO 的頻繁度加減), 如果有的話就去讀取檔案多出來的部份(記得把這次的位置記錄下來), 然後加到 TMemo 中, 這個方法的好處是簡單, 而且寫一支可設定檔案名稱及 polling 間隔的程式就可以到處用, 參考一下吧. Jesse Chan
可以用WaitForSingleObject API來替代polling的動作喔! 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-31 10:02:43 IP:61.218.xxx.xxx 未訂閱
引言: Hi~~ 請教眾家高手,現在我需要在自己的程式中呼叫一個 DOS Mode 的應用程式 那我要如何把此程式的輸出訊息抓到我自己的視窗畫面??? 謝謝!!
以下是lcsboy版主寫的code給您參考(以徵得lcsboy版主的同意才貼上來的)
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        SECURITY_DESCRIPTOR sd;
        SECURITY_ATTRIBUTES sa;
        LPSECURITY_ATTRIBUTES lpsa = NULL;
        OSVERSIONINFO osv;
        osv.dwOSVersionInfoSize = sizeof(osv);
        GetVersionEx(&osv);            if (osv.dwPlatformId == VER_PLATFORM_WIN32_NT)
        {
          InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
          SetSecurityDescriptorDacl(&sd, true, NULL, false);
          sa.nLength = sizeof(SECURITY_ATTRIBUTES);
          sa.bInheritHandle = true;
          sa.lpSecurityDescriptor = &sd;
          lpsa = &sa;
        }
        HANDLE hReadPipe, hWritePipe;
        if (CreatePipe(&hReadPipe, &hWritePipe, lpsa, 0)==0)
        {
          ShowMessage("Create Pipe-Line error!");
          CloseHandle(hReadPipe);
          CloseHandle(hWritePipe);
          return;
        }
        STARTUPINFO si;
        ZeroMemory(&si, sizeof(si));    //沒加, 一定出槌
        si.cb=sizeof(si);
        si.dwFlags = STARTF_USESHOWWINDOW |STARTF_USESTDHANDLES;
        si.wShowWindow = SW_HIDE;
        si.hStdOutput = hWritePipe;
        si.hStdError = hWritePipe;
        PROCESS_INFORMATION pi;
        CreateProcess(0, "attrib",
              0,//security
              0,// security
              true,//inherits handles
              0,
              0, 0, &si, &pi);
        WaitForSingleObject(pi.hProcess,INFINITE);
        char aText[4000];
        DWORD dwSizeLow=GetFileSize(hReadPipe, NULL);
        if (dwSizeLow>0)
        {
          DWORD ByteRead;
          ReadFile(hReadPipe, aText, dwSizeLow, &ByteRead, NULL);
          Memo1->Lines->Add(String(aText));
        }
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
        CloseHandle(hReadPipe);
        CloseHandle(hWritePipe);
}
//--------------------------------------------------------------------------
聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
lgw
一般會員


發表:24
回覆:76
積分:22
註冊:2002-08-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-31 12:25:14 IP:61.222.xxx.xxx 未訂閱
感謝各位 之前我想用簡單方法處理 (用輸出導向到 file 中)!! 但是沒法輸出到 file 中?? 是不是因為我加了其他參數??? 我的使用方法 sc 是一個Compiler,後面要加參數!! sc -c test.c >out.txt 結果 out.txt 裡面是空的??? 怎辦??? 直接打 sc >out.txt (這樣可以!! 但不是我要的~~~) 所以不得已向各位求助!! 這該怎解???
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-31 13:03:11 IP:61.218.xxx.xxx 未訂閱
引言: 感謝各位 之前我想用簡單方法處理 (用輸出導向到 file 中)!! 但是沒法輸出到 file 中?? 是不是因為我加了其他參數??? 我的使用方法 sc 是一個Compiler,後面要加參數!! sc -c test.c >out.txt 結果 out.txt 裡面是空的??? 怎辦??? 直接打 sc >out.txt (這樣可以!! 但不是我要的~~~) 所以不得已向各位求助!! 這該怎解???
試試 ShellExecute() API看看! ShellExecute(NULL, "open", "sc -c test.c >out.txt", NULL, NULL, SW_SHOWNORMAL); 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
lgw
一般會員


發表:24
回覆:76
積分:22
註冊:2002-08-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-31 16:33:13 IP:61.222.xxx.xxx 未訂閱
還是不行!! 我發現很多程式都是這樣?? 用輸出導向無法將訊息輸出到檔案內??? 這些程式是怎麼寫的??? 難道都是直接丟螢幕???
Eigen
初階會員


發表:19
回覆:36
積分:26
註冊:2002-12-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-01-03 08:26:27 IP:61.218.xxx.xxx 未訂閱
引言: 感謝各位 之前我想用簡單方法處理 (用輸出導向到 file 中)!! 但是沒法輸出到 file 中?? 是不是因為我加了其他參數??? 我的使用方法 sc 是一個Compiler,後面要加參數!! sc -c test.c >out.txt 結果 out.txt 裡面是空的??? 怎辦??? 直接打 sc >out.txt (這樣可以!! 但不是我要的~~~) 所以不得已向各位求助!! 這該怎解???
我懷疑你的 sc 是不是一個批次檔?之類的程式 批次檔中的程式的標準輸出,是無法由 > 來重新導向到檔案之中 試試 edit 1.bat ,1.bat 內容是 dir/w 然後打 1.bat >2.txt,你會發現2.txt是沒有任何內容的 如果真是這樣 那在你的程式之中應該還有一個『正確』的執行檔才是 你可以看一下 sc 執行時的畫面,查看一下是那個檔案
lgw
一般會員


發表:24
回覆:76
積分:22
註冊:2002-08-05

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-01-03 18:42:01 IP:61.222.xxx.xxx 未訂閱
引言:
引言: 感謝各位 之前我想用簡單方法處理 (用輸出導向到 file 中)!! 但是沒法輸出到 file 中?? 是不是因為我加了其他參數??? 我的使用方法 sc 是一個Compiler,後面要加參數!! sc -c test.c >out.txt 結果 out.txt 裡面是空的??? 怎辦??? 直接打 sc >out.txt (這樣可以!! 但不是我要的~~~) 所以不得已向各位求助!! 這該怎解???
我懷疑你的 sc 是不是一個批次檔?之類的程式 批次檔中的程式的標準輸出,是無法由 > 來重新導向到檔案之中 試試 edit 1.bat ,1.bat 內容是 dir/w 然後打 1.bat >2.txt,你會發現2.txt是沒有任何內容的 如果真是這樣 那在你的程式之中應該還有一個『正確』的執行檔才是 你可以看一下 sc 執行時的畫面,查看一下是那個檔案
是 執行檔 (.EXE) !! (批次檔的現象,事先已知道!! 所以才直接下參數 ....) 我發現很多程式都是這樣?? 用輸出導向無法將訊息輸出到檔案內??? 這些程式是怎麼寫的??? 難道都是直接丟螢幕??? (INT 10 ???)
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-01-05 15:42:27 IP:210.58.xxx.xxx 未訂閱
自己先在command line下試試可否用導向的方式, 導到一個file!    如果連command line下試也不行! 那除非你有那個程式的source code    否則, 別再浪費時間下去了!    因為程式的寫法很多種, 如果他不是用printf or cout的方式的話    是滿有可能怎麼導就導不出來的....
Eigen
初階會員


發表:19
回覆:36
積分:26
註冊:2002-12-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-01-05 16:21:51 IP:61.217.xxx.xxx 未訂閱
引言: 是 執行檔 (.EXE) !! (批次檔的現象,事先已知道!! 所以才直接下參數 ....) 我發現很多程式都是這樣?? 用輸出導向無法將訊息輸出到檔案內??? 這些程式是怎麼寫的??? 難道都是直接丟螢幕??? (INT 10 ???)
打擾了 小弟視淺,能否請教一下,在我們一般的電腦 有那此command line 程式,是不能 導向檔案? 我從未見過這類的程式 and sc 是什麼程式的 compiler?
lgw
一般會員


發表:24
回覆:76
積分:22
註冊:2002-08-05

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-01-05 20:28:04 IP:61.222.xxx.xxx 未訂閱
引言:
引言: 是 執行檔 (.EXE) !! (批次檔的現象,事先已知道!! 所以才直接下參數 ....) 我發現很多程式都是這樣?? 用輸出導向無法將訊息輸出到檔案內??? 這些程式是怎麼寫的??? 難道都是直接丟螢幕??? (INT 10 ???)
打擾了 小弟視淺,能否請教一下,在我們一般的電腦 有那此command line 程式,是不能 導向檔案? 我從未見過這類的程式 and sc 是什麼程式的 compiler?
很多呦~~ 也許你是用 windows 系統,而少用 Dos mode 所以你不覺得~~ 我是開發單晶片韌體,每家 CPU 廠商都有不同的 Asm 或 C 的組譯器或編譯器!! 還有一些轉檔工具....(轉聲音.....),ICE UI .... 而且幾乎都是 Dos 程式,所以常常都遇到無法導向檔案!! 我都是用 more 指令,來暫停畫面,不然一堆訊息....... 但是要抓到自己的程式(for Win)中秀畫面就一直找不到方法...... sc 是 8051 的某一家 C compiler! (其實光 8051 就有 n 套 C compiler) 而我至少使用 5 種以上的 CPU type, 相關程式更是多...... 如果不能抓訊息,有時候就要人工處理.... 唉~~~ 頭痛!!
lgw
一般會員


發表:24
回覆:76
積分:22
註冊:2002-08-05

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-01-05 20:58:52 IP:61.222.xxx.xxx 未訂閱
引言: 自己先在command line下試試可否用導向的方式, 導到一個file! 如果連command line下試也不行! 那除非你有那個程式的source code 否則, 別再浪費時間下去了! 因為程式的寫法很多種, 如果他不是用printf or cout的方式的話 是滿有可能怎麼導就導不出來的.... < face="Verdana, Arial, Helvetica"> 可是我用 UltraEdit 呼叫該程式,UltraEdit 可以擷取到訊息??? 那表示應該有辦法處理,只是不知道怎作??? p.s 我是用 UltraEdit 裡面的 工具組態 ,只要打勾 擷取輸出, 就可以抓到該 Dos mode 程式的輸出!!
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-01-06 17:31:05 IP:211.23.xxx.xxx 未訂閱
引言: 可是我用 UltraEdit 呼叫該程式,UltraEdit 可以擷取到訊息??? 那表示應該有辦法處理,只是不知道怎作??? p.s 我是用 UltraEdit 裡面的 工具組態 ,只要打勾 擷取輸出, 就可以抓到該 Dos mode 程式的輸出!!
soga...那可能UltraEdit不是用pipe line的方式吧 Windows debugger(ACPI debugger) 還可以在在DOS的視窗下 一邊秀message一邊寫到file裡面去耶......這樣可以一邊debug 還可以從text file看到之前所有的結果 我的建議是: 1. 寫mail去問ultraedit的製作群 2. 直接抓UltraEdit的結果 ^^" 因為你的問題不是單獨pipeline就能解決的
Eigen
初階會員


發表:19
回覆:36
積分:26
註冊:2002-12-05

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-01-07 08:09:38 IP:61.218.xxx.xxx 未訂閱
引言: 可是我用 UltraEdit 呼叫該程式,UltraEdit 可以擷取到訊息??? 那表示應該有辦法處理,只是不知道怎作??? p.s 我是用 UltraEdit 裡面的 工具組態 ,只要打勾 擷取輸出, 就可以抓到該 Dos mode 程式的輸出!!
我要寫信去問 UE 的作者,以下是他的說法,so~~~~如果發問者的程式在 ue能夠被redirect 那在 MS-DOS Prompt 下應該也可以 Hello HXXXXXX, Thank you for your message. The Alternate Capture Method does just use > to redirect the output to a file. It does not however use >> which is append. Thanks, Ian [中略] ******************************************************** * Ian D. Mead * * IDM Computer Solutions, Inc. * * idm@idmcomp.com (primary), idm@iglou.com (secondary) * * http://www.idmcomp.com or http://www.ultraedit.com * * Tel: 513 779 8549, Fax 513 779 8643 * ********************************************************
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-01-07 09:56:06 IP:61.218.xxx.xxx 未訂閱
引言: 我要寫信去問 UE 的作者,以下是他的說法,so~~~~如果發問者的程式在 ue能夠被redirect<------使用CreatePiple方法 那在 MS-DOS Prompt 下應該也可以 Hello HXXXXXX, Thank you for your message. The Alternate Capture Method does just use > to redirect the output to a file. It does not however use >> which is append. Thanks, Ian [中略] ******************************************************** * Ian D. Mead * * IDM Computer Solutions, Inc. * * idm@idmcomp.com (primary), idm@iglou.com (secondary) * * http://www.idmcomp.com or http://www.ultraedit.com * * Tel: 513 779 8549, Fax 513 779 8643 * ********************************************************
所以照UE作者的說法,UE使用的方法應該是CreatePiple的方法,所以您如果Dos Mode下使用Batch的方法可行,那便可以使用CreatePiple得方法達成您的目標. 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
lgw
一般會員


發表:24
回覆:76
積分:22
註冊:2002-08-05

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-01-07 12:21:15 IP:61.222.xxx.xxx 未訂閱
引言:
引言: 我要寫信去問 UE 的作者,以下是他的說法,so~~~~如果發問者的程式在 ue能夠被redirect<------使用CreatePiple方法 那在 MS-DOS Prompt 下應該也可以 Hello HXXXXXX, Thank you for your message. The Alternate Capture Method does just use > to redirect the output to a file. It does not however use >> which is append. Thanks, Ian [中略] ******************************************************** * Ian D. Mead * * IDM Computer Solutions, Inc. * * idm@idmcomp.com (primary), idm@iglou.com (secondary) * * http://www.idmcomp.com or http://www.ultraedit.com * * Tel: 513 779 8549, Fax 513 779 8643 * ********************************************************
所以照UE作者的說法,UE使用的方法應該是CreatePiple的方法,所以您如果Dos Mode下使用Batch的方法可行,那便可以使用CreatePiple得方法達成您的目標. 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
在 DOS 下打 sc t.c >out.txt 這樣不行!! CreatePiple 是怎麼做??? 我發現 UE 是把 DOS mode 的畫面全部抓下來, 連 C:>sc t.c 這行也抓 這怎麼做??? 如果可以把 Dos mode 的畫面全抓下來,問題就解決了!! 根本不用理會它輸出導向行不行!!
Eigen
初階會員


發表:19
回覆:36
積分:26
註冊:2002-12-05

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-01-08 11:02:40 IP:61.218.xxx.xxx 未訂閱
目前我有找到一個解決方法,不過卡在一個關卡,我已經寫信去和 UE 的作者連絡,希望他能在下一版做出修正: 以下是我的作法: 即然 UE 能夠抓到 發問者的 8051 c compiler 的message,那何不使用 UE 來抓取 message 即可。 一、UE 支援 command line 啟動,也能附加參數執行巨集,這是範例 "C:\program files\ultraedit\UEdit32.exe" sample.c /i=c:\UEdit32.ini /M,e="c:\macro.mac/cc" sample.c 是 8051 的原始碼 c:\UEdit32.ini 是專用的設定檔,不要和平時使用的 設定檔混在一起。 c:\macro.mac 是設定好的巨集 cc 是要啟動的巨集名稱 /M,e 是執行完巨集之後結束 UE 二、重點是在 cc 這個巨集程式 InsertMode ColumnModeOff HexOff UnixReOff RunTool "Borland C Compiler2" <-這是寫在 advanced menu->Tool Configuration 之後的程式 Loop 1000 Find "Borland C 5.5.1" <-因為我沒有原發問者的 c compiler ,所以我用我常用 bc 5.5做範例,這是Compile 執行後的 message ,主要是用來判斷在那個視窗。 IfNotFound NextWindow EndIf IfFound SaveAs "c:\123.log" <-將Caption 下來的message 存檔 ExitLoop EndIf EndLoop 三、 設定好advanced menu->Tool Configuration ,並勾選了 Create New File,我們就可以直接用 Advanced User Tool 來 Compiler 檔案 並且會將message 顯示在一個新開的畫面。 四、卡在一個關卡: 上面的巨集,我們一步一步做都沒問題,但是存成巨集後呼叫則會沒有用,因寫 UE 的巨集不是 Step by Step, 換句話說:我還沒完成 compiler 這個動作,巨集便開始執行下一行了, 我已經有寫信去和 UE的作者反應,希望他加以修正這個問題 這是目前我認為最簡單的方法了。
Eigen
初階會員


發表:19
回覆:36
積分:26
註冊:2002-12-05

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-01-08 11:59:04 IP:61.218.xxx.xxx 未訂閱
再試另一種方法: 不保証可行: t1.bat:內容 dir 在 MS-DOS 模式下 t1.bat >log.txt 是存不進去的 改成 %comspec% /E:2048 /C t1.bat >log.txt 就能存進去了 試試將你的 指令改成 %comspec% /E:2048 /C sc.exe xxx.c >log.txt
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-01-08 17:07:46 IP:61.218.xxx.xxx 未訂閱
引言: 在 DOS 下打 sc t.c >out.txt 這樣不行!! CreatePiple 是怎麼做??? 我發現 UE 是把 DOS mode 的畫面全部抓下來, 連 C:>sc t.c 這行也抓 這怎麼做??? 如果可以把 Dos mode 的畫面全抓下來,問題就解決了!! 根本不用理會它輸出導向行不行!!
參考一下:

how to use ShellExecute and CreateProcess 範例

ShellExecute example code (shellex.zip, 19k) - how to use ShellExecute and CreateProcess 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
lgw
一般會員


發表:24
回覆:76
積分:22
註冊:2002-08-05

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-01-08 18:10:32 IP:61.222.xxx.xxx 未訂閱
Hi~~ 首先感謝各位熱心的幫我解答!! 我想這個問題我是無能為力了!! 我放棄了,這個專案只好交給別人作了!! 唉~~ 本身只會一點 bcb ,寫一些 AP 還可以!! 進階功能就....... 還是感謝大家!! 謝謝~~ to Eigen 指出 UE 可以,但是不能強迫每個 User 都灌一套,所以.... 另外,%comspec% /E:2048 /C sc.exe xxx.c >log.txt 方法還是不行!! Thanks!
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#23 引用回覆 回覆 發表時間:2003-01-08 19:26:26 IP:61.218.xxx.xxx 未訂閱
引言: Hi~~ 首先感謝各位熱心的幫我解答!! 我想這個問題我是無能為力了!! 我放棄了,這個專案只好交給別人作了!! 唉~~ 本身只會一點 bcb ,寫一些 AP 還可以!! 進階功能就....... 還是感謝大家!! 謝謝~~ to Eigen 指出 UE 可以,但是不能強迫每個 User 都灌一套,所以.... 另外,%comspec% /E:2048 /C sc.exe xxx.c >log.txt 方法還是不行!! Thanks!
記得來結案一下喔! 聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
arcsin
一般會員


發表:4
回覆:3
積分:1
註冊:2003-03-06

發送簡訊給我
#24 引用回覆 回覆 發表時間:2003-03-09 15:01:03 IP:61.149.xxx.xxx 未訂閱
引言: 如果不想那複雜的話, 我提供一個小偏方, 先把 console 程式的輸出重導到一個檔案去, console.exe >> output.txt, 然後定時去 polling 它有沒有變化 (間隔可依 console 程式 IO 的頻繁度加減), 如果有的話就去讀取檔案多出來的部份(記得把這次的位置記錄下來), 然後加到 TMemo 中, 這個方法的好處是簡單, 而且寫一支可設定檔案名稱及 polling 間隔的程式就可以到處用, 參考一下吧. Jesse Chan
我覺得這種方法在實時性上要強一些。 用WaitForSingleObject(pi.hProcess,INFINITE);非要等到進程執行完畢才能得到結果。 但是polling是怎麽實現的呢?不知道Jesse Chan大俠能不能提供一個例程。
chihyuchen
一般會員


發表:0
回覆:4
積分:0
註冊:2003-05-09

發送簡訊給我
#25 引用回覆 回覆 發表時間:2005-09-28 11:28:14 IP:61.222.xxx.xxx 未訂閱
各位大大, 因為剛好也是碰到這樣的問題,所以上來網站找到這篇文章. 公司的前輩教我下面這個方法就可以了. 希望對lgw有點幫助,不過我不清楚有什麼缺點要注意的. ca87path= "E:\\assembler\\New4BitTools\\ca87.exe"; comline = ca87path " -l " strAsmPath " >" ErrMessFile ; int value; value= system(comline);
yhchu
一般會員


發表:2
回覆:70
積分:24
註冊:2004-01-28

發送簡訊給我
#26 引用回覆 回覆 發表時間:2005-09-28 13:30:25 IP:220.130.xxx.xxx 未訂閱
不能 pipe 到輸出檔案會不會是原來的輸出就不是輸出到 stdout 啊?例如說一些 error message 通常是輸出到 stderr,用 > 當然不行啊,這時要換成 2> 才行。 如果程式輸出是用一些 DOS mode 的 console API,而非輸出到 stdout/stderr 的方式,那可能就真的不行了。
chihyuchen
一般會員


發表:0
回覆:4
積分:0
註冊:2003-05-09

發送簡訊給我
#27 引用回覆 回覆 發表時間:2005-09-28 13:51:43 IP:210.243.xxx.xxx 未訂閱
感謝yhchu的指點 不過我用了還是不行耶! ca87path= "E:\\assembler\\New4BitTools\\ca87.exe"; comline = " -l " strAsmPath " 2>" ErrMessFile ; hProg=ShellExecute(NULL, "open", ca87path, comline, NULL, SW_SHOW); 謝謝!
系統時間:2024-03-28 16:58:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!