Código:
function FindGameEx(nModules: array of string; var pName: string): Integer; var pe32: TProcessEntry32; me32: ModuleEntry32; hSnap: THandle; hSnap_m: THandle; temp_m: string; begin Result := 0; pe32.dwSize:=SizeOf(pe32); hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if Process32First(hSnap,pe32) then repeat me32.dwSize := SizeOf(me32); hSnap_m := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe32.th32ProcessID); if Module32First(hSnap_m, me32) then repeat for temp_m in nModules do begin if Pos(temp_m, me32.szModule) > 0 then begin begin pName := pe32.szExeFile; Result := pe32.th32ProcessID; Exit; end; end; end; until not (Module32Next(hSnap_m, me32)); CloseHandle(hSnap_m); until not(Process32Next(hSnap,pe32)); CloseHandle(hSnap); end;
Código:
procedure TForm1.sButton10Click(Sender: TObject); var name: string; begin try begin pid := FindGameEx(['FlashPlayerPlugin'], name); //Flashplayer chrome etc// Application.ProcessMessages; GHandle := OpenProcess(PROCESS_ALL_ACCESS, False, pid); IsOpenedProcces; ConnectByHandle(pid); if pid <> 0 then begin sButton10.Caption := 'FV2:' + IntToStr(pid) + '-' + name;
Eu quero fazer autoatach no processo flahplayer plugin do firefox, até tudo bem ele faz ao clicar no botão, mas, Ele faz no processo com menos uso de memoria e o flashplayer sempre tem dois processos de mesmo nome abertos um que está o jogo aberto com mais memoria e um de mesmo nome ,mas com pouco uso. Eu quero fazer o atach sempre no processo que está usando mais memoria que é o que eu quero. Como eu posso fazer isso funcionar? Sem precisar abrir em uma list box e selecionar manual o processo? Muito obrigado.
Comment