Bläddra i källkod

Z991239-2234 #comment processcontrol修改,去除linux中无用的函数

陈良瑜80374463 4 år sedan
förälder
incheckning
844fb5cff7
2 ändrade filer med 16 tillägg och 19 borttagningar
  1. 15 16
      Module/mod_chromium/processControl.cpp
  2. 1 3
      Module/mod_chromium/processControl.h

+ 15 - 16
Module/mod_chromium/processControl.cpp

@@ -100,7 +100,7 @@ std::pair<bool, HANDLE> assigntoJob(HANDLE process, int pid)
 	}
 }
 
-std::tuple<bool, HANDLE, HANDLE> startProcessInJob(std::string program, std::string args)
+std::tuple<bool, DWORD, HANDLE, HANDLE> startProcessInJob(std::string program, std::string args)
 {
 	PROCESS_INFORMATION processInfo;
 	ZeroMemory(&processInfo, sizeof(processInfo));
@@ -111,19 +111,26 @@ std::tuple<bool, HANDLE, HANDLE> startProcessInJob(std::string program, std::str
 	startupInfo.dwFlags = STARTF_USESHOWWINDOW;
 	startupInfo.wShowWindow = SW_HIDE;
 
-	std::string runInfo = program + std::string(" ") + args;
-
-	BOOL retVal = ::CreateProcessA(NULL, const_cast<char*>(runInfo.c_str()), NULL, NULL, FALSE,
-		CREATE_BREAKAWAY_FROM_JOB, NULL, NULL, &startupInfo, &processInfo);
+	BOOL retVal = false;
+	if(args.length() == 0)
+	{
+		retVal = ::CreateProcessA(NULL, const_cast<char*>(program.c_str()), NULL, NULL, FALSE,
+			CREATE_BREAKAWAY_FROM_JOB, NULL, NULL, &startupInfo, &processInfo);
+	}
+	else
+	{
+		retVal = ::CreateProcessA(const_cast<char*>(program.c_str()), const_cast<char*>(args.c_str()), NULL, NULL, FALSE,
+			CREATE_BREAKAWAY_FROM_JOB, NULL, NULL, &startupInfo, &processInfo);
+	}
 	if (!processInfo.hProcess)
 	{
-		DbgEx("CreateProcess failed!, %s", runInfo.c_str());
-		return std::make_tuple(false, (HANDLE)NULL, (HANDLE)NULL);
+		DbgEx("CreateProcess failed!, %s, %s", program.c_str(), args.c_str());
+		return std::make_tuple(false, 0, (HANDLE)NULL, (HANDLE)NULL);
 	}
 
 	auto ret = assigntoJob(processInfo.hProcess, processInfo.dwProcessId);
 
-	return std::make_tuple(ret.first, ret.second, processInfo.hProcess);
+	return std::make_tuple(ret.first, processInfo.dwProcessId, ret.second, processInfo.hProcess);
 }
 
 bool KillProcessById(DWORD pID)
@@ -141,13 +148,5 @@ bool KillProcessById(DWORD pID)
 	return ret;
 }
 #else
-std::tuple<bool, long, long> startProcessInJob(std::string program, std::string args)
-{
-	return std::make_tuple(true, 1, 1);
-}
 
-std::pair<bool, long> assigntoJob(long process, int pid)
-{
-	return std::make_pair(true, 1);
-}
 #endif

+ 1 - 3
Module/mod_chromium/processControl.h

@@ -11,11 +11,9 @@
 
 #if(defined _WIN32 || defined _WIN64)
 bool KillProcessById(DWORD pID);
-std::tuple<bool, HANDLE, HANDLE> startProcessInJob(std::string program, std::string args);
+std::tuple<bool, DWORD, HANDLE, HANDLE> startProcessInJob(std::string program, std::string args);
 std::pair<HANDLE, int> StartProcess(std::string program, std::string args, BOOL isEnum);
 HWND GetWindowHwndByPID(DWORD dwProcessID);
 std::pair<bool, HANDLE> assigntoJob(HANDLE process, int pid);
 #else
-std::tuple<bool, long, long> startProcessInJob(std::string program, std::string args);
-std::pair<bool, long> assigntoJob(long process, int pid);
 #endif