本文整理汇总了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;
}
示例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);
}