l_Instructor_l
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору olDjeka Можно так: Код: if (lParam == -22 /*EOD_MSGCANCELBINARY*/) { var bSkipOpen=false; if (AkelPad.SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 205 /*MI_FILETYPESASSOCIATED*/, 0) & 0x4 /*FTA_OPEN*/) { //Get current file extension var lpBuffer; var pFileTypesOpen; var nExtPos=pOpenFile.lastIndexOf("."); var pExt=""; if (nExtPos != -1) { pExt=pOpenFile.substr(nExtPos + 1).toLowerCase(); //Get open types string if (lpBuffer=AkelPad.MemAlloc(256 * _TSIZE)) { AkelPad.SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 202 /*MI_FILETYPESOPEN*/, lpBuffer); pFileTypesOpen=AkelPad.MemRead(lpBuffer, _TSTR).toLowerCase(); AkelPad.MemFree(lpBuffer); } if (pFileTypesOpen.lastIndexOf(pExt) != -1) bSkipOpen=true; } } if (!bSkipOpen) oSys.Call("shell32::ShellExecute" + _TCHAR, hMainWnd, "open", pOpenFile, 0, 0, 1 /*SW_SHOWNORMAL*/); //Exit program, if file opened on program start if (AkelPad.SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 90 /*MI_ONSTART*/, 0)) AkelPad.Command(4109 /*IDM_FILE_EXIT*/); } | Предполагается, что ассоциации устновлены из диалога настроек программы. |