2016-07-10 2 views
-3

У меня есть исходный файл dll, я хочу создать в нем функцию, которая вызывает exe.C++ Start Process/Application

exe ​​находится в Data/Common/PPI.exe. Как я могу запустить это из кода C++? Я попытался с CreateProcess и ShellExec, может ли кто-нибудь создать пример для меня, чтобы знать, как это сделать, с этим путем и с этим именем exe.

Я не хочу, чтобы добавить полный путь к каталогу, потому что если его изменить или что-то мне нужно, чтобы перестроить exe ... поэтому dll находится в корневой папке, DLL вызывает эту функцию, а функция запускает Data/common/PPI.exe, вот и все.

+1

Есть тонн простых примеров использования CreateProcess в Интернете, либо вы не искали их или вам нужно объяснить, почему они не сработали для вас. – kfsone

ответ

-1

Попробуйте системную команду, как этот

system(".\\Data\\Common\\PPI.exe") 

и вам необходимо включить следующее:

#include <windows.h> 
+1

'.' является [текущим рабочим каталогом] (https://en.wikipedia.org/wiki/Working_directory#In_operating_systems), который не гарантированно совпадает с каталогом, в котором находится' .dll'. – dxiv

+0

Правильно, что dll принимает путь exe, я думаю, что единственный способ получить путь из реестра или ini, где путь к dll –

+1

'dll взять EXE-путь' Не уверен, что вы имеете в виду под этим. Чтобы привести пример, предположим, что 'C: \ dll \ op.exe' является исполняемым файлом, который загружает' C: \ dll \ op.dll', где OP пишет 'system (". \\ Data \\ Common \\ PPI .exe ");'. Далее предположим, что 'op.exe' запускается из другого каталога, например. из командной строки 'C: \ temp> C: \ dll \ op.exe'. Затем вызов 'system' попытается (и не удастся) найти' ppi.exe' в 'C: \ temp \ data \ common', в то время как OP, похоже, скажет, что ему нужно искать его на' C: \ dll \ data \ common'. – dxiv