نمایش نتایج 1 تا 6 از 6

نام تاپیک: نمایش برگشتی دستورات کامندی در برنامه

  1. #1

    Arrow نمایش برگشتی دستورات کامندی در برنامه

    با سلام
    مثلا من دستور Dir رو توسط برنامم اجرا میکنم.
    چطوری میتونم برگشتی این دستور رو مثلا در یک ممو ببینم.
    ممنون از جوابتون.


  2. #2

    نقل قول: نمایش برگشتی دستورات کامندی در برنامه

    تابع :

    function GetDosOutput(CommandLine: string; Work: string = 'C:\'): string;
    var
    SA: TSecurityAttributes;
    SI: TStartupInfo;
    PI: TProcessInformation;
    StdOutPipeRead, StdOutPipeWrite: THandle;
    WasOK: Boolean;
    Buffer: array[0..255] of AnsiChar;
    BytesRead: Cardinal;
    WorkDir: string;
    Handle: Boolean;
    begin
    Result := '';
    with SA do begin
    nLength := SizeOf(SA);
    bInheritHandle := True;
    lpSecurityDescriptor := nil;
    end;
    CreatePipe(StdOutPipeRead, StdOutPipeWrite, @SA, 0);
    try
    with SI do
    begin
    FillChar(SI, SizeOf(SI), 0);
    cb := SizeOf(SI);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
    wShowWindow := SW_HIDE;
    hStdInput := GetStdHandle(STD_INPUT_HANDLE); // don't redirect stdin
    hStdOutput := StdOutPipeWrite;
    hStdError := StdOutPipeWrite;
    end;
    WorkDir := Work;
    Handle := CreateProcess(nil, PChar('cmd.exe /C ' + CommandLine),
    nil, nil, True, 0, nil,
    PChar(WorkDir), SI, PI);
    CloseHandle(StdOutPipeWrite);
    if Handle then
    try
    repeat
    WasOK := ReadFile(StdOutPipeRead, Buffer, 255, BytesRead, nil);
    if BytesRead > 0 then
    begin
    Buffer[BytesRead] := #0;
    Result := Result + Buffer;
    end;
    until not WasOK or (BytesRead = 0);
    WaitForSingleObject(PI.hProcess, INFINITE);
    finally
    CloseHandle(PI.hThread);
    CloseHandle(PI.hProcess);
    end;
    finally
    CloseHandle(StdOutPipeRead);
    end;
    end;


    استفاده :

      Memo1.Text := GetDosOutput('dir', 'd:\');


    راه دیگه هم اینکه خروجی دستورات اجرا شده رو تو یک فایل بریزید و فایل رو تو برنامه باز کنید ، مثلا برای ذخیره خروجی دستور dir تو فایل A.txt :
    dir>a.txt

  3. #3
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    963

    نقل قول: نمایش برگشتی دستورات کامندی در برنامه

    با سلام
    جناب آقای تاجیک گرامی آیا کد آماده ای برای این کار سراغ ندارین.من تو زبان VB با خوندن فایلی شبیه a.txt که در دستور Dir>a.txt گفتید با Line Input گاهی مشکل داشتم که البته اشکال از کد من نبود و این کد گاهی کل خط رو نمی خوند.
    آیا تو توابع API برای بدست آوردن خروجی دستور داس در یک رشته تابعی داریم؟

  4. #4

    نقل قول: نمایش برگشتی دستورات کامندی در برنامه

    من از تابع بالا استفاده کردم که به درستی کار میداد.


  5. #5

    نقل قول: نمایش برگشتی دستورات کامندی در برنامه

    آیا تو توابع API برای بدست آوردن خروجی دستور داس در یک رشته تابعی داریم؟
    خیر تابع API برای همچین کاری وجود نداره ، میتونید همون تابع رو ترجمه کنید .

  6. #6

    نقل قول: نمایش برگشتی دستورات کامندی در برنامه

    ممنون از آقا مجتبی
    برا دلفی های 2009 به بالا که یونیکد رو پشتیبانی میکنه میتونید از پست زیر استفاده کنید.
    https://barnamenevis.org/showthread.p...%81%DB%8C-2009


برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •