TC官方合作论坛

标题: 求帮助VB源码转TC码,有关Win API和dllcall [打印本页]

作者: pppgg123    时间: 2013-5-11 09:23
标题: 求帮助VB源码转TC码,有关Win API和dllcall
下面的源码的功用为后台组合键,这是我在按键论坛找到的,某些窗口适用

  1. Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  2. Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
  3. Const WM_KEYDOWN = &H100
  4. Const WM_KEYUP = &H101
  5. Const WM_CHAR = &H102
  6. Const WM_SYSKEYDOWN = &H104
  7. Const WM_SYSKEYUP = &H105
  8. Const WM_SYSCHAR = &H106
  9. Const WM_LBUTTONDOWN = &H201
  10. Const WM_LBUTTONUP = &H202
  11. Const WM_RBUTTONDOWN = &H204
  12. Const WM_RBUTTONUP = &H205
  13. Function MakeKeyLparam(VirtualKey,flag)
  14.     Dim s,Firstbyte'lparam参数的24-31位
  15.     Select Case flag
  16.     Case WM_KEYDOWN
  17.         Firstbyte = "00"
  18.     Case WM_KEYUP
  19.         Firstbyte = "C0"    '如果是释放键
  20.     Case WM_CHAR
  21.         Firstbyte = "C0"
  22.     Case WM_SYSKEYDOWN
  23.         Firstbyte = "20"
  24.     Case WM_SYSKEYUP
  25.         Firstbyte = "E0"
  26.     Case WM_SYSCHAR
  27.         Firstbyte = "E0"
  28.     End Select
  29.     Dim Scancode
  30.     '获得键的扫描码
  31.     Scancode = MapVirtualKey(VirtualKey, 0)
  32.     Dim Secondbyte 'lparam参数的16-23位,即虚拟键扫描码
  33.     Secondbyte = Right("00" & Hex(Scancode), 2)
  34.     s = Firstbyte & Secondbyte & "0001"   '0001为lparam参数的0-15位,即发送次数和其它扩展信息
  35.     MakeKeyLparam = Eval("&H" & s)
  36. End Function
  37. Function SendAltPlusKey(Hwnd,Key)
  38.     Dim vkey
  39.     vkey = Eval("&H" & Hex(Key))
  40.     PostMessage hwnd, WM_SYSKEYDOWN, &H12, MakeKeyLparam(&H12, WM_SYSKEYDOWN)
  41.     PostMessage hwnd, WM_SYSKEYDOWN, vkey, MakeKeyLparam(vkey, WM_SYSKEYDOWN)
  42.     PostMessage hwnd, WM_SYSKEYUP, vkey, MakeKeyLparam(vkey, WM_SYSKEYUP)
  43.     PostMessage hwnd, WM_KEYUP, &H12, MakeKeyLparam(&H12, WM_KEYUP)   
  44. End Function
  45. Function SendCtrlPlusKey(Hwnd,Key)
  46.     Dim vkey
  47.     vkey = Eval("&H" & Hex(Key))
  48.     KeyDown 17, 1
  49.     //PostMessage hwnd, WM_KEYDOWN, &H11, MakeKeyLparam(&H11, WM_KEYDOWN)
  50.     PostMessage hwnd, WM_KEYDOWN, vkey, MakeKeyLparam(vkey, WM_KEYDOWN)
  51.     PostMessage hwnd, WM_KEYUP, vkey, MakeKeyLparam(vkey, WM_KEYUP)
  52.     KeyUp 17, 1
  53.     //PostMessage hwnd, WM_KEYUP, &H11, MakeKeyLparam(&H11, WM_KEYUP)   
  54. End Function
  55. Function SendLclick(hwnd,x,y)
  56.     PostMessage hwnd, WM_LBUTTONDOWN, 0, Eval("&H" & Hex(y * 65536 + x))
  57.     PostMessage hwnd, WM_LBUTTONUP, 0, Eval("&H" & Hex(y * 65536 + x))        
  58. End Function
  59. Function SendRclick(hwnd,x,y)
  60.     PostMessage hwnd, WM_RBUTTONDOWN, 0, Eval("&H" & Hex(y * 65536 + x))
  61.     PostMessage hwnd, WM_RBUTTONUP, 0, Eval("&H" & Hex(y * 65536 + x))        
  62. End Function
  63. Function SendKey(hwnd, key)
  64.     Dim vkey
  65.     vkey = Eval("&H" & Hex(Key))
  66.     PostMessage hwnd, WM_KEYDOWN, vkey, MakeKeyLparam(vkey, WM_KEYDOWN)
  67.     PostMessage hwnd, WM_KEYUP, vkey, MakeKeyLparam(vkey, WM_KEYUP)
  68. End Function

  69. //运行notepad
  70. RunApp "notepad.exe"
  71. Delay 100
  72. Hwnd = Plugin.Window.Find("Notepad", 0)
  73. Hwndex =Plugin.Window.FindEx(Hwnd,0,"edit",0) //获取edit窗口句柄

  74. //输入点数据
  75. For k=0 to 9
  76. For i= 0 to 9
  77. SendKey hwndex, 48+(k+i) mod 10
  78. Delay 10
  79. Next
  80. SendKey hwndex, 13
  81. Next

  82. SendCtrlPlusKey Hwndex,65 //ctrl+a 全选
  83. Delay 500
  84. SendRclick Hwndex, 100, 100 //窗口坐标(100,100)处点击右键
  85. Delay 500
  86. SendKey hwndex, 67    //按c复制
  87. Delay 500
  88. SendLclick Hwndex, 1, 170  //窗口坐标(1,170)处点击左键
  89. Delay 100
  90. SendRclick Hwndex, 1, 170 //窗口坐标(1,170)处点击左键
  91. Delay 500
  92. SendKey hwndex, 80  //按p粘贴
  93. Delay 100
复制代码


按键精灵复制贴上可以直接使用,有人能帮翻成TC能使用的格式吗?
另外TC好像也有同样的API postmessage(hwnd,msg,wparam,iparam)
要怎样应用能跟上面源码有相同功用?
另外求有关TC调用Win API相关影片教程,最近好像常用到这类东西








作者: jimye0526    时间: 2013-5-11 09:27
自己一句句改吧 语法也没多大区别啊 win32api tc里也可以用dllcall
作者: 舍我其谁    时间: 2013-5-11 09:38
buhui.........




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