Windows XP命令shell的“带到前面”

时间:2009-02-17 14:49:36

标签: windows batch-file windows-shell

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

7 个答案:

答案 0 :(得分:10)

nircmd会这样做,虽然它涉及一些脚本。

nircmd win activate "titleofwindow"

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

因此:

TITLE %SOME_UNIQUE_VALE%
nircmd win activate %SOME_UNIQUE_VALE%

应该这样做。

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

答案 1 :(得分:3)

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

答案 2 :(得分:3)

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

使用示例 file1.bat

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

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

答案 3 :(得分:2)

CMDOW对于此以及需要一些附加功能的其他DOS编程任务也很有用。简单易用,文档齐全。但请记住您的防病毒程序 - CMDOW能够隐藏您的防病毒程序可能会感染病毒的窗口。只需将其添加到您的例外列表中。 CMDOW是完全可移植的,绝对不是病毒,如果你有任何担心它被第三方用来隐藏某些东西,只需把它藏在某个不明显的文件夹里。

答案 4 :(得分:2)

我有一个类似的问题,我不得不开发一个简单的C#控制台应用程序,它带来了一个Window。使用窗口标题传递作为参数选择窗口。

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");

        }
    }
}

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

任务列表/ FI" IMAGENAME eq program.exe" |找到" program.exe" if errorlevel 1(program.exe)else(BringToFront.exe" Program Window Title")

答案 5 :(得分:0)

尝试使用focusOn.bat

call focusOn.bat "My Title"

答案 6 :(得分:-2)

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