SSTAB不响应鼠标和键盘

guxizhw 2005-06-05 12:10:12
程序是酱紫地,做了个用快捷键的程序,呵呵,都是参考以前这里大侠的代码,本来都很顺利。

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执行不到的,会出问题,程序关掉进程还在。
分享一下经验,呵呵。大家有更好的方案吗?我感觉我这个是治标不治本的方法
希望听到更好方案,我重新开贴给分,呵呵

...全文
56 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧