To jak ja nieznająć wczęśniej tej funkcji napisał bym poniższy kod, który proces WinAmpa dumpuje do pliku?
WSzystko znalazłem dzięki googlom, jak na polskich stronach jest dla Ciebie za mało informacji to szukasz do
skutku przykładów na zagranicznych. Oczywiście w Twoim przypadku nie musisz zapisywać Streamu na dysk,
tylko później przeszukać go pod kątem zawartości nagłowka pliku jpg albo odpowiedniego ciągu bajtów. I od
znalesionej pozycji zapisać do jakiejś końcowej cały plik. Tylko właśnie trzeba mieć jakieś pojęcia o formacie
pliku jpg, ja je nie za bardzo mam, a trzeba wiedzieć od ktorego i do ktorego miejsca "wypruć" ten plik jpg.
var
I : integer;
H : THandle;
WindowH : HWND;
BytesRead : Cardinal;
MemStr : TMemoryStream;
hProcess, ProcessId : THandle;
Temp : array[1..4096] of Byte;
const
WindowClass = 'Winamp v1.x';
begin
WindowH := FindWindow(WindowClass, nil);
if WindowH = 0 then
begin
ShowMEssage('Nie uruchomiono procesu o klasie okna: ' + WindowClass);
Exit;
end;
GetWindowThreadProcessId(WindowH, @ProcessId);
hProcess := OpenProcess(PROCESS_VM_READ, False, ProcessId);
MemStr := TMemoryStream.Create;
I := 0;
repeat
ReadProcessMemory(hProcess, Ptr($400000 + I), @Temp, SizeOf(Temp), BytesRead);
MemStr.Write(Temp, SizeOf(Temp));
I := I + BytesRead;
until BytesRead = 0;
CloseHandle(hProcess);
MemStr.SaveToFile('D:\memstr.bin');
MemStr.Free;
end;