BOOL CALLBACK EnumAvailableAppProc(APPLICATION_INFO Info) { PAPPLICATION_INFO ItemInfo; INT Index; /* Only add a ListView entry if... - no RegName was supplied (so we cannot determine whether the application is installed or not) or - a RegName was supplied and the application is not installed */ if (!*Info.szRegName || (!IsInstalledApplication(Info.szRegName, FALSE) && !IsInstalledApplication(Info.szRegName, TRUE))) { ItemInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(APPLICATION_INFO)); if (!ItemInfo) return FALSE; *ItemInfo = Info; Index = ListViewAddItem(Info.Category, 0, Info.szName, (LPARAM)ItemInfo); ListView_SetItemText(hListView, Index, 1, Info.szVersion); ListView_SetItemText(hListView, Index, 2, Info.szDesc); } return TRUE; }
static BOOL CALLBACK s_EnumInstalledAppProc(INT ItemIndex, LPWSTR lpName, PINSTALLED_INFO Info) { PINSTALLED_INFO ItemInfo; WCHAR szText[MAX_PATH]; INT Index; if (!SearchPatternMatch(lpName, szSearchPattern)) { RegCloseKey(Info->hSubKey); return TRUE; } ItemInfo = (PINSTALLED_INFO) HeapAlloc(GetProcessHeap(), 0, sizeof(INSTALLED_INFO)); if (!ItemInfo) { RegCloseKey(Info->hSubKey); return FALSE; } RtlCopyMemory(ItemInfo, Info, sizeof(INSTALLED_INFO)); Index = ListViewAddItem(ItemIndex, 0, lpName, (LPARAM) ItemInfo); /* Get version info */ GetApplicationString(ItemInfo->hSubKey, L"DisplayVersion", szText); ListView_SetItemText(hListView, Index, 1, szText); /* Get comments */ GetApplicationString(ItemInfo->hSubKey, L"Comments", szText); ListView_SetItemText(hListView, Index, 2, szText); return TRUE; }
BOOL CALLBACK EnumAvailableAppProc(PAPPLICATION_INFO Info) { INT Index; if (!SearchPatternMatch(Info->szName, szSearchPattern) && !SearchPatternMatch(Info->szDesc, szSearchPattern)) { return TRUE; } /* Only add a ListView entry if... - no RegName was supplied (so we cannot determine whether the application is installed or not) or - a RegName was supplied and the application is not installed */ if (!*Info->szRegName || (!IsInstalledApplication(Info->szRegName, FALSE) && !IsInstalledApplication(Info->szRegName, TRUE))) { Index = ListViewAddItem(Info->Category, 0, Info->szName, (LPARAM)Info); ListView_SetItemText(hListView, Index, 1, Info->szVersion); ListView_SetItemText(hListView, Index, 2, Info->szDesc); } return TRUE; }
// ----------------------------------------------------------------------- // Fill the listview with filenames long DllDefFillFilesList(void) { int i = 0; CStr DefValue; CStr DefEntryValue; long ReturnValue = 0; DefEntryValue = IniReadKey("ENTRYPOINT", "Proc", DllDefFile); for(i = 0; i <= StringGetSplitUBound(DllDefArray) - 1; i++) { if(strlen(StringGetSplitElement(RealProcList, DllDefArray, i).Get_String()) != 0) { ListViewAddItem(FRMDllDefListview, StringGetSplitElement(RealProcList, DllDefArray, i), i, 0); if(_strcmpi(StringGetSplitElement(RealProcList, DllDefArray, i).Get_String(), DefEntryValue.Get_String()) == 0) ReturnValue = i + 1; ComboBoxAddItem(FRMDllDefComboBox, StringGetSplitElement(RealProcList, DllDefArray, i), -1); DefValue = IniReadKey("EXPORTS", StringGetSplitElement(RealProcList, DllDefArray, i), DllDefFile); if(DefValue.Len() != 0) ListViewSetItemCheckbox(FRMDllDefListview, i, 1); } } return(ReturnValue); }
BOOL CALLBACK EnumInstalledAppProc(INT ItemIndex, LPWSTR lpName, INSTALLED_INFO Info) { PINSTALLED_INFO ItemInfo; WCHAR szText[MAX_PATH]; INT Index; ItemInfo = HeapAlloc(GetProcessHeap(), 0, sizeof(INSTALLED_INFO)); if (!ItemInfo) return FALSE; *ItemInfo = Info; Index = ListViewAddItem(ItemIndex, 0, lpName, (LPARAM)ItemInfo); /* Get version info */ GetApplicationString((HKEY)ItemInfo->hSubKey, L"DisplayVersion", szText); ListView_SetItemText(hListView, Index, 1, szText); /* Get comments */ GetApplicationString((HKEY)ItemInfo->hSubKey, L"Comments", szText); ListView_SetItemText(hListView, Index, 2, szText); return TRUE; }
// ----------------------------------------------------------------------- // Fill the languages extensions void FillExtLanguage(void) { long *ExtArray = 0; CStr LangToCheck; CStr RegEntry; CStr BufString; int i = 0; int j = 0; int k = 0; // Get default extensions (.med/.mws) ListViewAddItem(FRMRegsListview, "med", k, 0); RegEntry = RegistryGetKeyValue(HKEY_CLASSES_ROOT, ".med", ""); if(RegEntry.Len() != 0) { if(_strcmpi(RegEntry.Get_String(), "Chromatic project file") == 0) { ListViewSetItemCheckbox(FRMRegsListview, k, 1); } } ListViewSetSubItem(FRMRegsListview, "(Chromatic projects)", k, 1); k++; ListViewAddItem(FRMRegsListview, "mws", k, 0); RegEntry = RegistryGetKeyValue(HKEY_CLASSES_ROOT, ".mws", ""); if(RegEntry.Len() != 0) { if(_strcmpi(RegEntry.Get_String(), "Chromatic workspace file") == 0) { ListViewSetItemCheckbox(FRMRegsListview, k, 1); } } ListViewSetSubItem(FRMRegsListview, "(Chromatic workspaces)", k, 1); k++; for(i = 0; i <= 999; i++) { FRMRegsRetVal = IniReadKey("RefLanguages", "Ext" + (CStr) StringNumberComplement(i, 3).Get_String(), LanguagesIniFile).Trim(); LangToCheck = IniReadKey("RefLanguages", "Lang" + (CStr) StringNumberComplement(i, 3).Get_String(), LanguagesIniFile); if(FRMRegsRetVal.Len() == 0) break; LangToCheck = ChangeRelativePaths(LangToCheck); LangFileToRead = LangToCheck; FRMRegsLangName = IniReadKey("LangSpec", "LangName", LangFileToRead); if(FRMRegsLangName.Len() == 0) { LangToCheck = "<Error>"; } else { LangToCheck = FRMRegsLangName; } ExtArray = StringSplit(FRMRegsRetVal, " "); if(StringGetSplitUBound(ExtArray) != -1) { for(j = 0; j <= StringGetSplitUBound(ExtArray); j++) { ListViewAddItem(FRMRegsListview, StringGetSplitElement(FRMRegsRetVal, ExtArray, j), k, 0); RegEntry = RegistryGetKeyValue(HKEY_CLASSES_ROOT, "." + (CStr) StringGetSplitElement(FRMRegsRetVal, ExtArray, j).Get_String(), ""); if(RegEntry.Len() != 0) { BufString = "Chromatic " + (CStr) StringGetSplitElement(FRMRegsRetVal, ExtArray, j).Get_String() + (CStr) " file"; if(_strcmpi(RegEntry.Get_String(), BufString.Get_String()) == 0) { ListViewSetItemCheckbox(FRMRegsListview, k, 1); } } ListViewSetSubItem(FRMRegsListview, LangToCheck, k, 1); k++; } } StringReleaseSplit(ExtArray); } }
// ----------------------------------------------------------------------- // The the listview with found AddIns void FillAddinsList(void) { int i = 0; CStr AddInName; HMODULE AddInLib = 0; FARPROC AddInDesc = 0; FARPROC AddInAuth = 0; FARPROC AddInLoad = 0; FARPROC AddInUnload = 0; FARPROC AddInMenu = 0; CStr Description; CStr Auth; long PosInIniFile = 0; CStr LoadedInIniFile; long AddInIcon = 0; CStr RunningInIniFile; CStr BufString; AddInName = FileDir(&((CStr) Dirs[DIR_ADDINS] + (CStr) "\\*.dll")); LocalAddInsFiles.Erase(); while(AddInName.Len() != 0) { BufString = Dirs[DIR_ADDINS] + (CStr) "\\" + (CStr) AddInName; AddInLib = LoadLibrary(BufString.Get_String()); if(AddInLib != 0) { AddInDesc = GetProcAddress(AddInLib, "AddInDescription"); AddInAuth = GetProcAddress(AddInLib, "AddInAuthor"); AddInLoad = GetProcAddress(AddInLib, "AddInLoad"); AddInUnload = GetProcAddress(AddInLib, "AddInUnLoad"); AddInMenu = GetProcAddress(AddInLib, "AddInMenu"); // Must have all procedures if(AddInDesc != 0 && AddInAuth != 0 && AddInLoad != 0 && AddInUnload != 0 && AddInMenu != 0) { Description = GetDLLDescription(AddInName, AddInDesc); Auth = GetDLLAuthor(AddInAuth); AddInIcon = ICON_ADDINR; PosInIniFile = CheckAddInIniList(AddInName); if(PosInIniFile != -1) { // Check if it is running if found in ini file RunningInIniFile = IniReadKey("AddIns", "Running" + (CStr) StringNumberComplement(PosInIniFile, 3).Get_String(), MainIniFile); if(_strcmpi(RunningInIniFile.Get_String(), "1") == 0) AddInIcon = ICON_ADDINS; } ListViewAddItem(FRMAddInsListView, Description, i, AddInIcon); ListViewSetSubItem(FRMAddInsListView, Auth, i, 1); // Check in the ini file if it's been already loaded PosInIniFile = CheckAddInIniList(AddInName); if(PosInIniFile != -1) { LoadedInIniFile = IniReadKey("AddIns", "Loaded" + (CStr) StringNumberComplement(PosInIniFile, 3).Get_String(), MainIniFile); if(LoadedInIniFile.Len() != 0) { if(_strcmpi(LoadedInIniFile.Get_String(), "1") == 0) { ListViewSetItemCheckbox(FRMAddInsListView, i, 1); } else { ListViewSetItemCheckbox(FRMAddInsListView, i, 0); } } else { ListViewSetItemCheckbox(FRMAddInsListView, i, 0); } } LocalAddInsFiles.Add(AddInName.Get_String()); i++; } FreeLibrary(AddInLib); // Dlg_Filters.cpp for more infos #ifndef _DEBUG CloseHandle(AddInLib); #endif } AddInName = FileDir(); } }