【发布时间】:2012-01-13 11:44:03
【问题描述】:
我有一个第三方应用程序,我需要读取一些控件的值才能在我自己用 Delphi 开发的应用程序中使用它们。另一个应用程序在 Windows 上运行,显然是使用 SWT 框架用 Java 编写的。不幸的是,每次启动第三方应用程序时,我需要读取值的控件的(控件)ID 都不同。每次创建应用程序的 UI 时,Java/SWT 框架似乎都会生成新的窗口/控件 ID。我可以使用任何其他标识符吗?
【问题讨论】:
我有一个第三方应用程序,我需要读取一些控件的值才能在我自己用 Delphi 开发的应用程序中使用它们。另一个应用程序在 Windows 上运行,显然是使用 SWT 框架用 Java 编写的。不幸的是,每次启动第三方应用程序时,我需要读取值的控件的(控件)ID 都不同。每次创建应用程序的 UI 时,Java/SWT 框架似乎都会生成新的窗口/控件 ID。我可以使用任何其他标识符吗?
【问题讨论】:
您可以使用 Windows 属性来获取持久的 ID。
属性的名称是 SWT_OBJECT_INDEX:
nProp := GetProp(Handle, 'SWT_OBJECT_INDEX');
GetProp() 的返回值是窗口的ID。 Handle 是您控制的句柄。但是,您需要遍历所有子窗口才能找到具有您要查找的 ID 的控件。请注意,如果应用程序更新,这些 ID 可能会发生变化。
【讨论】: