الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شاشة دوس

مغلق
بدأه jrahma في 3 ديسمبر 2003 · 5 رد · 862 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكنني إظهار بعض المخرجات من قاعدة البيانات على شاشة دوس؟

#2

طبعاً أنا أقصد أن يكون البرنامج هو برنامج ويندوز في الأصل ولكن أحتاج لإظهار بعض المخرجات على دوس في نفس برنامج الويندوز

آسف لعدم التفصيل أول مرة..

#3

سلام عليكم

مارأيك في أن يكون تطبيق دوس و تطبيق ويندوز و تستدعي الدوس من الويندوز مع تمرير له مثلا ملف نصي يقرأه لإظهار معلومات معينة

#4

أخي الكريم،

إذا كنت ستنفذ برنامج الدوس من داخل برنامجك فيمكنك إستخدام الـ procdure التالية(طبعا بعد إضافة مبمو1):

procedure TForm1.Button1Click(Sender: TObject);

procedure RunDosInMemo(DosApp:String;AMemo:TMemo);

const

ReadBuffer = 2400;

var

Security : TSecurityAttributes;

ReadPipe,WritePipe : THandle;

start : TStartUpInfo;

ProcessInfo : TProcessInformation;

Buffer : Pchar;

BytesRead : DWord;

Apprunning : DWord;

begin

With Security do begin

nlength := SizeOf(TSecurityAttributes);

binherithandle := true;

lpsecuritydescriptor := nil;

end;

if Createpipe (ReadPipe, WritePipe,

@Security, 0) then begin

Buffer := AllocMem(ReadBuffer + 1);

FillChar(Start,Sizeof(Start),#0);

start.cb := SizeOf(start);

start.hStdOutput := WritePipe;

start.hStdInput := ReadPipe;

start.dwFlags := STARTF_USESTDHANDLES +

STARTF_USESHOWWINDOW;

start.wShowWindow := SW_HIDE;

if CreateProcess(nil,

PChar(DosApp),

@Security,

@Security,

true,

NORMAL_PRIORITY_CLASS,

nil,

nil,

start,

ProcessInfo)

then

begin

repeat

Apprunning := WaitForSingleObject

(ProcessInfo.hProcess,100);

Application.ProcessMessages;

until (Apprunning <> WAIT_TIMEOUT);

Repeat

BytesRead := 0;

ReadFile(ReadPipe,Buffer[0],

ReadBuffer,BytesRead,nil);

Buffer[bytesRead]:= #0;

OemToAnsi(Buffer,Buffer);

AMemo.Text := AMemo.text + String(Buffer);

until (BytesRead < ReadBuffer);

end;

FreeMem(Buffer);

CloseHandle(ProcessInfo.hProcess);

CloseHandle(ProcessInfo.hThread);

CloseHandle(ReadPipe);

CloseHandle(WritePipe);

end;

end;

begin {button 1 code}

RunDosInMemo('tracert.exe',Memo1);

مثال لإستخدام السويتشز

// RunDosInMemo('"C:\Program Files\Sybase\Adaptive Server Anywhere 6.0\win32\dbbackup.exe"'+ ' -c '+

// '" uid=dba;pwd=xxxxl;dbf=c:\databasel\thDB.db"'+ ' -y -x c:\temp', Memo1);

end;

#5

شكرا لك على الرد الجميل فعلاً Mo3taz

#6

شكرا جزيلا لك

هذا الموضوع مغلق.

مواضيع مشابهة