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

ملخص

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

مزيد من المعلومات

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

الطريقة الأولى تنفيذ تطبيق وحدة تحكم ينتهي فورا عندما يكون قيد التشغيل في إطار وحدة منفصلة. من غير المحتمل أن كنت تريد تطبيق دوماً مؤقتاً بعد عرض المعلومات لإطار وحدة التحكم عند بدء تشغيل من موجه الأوامر. مع ذلك، لا يوجد أي 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:\] & < بروجنامي >)، لأن وضع المؤشر لن يكون (0، 0)، ولكن يستخدم التطبيق وحدة التحكم، التي ينتمي إليها cmd. EXE.

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

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

رقم الموضوع: 99115 - آخر مراجعة: 12‏/01‏/2017 - المراجعة: 1

تعليقات