我在客户端用一个winsock每5秒向服务器发数据,但如果我弹出一个msgbox对话框时,winsock会停止向服务器发数据,因此会自动断开,怎样让我在弹出对话框时间较长时,也能保证发数据呢?
解决方案 »
- 急:VB 分析 数据 为 bin.base64 数据类型时发生错误
- 散分四 感谢各位前辈给予的帮助
- 请教一下VB 读写ini文件的 问题
- 终于有5个三角了......不知道又到什么时候才能有一个星星....散分
- 希望那位介绍几本学习VB的好书~谢谢~!
- 怎么判断一个端口是否被占用
- 资源文件自定义格式的用法!!
- 用INet控件连接FTP服务器时,如何获得服务器的返回信息?
- 迷惑:以ByVal的形式将String str传给一个API,执行完毕后,str获得新值,请问str的值为什么能改变呢?
- vb里面怎么把百分数如12%转换为小数,我的目的是参与运算。
- 求VBA中文帮助文档一个
- 自己实在找不到办法了,请帮我
你自己做一个Msgbox的对话框.
每次调用都用非模态调用就行了,
楼下.还有更的的办法吗?
我想不出来了....
Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Private Declare Function SetDlgItemText Lib "user32" Alias "SetDlgItemTextA" (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal lpString As String) As Long
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
Private hHook As Long Private Function HookProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode = HCBT_ACTIVATE Then
'HCBT_ACTIVATE时wParam是将被激活的窗口的句柄
Dim hwnd As Long
hwnd = wParam
'设定按钮的文字
SetDlgItemText hwnd, vbOK, ByVal "确定[&O]"
SetDlgItemText hwnd, vbCancel, ByVal "取消[&C]"
SetDlgItemText hwnd, vbYes, ByVal "是[&Y]"
SetDlgItemText hwnd, vbNo, ByVal "否[&N]"
SetDlgItemText hwnd, vbAbort, ByVal "放弃[&A]"
SetDlgItemText hwnd, vbIgnore, ByVal "忽略[&I]"
SetDlgItemText hwnd, vbRetry, ByVal "重试[&R]"
'不要再Hook,以免带来不必要的麻烦
UnhookWindowsHookEx hHook
End If
HookProc = 0
End Function
'使用和VB的MsgBox一样的名字,如果你不想使用自定文字格式,只需要移除本模块即可
Public Function MsgBoxEx(ByVal hwnd As Long, ByVal Prompt As String, _
Optional ByVal Button As VbMsgBoxStyle = vbOKOnly, Optional ByVal Title As String) As VbMsgBoxResult
If Len(Title) = 0 Then Title = App.Title
hHook = SetWindowsHookEx(WH_CBT, AddressOf HookProc, App.hInstance, App.ThreadID)
'注意下面的第一个参数最好传递一个窗口的句柄,当然,让它作为0也可以
'MsgBox= MessageBox(0, Prompt, Title, Button) '不推荐这样做
MsgBoxEx = MessageBox(hwnd, Prompt, Title, Button)
End Function