VB如何实现:隐藏外部程序窗口

VB如何实现:隐藏外部程序窗口,第1张

添加一个窗体

窗体代码:

Option

Explicit

Private

Sub

Form_Load()

'设置窗体过程

SetWindowHook

MehWnd

End

Sub

Private

Sub

Form_Unload(Cancel

As

Integer)

'取消窗体过程。

DelWindowHook

End

Sub

添加一个模块,模块代码:

Option

Explicit

Private

Declare

Function

ShowWindow

Lib

"user32"

_

(ByVal

hWnd

As

Long,

ByVal

nCmdShow

As

Long)

As

Long

Private

Declare

Function

SetWindowLong

Lib

"user32"

_

Alias

"SetWindowLongA"

(ByVal

hWnd

As

Long,

ByVal

nIndex

As

Long,

_

ByVal

dwNewLong

As

Long)

As

Long

Private

Declare

Function

CallWindowProc

Lib

"user32"

_

Alias

"CallWindowProcA"

_

(ByVal

lpPrevWndFunc

As

Long,

ByVal

hWnd

As

Long,

ByVal

Msg

As

Long,

_

ByVal

wParam

As

Long,

ByVal

lParam

As

Long)

As

Long

Private

Declare

Function

RegisterHotKey

Lib

"user32"

_

(ByVal

hWnd

As

Long,

ByVal

id

As

Long,

_

ByVal

fsModifiers

As

Long,

ByVal

vk

As

Long)

As

Long

Private

Declare

Function

UnregisterHotKey

Lib

"user32"

_

(ByVal

hWnd

As

Long,

ByVal

id

As

Long)

As

Long

Private

Declare

Function

GetWindowText

Lib

"user32"

Alias

"GetWindowTextA"

_

(ByVal

hWnd

As

Long,

ByVal

lpString

As

String,

ByVal

cch

As

Long)

As

Long

Private

Declare

Function

GetClassName

Lib

"user32"

Alias

"GetClassNameA"

_

(ByVal

hWnd

As

Long,

ByVal

lpClassName

As

String,

ByVal

nMaxCount

As

Long)

As

Long

Private

Declare

Function

GetForegroundWindow

Lib

"user32"

()

As

Long

Private

Const

GWL_WNDPROC

=

(-4)

Private

Const

WM_HOTKEY

=

&H312

Private

Const

VK_F7

=

&H76

Dim

hPrevWndProc

As

Long

'原先的窗口过程。

Dim

hPrevHandle

As

Long

'原先的窗口句柄。

Dim

hHotKey

As

Long

'热键句柄。

Dim

hH

As

Long

'隐藏的窗口句柄。

Private

Function

GetClassNameStr(ByVal

hWnd

As

Long)

As

String

'获取窗体的类名。

Dim

TempStr

As

String,

Rc

As

Long

Const

NAME_MAX_LEN

=

256

TempStr

=

Space(NAME_MAX_LEN)

Rc

=

GetClassName(hWnd,

TempStr,

NAME_MAX_LEN)

GetClassNameStr

=

StrConv(LeftB$(StrConv(TempStr,

_

vbFromUnicode),

Rc),

vbUnicode)

End

Function

Private

Function

GetWindowTextStr(ByVal

hWnd

As

Long)

As

String

'获取窗体标题。

Dim

TempStr

As

String,

Rc

As

Long

Const

NAME_MAX_LEN

=

256

TempStr

=

Space(NAME_MAX_LEN)

Rc

=

GetWindowText(hWnd,

TempStr,

NAME_MAX_LEN)

GetWindowTextStr

=

StrConv(LeftB$(StrConv(TempStr,

_

vbFromUnicode),

Rc),

vbUnicode)

End

Function

Private

Function

WindowProc(ByVal

hWnd

As

Long,

_

ByVal

uMsg

As

Long,

ByVal

wParam

As

Long,

_

ByVal

lParam

As

Long)

As

Long

'新的窗口过程。

Dim

hNowWindow

As

Long

If

uMsg

=

WM_HOTKEY

And

wParam

=

101

Then

'如果按下了指定热键。

hNowWindow

=

GetForegroundWindow()

If

GetClassNameStr(hNowWindow)

=

"Notepad"

_

And

GetWindowTextStr(hNowWindow)

=

_

"无标题

-

记事本"

And

hH

=

0

Then

'如果当前的活动窗口是无标题记事本。

'隐藏窗体。

hH

=

hNowWindow

ShowWindow

hH,

0

ElseIf

hH

<>

0

Then

'显示窗体

ShowWindow

hH,

5

hH

=

0

End

If

End

If

'调用原有的窗体过程。

WindowProc

=

CallWindowProc(hPrevWndProc,

_

hWnd,

uMsg,

wParam,

lParam)

End

Function

Public

Sub

SetWindowHook(ByVal

hWnd

As

Long)

'设置新的窗口过程。

hPrevHandle

=

hWnd

hPrevWndProc

=

SetWindowLong

_

(hPrevHandle,

GWL_WNDPROC,

AddressOf

WindowProc)

'设置热键(F7)。

hHotKey

=

RegisterHotKey(hPrevHandle,

101,

0,

VK_F7)

End

Sub

Public

Sub

DelWindowHook()

'恢复原有的窗口过程。

SetWindowLong

hPrevHandle,

GWL_WNDPROC,

hPrevWndProc

'取消热键

UnregisterHotKey

hPrevHandle,

hHotKey

End

Sub

右击任务栏→属性→隐藏不活动图标→自定义→选择你想隐藏的游戏图标。后面有个总是隐藏,选择他就好了。告诉你个最快的最小化所有打开窗口的快捷键WIN+D在按一次所有的窗口又会还原,很方便的。

方法一:使用VBScript

1、首先以隐藏系统自带的Win32版《写字板》程序为例,在记事本中写入如下代码: Dim WShell Set WShell = CreateObject("WScriptShell") WShellRun "wordpadexe", 0 '后面0的意思是“隐藏” Set WShell = Nothing 注意,代码第三行后的单引号 ' 是VB中的注释符号,其后面的语句没有执行效果。

2、把上述代码保存为vbs格式,文件名自拟,如下图——

3、此时双击刚刚保存的vbs文件就可以让写字板“隐身”运行,但我们还是可以在任务管理器中找到进程,如下图——

4、如果想隐身运行第三方程序,则需要修改代码,以软媒魔方的清理大师文件为例,代码如下: WShellRun """" & "D:\Program Files (x86)\Ruanmei\PCMaster\cleanmasterexe" & """", 0 '如果路径中含有空格,就需要在路径前后加引号和调用符号,格式为"""" & "路径" & """" Set WShell = Nothing

5、按照第2步的方式保存后,双击可以查看效果。需要注意的是,如果程序本身需要管理员权限,而且你的系统开启了UAC,权限请求的窗口是无法隐藏的,如下图——

不过在点击“是”之后就不会看到运行界面和任务栏图标了,只能在任务管理器中找到进程,如下图——

6、如果你想用命令提示符来运行这些vbs,可以采用如下命令格式: wscript "路径\文件名vbs" 实例: wscript "%userprofile%\Desktop\新建文件夹 (2)\hidewordpadvbs"

运行效果和双击vbs文件本身是一致的。

在调用安装窗口时就指定为隐藏啊,如Shell "安装程序文件名",vbHide '隐藏运行 如果是针对已运行的程序,可以用API来隐藏窗体比如我有一个“计算器”的程序在运行,点下面这个按钮就可以将它隐藏了Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Private Const SW_HIDE = 0 Private Sub Command1_Click()

Dim 窗口句柄 As Long

窗口句柄 = FindWindow(vbNullString, "计算器")

ShowWindow 窗口句柄, SW_HIDE

End Sub

方法1:使用goscreen等类似工具,进入虚拟的新桌面后,所有托盘图标都不会显示 2使用Ctrl+alt+del调出任务管理器,将explorerexe终止掉,然后再运行新任务,输入c:回车,重开explorer进程后,所有托盘图标都不会出现。 3终止掉一个系统进程服务,托盘就不会显示了,如下:。 A:彻底隐藏所有上图中已运行程序的小图标? 1打开运行对话框: 输入gpeditmsc命令, 2d出组策略窗口,依次选择“用户配置”--->>“管理模板”--->>“任务栏和[开 始]菜单”,然后在右边框中找到“隐藏通知区域”,双击选择已启用,然后重新启 动机器即可!! 注意:此中方法是全部隐藏任务栏图标,而且使用此方法后点击“开始”--->>“设置”--->>“任务栏和开始菜单”--->>在“任务栏”标签下的“通知区域”对话框中,“自定义”“隐藏不活动的图标”不能用的哦,如下图: 想恢复的设置时,只需还将组策略窗口中的“用户配置”--->>“管理模板”--->>“任务栏和[开始]菜单”的“隐藏通知区域”还原即可; B:临时隐藏部分任务栏中已运行程序的小图标? 开始”--->>“设置”--->>“任务栏和开始菜单”--->>在“任务栏”标签下的“通知区域”对话框,到达任务栏和开始菜单属性窗口(另一种方法:右击--->>“属性”即可),然后点击“自定义”即可对任务栏中图标进行设置,如下图: C:借助软件隐藏任务栏中已运行程序的小图标(例如:PS Tray Factory ) 这个软件可以使你将一些比较少用的系统托盘的图标隐藏;可以用热键快速访问那些隐藏的图标,使你在系统繁忙和浏览器重启时恢复系统托盘的图标。 PS Tray Factory 这个软件默认是英文版本的,但是你自己可以手动改为简体中文的哦 该法如下:安装完毕后运行此软件,然后打开Options选项框如下图: 在language框中选择Simplified Chinese(简体中文)即可了,余下的使用应该都会了吧,呵呵;

方法一

bat里有隐藏窗口的命令,很简单,只需要在代码头部加一段代码就可以了。

@echo off

if "%1" == "h" goto begin

mshta vbscript:createobject("wscriptshell")run("%~nx0 h",0)(windowclose)&&exit

:begin

::下面是你自己的代码。

方法二

在你批处理的相同目录下新建一个记事本,里面输入:

DIM objShell set objShell=wscriptcreateObject("wscriptshell")

iReturn=objShellRun("cmdexe /C c:\1bat", 0, TRUE)

(其中winbat为你自己的批处理名字,自己改)

然后把这个记事本保存为后缀名为vbe的文件,到时候你只要运行这个vbe文件就达到目的了!

可以写的简单点:

Set ws = CreateObject("WscriptShell")

wsrun "cmd /c c:\1bat",0

或者

CreateObject("WScriptShell")Run "cmd /c c:\1bat",0

(这种写法很多杀软报毒, 需要替换参数0)

最后那个0是指窗口参数,用法为:

0 隐藏窗口并激活另一窗口。

1 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。

2 激活窗口并以最小化显示该窗口。

3 激活窗口并以最大化显示该窗口。

4 按窗口最近的大小和位置显示。活动窗口保持活动。

5 以当前大小和位置激活并显示窗口。

6 最小化指定窗口并激活按 Z 序排序的下一个顶层窗口。

7 最小化显示窗口。活动窗口保持活动。

8 以当前状态显示窗口。活动窗口保持活动。

9 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志。

用下面软件试试,下载网址传给你了。如果是普通隐藏,右击任务栏选属性/自定义,在当前项目中选择某程序在选下拉列表中的“总是隐藏”或“在不活动时隐藏”按确定。

1)无忧隐藏-窗口及文件夹隐藏工具

910

2)老板键软件

3)小说易软件

500K

软件很小

ctrl+q老板键

隐藏

自动记录功能。

以上就是关于VB如何实现:隐藏外部程序窗口全部的内容,包括:VB如何实现:隐藏外部程序窗口、怎样隐藏任务栏的指定一个程序、Win10技巧:怎样隐藏任意程序运行界面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10134349.html

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

发表评论

登录后才能评论

评论列表(0条)

保存