Запустите приложение C # из C ++ и выполните задачу в этом приложении.

я прочитал этот и добился открытия моего приложения на C #. Мое приложение C # открывает папку и рисует график. Могу ли я сообщить моему приложению C #, какую папку открывать из C ++, а затем, как только будет виден график и программа C # закрыта, она возвращается обратно в приложение C ++.

Редактировать: Спасибо Мэтью, я получил это работает.

Другой запрос относительно моей переменной CreateProcess lpCommandLine: (ниже приведен код)

CString sFolderPath = "C:\Documents and Settings\...";
int nStrBuffer = sFolderPath.GetLength() + 50;
LPTSTR szParam = _tcsdup(sFolderPath.GetBuffer(nStrBuffer));

nRet = ::CreateProcess(szCmdline,// pointer to name of executable module
szParam,// pointer to command line string
NULL,// pointer to process security attributes
NULL,// pointer to thread security attributes
FALSE,// handle inheritance flag
DETACHED_PROCESS,// creation flags
NULL,// pointer to new environment block
NULL,// pointer to current directory name
&sui,// pointer to STARTUPINFO
&pi );// pointer to PROCESS_INFORMATION

Я правильно получаю переменную szParam, но когда приложение открывается, полное имя файла не копируется. Например: в приведенном выше случае только «and Settings ….» копируется туда, где часть «C: \ Documents» осталась позади. Не могли бы вы указать на мою ошибку, пожалуйста?

Реализация C #:

[STAThread]
static void Main(string[] args)
{
foreach (string result in args)
{
MessageBox.Show(result);
}
}

0

Решение

Это конечно возможно.

C ++ CreateProcess() имеет параметр с именем lpCommandLine,

Что вам нужно сделать в C ++, это передать как lpCommandLine строка с именем папки, которую вы хотите открыть. Вам нужно будет заключить строку в двойные кавычки, если путь к папке содержит пробелы.

Внутри вашей программы на C # у вас будет static void Main(string[] args), args Параметр будет содержать имя папки, которое вы передали из программы C ++, чтобы вы могли действовать в соответствии с ним.

Чтобы программа C ++ ожидала завершения работы программы C #, ей необходимо использовать WaitForSingleObject() ждать его завершения, используя дескриптор процесса, возвращенный из CreateProcess(),

Это описано здесь: http://www.codeproject.com/Tips/333559/CreateProcess-and-wait-for-result

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]