[RAPPS] CMainWindow: Move gui part of UninstallApplication in it

This commit is contained in:
Giannis Adamopoulos 2019-04-28 16:47:23 +03:00 committed by Mark Jansen
parent 85d6055201
commit 8a401eb299
No known key found for this signature in database
GPG key ID: B39240EE84BEAE8B
3 changed files with 24 additions and 48 deletions

View file

@ -511,7 +511,6 @@ public:
PVOID GetLParam(INT Index)
{
INT ItemIndex;
LVITEMW Item;
if (Index == -1)
{
@ -524,14 +523,7 @@ public:
ItemIndex = Index;
}
ZeroMemory(&Item, sizeof(Item));
Item.mask = LVIF_PARAM;
Item.iItem = ItemIndex;
if (!GetItem(&Item))
return NULL;
return (PVOID) Item.lParam;
return (PVOID) GetItemData(ItemIndex);
}
BOOL AddColumn(INT Index, ATL::CStringW& Text, INT Width, INT Format)
@ -1134,6 +1126,23 @@ private:
}
}
BOOL UninstallSelectedApp(BOOL bModify)
{
WCHAR szAppName[MAX_STR_LEN];
if (!IsInstalledEnum(SelectedEnumType))
return FALSE;
INT ItemIndex = m_ListView->GetNextItem(-1, LVNI_FOCUSED);
if (ItemIndex == -1)
return FALSE;
m_ListView->GetItemText(ItemIndex, 0, szAppName, _countof(szAppName));
WriteLogMessage(EVENTLOG_SUCCESS, MSG_SUCCESS_REMOVE, szAppName);
PINSTALLED_INFO ItemInfo = (PINSTALLED_INFO)m_ListView->GetItemData(ItemIndex);
return UninstallApplication(ItemInfo, bModify);
}
BOOL ProcessWindowMessage(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT& theResult, DWORD dwMapId)
{
theResult = 0;
@ -1593,12 +1602,12 @@ private:
break;
case ID_UNINSTALL:
if (UninstallApplication(-1, FALSE))
if (UninstallSelectedApp(FALSE))
UpdateApplicationsList(-1);
break;
case ID_MODIFY:
if (UninstallApplication(-1, TRUE))
if (UninstallSelectedApp(TRUE))
UpdateApplicationsList(-1);
break;

View file

@ -18,5 +18,4 @@ typedef BOOL(CALLBACK *APPENUMPROC)(INT ItemIndex, ATL::CStringW &Name, PINSTALL
BOOL EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC lpEnumProc, PVOID param);
BOOL GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, LPWSTR szString);
BOOL UninstallApplication(INT Index, BOOL bModify);
VOID RemoveAppFromRegistry(INT Index);
BOOL UninstallApplication(PINSTALLED_INFO ItemInfo, BOOL bModify);

View file

@ -38,48 +38,16 @@ BOOL GetApplicationString(HKEY hKey, LPCWSTR lpKeyName, LPWSTR szString)
return FALSE;
}
BOOL UninstallApplication(INT Index, BOOL bModify)
BOOL UninstallApplication(PINSTALLED_INFO ItemInfo, BOOL bModify)
{
LPCWSTR szModify = L"ModifyPath";
LPCWSTR szUninstall = L"UninstallString";
WCHAR szPath[MAX_PATH];
WCHAR szAppName[MAX_STR_LEN];
DWORD dwType, dwSize;
INT ItemIndex;
LVITEMW Item;
HKEY hKey;
PINSTALLED_INFO ItemInfo;
if (!IsInstalledEnum(SelectedEnumType))
return FALSE;
if (Index == -1)
{
ItemIndex = (INT) SendMessageW(hListView, LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
if (ItemIndex == -1)
return FALSE;
}
else
{
ItemIndex = Index;
}
ListView_GetItemText(hListView, ItemIndex, 0, szAppName, _countof(szAppName));
WriteLogMessage(EVENTLOG_SUCCESS, MSG_SUCCESS_REMOVE, szAppName);
ZeroMemory(&Item, sizeof(Item));
Item.mask = LVIF_PARAM;
Item.iItem = ItemIndex;
if (!ListView_GetItem(hListView, &Item))
return FALSE;
ItemInfo = (PINSTALLED_INFO) Item.lParam;
hKey = ItemInfo->hSubKey;
WCHAR szPath[MAX_PATH];
dwType = REG_SZ;
dwSize = MAX_PATH * sizeof(WCHAR);
if (RegQueryValueExW(hKey,
if (RegQueryValueExW(ItemInfo->hSubKey,
bModify ? szModify : szUninstall,
NULL,
&dwType,