如何启用控件 属性?

How to get enabled property of a control?

在 Delphi 中,可以通过 windows api.[=13= 获取在系统范围内单击的任何控件的进程名称和 class 名称]

进程名称:

GetWindowThreadProcessId(Hwnd, ProcessId) 

通过进程ID可以得到进程名

class 姓名:

SetLength(ClassName, 255);
SetLength(ClassName, GetClassName(Hwnd, pchar(ClassName), 255));

是否有类似于上述方法的简单方法来启用控件属性? (不使用 UIAutomation)

如果您有控件的 window 句柄,那么 IsWindowEnabled 函数会告诉您它是否已启用。

请记住,这是在 API 级别作用于 window, 而不是 Delphi VCL 级别。在 Delphi 中,可以有没有 window 句柄的控件(从 TGraphicControl 派生的任何控件,包括 TLabelTSpeedButton),因此 IsWindowEnabled 显然无法告诉您有关这些控件的任何信息。

Delphi 不提供任何工具来查询来自其他进程的任意 Delphi 控件的信息。如果您需要类似的东西,那么您必须安排外部进程响应您选择的命令。也就是说,您将需要控制这两个程序,以便您可以在它们中放入代码以进行协作。

如果 GetWindowThreadProcessIdGetClassName 已经告诉你你想要的信息,那么 IsWindowEnabled 就可以正常工作,因为它们对 Delphi VCL 都有相同的限制控件。