https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8451230753d1941471ec2f41a522e70caae2e1a9
commit 8451230753d1941471ec2f41a522e70caae2e1a9 Author: Alexey Strukov <oplk...@gmail.com> AuthorDate: Tue Oct 10 22:22:54 2023 +0300 Commit: GitHub <nore...@github.com> CommitDate: Tue Oct 10 21:22:54 2023 +0200 [DEVMGR] Allow to copy text from Details page of device properties (#5775) In driver properties, in details tab, add a "Copy" popup menu for listview. This will allow to copy driver's information to buffer. --- dll/win32/devmgr/lang/bg-BG.rc | 1 + dll/win32/devmgr/lang/cs-CZ.rc | 1 + dll/win32/devmgr/lang/de-DE.rc | 1 + dll/win32/devmgr/lang/el-GR.rc | 1 + dll/win32/devmgr/lang/en-US.rc | 1 + dll/win32/devmgr/lang/es-ES.rc | 1 + dll/win32/devmgr/lang/et-EE.rc | 1 + dll/win32/devmgr/lang/fr-FR.rc | 1 + dll/win32/devmgr/lang/he-IL.rc | 1 + dll/win32/devmgr/lang/hu-HU.rc | 1 + dll/win32/devmgr/lang/id-ID.rc | 1 + dll/win32/devmgr/lang/it-IT.rc | 1 + dll/win32/devmgr/lang/ja-JP.rc | 1 + dll/win32/devmgr/lang/no-NO.rc | 1 + dll/win32/devmgr/lang/pl-PL.rc | 1 + dll/win32/devmgr/lang/pt-BR.rc | 1 + dll/win32/devmgr/lang/pt-PT.rc | 1 + dll/win32/devmgr/lang/ro-RO.rc | 1 + dll/win32/devmgr/lang/ru-RU.rc | 1 + dll/win32/devmgr/lang/sk-SK.rc | 1 + dll/win32/devmgr/lang/sq-AL.rc | 1 + dll/win32/devmgr/lang/tr-TR.rc | 1 + dll/win32/devmgr/lang/uk-UA.rc | 1 + dll/win32/devmgr/lang/zh-CN.rc | 1 + dll/win32/devmgr/lang/zh-HK.rc | 1 + dll/win32/devmgr/lang/zh-TW.rc | 1 + dll/win32/devmgr/properties/advprop.cpp | 71 +++++++++++++++++++++++++++++++++ dll/win32/devmgr/resource.h | 2 + 28 files changed, 99 insertions(+) diff --git a/dll/win32/devmgr/lang/bg-BG.rc b/dll/win32/devmgr/lang/bg-BG.rc index 608e9e7651d..269a7844700 100644 --- a/dll/win32/devmgr/lang/bg-BG.rc +++ b/dll/win32/devmgr/lang/bg-BG.rc @@ -31,6 +31,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O range" + IDS_COPY "За&помняне" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/cs-CZ.rc b/dll/win32/devmgr/lang/cs-CZ.rc index ec0b3b73cdf..7ea12cccda2 100644 --- a/dll/win32/devmgr/lang/cs-CZ.rc +++ b/dll/win32/devmgr/lang/cs-CZ.rc @@ -36,6 +36,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "Rozsah I/O" + IDS_COPY "&Kopírovat" END /* puvodni anglicke error messages prevzaty z: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/de-DE.rc b/dll/win32/devmgr/lang/de-DE.rc index 2ee2bf7bf55..79b8da95d40 100644 --- a/dll/win32/devmgr/lang/de-DE.rc +++ b/dll/win32/devmgr/lang/de-DE.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "E/A-Bereich" + IDS_COPY "&Kopieren" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/el-GR.rc b/dll/win32/devmgr/lang/el-GR.rc index d340a974d12..99e5d1d9c3a 100644 --- a/dll/win32/devmgr/lang/el-GR.rc +++ b/dll/win32/devmgr/lang/el-GR.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O range" + IDS_COPY "&Αντιγραφή" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/en-US.rc b/dll/win32/devmgr/lang/en-US.rc index 73800ecd181..5d5686bbadc 100644 --- a/dll/win32/devmgr/lang/en-US.rc +++ b/dll/win32/devmgr/lang/en-US.rc @@ -31,6 +31,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O range" + IDS_COPY "&Copy" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/es-ES.rc b/dll/win32/devmgr/lang/es-ES.rc index 73f747e5cb5..adace42dd18 100644 --- a/dll/win32/devmgr/lang/es-ES.rc +++ b/dll/win32/devmgr/lang/es-ES.rc @@ -40,6 +40,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "Intervalo de E/S" + IDS_COPY "&Copiar" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/et-EE.rc b/dll/win32/devmgr/lang/et-EE.rc index 24b2e1079e0..61d47b5c0b4 100644 --- a/dll/win32/devmgr/lang/et-EE.rc +++ b/dll/win32/devmgr/lang/et-EE.rc @@ -38,6 +38,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O ulatus" + IDS_COPY "&Kopeeri" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/fr-FR.rc b/dll/win32/devmgr/lang/fr-FR.rc index daa0cd14706..183c09623c9 100644 --- a/dll/win32/devmgr/lang/fr-FR.rc +++ b/dll/win32/devmgr/lang/fr-FR.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "Rang I/O" + IDS_COPY "&Copier" END STRINGTABLE diff --git a/dll/win32/devmgr/lang/he-IL.rc b/dll/win32/devmgr/lang/he-IL.rc index 7b782c4a024..6d2723856e6 100644 --- a/dll/win32/devmgr/lang/he-IL.rc +++ b/dll/win32/devmgr/lang/he-IL.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O range" + IDS_COPY "הע&תק" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/hu-HU.rc b/dll/win32/devmgr/lang/hu-HU.rc index 41285a298e3..7fc86b5fc73 100644 --- a/dll/win32/devmgr/lang/hu-HU.rc +++ b/dll/win32/devmgr/lang/hu-HU.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O tartomány" + IDS_COPY "&Másolás" END STRINGTABLE diff --git a/dll/win32/devmgr/lang/id-ID.rc b/dll/win32/devmgr/lang/id-ID.rc index 057db41bada..86d44ad468e 100644 --- a/dll/win32/devmgr/lang/id-ID.rc +++ b/dll/win32/devmgr/lang/id-ID.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "Rentang I/O" + IDS_COPY "&Salin" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/it-IT.rc b/dll/win32/devmgr/lang/it-IT.rc index a196f6f55aa..09b5d6a3b60 100644 --- a/dll/win32/devmgr/lang/it-IT.rc +++ b/dll/win32/devmgr/lang/it-IT.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O range" + IDS_COPY "&Copia" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/ja-JP.rc b/dll/win32/devmgr/lang/ja-JP.rc index 6b8ccd29c2e..1fc049d01d4 100644 --- a/dll/win32/devmgr/lang/ja-JP.rc +++ b/dll/win32/devmgr/lang/ja-JP.rc @@ -31,6 +31,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O 範囲" + IDS_COPY "コピー(&C)" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/no-NO.rc b/dll/win32/devmgr/lang/no-NO.rc index ac18e97f48d..cb027cc7d2d 100644 --- a/dll/win32/devmgr/lang/no-NO.rc +++ b/dll/win32/devmgr/lang/no-NO.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O range" + IDS_COPY "&Kopier" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/pl-PL.rc b/dll/win32/devmgr/lang/pl-PL.rc index 479997fa0ca..5f37465a4dc 100644 --- a/dll/win32/devmgr/lang/pl-PL.rc +++ b/dll/win32/devmgr/lang/pl-PL.rc @@ -42,6 +42,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "Zakres I/O" + IDS_COPY "&Kopiuj" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/pt-BR.rc b/dll/win32/devmgr/lang/pt-BR.rc index 5111ca30069..e6ecb1f8f82 100644 --- a/dll/win32/devmgr/lang/pt-BR.rc +++ b/dll/win32/devmgr/lang/pt-BR.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O range" + IDS_COPY "&Copiar" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/pt-PT.rc b/dll/win32/devmgr/lang/pt-PT.rc index 5870e00a93a..d58c67ab136 100644 --- a/dll/win32/devmgr/lang/pt-PT.rc +++ b/dll/win32/devmgr/lang/pt-PT.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "Faixa I/O" + IDS_COPY "&Copiar" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/ro-RO.rc b/dll/win32/devmgr/lang/ro-RO.rc index 22af2d2e240..aa6842b766c 100644 --- a/dll/win32/devmgr/lang/ro-RO.rc +++ b/dll/win32/devmgr/lang/ro-RO.rc @@ -40,6 +40,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "Domeniu In/Ex" + IDS_COPY "&Copiază" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/ru-RU.rc b/dll/win32/devmgr/lang/ru-RU.rc index 2926b4953c6..32a798665fa 100644 --- a/dll/win32/devmgr/lang/ru-RU.rc +++ b/dll/win32/devmgr/lang/ru-RU.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "Диапазон I/O" + IDS_COPY "&Копировать" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/sk-SK.rc b/dll/win32/devmgr/lang/sk-SK.rc index 3974a5abbb9..74b95fa6590 100644 --- a/dll/win32/devmgr/lang/sk-SK.rc +++ b/dll/win32/devmgr/lang/sk-SK.rc @@ -36,6 +36,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O range" + IDS_COPY "&Kopírovať" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/sq-AL.rc b/dll/win32/devmgr/lang/sq-AL.rc index 5662c85ba95..a92819f36e1 100644 --- a/dll/win32/devmgr/lang/sq-AL.rc +++ b/dll/win32/devmgr/lang/sq-AL.rc @@ -35,6 +35,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O shtrirje" + IDS_COPY "&Kopjo" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/tr-TR.rc b/dll/win32/devmgr/lang/tr-TR.rc index 8e5bb542e2d..b3ba51800b9 100644 --- a/dll/win32/devmgr/lang/tr-TR.rc +++ b/dll/win32/devmgr/lang/tr-TR.rc @@ -33,6 +33,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "G/Ç Aralığı" + IDS_COPY "K&opyala" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/uk-UA.rc b/dll/win32/devmgr/lang/uk-UA.rc index 35be22bf9f6..c84b01481ff 100644 --- a/dll/win32/devmgr/lang/uk-UA.rc +++ b/dll/win32/devmgr/lang/uk-UA.rc @@ -39,6 +39,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O range" + IDS_COPY "Копі&ювати" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/zh-CN.rc b/dll/win32/devmgr/lang/zh-CN.rc index ecd5e6344e9..ee8db668545 100644 --- a/dll/win32/devmgr/lang/zh-CN.rc +++ b/dll/win32/devmgr/lang/zh-CN.rc @@ -40,6 +40,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O 范围" + IDS_COPY "复制(&C)" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/zh-HK.rc b/dll/win32/devmgr/lang/zh-HK.rc index 4c5cbcc46f5..96bdc5655fa 100644 --- a/dll/win32/devmgr/lang/zh-HK.rc +++ b/dll/win32/devmgr/lang/zh-HK.rc @@ -39,6 +39,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O 範圍" + IDS_COPY "複製(&C)" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/lang/zh-TW.rc b/dll/win32/devmgr/lang/zh-TW.rc index 94e4b65df6c..76f1ba1db40 100644 --- a/dll/win32/devmgr/lang/zh-TW.rc +++ b/dll/win32/devmgr/lang/zh-TW.rc @@ -39,6 +39,7 @@ BEGIN IDS_RESOURCE_INTERRUPT "IRQ" IDS_RESOURCE_DMA "DMA" IDS_RESOURCE_PORT "I/O 範圍" + IDS_COPY "複製(&C)" END /* error messages, source: http://www.z123.org/techsupport/medm.htm */ diff --git a/dll/win32/devmgr/properties/advprop.cpp b/dll/win32/devmgr/properties/advprop.cpp index aac24a749f7..c53fe65a46c 100644 --- a/dll/win32/devmgr/properties/advprop.cpp +++ b/dll/win32/devmgr/properties/advprop.cpp @@ -1897,6 +1897,31 @@ AdvProcDetailsDlgProc(IN HWND hwndDlg, { switch (uMsg) { + case WM_CONTEXTMENU: + { + if ((HWND)wParam == GetDlgItem(hwndDlg, IDC_DETAILSPROPVALUE)) + { + WCHAR szColName[255]; + + if (!LoadStringW(hDllInstance, IDS_COPY, szColName, _countof(szColName))) + break; + + INT nSelectedItems = ListView_GetSelectedCount((HWND)wParam); + POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; + HMENU hPopup = CreatePopupMenu(); + + AppendMenuW(hPopup, MF_STRING, IDS_MENU_COPY, szColName); + + if (nSelectedItems <= 0) + EnableMenuItem(hPopup, IDS_MENU_COPY, MF_BYCOMMAND | MF_GRAYED); + + TrackPopupMenu(hPopup, TPM_LEFTALIGN, pt.x, pt.y, 0, hwndDlg, NULL); + DestroyMenu(hPopup); + Ret = TRUE; + } + break; + } + case WM_COMMAND: { switch (LOWORD(wParam)) @@ -1909,6 +1934,52 @@ AdvProcDetailsDlgProc(IN HWND hwndDlg, GetDlgItem(hwndDlg, IDC_DETAILSPROPVALUE)); } break; + + case IDS_MENU_COPY: + { + HWND hwndListView = GetDlgItem(hwndDlg, IDC_DETAILSPROPVALUE); + INT nSelectedItems = ListView_GetSelectedCount(hwndListView); + INT nSelectedId = ListView_GetSelectionMark(hwndListView); + + if (nSelectedId < 0 || nSelectedItems <= 0) + break; + + TCHAR szItemName[MAX_PATH]; + HGLOBAL hGlobal; + LPWSTR pszBuffer; + + ListView_GetItemText(hwndListView, + nSelectedId, 0, + szItemName, + _countof(szItemName)); + + hGlobal = GlobalAlloc(GHND, MAX_PATH); + if (!hGlobal) + break; + pszBuffer = (LPWSTR)GlobalLock(hGlobal); + if (!pszBuffer) + { + GlobalFree(hGlobal); + break; + } + + wsprintf(pszBuffer, L"%s", szItemName); + + GlobalUnlock(hGlobal); + + if (OpenClipboard(NULL)) + { + EmptyClipboard(); + SetClipboardData(CF_UNICODETEXT, hGlobal); + CloseClipboard(); + Ret = TRUE; + } + else + { + GlobalFree(hGlobal); + } + break; + } } break; } diff --git a/dll/win32/devmgr/resource.h b/dll/win32/devmgr/resource.h index b99006e05ac..a515dfaba38 100644 --- a/dll/win32/devmgr/resource.h +++ b/dll/win32/devmgr/resource.h @@ -61,6 +61,7 @@ #define IDS_MENU_SCAN 94 #define IDS_MENU_ADD 95 #define IDS_MENU_PROPERTIES 96 +#define IDS_MENU_COPY 97 /* menu hints */ @@ -127,6 +128,7 @@ #define IDS_RESOURCE_INTERRUPT 0x11A #define IDS_RESOURCE_DMA 0x11B #define IDS_RESOURCE_PORT 0x11C +#define IDS_COPY 0x11D #define IDS_DEV_NO_PROBLEM 0x200 #define IDS_DEV_NOT_CONFIGURED 0x201