我可以只使用句柄检查第三方应用程序中的数据吗?

时间:2015-06-05 17:43:36

标签: delphi

我有第三方应用。我有一个TMainDlg的句柄,以及它的孩子TListBox。如何选择项目2?现在我(并不奇怪)在地址"进入" EAccessViolation错误。

任何提示,技巧或建议?

add_filter('loop_shop_columns', 'loop_columns');
if (!function_exists('loop_columns')) {
    function loop_columns() {
        return 2; // 2 products per row
    }
}

显示消息发生错误。

1 个答案:

答案 0 :(得分:2)

h2是一个窗口句柄,用于另一个进程中的窗口。您可以将其转换为TListBox,但这不会使h2实际上成为列表框。因此运行时错误。基本上,你通过声称h2不是它来欺骗编译器。

您需要使用一些自动化。您可以发送其他窗口句柄列表框消息并以这种方式检索数据。请注意列表框窗口处于不同的进程中。因此,您必须注意所有使用的消息都会封送任何数据。

在这里,您要查找列表中有多少项。这样做:

Count := SendMessage(h2, LB_GETCOUNT, 0, 0);

执行一些错误检查是明智的。您如何知道h2实际上不是0

也许更好的方法是使用平台自动化API,UI Automation。