如何启用控件 属性?
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
派生的任何控件,包括 TLabel
和 TSpeedButton
),因此 IsWindowEnabled
显然无法告诉您有关这些控件的任何信息。
Delphi 不提供任何工具来查询来自其他进程的任意 Delphi 控件的信息。如果您需要类似的东西,那么您必须安排外部进程响应您选择的命令。也就是说,您将需要控制这两个程序,以便您可以在它们中放入代码以进行协作。
如果 GetWindowThreadProcessId
和 GetClassName
已经告诉你你想要的信息,那么 IsWindowEnabled
就可以正常工作,因为它们对 Delphi VCL 都有相同的限制控件。
在 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
派生的任何控件,包括 TLabel
和 TSpeedButton
),因此 IsWindowEnabled
显然无法告诉您有关这些控件的任何信息。
Delphi 不提供任何工具来查询来自其他进程的任意 Delphi 控件的信息。如果您需要类似的东西,那么您必须安排外部进程响应您选择的命令。也就是说,您将需要控制这两个程序,以便您可以在它们中放入代码以进行协作。
如果 GetWindowThreadProcessId
和 GetClassName
已经告诉你你想要的信息,那么 IsWindowEnabled
就可以正常工作,因为它们对 Delphi VCL 都有相同的限制控件。