ايران ويج

نسخه‌ي كامل: 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,n il,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 حالا نتویجشو میتونی ببینی(لقمه که نباید جویده باشه)
آدرس اصلي