Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
Delphi 7 Personal
|
Re: Statusbar auslesen
1. Mai 2008, 23:21
Hi,
ich habs jetzt mal anders versucht ... doch irgendwie hab ich glaub ich noch irgendwo den wurm drin.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
const
BufferSize = 1024;
var
ProcessID: DWORD;
Proc,BytesR, BytesW: Cardinal;
MemOwn, MemFor : Pointer;
length:integer;
sb:THandle;
begin
//StatusbarHandle ermitteln
sb := FindWindow('wxWindowClassNR','VLC media player');
sb := FindWindowEx(sb, 0, 'msctls_statusbar32', nil);
//Done
//ProcessID + ProcessHandle ermitteln
GetWindowThreadProcessId(sb, @ProcessId);
Proc := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
//Done
//Speicher Reservieren
MemOwn := VirtualAlloc(nil, BufferSize, MEM_COMMIT, PAGE_READWRITE);
MemFor := VirtualAllocEx(Proc, nil, BufferSize, MEM_COMMIT, PAGE_READWRITE);
//Done
//In Fremdanwendung schreiben und kopieren
WriteProcessMemory(Proc, MemFor, MemOwn, BufferSize, BytesW);
SendMessage(sb,SB_GETTEXT, 0, LPARAM(MemFor));
length:= SendMessage(sb,SB_GETTEXTLENGTH,0,0);
ReadProcessMemory(Proc, MemFor, MemOwn, BufferSize, BytesR);
//Done
//Daten auslesen
Label4.Caption := PChar(Cardinal(MemOwn) + length + 1);
//Done
//Reservierten Speicher wieder freigeben
VirtualFreeEx(Proc, MemFor, 0, MEM_RELEASE);
VirtualFree(MemOwn, 0, MEM_RELEASE);
CloseHandle(Proc);
//Done
end;
Wo liegt mein denkfehler?
MfG - Ghost007
Christian Es gibt möglich Dinge und unmöglich Dinge.
Für unmögliche braucht man lediglich etwas länger.
|