Как создать процесс в C++ в Windows?

Использование «include» для проверки, если элемент уже существует.

var arr = [1, 1, 4, 5, 5], darr = [], duplicates = [];

for(var i = 0; i < arr.length; i++){
  if(darr.includes(arr[i]) && !duplicates.includes(arr[i]))
    duplicates.push(arr[i])
  else
    darr.push(arr[i]);
}

console.log(duplicates);
<h3>Array with duplicates</h3>
<p>[1, 1, 4, 5, 5]</p>
<h3>Array with distinct elements</h3>
<p>[1, 4, 5]</p>
<h3>duplicate values are</h3>
<p>[1, 5]</p>
5
задан paxdiablo 1 July 2009 в 08:34
поделиться

4 ответа

Вам необходимо прочитать о CreateProcess () в msdn. На этой странице есть образец кода.

4
ответ дан 18 December 2019 в 07:31
поделиться

Если вы просто хотите выполнить синхронную команду (запустить и ждать), лучше всего просто использовать вызов system () (см. здесь ), чтобы запустить его. Да, я знаю, что это страница Linux, но C - это стандарт, не так ли? : -)

Для более детального контроля над тем, что запускается, как это работает (синхронизация / асинхронность) и многими другими параметрами, CreateProcess () (см. здесь ), и его собратья, вероятно, лучше, хотя вы будете привязаны к платформе Windows (которая может не иметь для вас непосредственного значения).

4
ответ дан 18 December 2019 в 07:31
поделиться

Используйте CreateProcess (), чтобы запустить процесс, проверьте возвращаемое значение, чтобы убедиться, что он запущен нормально, затем либо закройте дескрипторы процесса и потока, либо используйте WaitForSingleObject (), чтобы дождаться, пока он заканчивает и затем закрывает ручки.

3
ответ дан 18 December 2019 в 07:31
поделиться

regasm.exe (Инструмент регистрации сборки) вносит изменения в реестр Windows, поэтому, если вы хотите запустить regasm.exe как процесс с повышенными правами, вы можете использовать следующий код:

#include "stdafx.h"
#include "windows.h"
#include "shellapi.h"

int _tmain(int argc, _TCHAR* argv[])
{
      SHELLEXECUTEINFO shExecInfo;

      shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);

      shExecInfo.fMask = NULL;
      shExecInfo.hwnd = NULL;
      shExecInfo.lpVerb = L"runas";
      shExecInfo.lpFile = L"regasm.exe";
      shExecInfo.lpParameters = L"testdll /tlb:test.tlb /codebase";
      shExecInfo.lpDirectory = NULL;
      shExecInfo.nShow = SW_NORMAL;
      shExecInfo.hInstApp = NULL;

      ShellExecuteEx(&shExecInfo);

      return 0;
}

shExecInfo .lpVerb = L "runas" означает, что процесс будет запущен с повышенными привилегиями. Если вы этого не хотите, просто установите shExecInfo.lpVerb в NULL. Но в Vista или Windows 7 требуются права администратора для изменения некоторых частей реестра Windows.

10
ответ дан 18 December 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: