为什么脱离vb6.0环境(生成exe文件)就无法正常运行
代码如下:PrivateSubCommand2_Click()UnloadMeEndSubPrivateSubForm_Load()IfApp.PrevInstance=...
代码如下:
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
If App.PrevInstance = True Then
Unload Me
End If
Call EnableKBDHook
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call UnHookKBD
End Sub
下面的是bas中的
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
Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Public hnexthookproc As Long
Public Const WH_KEYBOARD = 2
Public Sub UnHookKBD()
If hnexthookproc <> 0 Then
UnhookWindowsHookEx hnexthookproc
hnexthookproc = 0
End If
End Sub
Public Function EnableKBDHook()
If hnexthookproc <> 0 Then
Exit Function
End If
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
If hnexthookproc <> 0 Then
EnableKBDHook = hnexthookproc
End If
End Function
Public Function MyKBHFunc(ByVal iCode As Long, _
ByVal wParam As Long, ByVal lParam As Long, ByVal Msg As Long) As Long
'这三个叁数是固定的,不能动,而MyKBHFunc这个名称只要和
'SetWindowsHookex()中 AddressOf后的名称一样便可,不一定叫什麽
MyKBHFunc = 0
If wParam = 40 Then
Form1.Visible = False
End If
If wParam = 97 Then
Form1.Visible = True
End If
MyKBHFunc = 1
End Function
该程序不离开本机器 即出现exe不执行,但是要把Form1.Visible改为true则程序正常运行,为什么? 展开
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
If App.PrevInstance = True Then
Unload Me
End If
Call EnableKBDHook
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call UnHookKBD
End Sub
下面的是bas中的
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
Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Public hnexthookproc As Long
Public Const WH_KEYBOARD = 2
Public Sub UnHookKBD()
If hnexthookproc <> 0 Then
UnhookWindowsHookEx hnexthookproc
hnexthookproc = 0
End If
End Sub
Public Function EnableKBDHook()
If hnexthookproc <> 0 Then
Exit Function
End If
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
If hnexthookproc <> 0 Then
EnableKBDHook = hnexthookproc
End If
End Function
Public Function MyKBHFunc(ByVal iCode As Long, _
ByVal wParam As Long, ByVal lParam As Long, ByVal Msg As Long) As Long
'这三个叁数是固定的,不能动,而MyKBHFunc这个名称只要和
'SetWindowsHookex()中 AddressOf后的名称一样便可,不一定叫什麽
MyKBHFunc = 0
If wParam = 40 Then
Form1.Visible = False
End If
If wParam = 97 Then
Form1.Visible = True
End If
MyKBHFunc = 1
End Function
该程序不离开本机器 即出现exe不执行,但是要把Form1.Visible改为true则程序正常运行,为什么? 展开
展开全部
可能对你解决当前的问题帮助不大,但我的理解是,VB程序都是离不开VB运行库的,要想开发出的程序兼容性较强,还是需要C语言这样的。
要是觉得C开发慢,Delphi也是一个选择,毕竟Pascal也是同样强大。
要是觉得C开发慢,Delphi也是一个选择,毕竟Pascal也是同样强大。
参考资料: http://www.czxqlove.com
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询