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

نام تاپیک: اجرای دستورات cmd

  1. #1

    اجرای دستورات cmd

    چه طوری میشه برنامه ای نوشت کا مثل cmd همون دستورات رو بدی و اونا رو اجرا کنه
    ممنون

  2. #2
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814

    با سلام

    نقل قول نوشته شده توسط djscsi مشاهده تاپیک
    چه طوری میشه برنامه ای نوشت کا مثل cmd همون دستورات رو بدی و اونا رو اجرا کنه
    ممنون
    برای اجرا دستورات در Run از دستور Winexec استفاده کنید.
    کلمه فوق را در سایت جستجو کنید.
    موفق باشید

  3. #3

    نقل قول: اجرای دستورات cmd

    winexec یک تابع منسوخ هستش، CreateProcess بجای اون باید استفاده بشه.

    در ضمن، برای کاری که شما میخواید، دستورش اینه

    cmd.exe /c  «دستور مورد نظر» 
    و واسه دلفی

    var
    pi: TProcessInformation;
    si: TStartupInfo;
    cmd_command: String;
    .
    .
    .
    fillMemory(@si, sizeof(si),0);
    si.cb := sizeof( si );

    CreateProcess(
    'cmd.exe',
    PChar('/c ' + cmd_command),
    nil, nil, false,
    NORMAL_PRIORITY_CLASS, nil, nil,
    si, pi );

    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );


    برنامه رو بصورت کنسول درست کنی، خروجی دستورات تو همون کنسول برنامه خودت نمایش داده میشه.

  4. #4

    نقل قول: اجرای دستورات cmd

    ممنون ولی در مورد کد دومی بیشتر تو ضیح میدی
    دستورات از کجا گرفته میشه ؟به جای cmd_command دستورات قرار می گیره؟ایا به جای اون میشه نوشت edit1.text ?

  5. #5

    نقل قول: اجرای دستورات cmd

    کد کامل رو که ننوشتم - هر چند همين بخش کد هم مستقلا قابل اجراست فقط بايد قبلش به cmd_command مقدار بدي. جواب سؤال دومت بله هست. جواب سؤال آخرت رو هم يک نگاه کوچک به کد بندازي ميگيري.

    کد هر چند کار ميکنه ولي در مورد کنسول اشتباه کردم يه نمونه برنامه ميذارم. وقتي دستور vedadian و يا islam رو وارد کنيد، برنامه من جواب ميده و اگه دستور ديگه اي بديد، مثل اينه که تو خط فرمان cmd.exe اجرا کنيدش (مثلا dir)

    program Project2;

    {$APPTYPE CONSOLE}

    uses
    Windows, SysUtils;

    var
    pi: TProcessInformation;
    si: TStartupInfo;
    cmd_command: String;
    cp: THandle;
    begin
    fillMemory(@si, sizeof(si),0);
    si.cb := sizeof( si );
    cp := GetCurrentProcess;
    if not DuplicateHandle(cp, STD_INPUT_HANDLE, cp, @si.hStdInput, 0, True, DUPLICATE_SAME_ACCESS) then
    Exit;
    if not DuplicateHandle(cp, STD_OUTPUT_HANDLE, cp, @si.hStdOutput, 0, True, DUPLICATE_SAME_ACCESS) then
    Exit;
    if not DuplicateHandle(cp, STD_ERROR_HANDLE, cp, @si.hStdError, 0, True, DUPLICATE_SAME_ACCESS) then
    Exit;
    si.dwFlags := STARTF_USESTDHANDLES;
    while LowerCase(cmd_command) <> 'exit' do
    begin
    if LowerCase(cmd_command) = 'vedadian' then
    writeln('Please pray for him...')
    else if LowerCase(cmd_command) = 'islam' then
    writeln('Precious gift of God to mankind.')
    else
    begin
    CreateProcess(
    nil,
    PChar('cmd.exe /c ' + cmd_command),
    nil, nil, True,
    NORMAL_PRIORITY_CLASS, nil, nil,
    si, pi );
    WaitForSingleObject(pi.hProcess, 2000);
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
    end;
    readln(cmd_command);
    end;
    end.

  6. #6

    نقل قول: اجرای دستورات cmd

    ممنون ولی اینو نمیشه کاریش کرد که تحت consol نباشه مثلا همه نوشته ها تو یه memo بیاد و دستورات هم تو همون memo نوشته بشه
    ممنون

  7. #7

    نقل قول: اجرای دستورات cmd

    قبلا در مورد این توضیح دادم
    https://barnamenevis.org/showpo...3&postcount=10

  8. #8

    نقل قول: اجرای دستورات cmd

    ممنون ولی برای همه دستورات اجرا نمیشه
    مثلا cd
    ممنون میشم کمک کنی
    در مورد اینم یه توضیحی میدی
    CreateProcess(
    nil,
    PChar('cmd.exe /c ' + cmd_command),
    nil, nil, True,
    NORMAL_PRIORITY_CLASS, nil, nil,
    si, pi );
    به ویژه اینجاش cmd.exe /c

  9. #9

    نقل قول: اجرای دستورات cmd

    يعني چي که اجرا نميشه! دستور cd که خروجي به کنسول نداره.

    در مورد CreateProcess، بايد بگم يک دستور API ويندوز براي اجراي فايل هستش. فايل cmd.exe رابط ويندوزهاي 2000 و XP براي خط فرمان داسه (command prompt). پارامتر c به cmd.exe ميگه که پارامتر بعدي رو اجرا کنه، و بلا فاصله بعد اجرا برگرده.

  10. #10

    نقل قول: اجرای دستورات cmd

    منظورم دستور cd.. یا cd\ هست
    شما این کارو بکن ببین میشه یا نه مثلا به دستور cd\ به ریشه drive برو و یه dir اجرا کن ببین رفته یا نه اگه رفته باشه باید الان نام پوشه هایی که تو drive هست رو بنویسه

  11. #11

    نقل قول: اجرای دستورات cmd

    منظورم دستور cd.. یا cd\ هست
    شما این کارو بکن ببین میشه یا نه مثلا به دستور cd\ به ریشه drive برو و یه dir اجرا کن ببین رفته یا نه اگه رفته باشه باید الان نام پوشه هایی که تو drive هست رو بنویسه

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

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

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