ايران ويج

نسخه‌ی کامل: Shell
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
چطور مي شه بعد از اينكه دستوري رو در خط فرمان استفاده كرديم(shell) جواب سيستم كه بايد در خط فرمان نمايش داده بشه به جاي نمايش در خط فرمان در برنامه خودمون مثلا در يك text چاپ كنيم؟
میتونید نتایجو بریزید توی یه فایل:
dir c:\windows > a.txt
شما باید از توابع api استفاده کنین ابتدا باید یک پروسه برای dos بوجود بیارین و با استفاده از createpipe و readpipe و witepipe اطلاعاتو بگیرین این پونیتیه که من تو دلفی واسه این کار نوشتم
کد:
unit dosoutput;

interface
uses
sysutils,windows,classes,forms;
procedure getDosoutput(DosApp:String;list:tstrings) ;
implementation
procedure getDosoutput(DosApp:String;list:tstrings) ;
  var
   Security : TSecurityAttributes;
   ReadPipe,WritePipe : THandle;
   start : TStartUpInfo;
   ProcessInfo : TProcessInformation;
   Buffer : Pchar;
   BytesRead : DWord;
   Apprunning : DWord;
  begin
    Security.nlength := SizeOf(TSecurityAttributes) ;
    Security.binherithandle := true;
    Security.lpsecuritydescriptor := nil;
   if Createpipe (ReadPipe, WritePipe, @Security, 0) then begin
    Buffer := AllocMem(2049) ;
    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],2048,BytesRead,nil) ;
        OemToAnsi(Buffer,Buffer) ;
        list.Add(String(Buffer)) ;
      until (BytesRead <2048) ;
   end;
   FreeMem(Buffer) ;
   CloseHandle(ProcessInfo.hProcess) ;
   CloseHandle(ProcessInfo.hThread) ;
   CloseHandle(ReadPipe) ;
   CloseHandle(WritePipe) ;
   end;
  end;
end.
ممنون. ولي كسي سورس VB رو نداره؟ من مي خوام مستقيم در برنامه نشون داده بشه.
(۰۲-مهر-۱۳۸۷, ۱۸:۴۹:۴۹)unknown_hcr نوشته است: [ -> ]ممنون. ولي كسي سورس VB رو نداره؟ من مي خوام مستقيم در برنامه نشون داده بشه.
با این جواب چه مشکلی داری؟
نقل قول: میتونید نتایجو بریزید توی یه فایل:
dir c:\windows > a.txt
یه richtextbox بزار رو فرمت خاصیت فیل نیمش رو بده a.txt حالا نتویجشو میتونی ببینی(لقمه که نباید جویده باشه)