Подтвердить что ты не робот

Как открыть .exe из другого С++.exe?

Что я хочу сделать, это открыть .exe из другого .exe. Я действительно не знаю, как это сделать, поэтому я искал в Интернете. Я попробовал некоторые предлагаемые методы из Интернета, но это не сработало.

Здесь мой код:

#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    system ("OpenFile.exe");
    system ("pause");
    return 0;
}

Когда я запускаю его в DEV С++, он не компилируется, и я получаю сообщение об ошибке. Может кто-нибудь, пожалуйста, помогите мне?

4b9b3361

Ответ 1

Вы всегда должны избегать использования system() потому что

  • Это тяжелый ресурс
  • Это наносит ущерб безопасности - вы не знаете, что это действительная команда или делает то же самое в каждой системе, вы даже можете запускать программы, которые не собирались запускать. Опасность заключается в том, что когда вы выполняете программу напрямую, она получает те же привилегии, что и ваша программа. Это означает, что если, например, вы работаете системным администратором, то вредоносная программа, которую вы только что непреднамеренно выполнили, также работает как системный администратор. Если это вас не пугает, проверьте свой пульс.
  • Антивирусные программы ненавидят это, ваша программа может быть помечена как вирус.

Вы должны использовать CreateProcess().

Вы можете использовать Createprocess(), чтобы просто запустить .exe и создать для него новый процесс. Приложение будет работать независимо от вызывающего приложения.

Вот пример, который я использовал в одном из моих проектов:

#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 environment block
    NULL,           // Use parent 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 );
}

РЕДАКТИРОВАТЬ: ошибка, которую вы получаете, потому что вам нужно указать путь к файлу .exe, а не только имя. Openfile.exe, вероятно, не существует.

Ответ 2

У меня был большой успех:

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

int main() {
    ShellExecute(NULL, "open", "path\\to\\file.exe", NULL, NULL, SW_SHOWDEFAULT);
}

Если вам интересно, полная документация находится здесь:

http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx.

Ответ 3

Попробуйте следующее:

#include <windows.h>

int main ()

{
    system ("start notepad.exe") // As an example. Change [notepad] to any executable file //

    return 0 ;
}

Ответ 4

Укажите полный путь к файлу 'openfile.exe' и помните, что не следует вводить косу "/" на пути, например C:/Пользователи/имя пользователя/и т.д.... вместо этого использования C:\Users\имя пользователя\и т.д. (для окон)

Возможно, это поможет вам

Ответ 5

Вы получаете эту ошибку, потому что вы не даете полный путь. (C:\Users...\file.exe) Если вы хотите удалить эту ошибку, либо укажите полный путь или скопируйте это приложение (вы хотите открыть) в папку, в которой присутствует/сохранен ваш проект (.exe).

#include <windows.h>
using namespace std;
int main()
{
  system ("start C:\\Users\\Folder\\chrome.exe https://www.stackoverflow.com"); //for opening stackoverflow through google chrome , if chorme.exe is in that folder..
  return 0;
}

Ответ 6

когда исполняемый путь имеет пробел в системном вызове!

#include<iostream>
using namespace std;
main()
{
    system("explorer C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe ");
    system("pause");
}