`
- 浏览:
144513 次
- 性别:
- 来自:
深圳
-
利用WindowsAPI获得系统高级功能
邹刚
VB无疑是最先进的编程工具之一,但在涉及windows32位系统的核心编程方面——譬如一些高级功能的实现上,它仍然显得有些力不从心,这需要我们充分利用vb的强大的WindowsAPI函数调用能力来弥补。以下代码将向您展示如何利用WindowsAPI控制系统托盘(图标)区、开始菜单、任务栏以及禁用/起用ctrl-alt-del、退出网络登录、立即关机、重新启动等系统高级功能。
启动VB6,建立一个标准exe工程,添加14个command按钮,caption属性依次为“隐藏开始菜单”、“显示开始菜单”、“隐藏系统托盘”、“显示系统托盘”、“禁用ctrl-alt-del”、“起用ctrl-alt-del”、“隐藏任务栏”、“显示任务栏”、“立即重新启动”、“关机”、“退出网络登陆”、“显示关机对话框”,调整上述控件到适当位置,双击窗体,写入以下代码:
OptionExplicit
PrivateDeclareFunctionFindWindowLib"user32"Alias"FindWindowA"(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLong
'寻找窗口列表中第一个符合指定条件的顶级窗口
'lpClassName指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,'表示接收任何类
'lpWindowName指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;'或设为零,表示接收任何窗口标题
PrivateDeclareFunctionShowWindowLib"user32"(ByValhwndAsLong,ByValnCmdShowAsLong)AsLong
'控制窗口的可见性
'hwnd窗口句柄,要向这个窗口应用由nCmdShow指定的命令
'nCmdShow为窗口指定可视性方面的一个命令
PrivateDeclareFunctionFindWindowExLib"user32"Alias"FindWindowExA"(ByValhWnd1AsLong,ByValhWnd2AsLong,ByVallpsz1AsString,ByVallpsz2AsString)AsLong
'在窗口列表中寻找与指定条件相符的第一个子窗口
'hWnd1在其中查找子的父窗口
'hWnd2从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索
PrivateDeclareFunctionExitWindowsExLib"user32"(ByValuFlagsAsLong,ByValdwReservedAsLong)
'退出windows,并用特定的选项重新启动
PrivateDeclareFunctionSystemParametersInfoLib"user32"Alias"SystemParametersInfoA"(ByValuActionAsLong,ByValuParamAsLong,ByReflpvParamAsAny,ByValfuWinIniAsLong)AsLong
'允许获取和设置数量众多的windows系统参数
'uAction指定要设置的参数
PrivateConstEWX_LOGOFF=0'中止进程,然后注销
PrivateConstEWX_SHUTDOWN=1'关掉系统电源
PrivateConstEWX_REBOOT=2'重新引导系统
PrivateConstEWX_FORCE=4'强迫中止没有响应的进程
PrivateConstSPI_SCREENSAVERRUNNING=97
PrivateSubCommand1_Click()'隐藏开始菜单
DimHandleAsLong,FindClassAsLong
FindClass=FindWindow("Shell_TrayWnd","")
Handle=FindWindowEx(FindClass,0,"Button",vbNullString)
ShowWindowHandle,0
EndSub
PrivateSubCommand11_Click()'起用ctrl-alt-del
DimretAsInteger
DimpOldAsBoolean
ret=SystemParametersInfo(SPI_SCREENSAVERRUNNING,True,pOld,0)
EndSub
PrivateSubCommand12_Click()'禁用ctrl-alt-del
DimretAsInteger
DimpOldAsBoolean
ret=SystemParametersInfo(SPI_SCREENSAVERRUNNING,False,pOld,0)
EndSub
PrivateSubCommand13_Click()'立即重新启动
ExitWindowsExEWX_REBOOT,0
EndSub
PrivateSubCommand14_Click()'关机
ExitWindowsExEWX_SHUTDOWN,0
EndSub
PrivateSubCommand15_Click()'退出网络登陆
ExitWindowsExEWX_LOGOFF,0
EndSub
PrivateSubCommand16_Click()'显示关机对话框
ExitWindowsExEWX_FORCE,0
EndSub
PrivateSubCommand2_Click()'显示开始菜单
DimHandleAsLong,FindClassAsLong
FindClass=FindWindow("Shell_TrayWnd","")
Handle=FindWindowEx(FindClass,0,"Button",vbNullString)
ShowWindowHandle,1
EndSub
PrivateSubCommand5_Click()'隐藏系统托盘
DimFindClassAsLong,HandleAsLong
FindClass=FindWindow("Shell_TrayWnd","")
Handle=FindWindowEx(FindClass,0,"TrayNotifyWnd",vbNullString)
ShowWindowHandle,0
EndSub
PrivateSubCommand6_Click()'显示系统托盘
DimFindClassAsLong,HandleAsLong
FindClass=FindWindow("Shell_TrayWnd","")
Handle=FindWindowEx(FindClass,0,"TrayNotifyWnd",vbNullString)
ShowWindowHandle,1
EndSub
PrivateSubCommand7_Click()'显示任务栏
DimFindClassAsLong,FindClass2AsLong,ParentAsLong,HandleAsLong
FindClass=FindWindow("Shell_TrayWnd","")
FindClass2=FindWindowEx(FindClass,0,"ReBarWindow32",vbNullString)
Parent=FindWindowEx(FindClass2,0,"MSTaskSwWClass",vbNullString)
Handle=FindWindowEx(Parent,0,"SysTabControl32",vbNullString)
ShowWindowHandle,0
EndSub
PrivateSubCommand8_Click()'隐藏任务栏
DimFindClassAsLong,FindClass2AsLong,ParentAsLong,HandleAsLong
FindClass=FindWindow("Shell_TrayWnd","")
FindClass2=FindWindowEx(FindClass,0,"ReBarWindow32",vbNullString)
Parent=FindWindowEx(FindClass2,0,"MSTaskSwWClass",vbNullString)
Handle=FindWindowEx(Parent,0,"SysTabControl32",vbNullString)
ShowWindowHandle,1
EndSub
PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)
End
EndSub
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
此文章,主要实现了C#利用Windows Api 获取外部程序中的ListView控件中的数据,也算是C# 使用API的一个高级一些的例子吧。下面列出API相关的声明部分: /// <summary> /// 作者: 三角猫 /// 网址: ...
《深入解析:Windows操作系统》(第4版)是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。...
api-ms-win-core-path-l1-1-0.dll是Windows操作系统中的一个64位动态链接库(DLL),属于Windows系统文件的一部分。它提供了用于路径管理的系统函数的接口,为程序提供了有效地处理文件和目录路径的能力,从而增强了...
本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...
深入解析WINDOWS操作系统(第4版) ISBN:9787121039690 本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及...
api-ms-win-core-path-l1-1-0.dll是Windows操作系统中的一个32位动态链接库(DLL),属于Windows系统文件的一部分。它提供了用于路径管理的系统函数的接口,为程序提供了有效地处理文件和目录路径的能力,从而增强了...
本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...
许多系统都通过拦截技术(spying techniques)利用现有windows应用程序。而拦截的一个重要目的,并不只是为应用程序提供更高级功能,而是为完成调试。 与老式操作系统(如dos,win3.xx)不同,现有操作系统(如...
在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...
本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...
本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...
在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...
本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...
本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对Windows Server 2003、Windows XP和...
利用Windows NT的安全性保护Internet 和Intranet站点 发布多虚拟Web服务器 锁定个Windows NT工作站 使用Windows NT许可协议管理器 设置许可协议复制 添加和删除客户访问许可协议(CALS) 建立许可协议组 网络客户管理...
在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...
在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...
主要内容通过.NET Core ...演示了如何使用ASP.NET MVC 6和Web API创建Web应用程序,以及利用SignalR和WebHooks的推送通知介绍专业开发功能,例如单元测试,通过MVVM模式在WPF和Universal Windows Platform之间共享代码
在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...
delphi对windows高级编程的很多例子:delphi实现屏幕落雪效果,按键转汉字,模拟输入法程序,利用消息钩子屏蔽定时器,利用窗口过程钩子截获QQ账号,判断用户目前是否在操作电脑