TC官方合作论坛

 找回密码
 立即注册
查看: 1131|回复: 2
打印 上一主题 下一主题

[问题] 求帮助VB源码转TC码,有关Win API和dllcall

[复制链接]
跳转到指定楼层
楼主
发表于 2013-5-11 09:23:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
下面的源码的功用为后台组合键,这是我在按键论坛找到的,某些窗口适用

  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相关影片教程,最近好像常用到这类东西







回复

使用道具 举报

沙发
发表于 2013-5-11 09:27:33 | 只看该作者
自己一句句改吧 语法也没多大区别啊 win32api tc里也可以用dllcall
回复 支持 反对

使用道具 举报

板凳
发表于 2013-5-11 09:38:22 | 只看该作者
buhui.........
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-10-4 20:47 , Processed in 0.546468 second(s), 24 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表