`
hereson2
  • 浏览: 462417 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

vb api 控制 任务栏 桌面 托盘。。

阅读更多
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
分享到:
评论

相关推荐

    任务栏及托盘图标显示/隐藏实例VB版

    综上所述,这个VB程序是一个实用的小工具,通过调用Windows API,实现了对任务栏和系统托盘图标的显示/隐藏控制。对于VB初学者或希望定制Windows界面的用户来说,这是一个有价值的参考实例。同时,它也展示了如何...

    VB 实现隐藏任务栏

    在VB(Visual Basic)编程...总之,通过VB和Windows API,我们可以轻松实现对任务栏的控制,这种技术在开发特殊桌面环境或者自定义用户界面时非常有用。理解并掌握API调用和句柄的概念,是提升VB编程能力的重要一步。

    任务栏托盘弹出窗口VB6源代码

    标题中的“任务栏托盘弹出窗口VB6源代码”是指使用Visual Basic 6(VB6)编程语言创建的一个程序,该程序能够实现在Windows任务栏通知区域(托盘区)上滑动弹出窗口的功能。这个功能通常用于软件的系统托盘图标,当...

    vb 一个可以隐藏任务栏(Traybar)上的开始按钮

    实际上是指通过VB代码实现对Windows任务栏进行自定义操作,使其能够隐藏开始菜单、Switch Bar(在较旧版本的Windows中,这是一个可选的工具栏,通常包含系统托盘区域)、快速启动按钮以及任务栏上的其他图标,甚至...

    vb.net2005桌面便笺(系统托盘)

    5. **系统托盘集成**:系统托盘,也称为通知区域,位于任务栏右侧。VB.NET提供NotifyIcon控件,使得程序可以最小化到系统托盘,节省桌面空间。当用户点击托盘图标时,便笺窗口会重新显示。这涉及到窗体的Show和Hide...

    VB写的一个关于托盘源码

    在Windows操作系统中,托盘区域通常位于任务栏的右下角,显示各种应用程序的最小化图标,如QQ、Skype等。开发者可以利用VB来实现自定义的应用程序托盘功能,提高用户体验。 描述中提到的“实现托盘图标的装载与卸载...

    vb6.0系统托盘应用模块

    在VB6.0编程环境中,系统托盘应用模块是一个非常实用的功能,允许程序最小化到系统托盘区域,而不是任务栏。这样的设计可以为用户提供更简洁的桌面环境,同时保持程序运行状态。以下是对"vb6.0系统托盘应用模块"的...

    vb系统托盘例子

    这个API函数来自Windows Shell库,允许VB应用程序在任务栏的系统托盘区显示图标。 2. **ContextMenuStrip**: 这是VB.NET中的一个控件,用于创建右键点击时出现的上下文菜单。在这个例子中,它可能被用来创建托盘...

    vb 经典托盘气泡提示程序

    描述中的内容简洁,没有提供额外的技术细节,但我们可以推断该程序的核心功能是创建一个在任务栏托盘区运行的图标,并能弹出带有信息的气泡提示。 从标签“vb”我们可以确定,这个程序完全使用Visual Basic编写,这...

    VB实现窗口最小化小任务栏(源码)

    在VB(Visual Basic)编程中,窗口最小化到任务栏是一项常见的需求,特别是在开发桌面应用程序时。本项目提供了实现这一功能的源代码,使得开发者能够快速地将窗口应用的最小化操作改为仅显示在任务栏上,而不是隐藏...

    显示和隐藏任务栏Visual Basic6.0程序,VB6.0源代码

    首先,我们需要了解VB6中的API函数,因为VB6本身并不直接提供控制任务栏的内置方法。API(Application Programming Interface)是操作系统提供给程序员调用的一系列函数,用来执行特定的任务。在这个案例中,我们将...

    VB最小化到托盘源码

    系统托盘是Windows操作系统任务栏右下角的一个区域,通常包含时钟、网络连接图标等,开发者可以通过API调用来创建自定义的图标并处理用户与图标的交互。在VB中,最小化到托盘的功能主要涉及以下几个关键知识点: 1....

    VB6写的托盘操作实例

    系统托盘,也称为通知区域,位于Windows任务栏的右下角,通常包含各种图标,如网络连接、音量控制等。开发者常常利用系统托盘来创建后台运行的应用程序,这样即使窗口被最小化,程序依然可以继续执行其功能。 在VB6...

    VB动态在任务栏添加、移除、隐藏程序图标

    1. **API调用**:由于VB本身的功能有限,为了实现对任务栏图标的控制,通常需要使用Windows API(应用程序接口)。API函数如`Shell_NotifyIcon`是用于在任务栏创建、修改或删除通知区域(系统托盘)图标的。 2. **...

    VB程序做的系统托盘小软件

    在这个项目中,开发者使用VB创建了一个系统托盘应用程序,这是一种能够最小化到系统托盘区域的小型软件,通常用于提供后台服务或避免频繁地在任务栏中切换窗口。 系统托盘,也被称为通知区域,位于Windows操作系统...

    VB定时关机源代码(带桌面右下角托盘)

    总之,这个【VB定时关机源代码(带桌面右下角托盘)】项目涵盖了VB的基础知识,如控件使用、事件驱动编程、时间日期处理、API调用以及错误处理等,是学习VB编程和系统控制的一个良好实践案例。通过分析和理解这个...

    把应用程序的图标放在任务栏的右侧,是一个控件源代码(6KB)...

    总结来说,要将应用程序的图标放在任务栏的右侧,开发者需要了解Windows API,尤其是与任务栏相关的函数,并能编写相应的源代码来设置窗口属性和创建托盘图标。通过VB6或其他Windows编程语言,可以实现这个功能,而...

    vb 缩小到托盘

    在VB(Visual Basic)编程中,"缩小到托盘"是指将应用程序的窗口最小化后,不是显示在任务栏上,而是隐藏到系统托盘区。这样可以节省桌面空间,同时保持程序运行状态,用户可以通过点击系统托盘区的图标重新打开程序...

    vb代码 将窗口最小化到系统托盘

    在VB(Visual Basic)编程中,将窗口最小化到系统托盘是一项常见的需求,它可以使应用程序在用户按下最小化按钮时,不从任务栏消失而是转换为托盘图标,这样可以保持程序运行并提供一种非干扰式的用户体验。...

    VB托盘气泡提示控件

    1. **系统托盘**: 系统托盘是Windows操作系统任务栏右下角的一个区域,常驻各种小图标,如音量控制、网络连接等。通过使用托盘控件,开发者可以让程序在此处显示图标,以便在不使用时隐藏主界面,减少桌面的混乱。 ...

Global site tag (gtag.js) - Google Analytics