• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Работа с хэндлами

  • Автор темы Автор темы Spoiler
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
S

Spoiler

Посетители форума обращаюсь к вам.
Последние три дня убил на работу с хэндлами. Застопорилась вся работа.

Просьба разясните почему пиды окон и пиды текущих процессов не совпадают. Надежда только на вас.

В ниже приведенном коде ищу указатель окон и через него определяю пид окна. Выполняю перебор всех окон.

Извлекаю пид окна
function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall;
Var
    mProcessID,mThreadID : Dword;
    Nm:Array[0..255] of Char;
    Cs: Array[0..255] of Char;
Begin
    GetWindowText(Wd,Nm,255);
    GetClassName(Wd,Cs,255);
    mThreadID:= GetWindowThreadProcessId(Wd,                                            @mProcessID);
    EnumProc := TRUE;
end;

procedure GetAllWindow;
Var
    Wd : HWnd;
    mProcessID,mThreadID : Dword;
begin
    form1.L5.Items.Clear;
    EnumWindows (@EnumProc, 0);
    Wd:=FindWindow( 0, 0 );
    While ( Wd <> 0 ) do
        Wd:=GetNextWindow(Wd,GW_HWNDNEXT);
end;

Ивлекаю пид процесса
procedure TForm1.Button2Click(Sender: TObject);
  var
      ContinueLoop    : BOOL;
      FSnapshotHandle : THandle;
      FProcessEntry32 : TProcessEntry32;
      HProgramm_ID    : Cardinal;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

  while integer(ContinueLoop) <> 0 do
  begin
      HProgramm_ID := FProcessEntry32.th32ProcessID;
      form1.L.Items.Add( ExtractFileName( FProcessEntry32.szExeFile ) );
      form1.L1.Items.Add( inttostr( HProgramm_ID ) );


ContinueLoop := Process32Next( FSnapshotHandle, FProcessEntry32 );
    end;
end;

В итоге пиды окон несколько больше нежели пиды процессов которым принадлежат эти окна.

Народ помогите разобраться с проблемой.
Если несложно скажите что я не так делаю
 
Если несложно. Проясните мою проблему
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab