PDA

View Full Version : تبديل Handel پنجره به pid



MSHService
شنبه 22 فروردین 1388, 11:37 صبح
سلام
ميخوام وقتي با موس روي يه بنجره كليك ميكنم برنامه pid اون پنجره رو بهم بده!
با كد هاي زير ليست تمام پنجره ها رو بدست ميارم اما مي خوام بدونم كدوم پنجره ها مربوط به Explorer هستند و كدوما مربوط به پروسز هاي ديگه!


//----------------------------------------------------------------------
function EnumWindowsProc1 (Wnd: HWND; List: TStrings): BOOL; stdcall;
var
caption: array [0..256] of Char;
begin
Result := True;
if GetWindowText (Wnd, Caption, SizeOf(Caption)-1) <> 0 then
begin
if IsWindowVisible(wnd) then
begin
List.AddObject( caption, TObject( Wnd ));
end;
end;
end;

function EnumWindowsProc2 (wnd: HWND; List: TStrings) : boolean ;stdcall;
var Caption: array[0..256] of Char;
begin
if GetWindowText (wnd, Caption, SizeOf(Caption)-1) <> 0 then
begin
if not IsWindowVisible(wnd) then
List.AddObject( caption, TObject( Wnd ));
end;
Result :=True;
end;
//---------------------------------------
Function TForm1.GetProcessList(Visible:Boolean):TStringList ;
begin
Result:=TStringList.Create;
if not Visible then
EnumWindows(@EnumWindowsProc1, Integer(result))
else
EnumWindows(@EnumWindowsProc2, Integer(result));
end;
//****************************
با تشكر .

vcldeveloper
شنبه 22 فروردین 1388, 16:46 عصر
تابع GetWindowThreadProcessId

FiACKER
شنبه 22 فروردین 1388, 16:49 عصر
درد و دل :
حالا جالبه كه من بر عكسه اينو مي خوام !!
مثله اينكه كسي نيست به دادمون برسه :لبخند:
ولي بدست اوردن pid از هندل كاري نداره...
بفرماييين ... بفرمايين ... بفرمايين....به به!


function Hwnd_To_Pid(WhatHandle : HWND):Integer;
var pid : dword ;
begin
GetWindowThreadProcessId(WhatHandle, pid);
result := pid;
end;