标题: [系统相关] [已解决]批处理如何检测程序是否在前台运行? [打印本页]
作者: hentai87 时间: 2019-2-23 18:34 标题: [已解决]批处理如何检测程序是否在前台运行?
本帖最后由 hentai87 于 2019-3-5 12:22 编辑
搜了好久,一个相关的命令都找不到
作者: ivor 时间: 2019-2-23 20:48
本帖最后由 ivor 于 2019-3-3 10:15 编辑
powershell- #检测指定cmd窗口是否为活动窗口,修改("ConsoleWindowClass","命令提示符") 检测指定程序
- Add-Type @"
- using System.Runtime.InteropServices;
- public class WinApi {
- [DllImport("user32.dll")]
- public static extern int FindWindow(string lpClassName, string lpWindowName);
-
- [DllImport("user32.dll")]
- public static extern int GetForegroundWindow();
- }
-
- "@
-
- while($true){
- if([WinApi]::FindWindow("ConsoleWindowClass","命令提示符") -ne [WinApi]::GetForegroundWindow()){
- #code here
- Write-Host cmd is not font window.
- }else{
- #code here
- Write-Host cmd is font window.
- }
- sleep 1
- }
复制代码
作者: hentai87 时间: 2019-2-24 11:58
本帖最后由 hentai87 于 2019-2-24 12:46 编辑
回复 2# ivor
似乎只支持非管理员权限运行的程序
作者: hentai87 时间: 2019-2-24 12:11
本帖最后由 hentai87 于 2019-2-24 12:46 编辑
回复 2# ivor
怎么对管理员程序声效,权限运行也没用
作者: ivor 时间: 2019-2-24 12:49
回复 4# hentai87
非也非也!只是因为管理员启动的cmd,窗口标题是:管理员: 命令提示符。
作者: hentai87 时间: 2019-2-24 12:57
本帖最后由 hentai87 于 2019-3-5 12:23 编辑
回复 5# ivor
CMD测试通过。
作者: ivor 时间: 2019-3-4 12:12
本帖最后由 ivor 于 2019-3-4 13:10 编辑
回复 6# hentai87 - #检测指定cmd窗口是否为活动窗口,修改("ConsoleWindowClass","命令提示符") 检测指定程序
- Add-Type @"
- using System;
- using System.Threading;
- using System.Runtime.InteropServices;
- public class WinApi {
- [DllImport("user32.dll")]
- public static extern int FindWindow(string lpClassName, string lpWindowName);
-
- [DllImport("user32.dll")]
- public static extern int GetForegroundWindow();
- public static Thread t = new Thread(CountDown);
-
- public static int time = 120;
-
- public static void CountDown()
- {
- RefreshTitle();
- Environment.Exit(0);
- }
- public static void RefreshTitle(){
- while(time != 0){
- Thread.Sleep(1000);
- Console.Title = "关闭倒计时:" + (time -= 1);
-
- }
-
- }
- }
-
- "@
- #启动后台线程关闭程序倒计时 2分钟
- [WinApi]::t.Start()
-
- #关闭线程关闭程序倒计时
- #[WinApi]::t.Stop()
- while($true){
- if([WinApi]::FindWindow("ConsoleWindowClass","管理员: 命令提示符") -ne [WinApi]::GetForegroundWindow()){
- #code here
- Write-Host cmd is not font window.
- }else{
- #code here
- Write-Host cmd is font window.
- }
- sleep 1
- }
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |