09-04-2010, 11:03 AM
09-04-2010, 11:32 AM
وعليكم السلام ورحمة الله
بالتوفيق.
كود :
{
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);
end09-04-2010, 02:05 PM
10-04-2010, 01:29 AM
السلام عليكم
حقيقة ما عساي ان اقول الا كلمات ادعوا الله عز وجل ان يستجيب لها
جازاكم الله كل خير ورزقكم الفردوس ان شاء الله و زادكم علما
لقد تقدمت في مشروعي 80% بفضل الله ثم بفضلكم يا إخوتي
و مزال لدي اشكال لإتمام البرنامج و هو
الوصول الى واجهة TELNET عبر MEMO أي عند كتابة أمر TELNET لا يستجيب و على سبيل المثال
الأوامر التالية
TELNET
O
192.168.1.1
usernam:admin
password:admin
reset
كيف تطبيقها في memo دفعة واحدة
دمتم لنا اساتذتنا بارك الله فيكم
حقيقة ما عساي ان اقول الا كلمات ادعوا الله عز وجل ان يستجيب لها
جازاكم الله كل خير ورزقكم الفردوس ان شاء الله و زادكم علما
لقد تقدمت في مشروعي 80% بفضل الله ثم بفضلكم يا إخوتي
و مزال لدي اشكال لإتمام البرنامج و هو
الوصول الى واجهة TELNET عبر MEMO أي عند كتابة أمر TELNET لا يستجيب و على سبيل المثال
الأوامر التالية
TELNET
O
192.168.1.1
usernam:admin
password:admin
reset
كيف تطبيقها في memo دفعة واحدة
دمتم لنا اساتذتنا بارك الله فيكم
16-01-2011, 10:20 PM
السلام عليكم و رحمة الله
إضافة لما ذكره الأستاذ kachwahed
في الدلفي 2009 و + يجب إضافة
و إلا واجهت :
إضافة لما ذكره الأستاذ 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 ...