- 浏览: 462417 次
- 性别:
- 来自: 广州
最新评论
-
lhgyy00:
很好,回去好好研究下,3Q
博客资源与博客工具大全 -
ljl.java:
♦
你会遇到几段恋情?很准的哦~ -
ljl.java:
♦
你会遇到几段恋情?很准的哦~ -
jzzwy:
你这个red5是什么版本 Iterator<IConne ...
red5获取在线用户列表 -
81365341:
看着标题“red5配置详解”点进来的,结果没看到一句和配置有关 ...
red5配置详解
VB无疑是最先进的编程工具之一,但在涉及windows 32位系统的核心编程方面——譬如一些高级功能的实现上,它仍然显得有些力不从心,这需要我们充分利用vb的强大的Windows API函数调用能力来弥补。以下代码将向您展示如何利用Windows API控制系统托盘(图标)区、开始菜单、任务栏以及禁用/起用ctrl-alt-del、退出网络登录、立即关机、重新启动等系统高级功能。
启动VB6,建立一个标准exe工程,添加14个command按钮,caption属性依次为 “隐藏开始菜单”、“显示开始菜单”、“隐藏系统托盘”、“显示系统托盘”、“禁用 ctrl-alt-del”、“起用 ctrl-alt-del”、“隐藏任务栏”、“显示任务栏”、“立即重新启动”、“关机”、“退出网络登陆”、“显示关机对话框”,调整上述控件到适当位置,双击窗体,写入以下代码:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'寻找窗口列表中第一个符合指定条件的顶级窗口
'lpClassName指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,'表示接收任何类
'lpWindowName指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;'或设为零,表示接收任何窗口标题
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'控制窗口的可见性
'hwnd窗口句柄,要向这个窗口应用由nCmdShow指定的命令
'nCmdShow为窗口指定可视性方面的一个命令
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
'在窗口列表中寻找与指定条件相符的第一个子窗口
'hWnd1在其中查找子的父窗口
'hWnd2从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long)
'退出windows,并用特定的选项重新启动
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
'允许获取和设置数量众多的windows系统参数
'uAction指定要设置的参数
Private Const EWX_LOGOFF = 0'中止进程,然后注销
Private Const EWX_SHUTDOWN = 1'关掉系统电源
Private Const EWX_REBOOT = 2'重新引导系统
Private Const EWX_FORCE = 4'强迫中止没有响应的进程
Private Const SPI_SCREENSAVERRUNNING = 97
Private Sub Command1_Click() '隐藏开始菜单
Dim Handle As Long, FindClass As Long
FindClass = FindWindow("Shell_TrayWnd", "")
Handle = FindWindowEx(FindClass, 0, "Button", vbNullString)
ShowWindow Handle, 0
End Sub
Private Sub Command11_Click() '起用 ctrl-alt-del
Dim ret As Integer
Dim pOld As Boolean
ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)
End Sub
Private Sub Command12_Click() '禁用 ctrl-alt-del
Dim ret As Integer
Dim pOld As Boolean
ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, pOld, 0)
End Sub
Private Sub Command13_Click() '立即重新启动
ExitWindowsEx EWX_REBOOT, 0
End Sub
Private Sub Command14_Click() '关机
ExitWindowsEx EWX_SHUTDOWN, 0
End Sub
Private Sub Command15_Click() '退出网络登陆
ExitWindowsEx EWX_LOGOFF, 0
End Sub
Private Sub Command16_Click() '显示关机对话框
ExitWindowsEx EWX_FORCE, 0
End Sub
Private Sub Command2_Click() '显示开始菜单
Dim Handle As Long, FindClass As Long
FindClass = FindWindow("Shell_TrayWnd", "")
Handle = FindWindowEx(FindClass, 0, "Button", vbNullString)
ShowWindow Handle, 1
End Sub
Private Sub Command5_Click() '隐藏系统托盘
Dim FindClass As Long, Handle As Long
FindClass = FindWindow("Shell_TrayWnd", "")
Handle = FindWindowEx(FindClass, 0, "TrayNotifyWnd", vbNullString)
ShowWindow Handle, 0
End Sub
Private Sub Command6_Click() '显示系统托盘
Dim FindClass As Long, Handle As Long
FindClass = FindWindow("Shell_TrayWnd", "")
Han
dle = FindWindowEx(FindClass, 0, "TrayNotifyWnd", vbNullString)
ShowWindow Handle, 1
End Sub
Private Sub Command7_Click() '显示任务栏
Dim FindClass As Long, FindClass2 As Long, Parent As Long, Handle As Long
FindClass = FindWindow("Shell_TrayWnd", "")
FindClass2 = FindWindowEx(FindClass, 0, "ReBarWindow32", vbNullString)
Parent = FindWindowEx(FindClass2, 0, "MSTaskSwWClass", vbNullString)
Handle = FindWindowEx(Parent, 0, "SysTabControl32", vbNullString)
ShowWindow Handle, 0
End Sub
Private Sub Command8_Click() '隐藏任务栏
Dim FindClass As Long, FindClass2 As Long, Parent As Long, Handle As Long
FindClass = FindWindow("Shell_TrayWnd", "")
FindClass2 = FindWindowEx(FindClass, 0, "ReBarWindow32", vbNullString)
Parent = FindWindowEx(FindClass2, 0, "MSTaskSwWClass", vbNullString)
Handle = FindWindowEx(Parent, 0, "SysTabControl32", vbNullString)
ShowWindow Handle, 1
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
End
End Sub
启动VB6,建立一个标准exe工程,添加14个command按钮,caption属性依次为 “隐藏开始菜单”、“显示开始菜单”、“隐藏系统托盘”、“显示系统托盘”、“禁用 ctrl-alt-del”、“起用 ctrl-alt-del”、“隐藏任务栏”、“显示任务栏”、“立即重新启动”、“关机”、“退出网络登陆”、“显示关机对话框”,调整上述控件到适当位置,双击窗体,写入以下代码:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'寻找窗口列表中第一个符合指定条件的顶级窗口
'lpClassName指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,'表示接收任何类
'lpWindowName指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;'或设为零,表示接收任何窗口标题
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'控制窗口的可见性
'hwnd窗口句柄,要向这个窗口应用由nCmdShow指定的命令
'nCmdShow为窗口指定可视性方面的一个命令
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
'在窗口列表中寻找与指定条件相符的第一个子窗口
'hWnd1在其中查找子的父窗口
'hWnd2从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long)
'退出windows,并用特定的选项重新启动
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
'允许获取和设置数量众多的windows系统参数
'uAction指定要设置的参数
Private Const EWX_LOGOFF = 0'中止进程,然后注销
Private Const EWX_SHUTDOWN = 1'关掉系统电源
Private Const EWX_REBOOT = 2'重新引导系统
Private Const EWX_FORCE = 4'强迫中止没有响应的进程
Private Const SPI_SCREENSAVERRUNNING = 97
Private Sub Command1_Click() '隐藏开始菜单
Dim Handle As Long, FindClass As Long
FindClass = FindWindow("Shell_TrayWnd", "")
Handle = FindWindowEx(FindClass, 0, "Button", vbNullString)
ShowWindow Handle, 0
End Sub
Private Sub Command11_Click() '起用 ctrl-alt-del
Dim ret As Integer
Dim pOld As Boolean
ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)
End Sub
Private Sub Command12_Click() '禁用 ctrl-alt-del
Dim ret As Integer
Dim pOld As Boolean
ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, pOld, 0)
End Sub
Private Sub Command13_Click() '立即重新启动
ExitWindowsEx EWX_REBOOT, 0
End Sub
Private Sub Command14_Click() '关机
ExitWindowsEx EWX_SHUTDOWN, 0
End Sub
Private Sub Command15_Click() '退出网络登陆
ExitWindowsEx EWX_LOGOFF, 0
End Sub
Private Sub Command16_Click() '显示关机对话框
ExitWindowsEx EWX_FORCE, 0
End Sub
Private Sub Command2_Click() '显示开始菜单
Dim Handle As Long, FindClass As Long
FindClass = FindWindow("Shell_TrayWnd", "")
Handle = FindWindowEx(FindClass, 0, "Button", vbNullString)
ShowWindow Handle, 1
End Sub
Private Sub Command5_Click() '隐藏系统托盘
Dim FindClass As Long, Handle As Long
FindClass = FindWindow("Shell_TrayWnd", "")
Handle = FindWindowEx(FindClass, 0, "TrayNotifyWnd", vbNullString)
ShowWindow Handle, 0
End Sub
Private Sub Command6_Click() '显示系统托盘
Dim FindClass As Long, Handle As Long
FindClass = FindWindow("Shell_TrayWnd", "")
Han
dle = FindWindowEx(FindClass, 0, "TrayNotifyWnd", vbNullString)
ShowWindow Handle, 1
End Sub
Private Sub Command7_Click() '显示任务栏
Dim FindClass As Long, FindClass2 As Long, Parent As Long, Handle As Long
FindClass = FindWindow("Shell_TrayWnd", "")
FindClass2 = FindWindowEx(FindClass, 0, "ReBarWindow32", vbNullString)
Parent = FindWindowEx(FindClass2, 0, "MSTaskSwWClass", vbNullString)
Handle = FindWindowEx(Parent, 0, "SysTabControl32", vbNullString)
ShowWindow Handle, 0
End Sub
Private Sub Command8_Click() '隐藏任务栏
Dim FindClass As Long, FindClass2 As Long, Parent As Long, Handle As Long
FindClass = FindWindow("Shell_TrayWnd", "")
FindClass2 = FindWindowEx(FindClass, 0, "ReBarWindow32", vbNullString)
Parent = FindWindowEx(FindClass2, 0, "MSTaskSwWClass", vbNullString)
Handle = FindWindowEx(Parent, 0, "SysTabControl32", vbNullString)
ShowWindow Handle, 1
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
End
End Sub
发表评论
-
TEA算法的VB实现代码的使用说明
2008-12-30 11:28 1937自从公开了TEA算法的VB代码之后一直有人追问我如何调用这两个 ... -
TEA算法的VB实现代码
2008-12-30 11:02 1647前些日子不少人都要挂QQ,有客户需求就自然有人去研究,所以不少 ... -
QQ通讯协议
2008-12-30 10:56 4197协议说明: 协议由报文 ... -
hoxede的QQ填充算法和TEA 加解密的python实现
2008-12-30 10:31 2904""" The MIT Lic ... -
如何从 Visual Basic 中调用 GetNetworkParams / GetAdapter
2008-12-30 09:52 17081. 启动一个新的 Visual Basic 标准 EX ... -
VB调用GetAdaptersInfo 的正确方法
2008-12-30 09:51 2729网上的教程没有一个能在多网卡或多IP下用的,总是在 Cop ... -
VB做的EXE文件设参数
2008-12-29 12:26 1198这个其实很简单 在 Private Sub Form_L ... -
VB常用字符串函数
2008-12-29 12:26 14901. ASC(X),Chr(X):转换字 ... -
VB常用函数
2008-12-29 12:25 23061. Time 返回系统时钟的当前时间。 Date 返回 ... -
VB使用*.res资源文件
2008-12-29 12:23 1673你一定也常常因苦于无法组织自己程序中大量的picture,而头 ... -
在不同的模式下实现定时关闭计算机
2008-12-29 12:20 872Option Explicit Const SM_CLEANB ... -
强制关闭指定QQ号
2008-12-29 12:19 1330'添加 Text1 Command1 ... -
VB读取武林外传内存地址
2008-12-29 12:18 2114一 模块代码 复制内容到剪贴板 代码: Option Expl ... -
怎么编程把用户名,密码提交到网页上的登录页?
2008-12-29 12:06 1466首先在程序中加入Webbrowser控件并加入引用 Micro ... -
在XP/2K 任务管理器的进程列表中隐藏当前进程
2008-12-29 12:05 1257新建一个模块,把以下代码复制进去,然后在load中调用即可实现 ... -
用VB制作IE工具条自定义按钮
2008-12-29 12:04 1202Private Sub UserControl_Resize( ... -
Webbrowser(Internet 控件)属性方法事件一览表
2008-12-29 11:56 4807想找个Webbrowser控件的详细使用手册,网上找了好久,都 ... -
使用vbs下载文件
2008-12-29 11:52 1552使用vbs下载文件 iLocal=LCase(Wscript. ... -
如何用VB制作半透明窗体?
2008-12-29 11:51 1703函数SetLayeredWindowAttributes ... -
VB程序实现文件拖放功能
2008-12-26 10:25 15801.新建一个模块,写入以 ...
相关推荐
综上所述,这个VB程序是一个实用的小工具,通过调用Windows API,实现了对任务栏和系统托盘图标的显示/隐藏控制。对于VB初学者或希望定制Windows界面的用户来说,这是一个有价值的参考实例。同时,它也展示了如何...
在VB(Visual Basic)编程...总之,通过VB和Windows API,我们可以轻松实现对任务栏的控制,这种技术在开发特殊桌面环境或者自定义用户界面时非常有用。理解并掌握API调用和句柄的概念,是提升VB编程能力的重要一步。
标题中的“任务栏托盘弹出窗口VB6源代码”是指使用Visual Basic 6(VB6)编程语言创建的一个程序,该程序能够实现在Windows任务栏通知区域(托盘区)上滑动弹出窗口的功能。这个功能通常用于软件的系统托盘图标,当...
实际上是指通过VB代码实现对Windows任务栏进行自定义操作,使其能够隐藏开始菜单、Switch Bar(在较旧版本的Windows中,这是一个可选的工具栏,通常包含系统托盘区域)、快速启动按钮以及任务栏上的其他图标,甚至...
5. **系统托盘集成**:系统托盘,也称为通知区域,位于任务栏右侧。VB.NET提供NotifyIcon控件,使得程序可以最小化到系统托盘,节省桌面空间。当用户点击托盘图标时,便笺窗口会重新显示。这涉及到窗体的Show和Hide...
在Windows操作系统中,托盘区域通常位于任务栏的右下角,显示各种应用程序的最小化图标,如QQ、Skype等。开发者可以利用VB来实现自定义的应用程序托盘功能,提高用户体验。 描述中提到的“实现托盘图标的装载与卸载...
在VB6.0编程环境中,系统托盘应用模块是一个非常实用的功能,允许程序最小化到系统托盘区域,而不是任务栏。这样的设计可以为用户提供更简洁的桌面环境,同时保持程序运行状态。以下是对"vb6.0系统托盘应用模块"的...
这个API函数来自Windows Shell库,允许VB应用程序在任务栏的系统托盘区显示图标。 2. **ContextMenuStrip**: 这是VB.NET中的一个控件,用于创建右键点击时出现的上下文菜单。在这个例子中,它可能被用来创建托盘...
描述中的内容简洁,没有提供额外的技术细节,但我们可以推断该程序的核心功能是创建一个在任务栏托盘区运行的图标,并能弹出带有信息的气泡提示。 从标签“vb”我们可以确定,这个程序完全使用Visual Basic编写,这...
在VB(Visual Basic)编程中,窗口最小化到任务栏是一项常见的需求,特别是在开发桌面应用程序时。本项目提供了实现这一功能的源代码,使得开发者能够快速地将窗口应用的最小化操作改为仅显示在任务栏上,而不是隐藏...
首先,我们需要了解VB6中的API函数,因为VB6本身并不直接提供控制任务栏的内置方法。API(Application Programming Interface)是操作系统提供给程序员调用的一系列函数,用来执行特定的任务。在这个案例中,我们将...
系统托盘是Windows操作系统任务栏右下角的一个区域,通常包含时钟、网络连接图标等,开发者可以通过API调用来创建自定义的图标并处理用户与图标的交互。在VB中,最小化到托盘的功能主要涉及以下几个关键知识点: 1....
系统托盘,也称为通知区域,位于Windows任务栏的右下角,通常包含各种图标,如网络连接、音量控制等。开发者常常利用系统托盘来创建后台运行的应用程序,这样即使窗口被最小化,程序依然可以继续执行其功能。 在VB6...
1. **API调用**:由于VB本身的功能有限,为了实现对任务栏图标的控制,通常需要使用Windows API(应用程序接口)。API函数如`Shell_NotifyIcon`是用于在任务栏创建、修改或删除通知区域(系统托盘)图标的。 2. **...
在这个项目中,开发者使用VB创建了一个系统托盘应用程序,这是一种能够最小化到系统托盘区域的小型软件,通常用于提供后台服务或避免频繁地在任务栏中切换窗口。 系统托盘,也被称为通知区域,位于Windows操作系统...
总之,这个【VB定时关机源代码(带桌面右下角托盘)】项目涵盖了VB的基础知识,如控件使用、事件驱动编程、时间日期处理、API调用以及错误处理等,是学习VB编程和系统控制的一个良好实践案例。通过分析和理解这个...
总结来说,要将应用程序的图标放在任务栏的右侧,开发者需要了解Windows API,尤其是与任务栏相关的函数,并能编写相应的源代码来设置窗口属性和创建托盘图标。通过VB6或其他Windows编程语言,可以实现这个功能,而...
在VB(Visual Basic)编程中,"缩小到托盘"是指将应用程序的窗口最小化后,不是显示在任务栏上,而是隐藏到系统托盘区。这样可以节省桌面空间,同时保持程序运行状态,用户可以通过点击系统托盘区的图标重新打开程序...
在VB(Visual Basic)编程中,将窗口最小化到系统托盘是一项常见的需求,它可以使应用程序在用户按下最小化按钮时,不从任务栏消失而是转换为托盘图标,这样可以保持程序运行并提供一种非干扰式的用户体验。...
1. **系统托盘**: 系统托盘是Windows操作系统任务栏右下角的一个区域,常驻各种小图标,如音量控制、网络连接等。通过使用托盘控件,开发者可以让程序在此处显示图标,以便在不使用时隐藏主界面,减少桌面的混乱。 ...