سؤال

هل هناك أمر يمكنني وضعه في ملف Windows XP .bat لإحضار قذيفة الأمر إلى الأمام؟

هل كانت مفيدة؟

المحلول

من ملف دفعي، لا. إذا كنت ترغب في تنشيط نافذة، فعليك استخدامها SetActivewindow (). وبعد إذا كنت لا ترغب في الحصول على القذرة مع برمجة Windows ولكن لا تزال ترغب في تنشيط النوافذ والأشياء البسيطة مثل ذلك، أوصي بشدة بالتحقق Autoit. وبعد يمكنك دائما استدعاء هذا البرنامج من BatchFile الخاص بك للحصول على المهمة.

نصائح أخرى

nircmd. سوف تفعل هذا، على الرغم من أنها تنطوي على البرمجة النصية قليلا.

nircmd win activate "titleofwindow"

تحتاج أساسا إلى معرفة عنوان نافذة CMD التي تقوم بتنفيذها (يمكنك ضبط هذا عبر أمر العنوان في Windows)

هكذا:

TITLE %SOME_UNIQUE_VALE%
nircmd win activate %SOME_UNIQUE_VALE%

يجب أن تفعل الخدعة.

ملاحظة بعض أدوات البرامج الضارة التي تستخدمها NIRCMD القابلة للتنفيذ (لا تتطلب أي نشر كقوي للغاية) قد يتسبب ذلك في مشاكل.

هناك طريقة أخرى للحصول على نافذة موجه CMD لإظهارها في المقدمة هي عن طريق إنهاء File1.bat مع أمر لاستدعاء ملف File2.bat الثاني، متبوعا أمر خروج.

مثال باستخدام file1.bat.

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

يغلق هذا file1.bat ويفتح ملف .bat الثاني حيث يمكنك متابعة التعليمات البرمجية الخاصة بك. سيفتح موجه الأوامر الثاني .bat أمام النوافذ الأخرى

cmdow. مفيد أيضا لهذا ومهام البرمجة DOS الأخرى حيث تكون هناك حاجة إلى وظيفة صغيرة مضافة. سهلة الاستخدام ومثبت جيدا. مانع برنامج مكافحة الفيروسات الخاصة بك، على الرغم من - CMDOW لديه القدرة على إخفاء Windows الذي سيقوم برنامج مكافحة الفيروس باختيار الفيروسات المحتملة. فقط أضفها إلى قائمة الاستثناءات الخاصة بك. CMDOW محمولة تماما، وبالتأكيد ليس فيروسا، وإذا كان لديك أي مخاوف بشأن استخدامها من قبل طرف ثالث لإخفاء شيء ما، فما عليك ببساطة عن بعد في بعض المجلد غير الواضح في مكان ما.

كان لدي مشكلة مماثلة واضطررت إلى تطوير تطبيق وحدة التحكم 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");

        }
    }
}

رمز البرنامج النصي الخاص بي هو ثم شيء مشابه ل

قائمة عمل / فاي "ImageSname EQ Program.exe" | ابحث عن "program.exe" IF ErrorLevel 1 (program.exe) آخر (trugtofront.exe "عنوان نافذة البرنامج")

طريقة سريعة أخرى للتبديل إلى نافذة عبر الاسم عبر CTRL + SHIFT + ESC، الذي يفتح إدارة المهام. ثم اكتب فقط الأحرف القليلة الأولى من عنوان Windows لتحديد العملية، ثم اضغط على Enter.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top