上次介绍了如何在delphi中使用发送消息的方式控制外部程序,一开始我在自己的项目中也确实是这么做的,但是后来遇到了这么一个问题:
首先,listview的窗口handle我当然是有了,然后取得listview中的item个数,我发现有这么个函数可以使用:listview_getitemcount(),它在commctrl模块中有定义,其实只是对sendmessage的一个封装而已,同样的,该模块中还有另一个函数:listview_getitemtext(),使用它可以取得指定行处的item文字. 【程序编程相关:Delphi操作Wrod的几个知识点 】
我所调用的程序,会在执行一段处理过程中,将结果显示到一个listview中,那么为了知道我发出的命令,到底被那个程序执行后结果如何,我就必须监视listview中的内容,察看最后出现的结果文字是什么,从而知道到底是成功还是失败了.那么,我的想法是,不断的查询listview中items的个数,并且当个数大于0的时候,取出最后一条item(就是最后加入的结果描述),然后取得其中的文字,通过判断字符串,就可以知道结果了. 【推荐阅读:扫雷外挂的设计与实现(三) 】
要说明为什么,首先让我们来看一下listview_getitemtext()函数到底做了什么(另外还有listview_getitemtexta与listview_getitemtextw这两个函数,暂时不用去理它们): 【扩展信息:扫雷外挂的设计与实现(二) 】
那么只要在我的程序中使用这两个函数就可以了咯?很抱歉,我用实际经历告诉你:这样将会导致外部程序的崩溃!!
function listview_getitemtext(hwndlv: hwnd; i, isubitem: integer;
psztext: pchar; cchtextmax: integer): integer; ... 下一页