【发布时间】:2012-06-02 17:48:08
【问题描述】:
早安,
我有来自不同非 VLC 对象(例如(SysListView32、ToolbarWin32)的不同句柄,我想知道是否有任何方法可以转换这些句柄(HWND)。
例如,我得到了开始按钮(位于桌面左下角)的句柄。然后我找到了类名“Button”。
我想投射他并从他那里检索标题属性“开始”。例如:
type
TButtonStartMenuFictiveClass = class(TButton)
public
Text: string;
end;
if classname = 'button' then
begin
ShowMessage((objecthandle as TButtonStartMenuFictiveClass).Text);
end;
我希望挂钩所有对象并显示它们的文本。就像 Windows 中的叙述者。
【问题讨论】:
-
我不太明白微软的讲述者是谁写的
-
您不能将 HWND 转换为 Delphi 类,因为您不能将自行车转换为法拉利,因为它们都有轮胎。类型转换不能将某些东西转换成绝对不是的东西;类型转换不能执行魔术。您也不能将 Delphi
TEdit(这是一个HWND)的句柄类型转换为TTreeView(也有一个HWND句柄)并访问节点,因为TEdit不是TTreeView. -
搜索 Microsoft Active Accessibility (MSAA) 和/或 UIAutomation。准备好发现这些框架在其他语言中更易于使用
-
@Ken,不过最好把自行车打成法拉利 :-)
-
@TLama,特别是如果您可以不止一次这样做。你可以变得相当富有——我想这将是一个能够低买高卖的真实案例。 ;-)
标签: windows delphi casting handle