VB 中如何实现关闭其他程序打开的窗口

VB 中如何实现关闭其他程序打开的窗口,第1张

根据标题文本找到窗体句柄,然后发送关闭消息

以下代码放在一个标准模块中,enumwindows可以枚举窗口列表中的所有父窗口(顶级和被所有窗口),getwindowtext可以获得窗口标题,sendmessage发送WM_CLOSE消息到你要关闭的窗体就可以了

Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean

Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const WM_CLOSE = &H10

'这个函数是enumwindows回调用的,在这里加入处理代码就行

Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean

Dim sSave As String, Ret As Long

Ret = GetWindowTextLength(hwnd)

sSave = Space(Ret)

GetWindowText hwnd, sSave, Ret + 1

Form1Print Str $(hwnd) + " " + sSave '这行代码在窗体上显示所有窗口句柄和标题,把这行代码换成在标题中查找要限制的文本,如果找到就向这个窗口SendMessage hwnd, WM_CLOSE, 0, 0就可以了

EnumWindowsProc = True

End Function

以下为窗体模块中调用的代码,放在时间事件中,例如每4秒中检查一次窗口标题中是否包含限制文本

EnumWindows AddressOf EnumWindowsProc, ByVal 0&

你有没有用ini配置文件保存你的数据?

那就在Form_QueryUnload或Form_Unload函数里加入强制保存功能。

或者用以下代码:

Private Sub Form_Unload(Cancel As Integer)

If MsgBox("是否退出程序?", vbYesNo + vbQuestion, "确认") = vbNo Then Cancel = True

End Sub

'读取配置文件相关API

'读配置文件

Public Declare Function GetPrivateProfileString& Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String)

Public Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long

'写配置文件

Public Declare Function WritePrivateProfileString& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String)

可以利用以上API读写ini配置文件。

用法你在查一下,不明白可以问我~

第一种办法:切断所有可能关闭程序的途径,

例如:禁用任务管理器,在任务管理器中隐藏进程,隐藏窗口的标题栏(就是隐藏关闭按钮)。当然360这种伟大的让人无可奈何的软件可能就隐藏不了了。

第二种办法:在关闭的同时再打开这个程序。

Shell

AppPath

&

"\程序名exe"

不会的话你再问吧

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

程序正常结束应该卸载所有的窗体。只要没有其它程序引用该程序公共类模块创建的对象并无代码执行,程序将立即关闭。

form2中添加一button按钮,代码为

Private

Sub

Command1_Click()

Unload

Me

End

Sub

就行了吧,

或者添加一button按钮,把其属性cancel改为true,运行按esc就退出了

以上就是关于VB 中如何实现关闭其他程序打开的窗口全部的内容,包括:VB 中如何实现关闭其他程序打开的窗口、vb 关于关闭窗体、vb 如何禁止关掉窗口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10136636.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存