[TASKMGR] Hold Shift to bypass MessageBox confirmation (#5845)

Allow the user to hold shift to automatically answer IDYES when killing/debugging a process or changing the priority.
This commit is contained in:
Whindmar Saksit 2023-11-01 13:43:33 +01:00 committed by GitHub
parent 31876ba8c2
commit 5d1be078f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 13 additions and 4 deletions

View file

@ -30,7 +30,7 @@ void ProcessPage_OnDebug(void)
LoadStringW(hInst, IDS_MSG_WARNINGDEBUG, szTemp, _countof(szTemp));
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTempA, _countof(szTempA));
if (MessageBoxW(hMainWnd, szTemp, szTempA, MB_YESNO | MB_ICONWARNING) != IDYES)
if (!ConfirmMessageBox(hMainWnd, szTemp, szTempA, MB_YESNO | MB_ICONWARNING))
{
GetLastErrorText(strErrorText, _countof(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, _countof(szTemp));

View file

@ -39,7 +39,7 @@ void ProcessPage_OnEndProcess(void)
/* if this is a standard process just ask for confirmation before doing it */
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256);
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256);
if (MessageBoxW(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING|MB_TOPMOST) != IDYES)
if (!ConfirmMessageBox(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING|MB_TOPMOST))
{
if (hProcess) CloseHandle(hProcess);
return;
@ -169,7 +169,7 @@ void ProcessPage_OnEndProcessTree(void)
LoadStringW(hInst, IDS_MSG_WARNINGTERMINATING, strErrorText, 256);
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256);
if (MessageBoxW(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING) != IDYES)
if (!ConfirmMessageBox(hMainWnd, strErrorText, szTitle, MB_YESNO|MB_ICONWARNING))
{
if (hProcess) CloseHandle(hProcess);
return;

View file

@ -22,7 +22,7 @@ void DoSetPriority(DWORD priority)
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256);
LoadStringW(hInst, IDS_MSG_WARNINGCHANGEPRIORITY, szText, 260);
if (MessageBoxW(hMainWnd, szText, szTitle, MB_YESNO|MB_ICONWARNING) != IDYES)
if (!ConfirmMessageBox(hMainWnd, szText, szTitle, MB_YESNO|MB_ICONWARNING))
return;
hProcess = OpenProcess(PROCESS_SET_INFORMATION, FALSE, dwProcessId);

View file

@ -1056,6 +1056,14 @@ void TaskManager_OnTabWndSelChange(void)
}
}
BOOL ConfirmMessageBox(HWND hWnd, LPCWSTR Text, LPCWSTR Title, UINT Type)
{
UINT positive = ((Type & 0xF) <= MB_OKCANCEL ? IDOK : IDYES);
if (GetKeyState(VK_SHIFT) < 0)
return TRUE;
return (MessageBoxW(hWnd, Text, Title, Type) == positive);
}
VOID ShowWin32Error(DWORD dwError)
{
LPWSTR lpMessageBuffer;

View file

@ -80,6 +80,7 @@ void TaskManager_OnRestoreMainWindow(void);
void TaskManager_OnMenuSelect(HWND hWnd, UINT nItemID, UINT nFlags, HMENU hSysMenu);
void TaskManager_OnViewUpdateSpeed(DWORD);
void TaskManager_OnTabWndSelChange(void);
BOOL ConfirmMessageBox(HWND hWnd, LPCWSTR Text, LPCWSTR Title, UINT Type);
VOID ShowWin32Error(DWORD dwError);
LPTSTR GetLastErrorText( LPTSTR lpszBuf, DWORD dwSize );
DWORD EndLocalThread(HANDLE *hThread, DWORD dwThread);