当前位置: 首页>>代码示例>>C++>>正文


C++ SharedMemory::Get方法代码示例

本文整理汇总了C++中SharedMemory::Get方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedMemory::Get方法的具体用法?C++ SharedMemory::Get怎么用?C++ SharedMemory::Get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SharedMemory的用法示例。


在下文中一共展示了SharedMemory::Get方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: HandleReuse

static bool HandleReuse(LPCTSTR lpstrCmdLine)
{
	SharedMemory<HWND> sharedInstance;
  try
  {
    sharedInstance.Open(L"ConsoleZ", syncObjNone);
  }
  catch(Win32Exception& ex)
  {
    if(ex.GetErrorCode() == ERROR_FILE_NOT_FOUND)
      return false;
    throw;
  }
	if (0 != sharedInstance.Get())
	{
		::SetForegroundWindow(*sharedInstance);

		std::wstring commandLine = lpstrCmdLine;
		commandLine += L" -cwd ";
		commandLine += Helpers::EscapeCommandLineArg(Helpers::GetCurrentDirectory());

		COPYDATASTRUCT cds = {0};
		cds.dwData = 0;
		cds.lpData = (LPVOID)commandLine.c_str();
		cds.cbData = static_cast<DWORD>((commandLine.length() + 1) * sizeof(wchar_t));

		::SendMessage(*sharedInstance, WM_COPYDATA, 0, (LPARAM)&cds);

		return true;
	}

	return false;
}
开发者ID:gaeeronimo,项目名称:console,代码行数:33,代码来源:Console.cpp

示例2: ConsoleException

void ConsoleHandler::StartShellProcessAsAdministrator
(
	const wstring& strSyncName,
	const wstring& strShell,
	const wstring& strInitialDir,
	const wstring& strInitialCmd
)
{
	SharedMemory<DWORD> pid;
	pid.Open(strSyncName, syncObjBoth);

	UserCredentials userCredentials;
	PROCESS_INFORMATION pi = {0, 0, 0, 0};

	CreateShellProcess(
		strShell,
		strInitialDir,
		userCredentials,
		strInitialCmd,
		L"",
		pi
	);

	*pid.Get() = pi.dwProcessId;
	::SetEvent(pid.GetReqEvent());

	// wait for shared objects creation
	if (::WaitForSingleObject(pid.GetRespEvent(), 10000) == WAIT_TIMEOUT)
		throw ConsoleException(boost::str(boost::wformat(Helpers::LoadString(IDS_ERR_DLL_INJECTION_FAILED)) % L"timeout"));

	// inject our hook DLL into console process
	if (!InjectHookDLL(pi))
		throw ConsoleException(boost::str(boost::wformat(Helpers::LoadString(IDS_ERR_DLL_INJECTION_FAILED)) % L"?"));

	// resume the console process
	::ResumeThread(pi.hThread);
	::CloseHandle(pi.hThread);
}
开发者ID:danieldc,项目名称:console,代码行数:38,代码来源:ConsoleHandler.cpp


注:本文中的SharedMemory::Get方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。