Single Application Instance
Classes limiting an application to a single instance; includes command line passing.
Usage
Change the applications _Module
to be of type CSaiAppModule
, constructing it with CSaiAppModule _Module(_T("<uniqueAppId/Name>"));
. The overriden CAppModule::Init()
returns APP_S_INSTANCE_RUNNING
when a running instance of the application is found.
int nRet = 0; hRes = _Module.Init(NULL, hInstance); ATLASSERT(SUCCEEDED(hRes)); if(hRes == APP_S_INSTANCE_RUNNING) _Module.ActivateInstance(lpstrCmdLine); else nRet = Run(lpstrCmdLine, nCmdShow);
The applications CMainFrame
needs to derive from CSaiFrameWindowImpl
when the build-in command line passing should be used. The implementation calls void OnReceivedCmdLine(LPCTSTR pCmdLine)
when a new instance passes its command line. The receiving application should consider the pCmdLine
read-only. The pCmdLine
parameter is valid only during the processing of the function. If the receiving application must access the data after OnReceivedCmdLine
returns, it must copy the data into a local buffer.
About the Implementation
CSharedCmdLine
CSaiAppModule
CSaiFrameWindowImpl