Использование «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>
Вам необходимо прочитать о CreateProcess () в msdn. На этой странице есть образец кода.
Если вы просто хотите выполнить синхронную команду (запустить и ждать), лучше всего просто использовать вызов system ()
(см. здесь ), чтобы запустить его. Да, я знаю, что это страница Linux, но C - это стандарт, не так ли? : -)
Для более детального контроля над тем, что запускается, как это работает (синхронизация / асинхронность) и многими другими параметрами, CreateProcess ()
(см. здесь ), и его собратья, вероятно, лучше, хотя вы будете привязаны к платформе Windows (которая может не иметь для вас непосредственного значения).
Используйте CreateProcess (), чтобы запустить процесс, проверьте возвращаемое значение, чтобы убедиться, что он запущен нормально, затем либо закройте дескрипторы процесса и потока, либо используйте WaitForSingleObject (), чтобы дождаться, пока он заканчивает и затем закрывает ручки.
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.