SSTAB不响应鼠标和键盘
程序是酱紫地,做了个用快捷键的程序,呵呵,都是参考以前这里大侠的代码,本来都很顺利。
Private Sub Form_Load()
''注册热键
RegHotKeys Me.hwnd
SetTextColor''设置一些东西
ShowAllParameter''显示一些东西
Me.Show
''在消息队列中等待,堵死了SSTAB,不响应了
ProcessMessages Me.hwnd
End Sub
其中这个 ProcessMessages
Public Sub ProcessMessages(ByVal hwnd As Long)
Dim Message As Msg
'在消息队列中循环,直到程序退出为止
Do While Not g_blnAppFinish
'等待消息
WaitMessage
'如果检查到是热键消息
If PeekMessage(Message, hwnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
''根据消息类型,把相应的内容输出到剪贴板上
Select Case Message.wParam
Case cHotKey1
''做一些事情,比如 msgbox "Key1 Pressed"
Case cHotKey2
''做一些事情
Case Else
End Select
End If
'交还系统控制权
DoEvents
Loop
End Sub
不过加上SSTAB以后,SSTAB就不会响应了,除非去掉那个ProcessMessages
我晕死,看来SSTAB要在formload完成之后才能响应,然后试验一下,设置一个按钮,在按钮里加上ProcessMessages,运行程序后点击按钮触发,这个时候SSTAB可以响应了。
所以为了让程序一运行就能工作,我不得不设置一个定时器Timer_EnableProcess
Private Sub Form_Load()
''注册热键
RegHotKeys Me.hwnd
SetTextColor''设置一些东西
ShowAllParameter''显示一些东西
Timer_EnableProcess.Interval = 100
Timer_EnableProcess.Enabled = True
End Sub
''设置让这个东东跑起来
Private Sub Timer_EnableProcess_Timer()
Timer_EnableProcess.Enabled = False''一跑起来就false它,不要让它再动
ProcessMessages Me.hwnd ''监视热键消息
End Sub
注意一下,上面两个不能反过来写,如果反过来,Timer_EnableProcess.Enabled = False执行不到的,会出问题,程序关掉进程还在。
分享一下经验,呵呵。大家有更好的方案吗?我感觉我这个是治标不治本的方法
希望听到更好方案,我重新开贴给分,呵呵