線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2267
推到 Plurk!
推到 Facebook!

如何抓取dos視窗上的文字

缺席
cmj1498
一般會員


發表:5
回覆:8
積分:2
註冊:2007-04-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-20 08:36:12 IP:60.248.xxx.xxx 訂閱
在windows開啟dos視窗,
如何抓整個視窗內的文字
望高手解惑
編輯記錄
dllee 重新編輯於 2007-04-21 19:02:57, 註解 修改文章分類由 無 -> 問題, 提問時, 請記得選擇 [問題] 分類, 才能把分數給辛苦答題的會員, 謝謝您的配合‧‧
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-20 15:54:30 IP:61.64.xxx.xxx 訂閱
給你一個方向

GetConsoleScreenBufferInfo

查一查該相關 API ,你會有個譜

1.先寫下你要的工作
2.找出該方面 API 提供的功能
3,寫出詳細的運做步驟
4.將可以用的 API 放到該位置上,此時不必填好參數,先佔位,再來解
5.再重頭一步一步,將 API 所需參數、資料完成,一行一行完成
6.最後,有問題,再來問

依照這個過程作,會比直接告訴你,你學到的多
如果你只是要交差了事,那抱歉,我不幫寫你的工作,你又沒分我錢
而要是有時間多的人願意幫你,那我也很高興,一開始又有免費的程式可以用

不過我個人比較喜歡你自己先寫,然後大家來討論,討論過程中,自然大家會貼出恨多不同版本的程式碼
最後得出一個好的方案與程式碼

很討厭,我勞你獲
如果我是壞老師,我一定給這種學生 100 分,讓他自滿,又沒學到東西,將來大跌一跤
但如果我是好老師,我能做的只有一件事,把他當掉,好好培養基礎
xpfox
一般會員


發表:0
回覆:1
積分:0
註冊:2005-11-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-21 23:13:46 IP:58.53.xxx.xxx 未訂閱
<textarea class="delphi" rows="10" cols="60" name="code"> //RunDosInMemo('ping 127.0.0.1',Memo1); procedure RunDosInMemo(Que:String;EnMemo:TMemo); const CUANTOBUFFER = 2000; var Seguridades : TSecurityAttributes; PaLeer,PaEscribir : THandle; start : TStartUpInfo; ProcessInfo : TProcessInformation; Buffer : Pchar; BytesRead : DWord; CuandoSale : DWord; begin with Seguridades do begin nlength := SizeOf(TSecurityAttributes); binherithandle := true; lpsecuritydescriptor := nil; end; {Creamos el pipe...} if Createpipe (PaLeer, PaEscribir, @Seguridades, 0) then begin Buffer := AllocMem(CUANTOBUFFER 1); FillChar(Start,Sizeof(Start),#0); start.cb := SizeOf(start); start.hStdOutput := PaEscribir; start.hStdInput := PaLeer; start.dwFlags := STARTF_USESTDHANDLES STARTF_USESHOWWINDOW; start.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(Que), @Seguridades, @Seguridades, true, NORMAL_PRIORITY_CLASS, nil, nil, start, ProcessInfo) then begin {Espera a que termine la ejecucion} repeat CuandoSale := WaitForSingleObject( ProcessInfo.hProcess,100); Application.ProcessMessages; until (CuandoSale <> WAIT_TIMEOUT); {Leemos la Pipe} repeat BytesRead := 0; {Llenamos un troncho de la pipe, igual a nuestro buffer} ReadFile(PaLeer,Buffer[0],CUANTOBUFFER,BytesRead,nil); {La convertimos en una string terminada en cero} Buffer[BytesRead]:= #0; {Convertimos caracteres DOS a ANSI} OemToAnsi(Buffer,Buffer); EnMemo.Text := EnMemo.text String(Buffer); until (BytesRead < CUANTOBUFFER); end; FreeMem(Buffer); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); CloseHandle(PaLeer); CloseHandle(PaEscribir); end; end;</textarea>
系統時間:2024-03-29 3:34:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!