Пытаюсь с помощью данной функции пытаюсь открыть приложение(путь указан верно, вместе с расширением .exe):
ShellExecute(NULL, "open", fullname.c_str(), NULL, NULL, SW_HIDE);
И в итоге у меня открывается целая куча копий:
ShellExecute
считается устаревшей функцией и стоит использовать CreateProcess
. Вот пример моей реализации:
bool Net::executeCommand(QString exe, QString command, LPDWORD lp)
{
// игнорировать предупреждения о non-initialized fields в si
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
STARTUPINFO si = {sizeof(si),0,};
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
ZeroMemory(&pi, sizeof(pi));
auto chr = strdup(command.toStdString().c_str());
size_t cSize = strlen(chr)+1;
wchar_t wc[cSize];
mbstowcs(wc, chr, cSize);
LPWSTR ptr = wc;
// осталось обрабатывать ошибки как - то
if (CreateProcess(reinterpret_cast<LPCWSTR>(exe.utf16()), ptr, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
{
delete[] ptr;
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, lp);
return true;
}
else
{
delete[] ptr;
return false;
}
return true;
}
Пример вызова:
executeCommand(Net::GetWindowsPath() + "\\system32\\Mstsc.exe", "Mstsc /v:" + lpRemoteName, &lp)
А множественный запуск, я уверен, связан с тем, что Вы вызываете функцию не один раз. Чтобы проверить это, Вы можете создать пустой проект и там запустить свою функцию.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть массив, данные в котором меняются в цикле и в этом же цикле выводятсяНужно записать в csv файл этот массив с разными данными в столбики...
Не могу понять, почему в вот таком классе возникает ошибка:
Я создал класс матриц и перегрузил для него операцию ++ (прибавление к матрице единичной матрицы), но почему то программа не работает, при запуске...
В программе на C++ идёт непрерывный поток кадров в формате jpeg (снимает вебкамера)Кадры на диск не попадают, всё в буфере