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

نام تاپیک: فراخوانی فایل exe از طریق ++c

  1. #1

    فراخوانی فایل exe از طریق ++c

    سلام

    یک فایل exe دارم ، 2 ورودی دارد . چه جوری می تونم یک کد ++c بنویسم که هر وقت خواستم فایل exe را با ورودی های دلخواه

    از طریق کد اجرا کنم بعد خروجی هایش را برگردونم ؟

    اگر ورودی خروجی هم نبود اشکال ندارد فقط چه جوری باید از طریق کد ، دستور اجرای فایل exe را بدیم به صورت hidden .

    ممنون

  2. #2

    نقل قول: فراخوانی فایل exe از طریق ++c

    نقل قول نوشته شده توسط vertionality مشاهده تاپیک
    سلام

    یک فایل exe دارم ، 2 ورودی دارد . چه جوری می تونم یک کد ++c بنویسم که هر وقت خواستم فایل exe را با ورودی های دلخواه

    از طریق کد اجرا کنم بعد خروجی هایش را برگردونم ؟

    اگر ورودی خروجی هم نبود اشکال ندارد فقط چه جوری باید از طریق کد ، دستور اجرای فایل exe را بدیم به صورت hidden .

    ممنون

    #include <windows.h>
    using namespace std;
    int main()
    {
    system ("start C:\\Users\\Folder\\chrome.exe https://www.google.com"); ..
    return 0;
    }

    البته فقط در ویندوز و ویژوال استودیو قابل استفاده است.
    البته استفاده از این روش از نظر امنیت بسیار ضعیف هست! به راحتی می تونه برنامه شما را قابل هک کردن کنه ویا حتی آنتی ویروس ها هم میتونن به عنوان یک فایل مخرب شناسایی کنن!

    روش دیگه خیلی امنتر و بهتر است...

    #include <windows.h>

    VOID startup(LPCTSTR lpApplicationName)
    {
    // additional information
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    // set the size of the structures
    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    // start the program up
    CreateProcess( lpApplicationName, // the path
    argv[1], // Command line
    NULL, // Process handle not inheritable
    NULL, // Thread handle not inheritable
    FALSE, // Set handle inheritance to FALSE
    0, // No creation flags
    NULL, // Use parent's environment block
    NULL, // Use parent's starting directory
    &si, // Pointer to STARTUPINFO structure
    &pi // Pointer to PROCESS_INFORMATION structure (removed extra parentheses)
    );
    // Close process and thread handles.
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
    }


    البته این روش هم باز در ویندوز و ویژوال استودیو قابل استفاده است.
    در این روش هم سعی کنید برای امنیت بیشتر مقدار پارامتر lpApplicationName را null ست نکنید اگر هم خواستید که null ست کنید حتما در رشته ای که در پارامتر دوم به عنوان آرگومان خط فرمان برای نام برنامه وارد میکنید حتما نام فایل را در دابل کوتیشن قرار بدید.

    و این روش هم هست...

    #include <iostream>
    #include <windows.h>

    int main() {
    ShellExecute(NULL, "open", "path\\to\\file.exe", NULL, NULL, SW_SHOWDEFAULT);
    }
    آخرین ویرایش به وسیله farhad_shiri_ex : یک شنبه 04 شهریور 1397 در 13:35 عصر

  3. #3

    نقل قول: فراخوانی فایل exe از طریق ++c

    اینا خیلی خوب بودن ، فقط ورودی هم میشه داد .

    مثلا اگر برنامه 2 تا input میگیره ، بگیم وقتی اجرا میشه این 2 تا ورودی هم بهش بده .

    ممنون ، بسیار عالی بودند

  4. #4

    نقل قول: فراخوانی فایل exe از طریق ++c

    نقل قول نوشته شده توسط vertionality مشاهده تاپیک
    اینا خیلی خوب بودن ، فقط ورودی هم میشه داد .

    مثلا اگر برنامه 2 تا input میگیره ، بگیم وقتی اجرا میشه این 2 تا ورودی هم بهش بده .

    ممنون ، بسیار عالی بودند
    بله به دستورات ShellExecute و system که به راحتی می تونید پارامترهاتون را پاس بدید و CreateProcess هم که میتونید با استفاده از یک ساختار پارامترهاتون را پاس بدید

  5. #5

    نقل قول: فراخوانی فایل exe از طریق ++c

    من از روش سوم توی QT استفاده کردم ارور زیر را داد ،

    خط سوم ارور هم کدی که نوشتم را نوشته :



    D:\Project\QT\pj\res.cpp:11: error: cannot convert 'const char*' to 'LPCWSTR {aka const wchar_t*}' for argument '2' to 'HINSTANCE__* ShellExecuteW(HWND, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, INT)'
    ShellExecute(NULL, "open", "qrc://C:/Users/Desktop/a.exe", NULL, NULL, SW_SHOWDEFAULT);

    ^

    در روش دوم هم چون من می خواهم در یک فایل دیگه از این تابع استفاده کنم int main ندارم ( بک اند ) پس argv[1] توی روش دوم ( commend line ) را نمی شناسه

    چون تعریف نشده .

    روش سوم را بیشتر دوست دارم ولی هر کدوم امنیتش بیشتره . من نتونستم ورودی بفرستم به برنامه ولی آیا میشه خروجی اش را هم گرفت ؟

    بسیار ممنون

  6. #6

    نقل قول: فراخوانی فایل exe از طریق ++c

    نقل قول نوشته شده توسط vertionality مشاهده تاپیک
    من از روش سوم توی QT استفاده کردم ارور زیر را داد ،

    خط سوم ارور هم کدی که نوشتم را نوشته :




    در روش دوم هم چون من می خواهم در یک فایل دیگه از این تابع استفاده کنم int main ندارم ( بک اند ) پس argv[1] توی روش دوم ( commend line ) را نمی شناسه

    چون تعریف نشده .

    روش سوم را بیشتر دوست دارم ولی هر کدوم امنیتش بیشتره . من نتونستم ورودی بفرستم به برنامه ولی آیا میشه خروجی اش را هم گرفت ؟

    بسیار ممنون
    دوست عزیز عرض کردم روشهایی که عرض کردم برای کامپایلر ویژوال سی مایکروسافت هست پس در فریم وورک کیوت نمی تونی استفاده کنید. برای استفاده در کیوت دوتا راه دارید.!
    1- تو سایت iostream.ir بری و سوال اونجا هم مطرح کن یا من یا دوستان دیگه اونجا سوال تون جواب میدیم.
    2- تو داکیومنت های کیوت دنبال روش call other process in main thread بگردید کلا روش استفاده اش متفاوت هست.

تاپیک های مشابه

  1. اجرای فایل exe از طریق IP
    نوشته شده توسط kiarash_1980 در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: سه شنبه 23 خرداد 1385, 11:53 صبح
  2. بستن یک فایل EXE از طریق برنامه
    نوشته شده توسط nasr در بخش برنامه نویسی در Delphi
    پاسخ: 9
    آخرین پست: دوشنبه 07 آذر 1384, 15:49 عصر
  3. باز کردن فایل EXE از طریق برنامه
    نوشته شده توسط nasr در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: چهارشنبه 22 بهمن 1382, 02:53 صبح
  4. باز کردن یک فایل EXE از طریق دلفی
    نوشته شده توسط nasr در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: سه شنبه 09 دی 1382, 16:53 عصر

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

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