网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月11日漏签0天
vb编程吧 关注:4,735贴子:7,342
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 3回复贴,共1页
<<返回vb编程吧
>0< 加载中...

求做一个全局按键自动喊话的程序

  • 只看楼主
  • 收藏

  • 回复
  • 专业测人000
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我想做一个自动喊话工具,想实现按F1就勾上自动喊话F1,再按一下F1取消自动喊话的钩钩并停止喊话

而我从网上找了一些代码 现在只实现了按ALT+F1开始喊话 再按一下勾子不会去掉喊话也不会停止
所以目前只能够点击停止喊话的按钮才能停止喊话
希望哪位高手能够帮忙帮我看看怎么修改 代码在楼下


  • 专业测人000
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
模块中的代码:
Option Explicit Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "User32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function RegisterHotKey Lib "User32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "User32" (ByVal hwnd As Long, ByVal id As Long) As Long Public Const WM_HOTKEY = &H312
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const GWL_WNDPROC = (-4) Public preWinProc As Long
Public Modifiers As Long, uVirtKey As Long, idHotKey As Long Private Type taLong
ll As Long
End Type Private Type t2Int
lWord As Integer
hWord As Integer
End Type Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY Then
If wParam = idHotKey Then
Dim lp As taLong, i2 As t2Int
lp.ll = lParam
LSet i2 = lp
If (i2.lWord = Modifiers) And i2.hWord = uVirtKey Then
Form1.SetFocus
Form1.Check1.Value = 1
End If
End If
End If
Wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function


2025-11-11 17:09:12
广告
不感兴趣
开通SVIP免广告
  • 专业测人000
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
窗体中的代码:
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, lpKeyName As Any, ByVal lpDefault As String, ByVal lpRetunedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function SaveINI Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As String, ByVal lplFileName As String) As Long
Dim i As Integer
Dim cur As Integer
Function GetINI(AppName As String, KeyName As String, filename As String) As String
Dim RetStr As String
RetStr = String(10000, Chr(0))
GetINI = Left(RetStr, GetPrivateProfileString(AppName, ByVal KeyName, "", RetStr, Len(RetStr), filename))
End Function Private Sub Check1_Click()
If Check1.Value = 1 Then
cur = 0
Timer1.Enabled = True
Timer1.Interval = Combo1.Text
Else
Timer1.Enabled = False
End If '这里是选中后的事件,具体你可以自己写
End Sub Private Sub Form_Load()
Dim ret As Long preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) '记录原来的window程序地址 ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf Wndproc) '用自定义程序代替原来的window程序
idHotKey = 1
Modifiers = MOD_ALT
uVirtKey = vbKeyF1
ret = RegisterHotKey(Me.hwnd, idHotKey, Modifiers, uVirtKey) End Sub Public Sub UnRegHotKey(hwnd As Long)
Dim ret As Long
'取消Message的截取,使之送往原来的windows程序
ret = SetWindowLong(hwnd, GWL_WNDPROC, preWinProc)
Call UnregisterHotKey(hwnd, uVirtKey) End Sub Private Sub Form_Unload(Cancel As Integer)
Dim ret As Long
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
Call UnregisterHotKey(Me.hwnd, uVirtKey)
For i = 1 To List1.ListCount
SaveINI "list", CStr(Format(i - 1, "000")), List1.List(i - 1), App.Path & "\Config.ini"
Next i
SaveINI "ListCount", "Count", List1.ListCount, App.Path & "\Config.ini" End Sub Private Sub Command1_Click()
List1.AddItem Text1.Text
End Sub Private Sub Command2_Click()
For i = 0 To List1.ListCount - 1
List1.RemoveItem i
Exit For
Next
End Sub Private Sub Command4_Click()
Timer1.Enabled = False
End Sub Private Sub Command5_Click()
Shell "explorer.exe http://1157458727.qzone.qq.com"
End Sub Private Sub Timer1_Timer() 'appacticave "程序标题" SendKeys List1.List(cur)
SendKeys "{enter}"
cur = cur + 1
If cur = List1.ListCount Then
cur = 0
End If
End Sub



  • 专业测人000
  • 活跃吧友
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
没有高手知道吗?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回vb编程吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示