открытие exe из текущего каталога C ++ - PullRequest
0 голосов
/ 01 августа 2010

У меня есть код Python ... но как мне сделать это в C ++?У меня нет большого опыта работы с с ++.То, что я хочу, это сделать исполняемый файл, который будет помещен как автозапуск на компакт-диске.Он должен открыть файл application.ini на моем компакт-диске с xulrunner.exe на моем компакт-диске.Поскольку путь будет отличаться на каждом компьютере, я должен сделать что-то вроде этого.

import subprocess
import os
path= os.getcwd()
final = path + '/xulrunner.exe ' + path + '/application.ini'
print final
os.system('final')
subprocess.call(['C:\\Temp\\a b c\\Notepad.exe'])

Ответы [ 3 ]

1 голос
/ 01 августа 2010

Это зависит от платформы, для которой вы его реализуете, но в Windows (если исходить из того, где вы находитесь в C: \), вам нужно окунуться в Windows API и использовать CreateProcess.В Linux это будет система или popen (не очень знакомый там).

http://msdn.microsoft.com/en-us/library/ms682425%28VS.85%29.aspx

Если известно, что исполняемый вами EXE находится в текущем рабочем каталоге (где бы вы ни находилисьПрограмма запускается из), вы можете просто использовать имя файла ("xulrunner.exe") в качестве имени.Вы можете быть безопаснее с ". \ Xulrunner.exe", но это больше предпочтений.Вы также можете указать подкаталог или даже SetCurrentDirectory для перемещения в другой каталог.

BOOL startedProgram = CreateProcess("xulrunner.exe", "application.ini", [fill in other options as you need]);
1 голос
/ 01 августа 2010

os.system() равно system(), в Win32 getcwd() равно GetCurrentDirectory()

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

Вероятно, следует придерживаться буферов символов для строк. Итак, что-то вроде (не проверено, не опробовано)

 #include <stdio.h>

 int main(int ac, char **av) {
    char path[MAX_PATH+1];
    GetCurrentDirectory(MAX_PATH, path);
    char final[MAX_PATH * 2 + 100];
    sprintf(final, "%s /xulrunner.exe %s/application.ini", path, path);
    printf("%s", final);
    system(final);
    // not sure what the notepad call is for, probably another system call
    return 0;
 }
1 голос
/ 01 августа 2010

Я не совсем уверен, что понимаю, о чем вы спрашиваете, но вам может потребоваться функция 'system'. Это вызовет командный процессор платформы для выполнения данной команды.

Если все ваши файлы (xulrunner.exe и application.ini) находятся в том же каталоге, что и исполняемый файл автозапуска, вы должны полагаться на корректность рабочего каталога и не указывать полный путь .

Например:

system("xulrunner.exe application.ini");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...