1,183
社区成员
发帖
与我相关
我的任务
分享
var HWND:THandle;
begin
HWND := GetParent(ListView1.Handle);
ShowMessage(IntToStr(HWND));
end;
二、这段代码是获取ListView1的窗体的句柄
var HWND: THandle;
begin
HWND := GetParent(ListViewfilelocal.Handle);
while GetParent(HWND)<>0 do // 找到最高的父控件
HWND:=GetParent(HWND);
ShowMessage(IntToStr(HWND));
end;
三、这段代码是获取ListView1的窗体的实体(名称)
function GetInstanceFromhWnd(const hWnd: Cardinal): TWinControl;
type
PObjectInstance = ^TObjectInstance;
TObjectInstance = packed record
Code: Byte; // 短跳转 $E8
Offset: Integer; // CalcJmpOffset(Instance, @Block^.Code);
Next: PObjectInstance; // MainWndProc 地址 }
Self: Pointer; // 控件对象地址 }
end;
var
wc: PObjectInstance;
begin
Result := nil;
wc := Pointer(GetWindowLong(hWnd, GWL_WNDPROC));
if wc <> nil then
Result := wc.Self;
end;
procedure TMain.ListView1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
HWND: THandle;
begin
HWND := GetParent(ListViewfilelocal.Handle);
while GetParent(HWND)<>0 do // 找到最高的父控件
HWND:=GetParent(HWND);
ShowMessage(GetInstanceFromhWnd(HWND).Name);
end;
应该很明白了。HWND ParentHandle;
ParentHandle := GetParent(hp);