8

是否可以将命令放入 Windows XP .bat 文件中以将命令 shell 置于最前面?

4

7 回答 7

10

nircmd将执行此操作,尽管它涉及一些脚本。

nircmd win activate "titleofwindow"

你基本上需要知道你正在执行的 cmd 窗口的标题(你可以通过 windows 中的 TITLE 命令来设置)

因此:

TITLE %SOME_UNIQUE_VALE%
nircmd win activate %SOME_UNIQUE_VALE%

应该做的伎俩。

请注意,一些恶意软件工具使用 NirCmd 可执行文件(它不需要部署,因为它非常强大),这可能会给您带来问题。

于 2009-02-17T15:18:46.830 回答
4

让 cmd 提示窗口显示在前面的另一种方法是使用调用第二个 file2.bat 文件的命令结束 file1.bat,然后执行退出命令。

使用 file1.bat 的示例

....
[your code here]
start C:\file2.bat
exit

这将关闭 file1.bat 并打开第二个 .bat 文件,您可以在其中继续编写代码。这第二个 .bat 命令提示符将在其他窗口前面打开

于 2015-11-18T03:04:27.613 回答
3

从批处理文件中,没有。如果你想激活一个窗口,你必须使用SetActiveWindow()。如果您不想弄脏 Windows 编程,但仍想激活 Windows 和类似的简单东西,我强烈建议您查看Autoit。你总是可以从你的批处理文件中调用这个程序来让它完成任务。

于 2009-02-17T14:55:18.587 回答
3

我遇到了类似的问题,我必须开发一个简单的 C# 控制台应用程序,将窗口放在前面。使用窗口标题传递作为参数选择窗口。

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using  System.Runtime.InteropServices; 

 namespace ConsoleApplication1
 {
    class Program
    {

        [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
        public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);

        [DllImport("USER32.DLL")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);
        [DllImport("User32.dll")]
        private static extern bool IsIconic(IntPtr handle);
        [DllImport("User32.dll")]
        private static extern bool ShowWindow(IntPtr handle, int nCmdShow);
        const int SW_RESTORE = 9;
        public static void bringToFront(string title)
        {
            // Get a handle to the Calculator application.
            IntPtr handle = FindWindow(null, title);

            // Verify that Calculator is a running process.
            if (handle == IntPtr.Zero)
            {
                return;
            }
            if (IsIconic(handle))
            {
                ShowWindow(handle, SW_RESTORE);
            }

            Console.WriteLine("Founded ");
            SetForegroundWindow(handle);

        }

        static void Main(string[] args)
        {

            if (args.Length > 0)
                bringToFront(args[0]);
            else
                Console.WriteLine("specify program window title");

        }
    }
}

我的批处理脚本的代码类似于

tasklist /FI "IMAGENAME eq program.exe" | 如果错误级别为 1(program.exe),则查找“program.exe”,否则(BringToFront.exe“程序窗口标题”)

于 2016-07-13T13:19:46.443 回答
2

CMDOW也适用于这个和其他需要一些附加功能的 DOS 编程任务。易于使用且有据可查。但是请注意您的防病毒程序 - CMDOW 能够隐藏您的防病毒程序将作为可能病毒拾取的窗口。只需将其添加到您的例外列表中即可。CMDOW 是完全可移植的,绝对不是病毒,如果您担心它被第三方用来隐藏某些东西,只需将它藏在某个不明显的文件夹中即可。

于 2010-11-19T16:19:02.053 回答
2

尝试使用focusOn.bat

call focusOn.bat "My Title"
于 2020-11-11T15:50:49.560 回答
-1

另一种按名称切换到窗口的快速方法是通过 Ctrl+Shift+Esc 打开任务管理器。然后只需键入窗口标题的前几个字母以选择进程,然后按 Enter。

于 2015-10-28T01:33:00.900 回答