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