[EXPLORER] Support Unicode on Start Button InvokeCommand (#7644)

Support Unicode on Start Button
context menu for international text
support.
JIRA issue: N/A
- Support Unicode in
  CStartMenuBtnCtxMenu::InvokeCommand
  method by using
  CMINVOKECOMMANDINFOEX structure.
This commit is contained in:
Katayama Hirofumi MZ 2025-01-20 22:26:33 +09:00 committed by GitHub
parent d4f283b67b
commit 56988ffbf8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -193,27 +193,37 @@ public:
InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
{
UINT uiCmdId = PtrToUlong(lpici->lpVerb);
if (!IsShellCmdId((UINT_PTR)lpici->lpVerb))
if (!IsShellCmdId(uiCmdId))
{
CMINVOKECOMMANDINFO cmici = { 0 };
CHAR szDir[MAX_PATH];
CMINVOKECOMMANDINFOEX cmici = { sizeof(cmici) };
/* Setup and invoke the shell command */
cmici.cbSize = sizeof(cmici);
cmici.hwnd = m_Owner;
if (IS_INTRESOURCE(lpici->lpVerb))
cmici.lpVerb = MAKEINTRESOURCEA(uiCmdId - INNERIDOFFSET);
else
cmici.lpVerb = lpici->lpVerb;
cmici.nShow = SW_NORMAL;
/* FIXME: Support Unicode!!! */
if (SHGetPathFromIDListA(m_FolderPidl, szDir))
cmici.fMask = CMIC_MASK_UNICODE;
WCHAR szVerbW[MAX_PATH];
if (IS_INTRESOURCE(lpici->lpVerb))
{
cmici.lpDirectory = szDir;
cmici.lpVerb = MAKEINTRESOURCEA(uiCmdId - INNERIDOFFSET);
cmici.lpVerbW = MAKEINTRESOURCEW(uiCmdId - INNERIDOFFSET);
}
else
{
cmici.lpVerb = lpici->lpVerb;
SHAnsiToUnicode(lpici->lpVerb, szVerbW, _countof(szVerbW));
cmici.lpVerbW = szVerbW;
}
return m_Inner->InvokeCommand(&cmici);
CHAR szDirA[MAX_PATH];
WCHAR szDirW[MAX_PATH];
if (SHGetPathFromIDListW(m_FolderPidl, szDirW))
{
SHUnicodeToAnsi(szDirW, szDirA, _countof(szDirA));
cmici.lpDirectory = szDirA;
cmici.lpDirectoryW = szDirW;
}
return m_Inner->InvokeCommand((LPCMINVOKECOMMANDINFO)&cmici);
}
m_TrayWnd->ExecContextMenuCmd(uiCmdId);
return S_OK;