powershell 调用API显示或隐藏指定程序的主窗口
powershell 调用API显示或隐藏指定程序的主窗口
001. 前言
一同事碰上这种情况:某个单实例的程序不知为何挂在后台运行,托盘中也找不到图标(一般是有的),但可以在任务管理器中看到该程序处于运行状态。问我:能不能让这程序的界面显示出来呢?二话不说立马开始折腾(没错是个妹子 ╯▽╰ )。
嗯,肯定有人想说:这不很简单,直接kill了重新运行~ 。但是,有些情况就是不能kill,所以只好试试API了。
002. 正文
下面开始代码:
<#.NOTES===========================================================================Created with: SAPIEN Technologies, Inc., PowerShell Studio 2014 v4.1.58Created on: 2017/12/29 Created by: hokis===========================================================================.DESCRIPTION1、用于显示或隐藏指定程序主窗口2、FindWindow 函数,获取指定窗口句柄。第一参数为窗口的类名(可为空),第二参数为窗口标题文本3、ShowWindow 函数,设置指定窗口的显示状态。第一参数为指定窗口的句柄,第二参数即为需要设置的状态(部分常用值:0-隐藏,1-正常显示,2-最小化,3-最大化,9-还原)
#>$code = @'
[DllImport("user32.dll", EntryPoint = "FindWindow")] public extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "ShowWindow", CharSet = CharSet.Auto)] public extern static bool ShowWindow(IntPtr hwnd, uint nCmdShow);
'@
#引入API
$myAPI = Add-Type -MemberDefinition $code -Name myAPI -PassThru
#测试CMD窗口(需先运行一个CMD窗口)
$cmdWin = @("ConsoleWindowClass", "管理员: 命令提示符")
#显示(1或9)或隐藏(0)
$myapi::ShowWindow($myAPI::FindWindow($cmdWin[0], $cmdWin[1]), 9) | Out-Null
10行搞定,嗯,还是不错的。
当然,这个脚本有一些限制:
1. 至少需要知道窗口的标题文本。窗口的类名可以通过专业工具(如:spy++)得到。
2. 未考虑多个窗口同一个标题的情况,如果有此情况,请慎用。
003. 后记
这个版本其实受到启发才得以精简成10行,一开始的版本是写得比较复杂(还定义了C#类、静态方法等一堆)。
-END-
参考:PowerShell 技能连载 - 显示或隐藏窗口 | 叹为观止
powershell 调用API显示或隐藏指定程序的主窗口相关推荐
- 隐藏指定程序的托盘图标-64位Windows10适用
隐藏指定程序的托盘图标-64位Windows10适用 1.现成的exe(在上面的链接里 2.C/C++代码 3.开机登陆后延时10S执行 强迫症笔者近来看到托盘里有几个程序,日常会使用到但是不会对其托 ...
- 如何获得指定进程的主窗口
我们知道一个进程可能是没有主窗口(比如系统的服务进程)而有的进程可能又拥有不止一个的主窗口(比如OutLook软件),那么我们该如何才能取得指定进程的所有主窗口呢? 我们必须明确我们感兴趣" ...
- 隐藏控制台程序的dos窗口
有时侯写一个控制台程序,不需要在前台出现类似DOS窗口的console窗口,这就要隐藏它:隐藏它很简单,只需在程序前面加上 #pragma comment( linker, "/subsys ...
- 计算机怎么隐藏应用程序,在窗口中隐藏 RemoteApp 程序弹出窗口
修补程序信息 可以从 Microsoft 获得受支持的修复程序.然而,此修补程序仅用于解决本文中描述的问题.此修复程序仅适用于遇到本文中描述的问题的系统.此修补程序可能会接受进一步的测试.因此,如果这 ...
- react调用api等待返回结果_程序员:RPC远程调用原理浅析
RPC 基本概念 RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务 本地过程调用:如果需要将本地student对象的age+1,可以实现一 ...
- C#:将另一个应用程序的主窗口移至屏幕最前
2019独角兽企业重金招聘Python工程师标准>>> 使用WindowsAPI函数SwitchToThisWindow,可以将指定窗口移动到屏幕最前. 如果要将另一个应用程序的窗口 ...
- 防止多重启动之调用Api [收集2005090201]
防止多重启动之调用Api (效果:第二次启动程序则前一进程的窗口跳到最前) using System.Threading; private const int SW_NORMAL = 1; // se ...
- nova launcher_如何使用Nova Launcher从Android的应用程序抽屉中隐藏应用程序
nova launcher Not every app deserves a spot in your app drawer. Maybe there are some built-in apps y ...
- Flash Player小程序(内嵌窗口)在Chrome、Firefox、Edge、360极速/安全、IE 8、Oprea 36、QQ、搜狗等浏览器上的应用
Flash Player小程序(内嵌窗口):基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )开发,底 ...
最新文章
- 《每天学点博弈论全集》-读书总结
- 分享 C++命名空间的解释
- C语言-数据结构与其他数据形式
- 数据库考研SQL操作
- 5-2 Windows消息队列 (25分)
- Java反序列化漏洞研究
- Keras——用Keras搭建线性回归神经网络
- win10系统 计算机配置要求高吗,win10流畅配置要求有哪些
- GALGAME 剧本提取工具
- 软件项目建议书模板(免费)
- 聚类算法(DBSCAN)
- Quuppa_基站灯闪烁原因
- 网站账号中密码的加密方式
- 交换机与路由器技术-04-远程管理交换机
- 学习JavaScript这一篇就够了
- 2月书讯(下)| 新年到,新书到!
- 【网络安全】CSRF漏洞详细解读
- MarkMind使用技巧
- python print用法可以不加引号吗_python的print函数不加括号吗
- Linux服务器迁移文件系统,DD方式迁移Linux系统.pdf
热门文章
- win11系统之win11亮点
- 国产化服务器兼容系统,加速国产化应用新进程,FinClip与统信UOS完成兼容互认证...
- 站长在线Python精讲:Python中正则表达式的语法详解
- %s格式符 输入输出字符串
- 计算机专业考研100+不是梦!
- 推荐系统遇上深度学习(十九)--探秘阿里之完整空间多任务模型ESSM
- 一起来浅谈使用苹果 M1 MacBook Pro 的体验感受!
- dnf剑魂buff等级上限_DNF:这才叫“念帝”!这点都不懂,旋涡普雷团没人要!...
- ZZULIOJ-1074,百钱买百鸡(Java)
- 易课寄在线购课系统开发笔记(十一)--完成课程列表查询的功能