8

コマンド シェルを前面に出すために Windows XP の .bat ファイルに入れることができるコマンドはありますか?

4

7 に答える 7

10

少しスクリプトが必要ですが、 nircmdがこれを行います。

nircmd win activate "titleofwindow"

基本的に、実行しているコマンド ウィンドウのタイトルを知る必要があります (これは、ウィンドウの TITLE コマンドで設定できます)。

したがって:

TITLE %SOME_UNIQUE_VALE%
nircmd win activate %SOME_UNIQUE_VALE%

トリックを行う必要があります。

一部のマルウェア ツールは NirCmd 実行可能ファイルを使用することに注意してください (非常に強力なため、展開は必要ありません)。これにより、問題が発生する可能性があります。

于 2009-02-17T15:18:46.830 に答える
4

cmd プロンプト ウィンドウを前面に表示するもう 1 つの方法は、file1.bat を 2 番目の file2.bat ファイルを呼び出すコマンドで終了し、その後に終了コマンドを実行することです。

file1.bat を使用した例

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

これにより、file1.bat が閉じられ、コードを続行できる 2 番目の .bat ファイルが開きます。この 2 番目の .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 "イメージ名 eq program.exe" | errorlevel 1 の場合は "program.exe" を検索 (program.exe) そうでない場合 (BringToFront.exe "Program Window Title")

于 2016-07-13T13:19:46.443 に答える
2

CMDOWは、これや、少し追加の機能が必要なその他の DOS プログラミング タスクにも役立ちます。使いやすく、よく文書化されています。ただし、ウイルス対策プログラムには注意してください。CMDOW には、ウイルス対策プログラムがウイルスの可能性として検出するウィンドウを非表示にする機能があります。例外リストに追加するだけです。CMDOW は完全に移植可能であり、間違いなくウイルスではありません。何かを隠すためにサード パーティによって使用されているという懸念がある場合は、どこかわかりにくいフォルダーに隠してください。

于 2010-11-19T16:19:02.053 に答える