`
weizhai12
  • 浏览: 144513 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

利用Windows API获得系统高级功能

 
阅读更多
利用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

分享到:
评论

相关推荐

    C sharp获取外部程序ListView中的数据(Windows Api + SysListView32).doc

    此文章,主要实现了C#利用Windows Api 获取外部程序中的ListView控件中的数据,也算是C# 使用API的一个高级一些的例子吧。下面列出API相关的声明部分: /// <summary> /// 作者: 三角猫 /// 网址: ...

    深入解析WINDOWS操作系统(第4版).pdf

    《深入解析:Windows操作系统》(第4版)是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。...

    api-ms-win-core-path-l1-1-0.dll【说明:Windows动态链接库、DLL、64位】

    api-ms-win-core-path-l1-1-0.dll是Windows操作系统中的一个64位动态链接库(DLL),属于Windows系统文件的一部分。它提供了用于路径管理的系统函数的接口,为程序提供了有效地处理文件和目录路径的能力,从而增强了...

    深入解析windows操作系统 第四版 英文版 chm 格式 卷一

    本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...

    深入解析Windows操作系统中文.part2.rar

    深入解析WINDOWS操作系统(第4版) ISBN:9787121039690 本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及...

    api-ms-win-core-path-l1-1-0.dll【说明:Windows动态链接库、DLL、34位】

    api-ms-win-core-path-l1-1-0.dll是Windows操作系统中的一个32位动态链接库(DLL),属于Windows系统文件的一部分。它提供了用于路径管理的系统函数的接口,为程序提供了有效地处理文件和目录路径的能力,从而增强了...

    深入解析windows操作系统(第4版)卷1

    本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...

    API hooking revealed

    许多系统都通过拦截技术(spying techniques)利用现有windows应用程序。而拦截的一个重要目的,并不只是为应用程序提供更高级功能,而是为完成调试。 与老式操作系统(如dos,win3.xx)不同,现有操作系统(如...

    Windows内部原理(十一):存储和文件系统

    在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...

    深入解析windows操作系统(第4版)卷3

    本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...

    深入解析windows操作系统(第4版)卷2

    本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...

    WINDOWS 内部原理 (八)

    在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...

    深入解析windows操作系统 第四版 英文版 chm 格式 卷二

    本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对 Windows Server 2003、Windows XP...

    Microsoft Windows Internals.pdf

    本书是著名的操作系统内核专家Mark Russinovich和David Solomon撰写的Windows操作系统原理的最新版著作,全面和深入地阐述了Windows操作系统的整体结构以及内部工作细节。本书针对Windows Server 2003、Windows XP和...

    windowsnt 技术内幕

    利用Windows NT的安全性保护Internet 和Intranet站点 发布多虚拟Web服务器 锁定个Windows NT工作站 使用Windows NT许可协议管理器 设置许可协议复制 添加和删除客户访问许可协议(CALS) 建立许可协议组 网络客户管理...

    windows 内部原理(一)

    在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...

    WINDOWS 内部原理(九)

    在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...

    C#高级編程(第10版)中文带书签完整版(文件太大此为第一部分)

    主要内容通过.NET Core ...演示了如何使用ASP.NET MVC 6和Web API创建Web应用程序,以及利用SignalR和WebHooks的推送通知介绍专业开发功能,例如单元测试,通过MVVM模式在WPF和Universal Windows Platform之间共享代码

    WINDOWS 内部原理(四)

    在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...

    delphi对windows高级编程的很多例子.rar_delphi api hook_delphi 钩子_屏幕_汉字输入_输入

    delphi对windows高级编程的很多例子:delphi实现屏幕落雪效果,按键转汉字,模拟输入法程序,利用消息钩子屏蔽定时器,利用窗口过程钩子截获QQ账号,判断用户目前是否在操作电脑

Global site tag (gtag.js) - Google Analytics