Example #1
0
TEST(TStr, CloneCStr) {
	const TStr Str = "abcdef";
	const TStr Empty = "";
	char* StrClone = Str.CloneCStr();
	char* EmptyClone = Empty.CloneCStr();
	EXPECT_EQ(Str, StrClone);
	EXPECT_EQ(Empty, EmptyClone);
}
Example #2
0
bool TSysProc::ExeProc(const TStr& ExeFNm, TStr& ParamStr){
  STARTUPINFO si;
  PROCESS_INFORMATION pi;
  ZeroMemory(&si, sizeof(si));
  si.cb=sizeof(si);
  ZeroMemory(&pi, sizeof(pi));
  char * ParamStrCopy = ParamStr.CloneCStr();
  // Start the child process.
  BOOL Ok=CreateProcess(
   ExeFNm.CStr(),    // module name
   ParamStrCopy,  // patameters
   NULL,             // Process handle not inheritable.
   NULL,             // Thread handle not inheritable.
   FALSE,            // Set handle inheritance to FALSE.
   0,                // No creation flags.
   NULL,             // Use parent's environment block.
   NULL,             // Use parent's starting directory.
   &si,              // Pointer to STARTUPINFO structure.
   &pi);             // Pointer to PROCESS_INFORMATION structure.
  delete[] ParamStrCopy;
  if (Ok){
    // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );
    // Close process and thread handles.
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
    return true;
  } else {
    return false;
  }
}