зеркало из https://github.com/github/putty.git
SetCurrentProcessExplicitAppUserModelID to fix jumplist/removable media bug
The algorithm Windows uses to generate AppUserModelIDs "hangs on" to removable media (CDs/DVDs) if PuTTY is launched with a CD/DVD in a drive. Set the AppUserModelID explicitly to avoid using this algorithm.
This commit is contained in:
Родитель
c5ce372a36
Коммит
bf00bcd2a4
|
@ -357,6 +357,11 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
|
|||
|
||||
InitCommonControls();
|
||||
|
||||
/* Set Explicit App User Model Id so that jump lists don't cause
|
||||
PuTTY to hang on to removable media. */
|
||||
|
||||
set_explicit_app_user_model_id();
|
||||
|
||||
/* Ensure a Maximize setting in Explorer doesn't maximise the
|
||||
* config box. */
|
||||
defuse_showwindow();
|
||||
|
|
|
@ -714,3 +714,33 @@ void remove_session_from_jumplist(const char * const sessionname)
|
|||
clear_jumplist();
|
||||
}
|
||||
}
|
||||
|
||||
/* Set Explicit App User Model Id to fix removable media error with
|
||||
jump lists */
|
||||
|
||||
BOOL set_explicit_app_user_model_id()
|
||||
{
|
||||
DECL_WINDOWS_FUNCTION(static, HRESULT, SetCurrentProcessExplicitAppUserModelID,
|
||||
(PCWSTR));
|
||||
|
||||
static HMODULE shell32_module = 0;
|
||||
|
||||
if (!shell32_module)
|
||||
{
|
||||
shell32_module = load_system32_dll("Shell32.dll");
|
||||
GET_WINDOWS_FUNCTION(shell32_module, SetCurrentProcessExplicitAppUserModelID);
|
||||
}
|
||||
|
||||
if (p_SetCurrentProcessExplicitAppUserModelID)
|
||||
{
|
||||
if (p_SetCurrentProcessExplicitAppUserModelID(L"SimonTatham.PuTTY") == S_OK)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
/* Function doesn't exist, which is ok for Pre-7 systems */
|
||||
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
|
|
@ -543,6 +543,7 @@ extern Backend serial_backend;
|
|||
void add_session_to_jumplist(const char * const sessionname);
|
||||
void remove_session_from_jumplist(const char * const sessionname);
|
||||
void clear_jumplist(void);
|
||||
BOOL set_explicit_app_user_model_id();
|
||||
|
||||
/*
|
||||
* Extra functions in winstore.c over and above the interface in
|
||||
|
|
Загрузка…
Ссылка в новой задаче