VC++静态文本控件可以有哪些API函数更新显示的文本
给我们老板做一个小工具,他不喜欢鼠标点来点去,想用快捷键,将大智慧的某个股票用快捷键添加到自选股里。现已正确获取那个提示股票代号的小窗口(如图片所示)的句柄。我是注入DL...
给我们老板做一个小工具,他不喜欢鼠标点来点去,想用快捷键,将大智慧的某个股票用快捷键添加到自选股里。现已正确获取那个提示股票代号的小窗口(如图片所示)的句柄。
我是注入DLL到大智慧进程里,用DLL拦截一些API函数实现获取数据的。
现在的问题是 通过拦截大智慧进程的TextOutA函数,没有获取到这个“600037”这串文本,拦截的TextOutA可以显示其他拦截到的字符串。
所以想问一下,在VC++里,静态文本控件(label)可以有哪些API函数更新显示它的文本?
SendMessageA(目测未拦截测试过)?还有吗?能详细的列举出来最好不过,我可以慢慢拦截一个一个测试。
PS:那个黄色框框的小窗口,根据拦截ShowWindow这个API获取到的信息得知,这个窗口的句柄在同一PID中每次都是一样的,也就是说不是每次显示前CreateWIndow或CreateWindowEx,所以只可能是用什么方法动态更新了label控件的显示内容,只是不知道对应到最后一步,是哪一个API去完成最后的更新的。
EnumChildWindows枚举这个小窗口的子窗口,没有子窗口了,真心不知道后面该怎么弄了,也有可能是枚举代码写错了。代码太乱 就不贴了。 展开
我是注入DLL到大智慧进程里,用DLL拦截一些API函数实现获取数据的。
现在的问题是 通过拦截大智慧进程的TextOutA函数,没有获取到这个“600037”这串文本,拦截的TextOutA可以显示其他拦截到的字符串。
所以想问一下,在VC++里,静态文本控件(label)可以有哪些API函数更新显示它的文本?
SendMessageA(目测未拦截测试过)?还有吗?能详细的列举出来最好不过,我可以慢慢拦截一个一个测试。
PS:那个黄色框框的小窗口,根据拦截ShowWindow这个API获取到的信息得知,这个窗口的句柄在同一PID中每次都是一样的,也就是说不是每次显示前CreateWIndow或CreateWindowEx,所以只可能是用什么方法动态更新了label控件的显示内容,只是不知道对应到最后一步,是哪一个API去完成最后的更新的。
EnumChildWindows枚举这个小窗口的子窗口,没有子窗口了,真心不知道后面该怎么弄了,也有可能是枚举代码写错了。代码太乱 就不贴了。 展开
3个回答
展开全部
手头没有大智慧软件,不过印象里面,这个应该是ToolTip,一种特殊的静态框,这种窗口的标题和文字是同一的,很可能对窗口Title和Name的设置就是文本显示,因此除了Text,还可以尝试Title和Name。
追问
Small_SS_TipWindow是这个小窗口的窗口类型,看上去,的确是ToolTip窗口,句柄已经拿到了,确定句柄正确,测试过GetWindowText没拿到文本.
谢谢,可惜只能选一个为满意回答,3楼更能满足我的需要,很感谢你的热心。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SetWindowTextA(W)
SetDlgItemTextA(W)
//把A改成W就是说是Unicode的,可以都试试
SendMessage
//当参数为WM_SetText(0xC)时,也可以,建议用反汇编工具下条件断点调试
SetDlgItemTextA(W)
//把A改成W就是说是Unicode的,可以都试试
SendMessage
//当参数为WM_SetText(0xC)时,也可以,建议用反汇编工具下条件断点调试
追问
我是自学编程的,没有学习过如何反汇编,目前做过的事情都是做一些简单的小程序。
记得有一个DrawText可以把文本绘到指定的DC矩形中,OutText拦截过了,现在就是想知道还有没有其他的API可以更新LABEL控件的文本,你说的几个API,我试着拦截看看。
这个问题暂时就这样吧,估计也没几个人像我这么无聊为了一串文本干这么蛋疼的事情了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
更新?InvalidateRect函数,控件的HWND送进去,RECT用NULL,最后一个参数TRUE也没关系,然后它应该会重绘文字。
或者你不要拦截,直接对着这个控件发送WM_GETTEXT来获取文本……通过TextOutA觉得还是哪里不太对头。能WM_GETTEXT优先WM_GETTEXT吧
或者你不要拦截,直接对着这个控件发送WM_GETTEXT来获取文本……通过TextOutA觉得还是哪里不太对头。能WM_GETTEXT优先WM_GETTEXT吧
追问
目测SendMessage发送WM_GETTEXT不行,应主直接在此进程里(注入的DLL)调用GetWindowText没有取到这个窗口的文本。
追答
GetWindowText好像要和创建窗口是同一线程的线程内调用才行……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询