أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

INFO: منع إطار وحدة التحكم من اختفاء

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

99115
الموجز
عند بدء تشغيل تطبيق وحدة تحكم إما من مستكشف Windows NT إدارة الملفات "إدارة البرامج" أو عن طريق كتابة بدء <progname> تنفيذ من موجه الأوامر في وحدة التحكم الخاصة به. يختفي وحدة التحكم هذه بمجرد إنهاء التطبيق وحفظ لذلك المستخدم لا يمكن قراءة أي شيء كتابة إلى الشاشة بين الإيقاف المؤقت الأخير إنهاء البرنامج. هناك أساليب جهازي لمنع اختفاء إطار وحدة التحكم.
معلومات أخرى

الطريقة 1: إيقاف مؤقت في حالة تشغيل العملية في "وحدة التحكم فصل"

الأسلوب الأول لتطبيق تطبيق وحدة تحكم غير الإنهاء فوراً عند تشغيله في إطار وحدة تحكم منفصلة. ليس من المحتمل أنك قد تريد لتطبيق دوماً توقف مؤقتاً بعد عرض معلومات إلى إطار وحدة التحكم عند بدء تشغيل من الموجه. ومع ذلك، لا يوجد أي API (واجهة برمجة التطبيقات) مباشرة يحدد ما إذا كان التطبيق مشاركة وحدة تحكم مع CMD.EXE. هذا الأسلوب البحث في الموقع الحالي المؤشر وحدة التحكم و في حال (0,0) ثم البرنامج يفترض تشغيله في إطار وحدة تحكم منفصلة.

رمز نموذج

   #include <windows.h>   #include <stdio.h>   #include <conio.h>   CONSOLE_SCREEN_BUFFER_INFO csbi;   HANDLE hStdOutput;   BOOL bUsePause;   void main(void)   {      hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);      if (!GetConsoleScreenBufferInfo(hStdOutput, &csbi))      {         printf("GetConsoleScreenBufferInfo failed: %d\n", GetLastError());         return;      }      // if cursor position is (0,0) then use pause      bUsePause = ((!csbi.dwCursorPosition.X) &&                   (!csbi.dwCursorPosition.Y));      printf("Interesting information to read.\n");      printf("More interesting information to read.\n");      // only pause if running in separate console window.      if (bUsePause)      {         int ch;         printf("\n\tPress any key to exit...\n");         ch = getch();      }   }				
ملاحظة: هذه الطريقة لن تعمل إذا المستخدم تضم شاشة واضحة (CLS) ومن تنفيذ التطبيق في خطوة واحدة (على سبيل المثال، CLS [C:\] & <progname>) ، لأن ضع المؤشر لن يكون (0، 0) ، ولكن يستخدم التطبيق وحدة التحكم، التي ينتمي إليها CMD.EXE.

الطريقة 2: بدء وحدة التحكم مع cmd.exe /K

هذا الأسلوب من أجل بدء تشغيل تطبيق وحدة تحكم في إطار منفصل ثم فرض الإطار إلى تبقى بعد تم إنهاء التطبيق. يمكن للتطبيق استخدام سطر الأوامر التالية مع WinExec() CreateProcess() ، أو في ملف دفعي:
consoleapp.exe /K cmd
بعد أن تم إنهاء consoleapp.exe يجعل رمز التبديل /K إطار وحدة التحكم تظل موجودة على الشاشة. يمكن للمستخدم التطبيق ثم اكتب الأمر "إنهاء" لإغلاق إطار وحدة التحكم.

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 99115 - آخر مراجعة: 11/21/2006 15:46:16 - المراجعة: 4.1

  • Microsoft Win32 واجهة برمجة تطبيقات
  • kbmt kbconsole kbinfo kbkernbase kbprogramming KB99115 KbMtar
تعليقات
html>