
1VB的启动方式有两种
1
sub
main
2
form_load
结束也是两个方法,
sub
main
对应的执行到end
sub
就算结束
form_load就是Unload
me
当然全部结束的方法是END
但End
语句会重置所有模块级别变量和所有模块的静态局部变量。若要保留这些变量的值,改为使用
Stop
语句,则可以在保留这些变量值的基础上恢复执行。
注意
End
语句不调用
Unload、QueryUnload、或
Terminate
事件或任何其它
Visual
Basic
代码,只是生硬地终止代码执行。窗体和类模块中的
Unload、QueryUnload、和
Terminate
事件代码未被执行。类模块创建的对象被破坏,由
Open
语句打开的文件被关闭,并且释放程序所占用的内存。其它程序的对象引用无效。
End
语句提供了一种强迫中止程序的方法。Visual
Basic
程序正常结束应该卸载所有的窗体。只要没有其它程序引用该程序公共类模块创建的对象并无代码执行,程序将立即关闭。
1首行看他的标题是什么
2把标题加到以下的程序代码,即可
Option
Explicit
Private
Declare
Function
PostMessage
Lib
"User32"
Alias
"PostMessageA"
(ByVal
hwnd
As
Long,
ByVal
wMsg
As
Long,
ByVal
wParam
As
Long,
ByVal
lParam
As
Long)
As
Long
'发送消息,用来关闭指定程序
Private
Declare
Function
FindWindow
Lib
"User32"
Alias
"FindWindowA"
(ByVal
lpClassName
As
String,
ByVal
lpWindowName
As
String)
As
Long
'查找窗体
Private
Const
WM_CLOSE
=
&H10
'关闭程序
Private
Sub
Command1_Click()
Dim
winHwnd
As
Long
Dim
RetVal
As
Long
winHwnd
=
FindWindow(vbNullString,
"这里是你要关闭的程序的标题")
'找到窗口
DebugPrint
winHwnd
'用来调试
在立即窗口中输入winhnd
If
winHwnd
<>
0
Then
'这里是判断窗口是否启动
如果窗口不存在那么值为0
RetVal
=
PostMessage(winHwnd,
WM_CLOSE,
0&,
0&)
'关闭窗口
If
RetVal
=
0
Then
'如果窗口没有启动
就d出下面的信息
MsgBox
"错误!"
Else
MsgBox
"成功关闭程序!"
End
If
Else
MsgBox
"程序没有打开!"
End
If
End
Sub
添加一个窗体:
窗体代码:
Option Explicit
Private Sub Form_Load()
'设置窗体过程
SetWindowHook MehWnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
'取消窗体过程。
DelWindowHook
End Sub
添加一个模块,模块代码:
Option Explicit
Private Declare Function ShowWindow Lib "user32" _
(ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private 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
Private Declare Function RegisterHotKey Lib "user32" _
(ByVal hWnd As Long, ByVal id As Long, _
ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" _
(ByVal hWnd As Long, ByVal id As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
(ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Const GWL_WNDPROC = (-4)
Private Const WM_HOTKEY = &H312
Private Const VK_F7 = &H76
Dim hPrevWndProc As Long '原先的窗口过程。
Dim hPrevHandle As Long '原先的窗口句柄。
Dim hHotKey As Long '热键句柄。
Dim hH As Long '隐藏的窗口句柄。
Private Function GetClassNameStr(ByVal hWnd As Long) As String
'获取窗体的类名。
Dim TempStr As String, Rc As Long
Const NAME_MAX_LEN = 256
TempStr = Space(NAME_MAX_LEN)
Rc = GetClassName(hWnd, TempStr, NAME_MAX_LEN)
GetClassNameStr = StrConv(LeftB$(StrConv(TempStr, _
vbFromUnicode), Rc), vbUnicode)
End Function
Private Function GetWindowTextStr(ByVal hWnd As Long) As String
'获取窗体标题。
Dim TempStr As String, Rc As Long
Const NAME_MAX_LEN = 256
TempStr = Space(NAME_MAX_LEN)
Rc = GetWindowText(hWnd, TempStr, NAME_MAX_LEN)
GetWindowTextStr = StrConv(LeftB$(StrConv(TempStr, _
vbFromUnicode), Rc), vbUnicode)
End Function
Private Function WindowProc(ByVal hWnd As Long, _
ByVal uMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
'新的窗口过程。
Dim hNowWindow As Long
If uMsg = WM_HOTKEY And wParam = 101 Then
'如果按下了指定热键。
hNowWindow = GetForegroundWindow()
If GetClassNameStr(hNowWindow) = "Notepad" _
And GetWindowTextStr(hNowWindow) = _
"无标题 - 记事本" And hH = 0 Then
'如果当前的活动窗口是无标题记事本。
'隐藏窗体。
hH = hNowWindow
ShowWindow hH, 0
ElseIf hH <> 0 Then
'显示窗体
ShowWindow hH, 5
hH = 0
End If
End If
'调用原有的窗体过程。
WindowProc = CallWindowProc(hPrevWndProc, _
hWnd, uMsg, wParam, lParam)
End Function
Public Sub SetWindowHook(ByVal hWnd As Long)
'设置新的窗口过程。
hPrevHandle = hWnd
hPrevWndProc = SetWindowLong _
(hPrevHandle, GWL_WNDPROC, AddressOf WindowProc)
'设置热键(F7)。
hHotKey = RegisterHotKey(hPrevHandle, 101, 0, VK_F7)
End Sub
Public Sub DelWindowHook()
'恢复原有的窗口过程。
SetWindowLong hPrevHandle, GWL_WNDPROC, hPrevWndProc
'取消热键
UnregisterHotKey hPrevHandle, hHotKey
End Sub
以上就是关于写了VB的应用程序,最后怎么关闭该程序呢全部的内容,包括:写了VB的应用程序,最后怎么关闭该程序呢、怎样用VB关闭一个指定的进程、VB如何实现:隐藏外部程序窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)