如何抓取dos視窗上的文字 |
缺席
|
cmj1498
一般會員 發表:5 回覆:8 積分:2 註冊:2007-04-20 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
給你一個方向
GetConsoleScreenBufferInfo 查一查該相關 API ,你會有個譜 1.先寫下你要的工作 2.找出該方面 API 提供的功能 3,寫出詳細的運做步驟 4.將可以用的 API 放到該位置上,此時不必填好參數,先佔位,再來解 5.再重頭一步一步,將 API 所需參數、資料完成,一行一行完成 6.最後,有問題,再來問 依照這個過程作,會比直接告訴你,你學到的多 如果你只是要交差了事,那抱歉,我不幫寫你的工作,你又沒分我錢 而要是有時間多的人願意幫你,那我也很高興,一開始又有免費的程式可以用 不過我個人比較喜歡你自己先寫,然後大家來討論,討論過程中,自然大家會貼出恨多不同版本的程式碼 最後得出一個好的方案與程式碼 很討厭,我勞你獲 如果我是壞老師,我一定給這種學生 100 分,讓他自滿,又沒學到東西,將來大跌一跤 但如果我是好老師,我能做的只有一件事,把他當掉,好好培養基礎 |
xpfox
一般會員 發表:0 回覆:1 積分:0 註冊:2005-11-20 發送簡訊給我 |
<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>
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |