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