كيف يمكنني إظهار بعض المخرجات من قاعدة البيانات على شاشة دوس؟
شاشة دوس
طبعاً أنا أقصد أن يكون البرنامج هو برنامج ويندوز في الأصل ولكن أحتاج لإظهار بعض المخرجات على دوس في نفس برنامج الويندوز
آسف لعدم التفصيل أول مرة..
سلام عليكم
مارأيك في أن يكون تطبيق دوس و تطبيق ويندوز و تستدعي الدوس من الويندوز مع تمرير له مثلا ملف نصي يقرأه لإظهار معلومات معينة
أخي الكريم،
إذا كنت ستنفذ برنامج الدوس من داخل برنامجك فيمكنك إستخدام الـ 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;
شكرا لك على الرد الجميل فعلاً Mo3taz
شكرا جزيلا لك
هذا الموضوع مغلق.