JBTALKS.CC

标题: 请问要怎样测试用户有没有在打字? [打印本页]

作者: goodhermit95    时间: 2010-11-22 09:54 AM
标题: 请问要怎样测试用户有没有在打字?
请问什么API可以知道用户有没有在打字?(有没有 I )
打字不是有那个I这样的东西,怎样测试他有没有存在?
我不懂要怎样google!
应该说有没有focus textbox这样的东西

那个textbox不是在这个app里面,在另外一边
我想知道用户有没有在textbox打字,而且是游戏的textbox
作者: weeming21    时间: 2010-11-22 01:58 PM
hook keyboard + hwnd 或许就是你要的
作者: goodhermit95    时间: 2010-11-23 09:13 AM
回复 2# weeming21


    不是探测用户在打什么!是测试用户有没有focus住像textbox这样的东西!也就是会出现 I 这样的东西
作者: weeming21    时间: 2010-11-23 11:43 AM
回复 3# goodhermit95

哦,那就更简单了,找出当前hwnd作对比就可以了
作者: Super-Tomato    时间: 2010-11-23 01:58 PM
回复  weeming21


    不是探测用户在打什么!是测试用户有没有focus住像textbox这样的东西!也就是会出 ...
goodhermit95 发表于 2010-11-23 09:13 AM



你該把你的 application 類型描述清楚,是在做 socket 方面的聊天軟體還是 local 性质等
作者: goodhermit95    时间: 2010-11-23 08:51 PM
他是一个你按a就会输入b的程序,但是在打字的时候会自动暂停,不然会混乱
作者: Super-Tomato    时间: 2010-11-23 10:35 PM
他是一个你按a就会输入b的程序,但是在打字的时候会自动暂停,不然会混乱
goodhermit95 发表于 2010-11-23 08:51 PM


没停在輸入框打字,那怎么會讓按 a 變成 b 呢?
不管你要寫些甚么,你的問題點就是要取得另一個應用程式是否停留在輸入框
這样就麻煩你自己去 msdn 查询了解 GetGUIThreadInfo 這個 windows api 能够提供你些甚么資訊
作者: goodhermit95    时间: 2010-11-24 12:12 PM
谢谢回答,我去试试看
不是a变b,而是输入a会直接输入b
没有打字的时候要有这样的效果,但是打字的时候就不可以了,因为你输入aaaaa就会变ababababab
作者: Super-Tomato    时间: 2010-11-24 12:31 PM
谢谢回答,我去试试看
不是a变b,而是输入a会直接输入b
没有打字的时候要有这样的效果,但是打字的时候就不 ...
goodhermit95 发表于 2010-11-24 12:12 PM



在本身的程式中就直接监听欄位是否被 focus 就好啦
作者: goodhermit95    时间: 2010-11-25 12:10 PM
我找了很多东西还是看不懂!
MSDN写得很简略
我上网找了这个


  1. Public Class Form1

  2. Private Declare Function GetForegroundWindow Lib "user32" () As Integer
  3. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal
  4. hWnd As Integer, ByRef lpdwProcessId As Integer) As Integer
  5. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
  6. (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer,
  7. ByVal lParam As Integer) As Integer
  8. Private Declare Function GetGUIThreadInfo Lib "user32.dll" (ByVal
  9. idThread As Integer, ByRef pgui As GUITHREADINFO) As Integer
  10. Private Const WM_COPY As Integer = &H301
  11. Private Structure RECT
  12. Dim Left_Renamed As Integer
  13. Dim Top As Integer
  14. Dim Right_Renamed As Integer
  15. Dim Bottom As Integer
  16. End Structure
  17. Private Structure GUITHREADINFO
  18. Dim cbSize As Integer
  19. Dim flags As Integer
  20. Dim hwndActive As Integer
  21. Dim hwndFocus As Integer
  22. Dim hwndCapture As Integer
  23. Dim hwndMenuOwner As Integer
  24. Dim hwndMoveSize As Integer
  25. Dim hwndCaret As Integer
  26. Dim rcCaret As RECT
  27. End Structure

  28. Private Function GetFocusWindow() As Integer
  29. Dim h As Integer
  30. Dim ThreadID As Integer
  31. Dim gui As GUITHREADINFO
  32. Dim ret As Integer

  33. h = GetForegroundWindow()
  34. Console.WriteLine("GetFocusWindow: ForegroundWindow = " & Hex(h))
  35. ThreadID = GetWindowThreadProcessId(h, 0)
  36. gui.cbSize = Len(gui)
  37. ret = GetGUIThreadInfo(ThreadID, gui)
  38. If ret = 0 Then
  39. Console.WriteLine("GetFocusWindow: GetGUIThreadInfo failed.
  40. LastDllError = " & Err.LastDllError)
  41. Exit Function
  42. End If
  43. Console.WriteLine("GetFocusWindow: hwndFocus = " &
  44. Hex(gui.hwndFocus))
  45. GetFocusWindow = gui.hwndFocus
  46. End Function

  47. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
  48. System.EventArgs) Handles Timer1.Tick
  49. Me.Text = Hex(GetFocusWindow())
  50. SendCopyToWindow(GetFocusWindow())
  51. TextBox1.Text = Clipboard.GetText
  52. End Sub

  53. Private Sub SendCopyToWindow(ByVal hWnd As Integer)
  54. SendMessage(hWnd, WM_COPY, 0, 0)
  55. End Sub

  56. End Class

复制代码
GUITHREADINFO 是 GUI 的类型吗?
这个API他return boolean,true的话就是那个类型,false的话就不是?
作者: Super-Tomato    时间: 2010-11-25 01:54 PM
我找了很多东西还是看不懂!
MSDN写得很简略
我上网找了这个GUITHREADINFO 是 GUI 的类型吗?
这个API他return boolean,true的话就是那个类型,false的话就不是?
goodhermit95 发表于 2010-11-25 12:10 PM



你太過依赖網絡資源了,而且應用 vb 了那麽久也還没了解 pass by value 和 pass by reference 的差别所以你就覺得 MSDN 没你要的
GUITHREADINFO 是個 struct,简单來解释可以當是個  object 。那试问 object 怎么會 return 你对错?? 會回傳你对错的是 GetGUIThreadInfo 而你也要注意去看看所回傳的值意义
作者: weeming21    时间: 2010-11-25 03:45 PM
突然想到,如果使用softice或ollydbg抓断点,找出相关memory位置,然后写个程序readprocessmemory应该也是可以达到该效果
作者: Super-Tomato    时间: 2010-11-25 04:03 PM
突然想到,如果使用softice或ollydbg抓断点,找出相关memory位置,然后写个程序readprocessmemory应该也是可 ...
weeming21 发表于 2010-11-25 03:45 PM



哈,但是這样不能抓到是否 onFocus 當中,而且是針對各别軟體還很多工
作者: goodhermit95    时间: 2010-11-25 04:54 PM
本帖最后由 goodhermit95 于 2010-11-25 04:56 PM 编辑

我说会return的事GetGUIThreadInfo
太复杂了,那么多个struct
还有什么RECt的

上网开看到很多什么send copy to window的
作者: Super-Tomato    时间: 2010-11-25 08:42 PM
我说会return的事GetGUIThreadInfo
太复杂了,那么多个struct
还有什么RECt的

上网开看到很多什么send ...
goodhermit95 发表于 2010-11-25 04:54 PM



你想往 windows 市场發展的話, 掌握 msdn 所提供的資訊是最基础的,要不然就往網頁編程發展吧
作者: goodhermit95    时间: 2011-1-27 09:48 PM
网页的功能太少了
而且我没有设计才华,GUI例外(我也不懂人家用我的GUI顺不顺手)
MSDN API介绍我看的懂,但是参C++下去就乱了
12楼说的是像cheat engine scan有打字=1 没有打字=0找出address类似这样?




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5