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;
В итоге пиды окон несколько больше нежели пиды процессов которым принадлежат эти окна.
Народ помогите разобраться с проблемой.
Если несложно скажите что я не так делаю