TC官方合作论坛

标题: 下面的这断win32的命令怎么转tc语言呢,知道的老师帮我下。 [打印本页]

作者: dongshrine    时间: 2015-11-13 23:02
标题: 下面的这断win32的命令怎么转tc语言呢,知道的老师帮我下。
(我想做的就是获取其他程序的控件文本,比如获取编辑框,文本框的文本。如下,找了程序,但是自己翻译不过来)


Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long '声明发消息API

TracePrint getText(69198)

Function GetText(Arg_hwnd)
Dim S_TextLen
S_TextLen = SendMessage(Arg_hwnd, &HE, 0, 0) '发消息获取EDIT字符长度
S_strText = Space(S_TextLen) '以空格填充变量
Call SendMessage(Arg_hwnd, &HD, S_TextLen+1, S_strText) '发消息获取EDIT的内容
GetText = S_strText
End Function

作者: somyyy    时间: 2015-11-14 01:30
dllcall研究一下就明白了
作者: 如此美丽。    时间: 2015-11-14 02:30
..

  1. function GetText(Arg_hwnd)

  2.         var WM_GETTEXTLENGTH = #E, WM_GETTEXT = #D
  3.    
  4. //    var Arg_hwnd

  5.         var s_len

  6.         s_len = dllcall("user32.dll", "long", "SendMessageW", "long", Arg_hwnd, "long", WM_GETTEXTLENGTH, "long", 0, "long", 0)
  7.        
  8.     traceprint("len: " & s_len)
  9.    
  10.     var s_tmp = ""
  11.    
  12.         dllcall("user32.dll", "long", "SendMessageW", "long", Arg_hwnd, "long", WM_GETTEXT, "long", s_len + 1, "long", varaddress(s_tmp))

  13.         traceprint("str: " & s_tmp)
  14.    
  15.     return s_tmp
  16. end
复制代码



.. TC 现在基本废了   没人会回答你的问题
作者: sam7894604    时间: 2015-11-14 05:59
其实你用TC内建的命令不就可以了么?

  1. 窗口获取标题(窗口句柄,1)
复制代码


具体原因请查阅文档
作者: 1102509486    时间: 2015-11-14 07:31
直接用GetWindowTextW 获取普通编辑框内容 部分编辑框内容是需要自身进程调用 才能获得内容  sendmessageW获取是自身进程的地址其他进程无法获得
作者: dongshrine    时间: 2015-11-14 11:36
如此美丽。 发表于 2015-11-14 02:30
..

谢谢大神。。辛苦了。
作者: dongshrine    时间: 2015-11-14 11:37
sam7894604 发表于 2015-11-14 05:59
其实你用TC内建的命令不就可以了么?

谢谢鬼神大哥,你的这个简单暴力,楼上的帮我翻译,我就不给你采纳了,但是你的办法解决了我的问题,谢了!!
作者: dongshrine    时间: 2015-11-14 11:37
1102509486 发表于 2015-11-14 07:31
直接用GetWindowTextW 获取普通编辑框内容 部分编辑框内容是需要自身进程调用 才能获得内容  sendmessageW ...

谢谢




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1