if (HasShellOpenCommand((LPCSTR)pApp->strFileClass)) {
char aExe[_MAX_PATH]; aExe[0] = '\0'; if(FEU_FindExecutable(pExtension, aExe, FALSE, TRUE))   {
void ShellHelper(NET_cdataStruct *pNet, const char *pExtension){    if(pNet != NULL && pNet->ci.fe_data == NULL)    {        //  Create front end counter-part.        CHelperApp *pApp = new CHelperApp();        if(pApp)    {	        pApp->cd_item = pNet;	        pNet->ci.fe_data = (void *)pApp;            pApp->bChanged = FALSE;            pApp->bNewType = FALSE;            pApp->bChangedExts = FALSE;            // Don't set how_handle to HANDLE_SHELLEXECUTE unless there's a file            // type class associated with the extension which has a shell\open			// command			//			// Assume that we can't shell execute it			pApp->how_handle = HANDLE_UNKNOWN;            if (GetClassName(pExtension, pApp->strFileClass)) {				// XXX - We really should handle verbs other than Open. FindExecutable()				// and ShellExecute() don't either, but ShellExecuteEx() does...				if (HasShellOpenCommand((LPCSTR)pApp->strFileClass)) {					pApp->how_handle = HANDLE_SHELLEXECUTE;					pApp->csCmd = MIME_SHELLEXECUTE;				}            }            //  application/octet-stream is always save.            if(!stricmp(pNet->ci.type, APPLICATION_OCTET_STREAM)) {                    pApp->how_handle = HANDLE_SAVE;            }	        theApp.m_HelperListByType.SetAt(pNet->ci.type, pApp);        }        //  Give it a description if not already set.        if(pExtension != NULL && pNet->ci.desc == NULL)   {            pNet->ci.desc = InventDescription(pExtension);        }    }}