جعل memo واجهة للDOS
#1
السلام عليكم
يعد التحية :
كيف استعمل TMemo مع الDOS
أي تطبيق اوامر الDOS في واجهة الدلفي عبر TMemo
أو اي مركبة اخرى بارك الله فيكم
الرد
#2
وعليكم السلام ورحمة الله
كود :
{ The example runs 'chkdsk.exe c:\' and displays the output to Memo1 Put a TMemo (Memo1) and a TButton (Button1) in your form Put this code in the OnCLick of Button1: } 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('chkdsk.exe c:\',Memo1); end
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#3
و عليكم السلام و رحمة الله
أو هذا
http://www.delphi4arab.net/forum/showpos...ostcount=1
الرد
#4
السلام عليكم
حقيقة ما عساي ان اقول الا كلمات ادعوا الله عز وجل ان يستجيب لها
جازاكم الله كل خير ورزقكم الفردوس ان شاء الله و زادكم علما
لقد تقدمت في مشروعي 80% بفضل الله ثم بفضلكم يا إخوتي
و مزال لدي اشكال لإتمام البرنامج و هو
الوصول الى واجهة TELNET عبر MEMO أي عند كتابة أمر TELNET لا يستجيب و على سبيل المثال
الأوامر التالية
TELNET
O
192.168.1.1
usernam:admin
password:admin
reset
كيف تطبيقها في memo دفعة واحدة
دمتم لنا اساتذتنا بارك الله فيكم
الرد
#5
السلام عليكم و رحمة الله

إضافة لما ذكره الأستاذ kachwahed

في الدلفي 2009 و + يجب إضافة

كود :
... [COLOR=Green]UniqueString(DosApp);[/COLOR] if CreateProcess(nil, PChar(DosApp), ...
و إلا واجهت :
إقتباس :Exception class EAccessViolation with message 'Access violation at address 7C82F284 in module 'kernel32.dll'. Write of address 004B21F2'
إقتباس :
...

UniqueString is used only in cases where an application modifies the contents of a string after

  • Casting the string to a PAnsiChar or PWideChar in Delphi ...
و السلام عليكم
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم