Compare commits
118 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9606e11e0e | |||
| 7f04293361 | |||
| e6b33a70e4 | |||
| 179a59ac1b | |||
| 2a5ed14599 | |||
| 1cc5d2eb53 | |||
| 687e50914f | |||
| a165ba38a6 | |||
| 6b7cfc5ab2 | |||
| 1f2c3d43a6 | |||
| 5bee5ae143 | |||
| f01c126b36 | |||
| 3d1fa11973 | |||
| 93245dc4d6 | |||
| 86447299b1 | |||
| 64259f73e8 | |||
| 8031739110 | |||
| 27e5c2bc74 | |||
| bb26cec0ec | |||
| ef663d2051 | |||
| be8568ce00 | |||
| 5399e3ad8c | |||
| 68379f4098 | |||
| daa1d96f12 | |||
| 998d83c15c | |||
| 0cb43dd17c | |||
| b89aaed785 | |||
| 47cc2b2304 | |||
| a20215d9da | |||
| 4f362760b6 | |||
| 2e43d4c7a1 | |||
| 4b2688245f | |||
| 082f85a4e2 | |||
| 0ce76c9c36 | |||
| 6e71d7c414 | |||
| 84909cf397 | |||
| fc290d5a6a | |||
| ebd530f652 | |||
| e50c5f73d7 | |||
| 1db0006c96 | |||
| 7d0a9df1c3 | |||
| 8e1b4e35a3 | |||
| 859afc63d3 | |||
| ee6db35b34 | |||
| 283c0fce03 | |||
| ac5e69f1a0 | |||
| b2df22104e | |||
| c88f028f3e | |||
| 312bfd99d5 | |||
| ca576a0224 | |||
| a5f35b133f | |||
| f197c9f43d | |||
| bce9efcc43 | |||
| 80c38d95e9 | |||
| 0b535d1dd8 | |||
| e2ff745949 | |||
| fbcf85559e | |||
| ed3da927cc | |||
| 225d0ba8f9 | |||
| afaf16620a | |||
| 4883d13950 | |||
| b094ddc5f9 | |||
| a422105c61 | |||
| 96423b8918 | |||
| ba131ff14b | |||
| 7d59f5ebfb | |||
| 95f3a4b09a | |||
| 728f982310 | |||
| 2ca236c291 | |||
| 8a22282191 | |||
| 935600a6d9 | |||
| d3bf4b6207 | |||
| aa09a0dcc2 | |||
| cd8cc8cbc6 | |||
| 1bfbe09c6f | |||
| 61d05b49c5 | |||
| 9752afbebc | |||
| e210b4a65a | |||
| 6581868336 | |||
| 7ee668e474 | |||
| 62b949679b | |||
| 6242e8d9b9 | |||
| ee59bb76de | |||
| 3eb134a280 | |||
| 257023209b | |||
| 0da20180ac | |||
| 1f57c782e5 | |||
| 1f6e06fc85 | |||
| ed3675ca7f | |||
| 695e419722 | |||
| 3bceac1515 | |||
| 473f7e1445 | |||
| fcf95a3ea6 | |||
| cc02e38aef | |||
| 9c119c6e29 | |||
| 9e297866ed | |||
| 261929f4c3 | |||
| 9976e134ca | |||
| 1b410e5a80 | |||
| 9ebe53fdbf | |||
| 5f59aab40a | |||
| 4f46134f10 | |||
| 519f4afe17 | |||
| 30ffce6939 | |||
| fe47f841e7 | |||
| f33cd60b84 | |||
| 431e2b522d | |||
| d1ba5daead | |||
| 6fe4b6467f | |||
| 89a1a14b2c | |||
| 3ea331332c | |||
| 38c155cc95 | |||
| b4d2be18fe | |||
| 1a5f62ace2 | |||
| 935c6fc73a | |||
| 947fded387 | |||
| e6bd16e2d4 | |||
| 4806744c94 |
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Version:**
|
||||||
|
- Open-Shell: [e.g. 4.4.131]
|
||||||
|
- OS: [e.g. Windows 10 1903]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: Enhancement/Feature Request
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
@@ -4,6 +4,10 @@
|
|||||||
##
|
##
|
||||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# ignore vscode stuff
|
||||||
|
.vscode/
|
||||||
|
.ionide/
|
||||||
|
|
||||||
# User-specific files
|
# User-specific files
|
||||||
*.suo
|
*.suo
|
||||||
*.user
|
*.user
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
; This file contains all localized text for Classic Explorer. There is one section per language.
|
; This file contains all localized text for Open-Shell. There is one section per language.
|
||||||
; Every section contains text lines in the form of <key> = <string>.
|
; Every section contains text lines in the form of <key> = <string>.
|
||||||
; Which section is used depends on the current OS setting. If a key is missing from the language section
|
; Which section is used depends on the current OS setting. If a key is missing from the language section
|
||||||
; it will be searched in the [default] section. In some cases more than one language can be used.
|
; it will be searched in the [default] section. In some cases more than one language can be used.
|
||||||
@@ -1156,23 +1156,23 @@ Copy.More = Altro...
|
|||||||
Copy.CopyHere = &Copia qui
|
Copy.CopyHere = &Copia qui
|
||||||
Copy.MoveHere = &Sposta qui
|
Copy.MoveHere = &Sposta qui
|
||||||
Copy.Title = Conferma sostituzione file
|
Copy.Title = Conferma sostituzione file
|
||||||
Copy.Subtitle = La cartella contiene già un file di nome "%s".
|
Copy.Subtitle = La cartella contiene già un file "%s".
|
||||||
Copy.SubtitleRO = La cartella contiene già un file di sola lettura di nome "%s".
|
Copy.SubtitleRO = La cartella contiene già un file di sola lettura "%s".
|
||||||
Copy.SubtitleSys = La cartella contiene già un file di sistema di nome "%s".
|
Copy.SubtitleSys = La cartella contiene già un file di sistema "%s".
|
||||||
Copy.Prompt1 = Sostituire il file esistente
|
Copy.Prompt1 = Vuoi sostituire il file esistente
|
||||||
Copy.Prompt2 = con questo file?
|
Copy.Prompt2 = con questo file?
|
||||||
Copy.Yes = &Sì
|
Copy.Yes = &Sì
|
||||||
Copy.No = &No
|
Copy.No = &No
|
||||||
Copy.YesAll = Sì t&utti
|
Copy.YesAll = Sì t&utti
|
||||||
Folder.Title = Conferma sostituzione cartella
|
Folder.Title = Conferma sostituzione cartella
|
||||||
Folder.Prompt = Continuare?
|
Folder.Prompt = Vuoi continuare?
|
||||||
Toolbar.GoUp = Livello superiore
|
Toolbar.GoUp = Cartella superiore
|
||||||
Toolbar.Cut = Taglia
|
Toolbar.Cut = Taglia
|
||||||
Toolbar.Copy = Copia
|
Toolbar.Copy = Copia
|
||||||
Toolbar.Paste = Incolla
|
Toolbar.Paste = Incolla
|
||||||
Toolbar.PasteShortcut = Incolla collegamento
|
Toolbar.PasteShortcut = Incolla collegamento
|
||||||
Toolbar.Delete = Elimina
|
Toolbar.Delete = Elimina
|
||||||
Toolbar.Email = Invia per posta elettronica gli elementi selezionati
|
Toolbar.Email = Invia gli elementi selezionati via email
|
||||||
Toolbar.Properties = Proprietà
|
Toolbar.Properties = Proprietà
|
||||||
Toolbar.NewFolder = Nuova cartella
|
Toolbar.NewFolder = Nuova cartella
|
||||||
Toolbar.ZipFolder = Nuova cartella compressa
|
Toolbar.ZipFolder = Nuova cartella compressa
|
||||||
@@ -1195,9 +1195,9 @@ Toolbar.SelectAll = Seleziona tutto
|
|||||||
Toolbar.CustomizeFolder = Personalizza cartella
|
Toolbar.CustomizeFolder = Personalizza cartella
|
||||||
Toolbar.MapDrive = Connetti unità di rete
|
Toolbar.MapDrive = Connetti unità di rete
|
||||||
Toolbar.DisconnectDrive = Disconnetti unità di rete
|
Toolbar.DisconnectDrive = Disconnetti unità di rete
|
||||||
Toolbar.NavigationPane = Riquadro di spostamento
|
Toolbar.NavigationPane = Riquadro spostamento
|
||||||
Toolbar.DetailsPane = Riquadro dettagli
|
Toolbar.DetailsPane = Riquadro dettagli
|
||||||
Toolbar.PreviewPane = Riquadro di anteprima
|
Toolbar.PreviewPane = Riquadro anteprima
|
||||||
Toolbar.CopyTo = Copia in
|
Toolbar.CopyTo = Copia in
|
||||||
Toolbar.MoveTo = Sposta in
|
Toolbar.MoveTo = Sposta in
|
||||||
Toolbar.Deselect = Deseleziona tutto
|
Toolbar.Deselect = Deseleziona tutto
|
||||||
@@ -1205,10 +1205,10 @@ Toolbar.InvertSelection = Inverti selezione
|
|||||||
Toolbar.FolderOptions = Opzioni cartella
|
Toolbar.FolderOptions = Opzioni cartella
|
||||||
Toolbar.ShowHiddenFiles = Cartelle e file nascosti
|
Toolbar.ShowHiddenFiles = Cartelle e file nascosti
|
||||||
Toolbar.ShowSystemFiles = File di sistema
|
Toolbar.ShowSystemFiles = File di sistema
|
||||||
Toolbar.ShowExtensions = Estensioni nomi file
|
Toolbar.ShowExtensions = Visualizza estensioni file
|
||||||
Status.FreeSpace = %s (Spazio disponibile: %s)
|
Status.FreeSpace = %s (spazio disponibile: %s)
|
||||||
Status.Item = %s elemento
|
Status.Item = %s elemento
|
||||||
Status.Items = Elementi: %s
|
Status.Items = %s elementi
|
||||||
Status.ItemSelected = %s elemento selezionato
|
Status.ItemSelected = %s elemento selezionato
|
||||||
Status.ItemsSelected = %s elementi selezionati
|
Status.ItemsSelected = %s elementi selezionati
|
||||||
|
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ Menu.RemoveHighlight = إزالة التمييز
|
|||||||
Menu.Uninstall = إز&الة التثبيت
|
Menu.Uninstall = إز&الة التثبيت
|
||||||
Menu.UninstallTitle = إزالة التثبيت
|
Menu.UninstallTitle = إزالة التثبيت
|
||||||
Menu.UninstallPrompt = هل تريد بالتأكيد إزالة تثبيت %s؟
|
Menu.UninstallPrompt = هل تريد بالتأكيد إزالة تثبيت %s؟
|
||||||
Search.CategorySettings = الإعدادات
|
Search.CategorySettings = لوحة التح&كم
|
||||||
Search.CategoryPCSettings = إعدادات الكمبيوتر
|
Search.CategoryPCSettings = إعدادات الكمبيوتر
|
||||||
Search.CategoryPrograms = البرامج
|
Search.CategoryPrograms = البرامج
|
||||||
Search.CategoryDocuments = المستندات
|
Search.CategoryDocuments = المستندات
|
||||||
@@ -265,7 +265,7 @@ Menu.RemoveHighlight = Премахни осветяването
|
|||||||
Menu.Uninstall = &Деинсталирай
|
Menu.Uninstall = &Деинсталирай
|
||||||
Menu.UninstallTitle = Деинсталиране
|
Menu.UninstallTitle = Деинсталиране
|
||||||
Menu.UninstallPrompt = Наистина ли искате да деинсталирате %s?
|
Menu.UninstallPrompt = Наистина ли искате да деинсталирате %s?
|
||||||
Search.CategorySettings = Настройки
|
Search.CategorySettings = Контролен панел
|
||||||
Search.CategoryPCSettings = Настройки на компютъра
|
Search.CategoryPCSettings = Настройки на компютъра
|
||||||
Search.CategoryPrograms = Програми
|
Search.CategoryPrograms = Програми
|
||||||
Search.CategoryDocuments = Документи
|
Search.CategoryDocuments = Документи
|
||||||
@@ -403,7 +403,7 @@ Menu.UninstallTitle = Desinstal·la
|
|||||||
Menu.UninstallPrompt = Esteu segur que voleu desinstal·lar el %s?
|
Menu.UninstallPrompt = Esteu segur que voleu desinstal·lar el %s?
|
||||||
Menu.ClassicSettings = Open-Shell &Menú
|
Menu.ClassicSettings = Open-Shell &Menú
|
||||||
Menu.SettingsTip = Ajustaments del Open-Shell Menú
|
Menu.SettingsTip = Ajustaments del Open-Shell Menú
|
||||||
Search.CategorySettings = Configuració
|
Search.CategorySettings = Panell de control
|
||||||
Search.CategoryPCSettings = Configuració de l'ordinador
|
Search.CategoryPCSettings = Configuració de l'ordinador
|
||||||
Search.CategoryPrograms = Programes
|
Search.CategoryPrograms = Programes
|
||||||
Search.CategoryDocuments = Documents
|
Search.CategoryDocuments = Documents
|
||||||
@@ -539,7 +539,7 @@ Menu.RemoveHighlight = Odebrat nejzajímavější místo
|
|||||||
Menu.Uninstall = &Odinstalovat
|
Menu.Uninstall = &Odinstalovat
|
||||||
Menu.UninstallTitle = Odinstalovat
|
Menu.UninstallTitle = Odinstalovat
|
||||||
Menu.UninstallPrompt = Opravdu chcete odinstalovat položku %s?
|
Menu.UninstallPrompt = Opravdu chcete odinstalovat položku %s?
|
||||||
Search.CategorySettings = Nastavení
|
Search.CategorySettings = Ovládací panely
|
||||||
Search.CategoryPCSettings = Nastavení počítače
|
Search.CategoryPCSettings = Nastavení počítače
|
||||||
Search.CategoryPrograms = Programy
|
Search.CategoryPrograms = Programy
|
||||||
Search.CategoryDocuments = Dokumenty
|
Search.CategoryDocuments = Dokumenty
|
||||||
@@ -675,7 +675,7 @@ Menu.RemoveHighlight = Fjern centralt punkt
|
|||||||
Menu.Uninstall = &Fjern
|
Menu.Uninstall = &Fjern
|
||||||
Menu.UninstallTitle = Fjern
|
Menu.UninstallTitle = Fjern
|
||||||
Menu.UninstallPrompt = Er du sikker på, at du vil fjerne %s?
|
Menu.UninstallPrompt = Er du sikker på, at du vil fjerne %s?
|
||||||
Search.CategorySettings = Indstillinger
|
Search.CategorySettings = Kontrolpanel
|
||||||
Search.CategoryPCSettings = Pc-indstillinger
|
Search.CategoryPCSettings = Pc-indstillinger
|
||||||
Search.CategoryPrograms = Programmer
|
Search.CategoryPrograms = Programmer
|
||||||
Search.CategoryDocuments = Dokumenter
|
Search.CategoryDocuments = Dokumenter
|
||||||
@@ -811,7 +811,7 @@ Menu.RemoveHighlight = Haupttreffer entfernen
|
|||||||
Menu.Uninstall = &Deinstallieren
|
Menu.Uninstall = &Deinstallieren
|
||||||
Menu.UninstallTitle = Deinstallieren
|
Menu.UninstallTitle = Deinstallieren
|
||||||
Menu.UninstallPrompt = Möchten Sie %s wirklich deinstallieren?
|
Menu.UninstallPrompt = Möchten Sie %s wirklich deinstallieren?
|
||||||
Search.CategorySettings = Einstellungen
|
Search.CategorySettings = Systemsteuerung
|
||||||
Search.CategoryPCSettings = PC-Einstellungen
|
Search.CategoryPCSettings = PC-Einstellungen
|
||||||
Search.CategoryPrograms = Programme
|
Search.CategoryPrograms = Programme
|
||||||
Search.CategoryDocuments = Dokumente
|
Search.CategoryDocuments = Dokumente
|
||||||
@@ -947,7 +947,7 @@ Menu.RemoveHighlight = Κατάργηση επισήμανσης
|
|||||||
Menu.Uninstall = &Κατάργηση εγκατάστασης
|
Menu.Uninstall = &Κατάργηση εγκατάστασης
|
||||||
Menu.UninstallTitle = Κατάργηση εγκατάστασης
|
Menu.UninstallTitle = Κατάργηση εγκατάστασης
|
||||||
Menu.UninstallPrompt = Είστε βέβαιοι ότι θέλετε να καταργήσετε την εγκατάσταση του %s;
|
Menu.UninstallPrompt = Είστε βέβαιοι ότι θέλετε να καταργήσετε την εγκατάσταση του %s;
|
||||||
Search.CategorySettings = Ρυθμίσεις
|
Search.CategorySettings = Πίνακας Ελέγχου
|
||||||
Search.CategoryPCSettings = Ρυθμίσεις υπολογιστή
|
Search.CategoryPCSettings = Ρυθμίσεις υπολογιστή
|
||||||
Search.CategoryPrograms = Προγράμματα
|
Search.CategoryPrograms = Προγράμματα
|
||||||
Search.CategoryDocuments = Έγγραφα
|
Search.CategoryDocuments = Έγγραφα
|
||||||
@@ -991,7 +991,7 @@ Menu.LogOffShort = &Log off
|
|||||||
Menu.Undock = Undock Comput&er
|
Menu.Undock = Undock Comput&er
|
||||||
Menu.Disconnect = D&isconnect
|
Menu.Disconnect = D&isconnect
|
||||||
Menu.ShutdownBox = Sh&ut Down...
|
Menu.ShutdownBox = Sh&ut Down...
|
||||||
Menu.Shutdown = Sh&ut Down
|
Menu.Shutdown = Sh&ut down
|
||||||
Menu.Restart = &Restart
|
Menu.Restart = &Restart
|
||||||
Menu.ShutdownUpdate = Update and shut down
|
Menu.ShutdownUpdate = Update and shut down
|
||||||
Menu.RestartUpdate = Update and restart
|
Menu.RestartUpdate = Update and restart
|
||||||
@@ -1083,8 +1083,8 @@ Menu.RemoveHighlight = Remove highlight
|
|||||||
Menu.Uninstall = &Uninstall
|
Menu.Uninstall = &Uninstall
|
||||||
Menu.UninstallTitle = Uninstall
|
Menu.UninstallTitle = Uninstall
|
||||||
Menu.UninstallPrompt = Are you sure you want to uninstall %s?
|
Menu.UninstallPrompt = Are you sure you want to uninstall %s?
|
||||||
Search.CategorySettings = Settings
|
Search.CategorySettings = Control Panel
|
||||||
Search.CategoryPCSettings = Modern Settings
|
Search.CategoryPCSettings = Settings
|
||||||
Search.CategoryPrograms = Programs
|
Search.CategoryPrograms = Programs
|
||||||
Search.CategoryDocuments = Documents
|
Search.CategoryDocuments = Documents
|
||||||
Search.CategoryMusic = Music
|
Search.CategoryMusic = Music
|
||||||
@@ -1219,7 +1219,7 @@ Menu.RemoveHighlight = Quitar como elemento destacado
|
|||||||
Menu.Uninstall = &Desinstalar
|
Menu.Uninstall = &Desinstalar
|
||||||
Menu.UninstallTitle = Desinstalar
|
Menu.UninstallTitle = Desinstalar
|
||||||
Menu.UninstallPrompt = ¿Está seguro de que desea desinstalar %s?
|
Menu.UninstallPrompt = ¿Está seguro de que desea desinstalar %s?
|
||||||
Search.CategorySettings = Configuración
|
Search.CategorySettings = Panel de control
|
||||||
Search.CategoryPCSettings = Configuración de tu PC
|
Search.CategoryPCSettings = Configuración de tu PC
|
||||||
Search.CategoryPrograms = Programas
|
Search.CategoryPrograms = Programas
|
||||||
Search.CategoryDocuments = Documentos
|
Search.CategoryDocuments = Documentos
|
||||||
@@ -1355,7 +1355,7 @@ Menu.RemoveHighlight = Eemalda esiletõst
|
|||||||
Menu.Uninstall = &Desinstalli
|
Menu.Uninstall = &Desinstalli
|
||||||
Menu.UninstallTitle = Desinstalli
|
Menu.UninstallTitle = Desinstalli
|
||||||
Menu.UninstallPrompt = Kas soovite kindlasti desinstallida %s?
|
Menu.UninstallPrompt = Kas soovite kindlasti desinstallida %s?
|
||||||
Search.CategorySettings = Sätted
|
Search.CategorySettings = Juhtpaneel
|
||||||
Search.CategoryPCSettings = Arvutisätted
|
Search.CategoryPCSettings = Arvutisätted
|
||||||
Search.CategoryPrograms = Programmid
|
Search.CategoryPrograms = Programmid
|
||||||
Search.CategoryDocuments = Dokumendid
|
Search.CategoryDocuments = Dokumendid
|
||||||
@@ -1493,7 +1493,7 @@ Menu.UninstallTitle = لغو نصب
|
|||||||
Menu.UninstallPrompt = آیا مطمئنید می خواهید %s را لغو نصب کنید؟
|
Menu.UninstallPrompt = آیا مطمئنید می خواهید %s را لغو نصب کنید؟
|
||||||
Menu.ClassicSettings = منوی ش&روع کلاسیک
|
Menu.ClassicSettings = منوی ش&روع کلاسیک
|
||||||
Menu.SettingsTip = تنظیمات منوی شروع کلاسیک
|
Menu.SettingsTip = تنظیمات منوی شروع کلاسیک
|
||||||
Search.CategorySettings = تنظیمات
|
Search.CategorySettings = صفحه کنترل
|
||||||
Search.CategoryPCSettings = تنظیمات رایانه
|
Search.CategoryPCSettings = تنظیمات رایانه
|
||||||
Search.CategoryPrograms = برنامهها
|
Search.CategoryPrograms = برنامهها
|
||||||
Search.CategoryDocuments = اسناد
|
Search.CategoryDocuments = اسناد
|
||||||
@@ -1629,7 +1629,7 @@ Menu.RemoveHighlight = Poista tärkeä kohde
|
|||||||
Menu.Uninstall = &Poista asennus
|
Menu.Uninstall = &Poista asennus
|
||||||
Menu.UninstallTitle = Poista asennus
|
Menu.UninstallTitle = Poista asennus
|
||||||
Menu.UninstallPrompt = Haluatko varmasti poistaa kohteen %s asennuksen?
|
Menu.UninstallPrompt = Haluatko varmasti poistaa kohteen %s asennuksen?
|
||||||
Search.CategorySettings = Asetukset
|
Search.CategorySettings = Ohjauspaneeli
|
||||||
Search.CategoryPCSettings = Tietokoneen asetukset
|
Search.CategoryPCSettings = Tietokoneen asetukset
|
||||||
Search.CategoryPrograms = Ohjelmat
|
Search.CategoryPrograms = Ohjelmat
|
||||||
Search.CategoryDocuments = Tiedostot
|
Search.CategoryDocuments = Tiedostot
|
||||||
@@ -1765,7 +1765,7 @@ Menu.RemoveHighlight = Supprimer la recommandation
|
|||||||
Menu.Uninstall = &Désinstaller
|
Menu.Uninstall = &Désinstaller
|
||||||
Menu.UninstallTitle = Désinstaller
|
Menu.UninstallTitle = Désinstaller
|
||||||
Menu.UninstallPrompt = Faut-il vraiment désinstaller %s ?
|
Menu.UninstallPrompt = Faut-il vraiment désinstaller %s ?
|
||||||
Search.CategorySettings = Paramètres
|
Search.CategorySettings = Panneau de configuration
|
||||||
Search.CategoryPCSettings = Paramètres du PC
|
Search.CategoryPCSettings = Paramètres du PC
|
||||||
Search.CategoryPrograms = Programmes
|
Search.CategoryPrograms = Programmes
|
||||||
Search.CategoryDocuments = Documents
|
Search.CategoryDocuments = Documents
|
||||||
@@ -1901,7 +1901,7 @@ Menu.RemoveHighlight = Remove highlight
|
|||||||
Menu.Uninstall = &Dì-stàlaich
|
Menu.Uninstall = &Dì-stàlaich
|
||||||
Menu.UninstallTitle = Dì-stàlaich
|
Menu.UninstallTitle = Dì-stàlaich
|
||||||
Menu.UninstallPrompt = A bheil thu cinnteach gu bheil thu airson %s a dhì-stàladh?
|
Menu.UninstallPrompt = A bheil thu cinnteach gu bheil thu airson %s a dhì-stàladh?
|
||||||
Search.CategorySettings = Roghainnean
|
Search.CategorySettings = A' phanail-smachd
|
||||||
Search.CategoryPCSettings = Roghainnean a' PC
|
Search.CategoryPCSettings = Roghainnean a' PC
|
||||||
Search.CategoryPrograms = Prògraman
|
Search.CategoryPrograms = Prògraman
|
||||||
Search.CategoryDocuments = Sgrìobhainnean
|
Search.CategoryDocuments = Sgrìobhainnean
|
||||||
@@ -2037,7 +2037,7 @@ Menu.RemoveHighlight = הסר הבלטה
|
|||||||
Menu.Uninstall = ה&סר התקנה
|
Menu.Uninstall = ה&סר התקנה
|
||||||
Menu.UninstallTitle = הסר התקנה
|
Menu.UninstallTitle = הסר התקנה
|
||||||
Menu.UninstallPrompt = האם אתה בטוח שברצונך להסיר את התקנת %s?
|
Menu.UninstallPrompt = האם אתה בטוח שברצונך להסיר את התקנת %s?
|
||||||
Search.CategorySettings = הגדרות
|
Search.CategorySettings = לוח הבקרה
|
||||||
Search.CategoryPCSettings = הגדרות מחשב
|
Search.CategoryPCSettings = הגדרות מחשב
|
||||||
Search.CategoryPrograms = תוכניות
|
Search.CategoryPrograms = תוכניות
|
||||||
Search.CategoryDocuments = מסמכים
|
Search.CategoryDocuments = מסמכים
|
||||||
@@ -2173,7 +2173,7 @@ Menu.RemoveHighlight = Ukloni isticanje
|
|||||||
Menu.Uninstall = &Deinstaliraj
|
Menu.Uninstall = &Deinstaliraj
|
||||||
Menu.UninstallTitle = Deinstaliraj
|
Menu.UninstallTitle = Deinstaliraj
|
||||||
Menu.UninstallPrompt = Jeste li sigurni da želite deinstalirati %s iz računala?
|
Menu.UninstallPrompt = Jeste li sigurni da želite deinstalirati %s iz računala?
|
||||||
Search.CategorySettings = Postavke
|
Search.CategorySettings = Upravljačka ploča
|
||||||
Search.CategoryPCSettings = Postavke PC-ja
|
Search.CategoryPCSettings = Postavke PC-ja
|
||||||
Search.CategoryPrograms = Programi
|
Search.CategoryPrograms = Programi
|
||||||
Search.CategoryDocuments = Dokumenti
|
Search.CategoryDocuments = Dokumenti
|
||||||
@@ -2309,7 +2309,7 @@ Menu.RemoveHighlight = Kiemelés eltávolítása
|
|||||||
Menu.Uninstall = Eltá&volítás
|
Menu.Uninstall = Eltá&volítás
|
||||||
Menu.UninstallTitle = Eltávolítás
|
Menu.UninstallTitle = Eltávolítás
|
||||||
Menu.UninstallPrompt = Biztosan el kívánja távolítani a következőt: %s?
|
Menu.UninstallPrompt = Biztosan el kívánja távolítani a következőt: %s?
|
||||||
Search.CategorySettings = Beállítások
|
Search.CategorySettings = Vezérlőpult
|
||||||
Search.CategoryPCSettings = Gépház
|
Search.CategoryPCSettings = Gépház
|
||||||
Search.CategoryPrograms = Programs
|
Search.CategoryPrograms = Programs
|
||||||
Search.CategoryDocuments = Dokumentumok
|
Search.CategoryDocuments = Dokumentumok
|
||||||
@@ -2447,8 +2447,8 @@ Menu.RemoveHighlight = Fjarlægja auðkenningu
|
|||||||
Menu.Uninstall = Fjarlægja
|
Menu.Uninstall = Fjarlægja
|
||||||
Menu.UninstallTitle = Fjarlægja
|
Menu.UninstallTitle = Fjarlægja
|
||||||
Menu.UninstallPrompt = Ertu viss um að það eigi að fjarlægja %s?
|
Menu.UninstallPrompt = Ertu viss um að það eigi að fjarlægja %s?
|
||||||
Search.CategorySettings = Stillingar
|
Search.CategorySettings = Stjórnborð
|
||||||
Search.CategoryPCSettings = Sérstillingar tölvunnar
|
Search.CategoryPCSettings = PC stillingar
|
||||||
Search.CategoryPrograms = Forrit
|
Search.CategoryPrograms = Forrit
|
||||||
Search.CategoryDocuments = Skjöl
|
Search.CategoryDocuments = Skjöl
|
||||||
Search.CategoryMusic = Tónlist
|
Search.CategoryMusic = Tónlist
|
||||||
@@ -2583,7 +2583,7 @@ Menu.RemoveHighlight = Rimuovi elemento di rilievo
|
|||||||
Menu.Uninstall = &Disinstalla
|
Menu.Uninstall = &Disinstalla
|
||||||
Menu.UninstallTitle = Disinstalla
|
Menu.UninstallTitle = Disinstalla
|
||||||
Menu.UninstallPrompt = Disinstallare %s?
|
Menu.UninstallPrompt = Disinstallare %s?
|
||||||
Search.CategorySettings = Impostazioni
|
Search.CategorySettings = Pannello di controllo
|
||||||
Search.CategoryPCSettings = Impostazioni PC
|
Search.CategoryPCSettings = Impostazioni PC
|
||||||
Search.CategoryPrograms = Programmi
|
Search.CategoryPrograms = Programmi
|
||||||
Search.CategoryDocuments = Documenti
|
Search.CategoryDocuments = Documenti
|
||||||
@@ -2991,7 +2991,7 @@ Menu.RemoveHighlight = Šalinti paryškinimą
|
|||||||
Menu.Uninstall = &Pašalinti
|
Menu.Uninstall = &Pašalinti
|
||||||
Menu.UninstallTitle = Pašalinti
|
Menu.UninstallTitle = Pašalinti
|
||||||
Menu.UninstallPrompt = Ar tikrai norite pašalinti %s?
|
Menu.UninstallPrompt = Ar tikrai norite pašalinti %s?
|
||||||
Search.CategorySettings = Parametrai
|
Search.CategorySettings = Valdymo skydas
|
||||||
Search.CategoryPCSettings = PC parametrai
|
Search.CategoryPCSettings = PC parametrai
|
||||||
Search.CategoryPrograms = Programos
|
Search.CategoryPrograms = Programos
|
||||||
Search.CategoryDocuments = Dokumentai
|
Search.CategoryDocuments = Dokumentai
|
||||||
@@ -3127,7 +3127,7 @@ Menu.RemoveHighlight = Noņemt marķējumu
|
|||||||
Menu.Uninstall = &Atinstalēt
|
Menu.Uninstall = &Atinstalēt
|
||||||
Menu.UninstallTitle = Atinstalēt
|
Menu.UninstallTitle = Atinstalēt
|
||||||
Menu.UninstallPrompt = Vai esat pārliecināts, ka vēlaties atinstalēt %s?
|
Menu.UninstallPrompt = Vai esat pārliecināts, ka vēlaties atinstalēt %s?
|
||||||
Search.CategorySettings = Iestatījumi
|
Search.CategorySettings = Vadības panelis
|
||||||
Search.CategoryPCSettings = Datora iestatījumi
|
Search.CategoryPCSettings = Datora iestatījumi
|
||||||
Search.CategoryPrograms = Programmas
|
Search.CategoryPrograms = Programmas
|
||||||
Search.CategoryDocuments = Dokumenti
|
Search.CategoryDocuments = Dokumenti
|
||||||
@@ -3263,7 +3263,7 @@ Menu.RemoveHighlight = Remove highlight
|
|||||||
Menu.Uninstall = &Деинсталирај
|
Menu.Uninstall = &Деинсталирај
|
||||||
Menu.UninstallTitle = Деинсталирај
|
Menu.UninstallTitle = Деинсталирај
|
||||||
Menu.UninstallPrompt = Дали сте сигурни дека сакате да го деинсталирате %s?
|
Menu.UninstallPrompt = Дали сте сигурни дека сакате да го деинсталирате %s?
|
||||||
Search.CategorySettings = Подесувања
|
Search.CategorySettings = Контрол панел
|
||||||
Search.CategoryPCSettings = Параметри на компјутерот
|
Search.CategoryPCSettings = Параметри на компјутерот
|
||||||
Search.CategoryPrograms = Програми
|
Search.CategoryPrograms = Програми
|
||||||
Search.CategoryDocuments = Документи
|
Search.CategoryDocuments = Документи
|
||||||
@@ -3399,7 +3399,7 @@ Menu.RemoveHighlight = Fjern høydepunkt
|
|||||||
Menu.Uninstall = &Avinstaller
|
Menu.Uninstall = &Avinstaller
|
||||||
Menu.UninstallTitle = Avinstaller
|
Menu.UninstallTitle = Avinstaller
|
||||||
Menu.UninstallPrompt = Er du sikker på at du vil avinstallere %s?
|
Menu.UninstallPrompt = Er du sikker på at du vil avinstallere %s?
|
||||||
Search.CategorySettings = Innstillinger
|
Search.CategorySettings = Kontrollpanel
|
||||||
Search.CategoryPCSettings = PC-innstillinger
|
Search.CategoryPCSettings = PC-innstillinger
|
||||||
Search.CategoryPrograms = Programmer
|
Search.CategoryPrograms = Programmer
|
||||||
Search.CategoryDocuments = Dokumenter
|
Search.CategoryDocuments = Dokumenter
|
||||||
@@ -3535,7 +3535,7 @@ Menu.RemoveHighlight = Aandachtspunt verwijderen
|
|||||||
Menu.Uninstall = V&erwijderen
|
Menu.Uninstall = V&erwijderen
|
||||||
Menu.UninstallTitle = Verwijderen
|
Menu.UninstallTitle = Verwijderen
|
||||||
Menu.UninstallPrompt = Weet u zeker dat u %s wilt verwijderen?
|
Menu.UninstallPrompt = Weet u zeker dat u %s wilt verwijderen?
|
||||||
Search.CategorySettings = Instellingen
|
Search.CategorySettings = Configuratiescherm
|
||||||
Search.CategoryPCSettings = Pc-instellingen
|
Search.CategoryPCSettings = Pc-instellingen
|
||||||
Search.CategoryPrograms = Programma's
|
Search.CategoryPrograms = Programma's
|
||||||
Search.CategoryDocuments = Documenten
|
Search.CategoryDocuments = Documenten
|
||||||
@@ -3671,7 +3671,7 @@ Menu.RemoveHighlight = Usuń wyróżnienie
|
|||||||
Menu.Uninstall = &Odinstaluj
|
Menu.Uninstall = &Odinstaluj
|
||||||
Menu.UninstallTitle = Odinstaluj
|
Menu.UninstallTitle = Odinstaluj
|
||||||
Menu.UninstallPrompt = Czy na pewno chcesz odinstalować program %s?
|
Menu.UninstallPrompt = Czy na pewno chcesz odinstalować program %s?
|
||||||
Search.CategorySettings = Ustawienia
|
Search.CategorySettings = Panel sterowania
|
||||||
Search.CategoryPCSettings = Ustawienia komputera
|
Search.CategoryPCSettings = Ustawienia komputera
|
||||||
Search.CategoryPrograms = Programy
|
Search.CategoryPrograms = Programy
|
||||||
Search.CategoryDocuments = Dokumenty
|
Search.CategoryDocuments = Dokumenty
|
||||||
@@ -3722,7 +3722,7 @@ Menu.RestartUpdate = Atualizar e reiniciar
|
|||||||
Menu.Sleep = &Dormir
|
Menu.Sleep = &Dormir
|
||||||
Menu.Hibernate = &Hibernar
|
Menu.Hibernate = &Hibernar
|
||||||
Menu.ControlPanel = &Painel de controle
|
Menu.ControlPanel = &Painel de controle
|
||||||
Menu.PCSettings = Configurações do computador
|
Menu.PCSettings = Configurações
|
||||||
Menu.Security = Segurança do Windows
|
Menu.Security = Segurança do Windows
|
||||||
Menu.Network = Co&nexões de Rede
|
Menu.Network = Co&nexões de Rede
|
||||||
Menu.Printers = &Impressoras
|
Menu.Printers = &Impressoras
|
||||||
@@ -3807,7 +3807,7 @@ Menu.RemoveHighlight = Remover Destaque
|
|||||||
Menu.Uninstall = &Desinstalar
|
Menu.Uninstall = &Desinstalar
|
||||||
Menu.UninstallTitle = Desinstalar
|
Menu.UninstallTitle = Desinstalar
|
||||||
Menu.UninstallPrompt = Tem certeza de que deseja desinstalar %s?
|
Menu.UninstallPrompt = Tem certeza de que deseja desinstalar %s?
|
||||||
Search.CategorySettings = Configurações
|
Search.CategorySettings = Painel de controle
|
||||||
Search.CategoryPCSettings = Configurações do computador
|
Search.CategoryPCSettings = Configurações do computador
|
||||||
Search.CategoryPrograms = Programas
|
Search.CategoryPrograms = Programas
|
||||||
Search.CategoryDocuments = Documentos
|
Search.CategoryDocuments = Documentos
|
||||||
@@ -3943,7 +3943,7 @@ Menu.RemoveHighlight = Remover destaque
|
|||||||
Menu.Uninstall = D&esinstalar
|
Menu.Uninstall = D&esinstalar
|
||||||
Menu.UninstallTitle = Desinstalar
|
Menu.UninstallTitle = Desinstalar
|
||||||
Menu.UninstallPrompt = Tem a certeza de que pretende desinstalar %s?
|
Menu.UninstallPrompt = Tem a certeza de que pretende desinstalar %s?
|
||||||
Search.CategorySettings = Definições
|
Search.CategorySettings = Painel de controlo
|
||||||
Search.CategoryPCSettings = Definições do PC
|
Search.CategoryPCSettings = Definições do PC
|
||||||
Search.CategoryPrograms = Programas
|
Search.CategoryPrograms = Programas
|
||||||
Search.CategoryDocuments = Documentos
|
Search.CategoryDocuments = Documentos
|
||||||
@@ -4079,7 +4079,7 @@ Menu.RemoveHighlight = Eliminare evidențiere
|
|||||||
Menu.Uninstall = &Dezinstalare
|
Menu.Uninstall = &Dezinstalare
|
||||||
Menu.UninstallTitle = Dezinstalare
|
Menu.UninstallTitle = Dezinstalare
|
||||||
Menu.UninstallPrompt = Sigur dezinstalați %s?
|
Menu.UninstallPrompt = Sigur dezinstalați %s?
|
||||||
Search.CategorySettings = Setări
|
Search.CategorySettings = Panou de control
|
||||||
Search.CategoryPCSettings = Setări PC
|
Search.CategoryPCSettings = Setări PC
|
||||||
Search.CategoryPrograms = Programe
|
Search.CategoryPrograms = Programe
|
||||||
Search.CategoryDocuments = Documente
|
Search.CategoryDocuments = Documente
|
||||||
@@ -4215,7 +4215,7 @@ Menu.RemoveHighlight = Выключить пометку
|
|||||||
Menu.Uninstall = &Удалить
|
Menu.Uninstall = &Удалить
|
||||||
Menu.UninstallTitle = Удалить
|
Menu.UninstallTitle = Удалить
|
||||||
Menu.UninstallPrompt = Вы действительно хотите удалить "%s"?
|
Menu.UninstallPrompt = Вы действительно хотите удалить "%s"?
|
||||||
Search.CategorySettings = Параметры
|
Search.CategorySettings = Панель управления
|
||||||
Search.CategoryPCSettings = Параметры ПК
|
Search.CategoryPCSettings = Параметры ПК
|
||||||
Search.CategoryPrograms = Программы
|
Search.CategoryPrograms = Программы
|
||||||
Search.CategoryDocuments = Документы
|
Search.CategoryDocuments = Документы
|
||||||
@@ -4351,7 +4351,7 @@ Menu.RemoveHighlight = Odstrániť zvýraznenie
|
|||||||
Menu.Uninstall = &Odinštalovať
|
Menu.Uninstall = &Odinštalovať
|
||||||
Menu.UninstallTitle = Odinštalovať
|
Menu.UninstallTitle = Odinštalovať
|
||||||
Menu.UninstallPrompt = Naozaj chcete odinštalovať program %s?
|
Menu.UninstallPrompt = Naozaj chcete odinštalovať program %s?
|
||||||
Search.CategorySettings = Nastavenia
|
Search.CategorySettings = Ovládací panel
|
||||||
Search.CategoryPCSettings = Nastavenie PC
|
Search.CategoryPCSettings = Nastavenie PC
|
||||||
Search.CategoryPrograms = Programy
|
Search.CategoryPrograms = Programy
|
||||||
Search.CategoryDocuments = Dokumenty
|
Search.CategoryDocuments = Dokumenty
|
||||||
@@ -4487,7 +4487,7 @@ Menu.RemoveHighlight = Odstrani označitev
|
|||||||
Menu.Uninstall = &Odstrani
|
Menu.Uninstall = &Odstrani
|
||||||
Menu.UninstallTitle = Odstrani
|
Menu.UninstallTitle = Odstrani
|
||||||
Menu.UninstallPrompt = Ali ste prepričani, da želite odstraniti %s?
|
Menu.UninstallPrompt = Ali ste prepričani, da želite odstraniti %s?
|
||||||
Search.CategorySettings = Nastavitve
|
Search.CategorySettings = Nadzorna plošča
|
||||||
Search.CategoryPCSettings = Nastavitve računalnika
|
Search.CategoryPCSettings = Nastavitve računalnika
|
||||||
Search.CategoryPrograms = Programi
|
Search.CategoryPrograms = Programi
|
||||||
Search.CategoryDocuments = Dokumenti
|
Search.CategoryDocuments = Dokumenti
|
||||||
@@ -4623,7 +4623,7 @@ Menu.RemoveHighlight = Ukloni istaknuti sadržaj
|
|||||||
Menu.Uninstall = &Deinstaliraj
|
Menu.Uninstall = &Deinstaliraj
|
||||||
Menu.UninstallTitle = Deinstaliraj
|
Menu.UninstallTitle = Deinstaliraj
|
||||||
Menu.UninstallPrompt = Želite li zaista da deinstalirate %s?
|
Menu.UninstallPrompt = Želite li zaista da deinstalirate %s?
|
||||||
Search.CategorySettings = Postavke
|
Search.CategorySettings = Kontrolna tabla
|
||||||
Search.CategoryPCSettings = Postavke računara
|
Search.CategoryPCSettings = Postavke računara
|
||||||
Search.CategoryPrograms = Programs
|
Search.CategoryPrograms = Programs
|
||||||
Search.CategoryDocuments = Dokumenti
|
Search.CategoryDocuments = Dokumenti
|
||||||
@@ -4759,7 +4759,7 @@ Menu.RemoveHighlight = Ta bort fokus
|
|||||||
Menu.Uninstall = &Avinstallera
|
Menu.Uninstall = &Avinstallera
|
||||||
Menu.UninstallTitle = Avinstallera
|
Menu.UninstallTitle = Avinstallera
|
||||||
Menu.UninstallPrompt = Vill du avinstallera %s?
|
Menu.UninstallPrompt = Vill du avinstallera %s?
|
||||||
Search.CategorySettings = Inställningar
|
Search.CategorySettings = Kontrollpanelen
|
||||||
Search.CategoryPCSettings = Datorinställningar
|
Search.CategoryPCSettings = Datorinställningar
|
||||||
Search.CategoryPrograms = Program
|
Search.CategoryPrograms = Program
|
||||||
Search.CategoryDocuments = Dokument
|
Search.CategoryDocuments = Dokument
|
||||||
@@ -4896,7 +4896,7 @@ Menu.RemoveHighlight = เอาไฮไลท์ออก
|
|||||||
Menu.Uninstall = &ถอนการติดตั้ง
|
Menu.Uninstall = &ถอนการติดตั้ง
|
||||||
Menu.UninstallTitle = ถอนการติดตั้ง
|
Menu.UninstallTitle = ถอนการติดตั้ง
|
||||||
Menu.UninstallPrompt = คุณแน่ใจหรือไม่ว่าคุณต้องการถอนการติดตั้ง %s
|
Menu.UninstallPrompt = คุณแน่ใจหรือไม่ว่าคุณต้องการถอนการติดตั้ง %s
|
||||||
Search.CategorySettings = การตั้งค่า
|
Search.CategorySettings = แผงควบคุม
|
||||||
Search.CategoryPCSettings = การตั้งค่าพีซี
|
Search.CategoryPCSettings = การตั้งค่าพีซี
|
||||||
Search.CategoryPrograms = โปรแกรม
|
Search.CategoryPrograms = โปรแกรม
|
||||||
Search.CategoryDocuments = เอกสาร
|
Search.CategoryDocuments = เอกสาร
|
||||||
@@ -5032,7 +5032,7 @@ Menu.RemoveHighlight = Önemli Noktayı Kaldır
|
|||||||
Menu.Uninstall = &Kaldır
|
Menu.Uninstall = &Kaldır
|
||||||
Menu.UninstallTitle = Kaldır
|
Menu.UninstallTitle = Kaldır
|
||||||
Menu.UninstallPrompt = %s programını kaldırmak istediğinizden emin misiniz?
|
Menu.UninstallPrompt = %s programını kaldırmak istediğinizden emin misiniz?
|
||||||
Search.CategorySettings = Ayarlar
|
Search.CategorySettings = Denetim Masası
|
||||||
Search.CategoryPCSettings = Bilgisayar ayarları
|
Search.CategoryPCSettings = Bilgisayar ayarları
|
||||||
Search.CategoryPrograms = Programlar
|
Search.CategoryPrograms = Programlar
|
||||||
Search.CategoryDocuments = Belgeler
|
Search.CategoryDocuments = Belgeler
|
||||||
@@ -5168,7 +5168,7 @@ Menu.RemoveHighlight = Видалити виділення
|
|||||||
Menu.Uninstall = &Видалити
|
Menu.Uninstall = &Видалити
|
||||||
Menu.UninstallTitle = Видалити
|
Menu.UninstallTitle = Видалити
|
||||||
Menu.UninstallPrompt = Дійсно видалити %s?
|
Menu.UninstallPrompt = Дійсно видалити %s?
|
||||||
Search.CategorySettings = Настройки
|
Search.CategorySettings = Панель керування
|
||||||
Search.CategoryPCSettings = Параметри ПК
|
Search.CategoryPCSettings = Параметри ПК
|
||||||
Search.CategoryPrograms = Програми
|
Search.CategoryPrograms = Програми
|
||||||
Search.CategoryDocuments = Документи
|
Search.CategoryDocuments = Документи
|
||||||
|
|||||||
@@ -2,28 +2,32 @@
|
|||||||
|
|
||||||
*Originally* **[Classic Shell](http://www.classicshell.net)** *by [Ivo Beltchev](https://sourceforge.net/u/ibeltchev/profile/)*
|
*Originally* **[Classic Shell](http://www.classicshell.net)** *by [Ivo Beltchev](https://sourceforge.net/u/ibeltchev/profile/)*
|
||||||
|
|
||||||
[](https://github.com/Open-Shell/Open-Shell-Menu/releases) [](https://github.com/Open-Shell/Open-Shell-Menu/releases) [](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master) [](https://gitq.com/passionate-coder/Classic-Start) [](https://gitter.im/open-shell/Lobby)
|
[](https://github.com/Open-Shell/Open-Shell-Menu/releases/latest) [](https://github.com/Open-Shell/Open-Shell-Menu/releases) [](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master) [](https://gitq.com/passionate-coder/Classic-Start) [](https://gitter.im/open-shell/Lobby) [](https://discord.gg/7H6arr5)
|
||||||
|
|
||||||
[Home Page](https://open-shell.github.io/Open-Shell-Menu)
|
[Home Page](https://open-shell.github.io/Open-Shell-Menu)
|
||||||
|
[Gitter Discussion room](https://gitter.im/Open-Shell)
|
||||||
[Discussion room](https://gitter.im/Open-Shell)
|
|
||||||
|
|
||||||
[Latest nightly build](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master/artifacts)
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
- Classic style Start Menu for Windows 7, 8, 8.1, 10
|
- Classic style Start Menu for Windows 7, 8, 8.1, 10
|
||||||
- Toolbar for Windows Explorer
|
- Toolbar for Windows Explorer
|
||||||
- Classic copy UI (Windows 7 only)
|
- Classic copy UI (Windows 7 only)
|
||||||
- Show file size in Explorer status bar
|
- Show file size in Explorer status bar
|
||||||
- Title bar and status bar for Internet Explorer
|
- Title bar and status bar for Internet Explorer
|
||||||
|
|
||||||
---
|
### Download
|
||||||
|
If you just want to use it or looking for setup file, click here to download:
|
||||||
|
|
||||||
|
[](https://github.com/Open-Shell/Open-Shell-Menu/releases/latest)
|
||||||
|
|
||||||
|
### Temporary Translation/Language Solution
|
||||||
|
1. Download [language DLL](https://coddec.github.io/Classic-Shell/www.classicshell.net/translations/index.html)
|
||||||
|
2. Place it either in the Open-Shell's __install folder__ or in the `%ALLUSERSPROFILE%\OpenShell\Languages` folder
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
*For archival reasons, we have a mirror of `www.classicshell.net` [here](https://coddec.github.io/Classic-Shell/www.classicshell.net/).*
|
*For archival reasons, we have a mirror of `www.classicshell.net` [here](https://coddec.github.io/Classic-Shell/www.classicshell.net/).*
|
||||||
|
|
||||||
[How To Skin a Start Menu](https://coddec.github.io/Classic-Shell/www.classicshell.net/tutorials/skintutorial.html)
|
[How To Skin a Start Menu](https://coddec.github.io/Classic-Shell/www.classicshell.net/tutorials/skintutorial.html)
|
||||||
|
|
||||||
[Classic Shell - Custom Start Buttons](https://coddec.github.io/Classic-Shell/www.classicshell.net/tutorials/buttontutorial.html)
|
[Classic Shell - Custom Start Buttons](https://coddec.github.io/Classic-Shell/www.classicshell.net/tutorials/buttontutorial.html)
|
||||||
|
[Questions? Ask on the Discussions section](https://github.com/Open-Shell/Open-Shell-Menu/discussions) or on [Discord](https://discord.gg/7H6arr5)
|
||||||
[Report a bug/issue or submit a feature request](https://github.com/Open-Shell/Open-Shell-Menu/issues)
|
[Report a bug/issue or submit a feature request](https://github.com/Open-Shell/Open-Shell-Menu/issues)
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ for other languages.
|
|||||||
The final files (installers, archives) are saved to the Setup\Final folder.
|
The final files (installers, archives) are saved to the Setup\Final folder.
|
||||||
|
|
||||||
You need the following tools:
|
You need the following tools:
|
||||||
Visual Studio 2017 (Community Edition is enough)
|
Visual Studio 2019 (Community Edition is enough)
|
||||||
- Desktop development with C++ workload
|
- Desktop development with C++ workload
|
||||||
- Windows 10 SDK (10.0.17134.0) for Desktop C++
|
- Windows 10 SDK (10.0.19041.0) for Desktop C++
|
||||||
- Visual C++ ATL support
|
- Visual C++ ATL support
|
||||||
HTML Help Workshop
|
HTML Help Workshop
|
||||||
WiX 3.7
|
WiX 3.7
|
||||||
|
|||||||
@@ -30,46 +30,46 @@
|
|||||||
<ProjectGuid>{9AF324B7-F786-4D85-B2E1-6E51720F874E}</ProjectGuid>
|
<ProjectGuid>{9AF324B7-F786-4D85-B2E1-6E51720F874E}</ProjectGuid>
|
||||||
<RootNamespace>ClassicExplorer</RootNamespace>
|
<RootNamespace>ClassicExplorer</RootNamespace>
|
||||||
<Keyword>AtlProj</Keyword>
|
<Keyword>AtlProj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -158,7 +158,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>false</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
@@ -178,6 +177,7 @@
|
|||||||
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<PerUserRedirection>true</PerUserRedirection>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@@ -194,7 +194,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>false</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
@@ -214,6 +213,7 @@
|
|||||||
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<PerUserRedirection>true</PerUserRedirection>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@@ -251,6 +251,7 @@
|
|||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<PerUserRedirection>true</PerUserRedirection>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@@ -287,6 +288,7 @@
|
|||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<PerUserRedirection>true</PerUserRedirection>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
|
||||||
|
|||||||
@@ -18,26 +18,26 @@
|
|||||||
<ProjectGuid>{E93271C8-0252-4A08-8227-1978C64C2D34}</ProjectGuid>
|
<ProjectGuid>{E93271C8-0252-4A08-8227-1978C64C2D34}</ProjectGuid>
|
||||||
<RootNamespace>ClassicExplorerSettings</RootNamespace>
|
<RootNamespace>ClassicExplorerSettings</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -77,7 +77,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
|||||||
@@ -792,8 +792,8 @@ LRESULT CALLBACK CExplorerBHO::SubclassBreadcrumbProc( HWND hWnd, UINT uMsg, WPA
|
|||||||
BOOL dwm;
|
BOOL dwm;
|
||||||
if (theme && SUCCEEDED(DwmIsCompositionEnabled(&dwm)) && dwm)
|
if (theme && SUCCEEDED(DwmIsCompositionEnabled(&dwm)) && dwm)
|
||||||
{
|
{
|
||||||
DTTOPTS opts={sizeof(opts),DTT_COMPOSITED|DTT_TEXTCOLOR};
|
DTTOPTS opts={sizeof(opts),DTT_COMPOSITED|DTT_COLORPROP};
|
||||||
opts.crText=GetSysColor(COLOR_WINDOWTEXT);
|
opts.iColorPropId = COLOR_WINDOWTEXT;
|
||||||
DrawThemeTextEx(theme,hdcPaint,0,0,pThis->m_CurPath,-1,DT_NOPREFIX|DT_VCENTER|DT_SINGLELINE,&rc,&opts);
|
DrawThemeTextEx(theme,hdcPaint,0,0,pThis->m_CurPath,-1,DT_NOPREFIX|DT_VCENTER|DT_SINGLELINE,&rc,&opts);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -380,7 +380,7 @@ LRESULT CEditToolbarDlg::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl,
|
|||||||
{
|
{
|
||||||
wchar_t text[_MAX_PATH];
|
wchar_t text[_MAX_PATH];
|
||||||
GetDlgItemText(IDC_COMBOLINK,text,_countof(text));
|
GetDlgItemText(IDC_COMBOLINK,text,_countof(text));
|
||||||
if (BrowseLinkHelper(m_hWnd,text))
|
if (BrowseLinkHelper(m_hWnd,text,false))
|
||||||
{
|
{
|
||||||
SetDlgItemText(IDC_COMBOLINK,text);
|
SetDlgItemText(IDC_COMBOLINK,text);
|
||||||
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOLINK,CBN_KILLFOCUS));
|
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOLINK,CBN_KILLFOCUS));
|
||||||
|
|||||||
@@ -30,46 +30,46 @@
|
|||||||
<ProjectGuid>{65D5C193-E807-4094-AE19-19E6A310A312}</ProjectGuid>
|
<ProjectGuid>{65D5C193-E807-4094-AE19-19E6A310A312}</ProjectGuid>
|
||||||
<RootNamespace>ClassicIE</RootNamespace>
|
<RootNamespace>ClassicIE</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -142,7 +142,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
@@ -163,7 +162,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
|||||||
@@ -30,46 +30,46 @@
|
|||||||
<ProjectGuid>{BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}</ProjectGuid>
|
<ProjectGuid>{BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}</ProjectGuid>
|
||||||
<RootNamespace>ClassicIEDLL</RootNamespace>
|
<RootNamespace>ClassicIEDLL</RootNamespace>
|
||||||
<Keyword>AtlProj</Keyword>
|
<Keyword>AtlProj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -152,7 +152,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
@@ -171,6 +170,7 @@
|
|||||||
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<PerUserRedirection>true</PerUserRedirection>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@@ -187,7 +187,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;CLASSICIEDLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
@@ -206,6 +205,7 @@
|
|||||||
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<PerUserRedirection>true</PerUserRedirection>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@@ -242,6 +242,7 @@
|
|||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<PerUserRedirection>true</PerUserRedirection>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@@ -277,6 +278,7 @@
|
|||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<PerUserRedirection>true</PerUserRedirection>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ public:
|
|||||||
CAbsolutePidl( const CAbsolutePidl &pidl ) { m_Pidl=pidl?ILCloneFull(pidl):NULL; }
|
CAbsolutePidl( const CAbsolutePidl &pidl ) { m_Pidl=pidl?ILCloneFull(pidl):NULL; }
|
||||||
~CAbsolutePidl( void ) { Clear(); }
|
~CAbsolutePidl( void ) { Clear(); }
|
||||||
void operator=( const CAbsolutePidl &pidl ) { Clone(pidl); }
|
void operator=( const CAbsolutePidl &pidl ) { Clone(pidl); }
|
||||||
|
void operator=( PCIDLIST_ABSOLUTE pidl ) { Clone(pidl); }
|
||||||
|
|
||||||
void Clear( void ) { if (m_Pidl) ILFree(m_Pidl); m_Pidl=NULL; }
|
void Clear( void ) { if (m_Pidl) ILFree(m_Pidl); m_Pidl=NULL; }
|
||||||
operator PIDLIST_ABSOLUTE( void ) const { return m_Pidl; }
|
operator PIDLIST_ABSOLUTE( void ) const { return m_Pidl; }
|
||||||
@@ -21,7 +22,7 @@ public:
|
|||||||
void Swap( CAbsolutePidl &pidl ) { PIDLIST_ABSOLUTE q=pidl.m_Pidl; pidl.m_Pidl=m_Pidl; m_Pidl=q; }
|
void Swap( CAbsolutePidl &pidl ) { PIDLIST_ABSOLUTE q=pidl.m_Pidl; pidl.m_Pidl=m_Pidl; m_Pidl=q; }
|
||||||
void Attach( PIDLIST_ABSOLUTE pidl ) { Clear(); m_Pidl=pidl; }
|
void Attach( PIDLIST_ABSOLUTE pidl ) { Clear(); m_Pidl=pidl; }
|
||||||
PIDLIST_ABSOLUTE Detach( void ) { PIDLIST_ABSOLUTE pidl=m_Pidl; m_Pidl=NULL; return pidl; }
|
PIDLIST_ABSOLUTE Detach( void ) { PIDLIST_ABSOLUTE pidl=m_Pidl; m_Pidl=NULL; return pidl; }
|
||||||
void Clone( PIDLIST_ABSOLUTE pidl ) { Clear(); m_Pidl=pidl?ILCloneFull(pidl):NULL; }
|
void Clone( PCIDLIST_ABSOLUTE pidl ) { Clear(); m_Pidl=pidl?ILCloneFull(pidl):NULL; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PIDLIST_ABSOLUTE m_Pidl;
|
PIDLIST_ABSOLUTE m_Pidl;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#include "FNVHash.h"
|
#include "FNVHash.h"
|
||||||
#include "StringUtils.h"
|
#include "StringUtils.h"
|
||||||
#include "Translations.h"
|
#include "Translations.h"
|
||||||
|
#include "json.hpp"
|
||||||
#include <wininet.h>
|
#include <wininet.h>
|
||||||
#include <softpub.h>
|
#include <softpub.h>
|
||||||
|
|
||||||
@@ -141,30 +142,9 @@ LRESULT CProgressDlg::OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
|
|||||||
|
|
||||||
static bool g_bCheckingVersion;
|
static bool g_bCheckingVersion;
|
||||||
|
|
||||||
static DWORD GetTimeStamp( const wchar_t *fname )
|
|
||||||
{
|
|
||||||
HANDLE h=CreateFile(fname,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
|
|
||||||
if (h==INVALID_HANDLE_VALUE)
|
|
||||||
return 0;
|
|
||||||
DWORD res=0;
|
|
||||||
DWORD q;
|
|
||||||
IMAGE_DOS_HEADER header;
|
|
||||||
if (ReadFile(h,&header,sizeof(header),&q,NULL) && q==sizeof(header))
|
|
||||||
{
|
|
||||||
if (SetFilePointer(h,header.e_lfanew+8,NULL,FILE_BEGIN)!=INVALID_SET_FILE_POINTER)
|
|
||||||
{
|
|
||||||
if (!ReadFile(h,&res,4,&q,NULL) || q!=4)
|
|
||||||
res=0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
CloseHandle(h);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum TDownloadResult
|
enum TDownloadResult
|
||||||
{
|
{
|
||||||
DOWNLOAD_OK,
|
DOWNLOAD_OK,
|
||||||
DOWNLOAD_SAMETIME,
|
|
||||||
DOWNLOAD_CANCEL,
|
DOWNLOAD_CANCEL,
|
||||||
|
|
||||||
// errors
|
// errors
|
||||||
@@ -176,8 +156,7 @@ enum TDownloadResult
|
|||||||
|
|
||||||
// Downloads a file
|
// Downloads a file
|
||||||
// filename - returns the name of the downloaded file
|
// filename - returns the name of the downloaded file
|
||||||
// timestamp - if not zero, it is compared to the timestamp of the file and returns DOWNLOAD_SAMETIME if the same (and buf will be empty)
|
static TDownloadResult DownloadFile( const wchar_t *url, std::vector<char> &buf, CString *pFilename, bool bAcceptCached, CProgressDlg *pProgress, TSettingsComponent component )
|
||||||
static TDownloadResult DownloadFile( const wchar_t *url, std::vector<char> &buf, CString *pFilename, DWORD timestamp, bool bAcceptCached, CProgressDlg *pProgress, TSettingsComponent component )
|
|
||||||
{
|
{
|
||||||
const wchar_t *compName=L"Open-Shell";
|
const wchar_t *compName=L"Open-Shell";
|
||||||
switch (component)
|
switch (component)
|
||||||
@@ -211,15 +190,16 @@ static TDownloadResult DownloadFile( const wchar_t *url, std::vector<char> &buf,
|
|||||||
int time=GetTickCount();
|
int time=GetTickCount();
|
||||||
if (pProgress)
|
if (pProgress)
|
||||||
pProgress->SetText(LoadStringEx(IDS_PROGRESS_CONNECT));
|
pProgress->SetText(LoadStringEx(IDS_PROGRESS_CONNECT));
|
||||||
HINTERNET hConnect=InternetConnect(hInternet,host,INTERNET_DEFAULT_HTTP_PORT,L"",L"",INTERNET_SERVICE_HTTP,0,0);
|
HINTERNET hConnect=InternetConnect(hInternet,host,components.nPort,L"",L"",INTERNET_SERVICE_HTTP,0,0);
|
||||||
if (hConnect)
|
if (hConnect)
|
||||||
{
|
{
|
||||||
if (pProgress && pProgress->IsCanceled())
|
if (pProgress && pProgress->IsCanceled())
|
||||||
res=DOWNLOAD_CANCEL;
|
res=DOWNLOAD_CANCEL;
|
||||||
const wchar_t *accept[]={L"*/*",NULL};
|
|
||||||
if (res==DOWNLOAD_OK)
|
if (res==DOWNLOAD_OK)
|
||||||
{
|
{
|
||||||
HINTERNET hRequest=HttpOpenRequest(hConnect,L"GET",file,NULL,NULL,accept,bAcceptCached?0:INTERNET_FLAG_RELOAD,0);
|
const wchar_t* accept[] = { L"*/*",NULL };
|
||||||
|
HINTERNET hRequest=HttpOpenRequest(hConnect,L"GET",file,NULL,NULL,accept,((components.nScheme==INTERNET_SCHEME_HTTPS)?INTERNET_FLAG_SECURE:0)|(bAcceptCached?0:INTERNET_FLAG_RELOAD),0);
|
||||||
if (hRequest)
|
if (hRequest)
|
||||||
{
|
{
|
||||||
if (pProgress && pProgress->IsCanceled())
|
if (pProgress && pProgress->IsCanceled())
|
||||||
@@ -264,7 +244,7 @@ static TDownloadResult DownloadFile( const wchar_t *url, std::vector<char> &buf,
|
|||||||
if (fileSize==0)
|
if (fileSize==0)
|
||||||
pProgress->SetProgress(-1);
|
pProgress->SetProgress(-1);
|
||||||
}
|
}
|
||||||
int CHUNK_SIZE=timestamp?1024:32768; // start with small chunk to verify the timestamp
|
int CHUNK_SIZE=32768;
|
||||||
DWORD size=0;
|
DWORD size=0;
|
||||||
buf.reserve(fileSize+CHUNK_SIZE);
|
buf.reserve(fileSize+CHUNK_SIZE);
|
||||||
while (1)
|
while (1)
|
||||||
@@ -286,25 +266,6 @@ static TDownloadResult DownloadFile( const wchar_t *url, std::vector<char> &buf,
|
|||||||
size+=dwSize;
|
size+=dwSize;
|
||||||
if (pProgress && fileSize)
|
if (pProgress && fileSize)
|
||||||
pProgress->SetProgress(size*100/fileSize);
|
pProgress->SetProgress(size*100/fileSize);
|
||||||
if (timestamp && (size<sizeof(IMAGE_DOS_HEADER) || buf[0]!='M' || buf[1]!='Z'))
|
|
||||||
{
|
|
||||||
res=DOWNLOAD_FAIL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (timestamp && size>=sizeof(IMAGE_DOS_HEADER))
|
|
||||||
{
|
|
||||||
DWORD pos=((IMAGE_DOS_HEADER*)&buf[0])->e_lfanew+8;
|
|
||||||
if (size>=pos+4)
|
|
||||||
{
|
|
||||||
if (timestamp==*(DWORD*)&buf[pos])
|
|
||||||
{
|
|
||||||
res=DOWNLOAD_SAMETIME;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
timestamp=0;
|
|
||||||
CHUNK_SIZE=32768;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
buf.resize(size);
|
buf.resize(size);
|
||||||
}
|
}
|
||||||
@@ -358,6 +319,7 @@ struct VersionCheckParams
|
|||||||
TSettingsComponent component;
|
TSettingsComponent component;
|
||||||
tNewVersionCallback callback;
|
tNewVersionCallback callback;
|
||||||
CProgressDlg *progress;
|
CProgressDlg *progress;
|
||||||
|
bool nightly = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0 - fail, 1 - success, 2 - cancel
|
// 0 - fail, 1 - success, 2 - cancel
|
||||||
@@ -377,80 +339,17 @@ static DWORD WINAPI ThreadVersionCheck( void *param )
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
DWORD curVersion=GetVersionEx(g_Instance);
|
DWORD curVersion=GetVersionEx(g_Instance);
|
||||||
regKey.SetDWORDValue(L"LastUpdateVersion",curVersion);
|
|
||||||
|
|
||||||
// download file
|
bool res = false;
|
||||||
wchar_t fname[_MAX_PATH]=L"%ALLUSERSPROFILE%\\OpenShell";
|
|
||||||
DoEnvironmentSubst(fname,_countof(fname));
|
|
||||||
SHCreateDirectory(NULL,fname);
|
|
||||||
PathAppend(fname,L"update.ver");
|
|
||||||
|
|
||||||
bool res=false;
|
|
||||||
CString urlBase=LoadStringEx(IDS_VERSION_URL);
|
|
||||||
VersionData data;
|
VersionData data;
|
||||||
data.Clear();
|
|
||||||
if (data.Load(fname,false)==VersionData::LOAD_OK)
|
|
||||||
{
|
|
||||||
if (!data.altUrl.IsEmpty())
|
|
||||||
urlBase=data.altUrl;
|
|
||||||
WIN32_FILE_ATTRIBUTE_DATA attr;
|
|
||||||
if (GetFileAttributesEx(fname,GetFileExInfoStandard,&attr))
|
|
||||||
{
|
|
||||||
DWORD writeTime=(DWORD)(((((ULONGLONG)attr.ftLastWriteTime.dwHighDateTime)<<32)|attr.ftLastWriteTime.dwLowDateTime)/TIME_DIVISOR);
|
|
||||||
if (curTime>writeTime && (curTime-writeTime)<TIME_PRECISION)
|
|
||||||
{
|
|
||||||
res=true; // the file is valid and less than an hour old, don't download again
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!res)
|
|
||||||
{
|
|
||||||
data.Clear();
|
|
||||||
CString url;
|
|
||||||
url.Format(L"%s%d.%d.%d.ver",urlBase,curVersion>>24,(curVersion>>16)&0xFF,curVersion&0xFFFF);
|
|
||||||
|
|
||||||
#ifdef UPDATE_LOG
|
{
|
||||||
LogToFile(UPDATE_LOG,L"URL: %s",url);
|
auto load = data.Load(!params.nightly);
|
||||||
#endif
|
|
||||||
|
|
||||||
std::vector<char> buf;
|
#ifdef UPDATE_LOG
|
||||||
TDownloadResult download=DownloadFile(url,buf,NULL,GetTimeStamp(fname),false,params.progress,params.component);
|
LogToFile(UPDATE_LOG, L"Load result: %d", load);
|
||||||
#ifdef UPDATE_LOG
|
#endif
|
||||||
LogToFile(UPDATE_LOG,L"Download result: %d",download);
|
res = (load == VersionData::LOAD_OK);
|
||||||
#endif
|
|
||||||
if (download==DOWNLOAD_CANCEL)
|
|
||||||
{
|
|
||||||
g_bCheckingVersion=false;
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (download<DOWNLOAD_FIRST_ERROR)
|
|
||||||
{
|
|
||||||
if (download==DOWNLOAD_SAMETIME || SaveFile(fname,buf)==0)
|
|
||||||
{
|
|
||||||
if (download==DOWNLOAD_SAMETIME)
|
|
||||||
{
|
|
||||||
HANDLE h=CreateFile(fname,GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
|
|
||||||
if (h!=INVALID_HANDLE_VALUE)
|
|
||||||
{
|
|
||||||
SetFileTime(h,NULL,NULL,(FILETIME*)&curTimeL);
|
|
||||||
CloseHandle(h);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (params.progress)
|
|
||||||
{
|
|
||||||
params.progress->SetText(LoadStringEx(IDS_PROGRESS_VERIFY));
|
|
||||||
params.progress->SetProgress(-1);
|
|
||||||
}
|
|
||||||
VersionData::TLoadResult load=data.Load(fname,false);
|
|
||||||
#ifdef UPDATE_LOG
|
|
||||||
LogToFile(UPDATE_LOG,L"Load result: %d",load);
|
|
||||||
#endif
|
|
||||||
if (load==VersionData::LOAD_BAD_FILE)
|
|
||||||
DeleteFile(fname);
|
|
||||||
res=(load==VersionData::LOAD_OK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
curTime+=(rand()*TIME_PRECISION)/(RAND_MAX+1)-(TIME_PRECISION/2); // add between -30 and 30 minutes to randomize access
|
curTime+=(rand()*TIME_PRECISION)/(RAND_MAX+1)-(TIME_PRECISION/2); // add between -30 and 30 minutes to randomize access
|
||||||
@@ -553,6 +452,21 @@ DWORD CheckForNewVersion( HWND owner, TSettingsComponent component, TVersionChec
|
|||||||
params->callback=callback;
|
params->callback=callback;
|
||||||
params->progress=NULL;
|
params->progress=NULL;
|
||||||
|
|
||||||
|
// check the Update setting (uses the current value in the registry, not the one from memory
|
||||||
|
{
|
||||||
|
CRegKey regSettings, regSettingsUser, regPolicy, regPolicyUser;
|
||||||
|
bool bUpgrade = OpenSettingsKeys(COMPONENT_SHARED, regSettings, regSettingsUser, regPolicy, regPolicyUser);
|
||||||
|
|
||||||
|
CSetting settings[] = {
|
||||||
|
{L"Nightly",CSetting::TYPE_BOOL,0,0,0},
|
||||||
|
{NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
settings[0].LoadValue(regSettings, regSettingsUser, regPolicy, regPolicyUser);
|
||||||
|
|
||||||
|
params->nightly = GetSettingBool(settings[0]);
|
||||||
|
}
|
||||||
|
|
||||||
if (!owner)
|
if (!owner)
|
||||||
return ThreadVersionCheck(params);
|
return ThreadVersionCheck(params);
|
||||||
|
|
||||||
@@ -583,57 +497,38 @@ DWORD CheckForNewVersion( HWND owner, TSettingsComponent component, TVersionChec
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DWORD buildTime=0;
|
|
||||||
{
|
|
||||||
// skip the update if the update component is not found
|
|
||||||
wchar_t path[_MAX_PATH];
|
|
||||||
GetModuleFileName(_AtlBaseModule.GetModuleInstance(),path,_countof(path));
|
|
||||||
PathRemoveFileSpec(path);
|
|
||||||
PathAppend(path,L"Update.exe");
|
|
||||||
|
|
||||||
WIN32_FILE_ATTRIBUTE_DATA attr;
|
|
||||||
if (!GetFileAttributesEx(path,GetFileExInfoStandard,&attr))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
buildTime=(DWORD)(((((ULONGLONG)attr.ftCreationTime.dwHighDateTime)<<32)|attr.ftCreationTime.dwLowDateTime)/TIME_DIVISOR); // in 0.01 hours
|
|
||||||
}
|
|
||||||
|
|
||||||
ULONGLONG curTimeL;
|
ULONGLONG curTimeL;
|
||||||
GetSystemTimeAsFileTime((FILETIME*)&curTimeL);
|
GetSystemTimeAsFileTime((FILETIME*)&curTimeL);
|
||||||
DWORD curTime=(DWORD)(curTimeL/TIME_DIVISOR); // in 0.01 hours
|
DWORD curTime=(DWORD)(curTimeL/TIME_DIVISOR); // in 0.01 hours
|
||||||
if (curTime-buildTime>24*365*TIME_PRECISION)
|
|
||||||
return 0; // the build is more than a year old, don't do automatic updates
|
|
||||||
|
|
||||||
CRegKey regKey;
|
CRegKey regKey;
|
||||||
if (regKey.Open(HKEY_CURRENT_USER,L"Software\\OpenShell\\OpenShell")!=ERROR_SUCCESS)
|
if (regKey.Open(HKEY_CURRENT_USER,L"Software\\OpenShell\\OpenShell")!=ERROR_SUCCESS)
|
||||||
regKey.Create(HKEY_CURRENT_USER,L"Software\\OpenShell\\OpenShell");
|
regKey.Create(HKEY_CURRENT_USER,L"Software\\OpenShell\\OpenShell");
|
||||||
|
|
||||||
DWORD lastVersion;
|
|
||||||
if (regKey.QueryDWORDValue(L"LastUpdateVersion",lastVersion)!=ERROR_SUCCESS)
|
|
||||||
lastVersion=0;
|
|
||||||
if (lastVersion==GetVersionEx(g_Instance))
|
|
||||||
{
|
|
||||||
DWORD lastTime;
|
DWORD lastTime;
|
||||||
if (regKey.QueryDWORDValue(L"LastUpdateTime",lastTime)!=ERROR_SUCCESS)
|
if (regKey.QueryDWORDValue(L"LastUpdateTime",lastTime)!=ERROR_SUCCESS)
|
||||||
lastTime=0;
|
lastTime=0;
|
||||||
if ((int)(curTime-lastTime)<168*TIME_PRECISION)
|
if ((int)(curTime-lastTime)<168*TIME_PRECISION)
|
||||||
return 0; // check weekly
|
return 0; // check weekly
|
||||||
}
|
|
||||||
|
|
||||||
// check the Update setting (uses the current value in the registry, not the one from memory
|
// check the Update setting (uses the current value in the registry, not the one from memory
|
||||||
|
bool nightly = false;
|
||||||
{
|
{
|
||||||
CRegKey regSettings, regSettingsUser, regPolicy, regPolicyUser;
|
CRegKey regSettings, regSettingsUser, regPolicy, regPolicyUser;
|
||||||
bool bUpgrade=OpenSettingsKeys(COMPONENT_SHARED,regSettings,regSettingsUser,regPolicy,regPolicyUser);
|
bool bUpgrade=OpenSettingsKeys(COMPONENT_SHARED,regSettings,regSettingsUser,regPolicy,regPolicyUser);
|
||||||
|
|
||||||
CSetting settings[]={
|
CSetting settings[]={
|
||||||
{L"Update",CSetting::TYPE_BOOL,0,0,1},
|
{L"Update",CSetting::TYPE_BOOL,0,0,1},
|
||||||
|
{L"Nightly",CSetting::TYPE_BOOL,0,0,0},
|
||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
settings[0].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
|
settings[0].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
|
||||||
|
settings[1].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
|
||||||
|
|
||||||
if (!GetSettingBool(settings[0]))
|
if (!GetSettingBool(settings[0]))
|
||||||
return 0;
|
return 0;
|
||||||
|
nightly = GetSettingBool(settings[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
VersionCheckParams *params=new VersionCheckParams;
|
VersionCheckParams *params=new VersionCheckParams;
|
||||||
@@ -641,6 +536,7 @@ DWORD CheckForNewVersion( HWND owner, TSettingsComponent component, TVersionChec
|
|||||||
params->component=component;
|
params->component=component;
|
||||||
params->callback=callback;
|
params->callback=callback;
|
||||||
params->progress=NULL;
|
params->progress=NULL;
|
||||||
|
params->nightly=nightly;
|
||||||
|
|
||||||
g_bCheckingVersion=true;
|
g_bCheckingVersion=true;
|
||||||
if (check==CHECK_AUTO_WAIT)
|
if (check==CHECK_AUTO_WAIT)
|
||||||
@@ -848,6 +744,112 @@ void VersionData::Swap( VersionData &data )
|
|||||||
std::swap(languages,data.languages);
|
std::swap(languages,data.languages);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<char> DownloadUrl(const wchar_t* url)
|
||||||
|
{
|
||||||
|
#ifdef UPDATE_LOG
|
||||||
|
LogToFile(UPDATE_LOG, L"URL: %s", url);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::vector<char> buffer;
|
||||||
|
TDownloadResult download = DownloadFile(url, buffer, nullptr, false, nullptr, COMPONENT_UPDATE);
|
||||||
|
|
||||||
|
#ifdef UPDATE_LOG
|
||||||
|
LogToFile(UPDATE_LOG, L"Download result: %d", download);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (download != DOWNLOAD_OK)
|
||||||
|
buffer.clear();
|
||||||
|
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace nlohmann;
|
||||||
|
|
||||||
|
VersionData::TLoadResult VersionData::Load(bool official)
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
|
||||||
|
std::wstring baseUrl = L"https://api.github.com/repos/Open-Shell/Open-Shell-Menu/releases";
|
||||||
|
if (official)
|
||||||
|
baseUrl += L"/latest";
|
||||||
|
|
||||||
|
auto buf = DownloadUrl(baseUrl.c_str());
|
||||||
|
if (buf.empty())
|
||||||
|
return LOAD_ERROR;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
auto jsonData = json::parse(buf.begin(), buf.end());
|
||||||
|
auto& data = jsonData;
|
||||||
|
|
||||||
|
if (official)
|
||||||
|
{
|
||||||
|
// skip prerelease versions (just in case)
|
||||||
|
if (data["prerelease"].get<bool>())
|
||||||
|
return LOAD_BAD_VERSION;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// we've got list of versions (release and pre-release)
|
||||||
|
// lets pick first one (that should be the latest one)
|
||||||
|
data = jsonData[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
// make sure we didn't get draft release (for whatever reason)
|
||||||
|
if (data["draft"].get<bool>())
|
||||||
|
return LOAD_BAD_VERSION;
|
||||||
|
|
||||||
|
// get version from tag name
|
||||||
|
auto tag = data["tag_name"].get<std::string>();
|
||||||
|
if (tag.empty())
|
||||||
|
return LOAD_BAD_FILE;
|
||||||
|
|
||||||
|
int v1, v2, v3;
|
||||||
|
if (sscanf_s(tag.c_str(), "v%d.%d.%d", &v1, &v2, &v3) != 3)
|
||||||
|
return LOAD_BAD_FILE;
|
||||||
|
|
||||||
|
newVersion = (v1 << 24) | (v2 << 16) | v3;
|
||||||
|
|
||||||
|
// installer url
|
||||||
|
std::string url;
|
||||||
|
for (const auto& asset : data["assets"])
|
||||||
|
{
|
||||||
|
if (asset["name"].get<std::string>().find("OpenShellSetup") == 0)
|
||||||
|
{
|
||||||
|
url = asset["browser_download_url"].get<std::string>();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (url.empty())
|
||||||
|
return LOAD_BAD_FILE;
|
||||||
|
|
||||||
|
downloadUrl.Append(CA2T(url.c_str()));
|
||||||
|
|
||||||
|
// changelog
|
||||||
|
auto body = data["body"].get<std::string>();
|
||||||
|
if (!body.empty())
|
||||||
|
{
|
||||||
|
auto name = data["name"].get<std::string>();
|
||||||
|
if (!name.empty())
|
||||||
|
{
|
||||||
|
news.Append(CA2T(name.c_str()));
|
||||||
|
news.Append(L"\r\n\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
news.Append(CA2T(body.c_str()));
|
||||||
|
news.Replace(L"\\n", L"\n");
|
||||||
|
news.Replace(L"\\r", L"\r");
|
||||||
|
}
|
||||||
|
|
||||||
|
return LOAD_OK;
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
return LOAD_BAD_FILE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
VersionData::TLoadResult VersionData::Load( const wchar_t *fname, bool bLoadFlags )
|
VersionData::TLoadResult VersionData::Load( const wchar_t *fname, bool bLoadFlags )
|
||||||
{
|
{
|
||||||
Clear();
|
Clear();
|
||||||
@@ -937,7 +939,7 @@ static DWORD WINAPI ThreadDownloadFile( void *param )
|
|||||||
params.saveRes=0;
|
params.saveRes=0;
|
||||||
|
|
||||||
std::vector<char> buf;
|
std::vector<char> buf;
|
||||||
params.downloadRes=DownloadFile(params.url,buf,params.fname.IsEmpty()?¶ms.fname:NULL,0,params.bAcceptCached,params.progress,params.component);
|
params.downloadRes=DownloadFile(params.url,buf,params.fname.IsEmpty()?¶ms.fname:NULL,params.bAcceptCached,params.progress,params.component);
|
||||||
if (params.downloadRes==DOWNLOAD_CANCEL || params.downloadRes>=DOWNLOAD_FIRST_ERROR)
|
if (params.downloadRes==DOWNLOAD_CANCEL || params.downloadRes>=DOWNLOAD_FIRST_ERROR)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -971,6 +973,7 @@ static DWORD WINAPI ThreadDownloadFile( void *param )
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// validate signer
|
// validate signer
|
||||||
|
/*
|
||||||
if (params.signer)
|
if (params.signer)
|
||||||
{
|
{
|
||||||
if (params.progress)
|
if (params.progress)
|
||||||
@@ -982,7 +985,7 @@ static DWORD WINAPI ThreadDownloadFile( void *param )
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1089,6 +1092,12 @@ DWORD DownloadNewVersion( HWND owner, TSettingsComponent component, const wchar_
|
|||||||
params.bAcceptCached=true;
|
params.bAcceptCached=true;
|
||||||
params.component=component;
|
params.component=component;
|
||||||
|
|
||||||
|
{
|
||||||
|
const wchar_t* name = wcsrchr(url, '/');
|
||||||
|
if (name && name[1])
|
||||||
|
params.fname.Append(name+1);
|
||||||
|
}
|
||||||
|
|
||||||
HANDLE hThread=CreateThread(NULL,0,ThreadDownloadFile,¶ms,0,NULL);
|
HANDLE hThread=CreateThread(NULL,0,ThreadDownloadFile,¶ms,0,NULL);
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
|
|||||||
@@ -31,19 +31,19 @@ struct LanguageVersionData
|
|||||||
|
|
||||||
struct VersionData
|
struct VersionData
|
||||||
{
|
{
|
||||||
bool bValid;
|
bool bValid = false;
|
||||||
DWORD newVersion;
|
DWORD newVersion = 0;
|
||||||
DWORD encodedLangVersion;
|
DWORD encodedLangVersion = 0;
|
||||||
CString downloadUrl;
|
CString downloadUrl;
|
||||||
CString downloadSigner;
|
CString downloadSigner;
|
||||||
CString news;
|
CString news;
|
||||||
CString updateLink;
|
CString updateLink;
|
||||||
CString languageLink;
|
CString languageLink;
|
||||||
CString altUrl;
|
CString altUrl;
|
||||||
bool bNewVersion;
|
bool bNewVersion = false;
|
||||||
bool bIgnoreVersion;
|
bool bIgnoreVersion = false;
|
||||||
bool bNewLanguage;
|
bool bNewLanguage = false;
|
||||||
bool bIgnoreLanguage;
|
bool bIgnoreLanguage = false;
|
||||||
CString newLanguage;
|
CString newLanguage;
|
||||||
std::vector<LanguageVersionData> languages;
|
std::vector<LanguageVersionData> languages;
|
||||||
|
|
||||||
@@ -59,6 +59,7 @@ struct VersionData
|
|||||||
LOAD_BAD_FILE, // the file is corrupted
|
LOAD_BAD_FILE, // the file is corrupted
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TLoadResult Load(bool official);
|
||||||
TLoadResult Load( const wchar_t *fname, bool bLoadFlags );
|
TLoadResult Load( const wchar_t *fname, bool bLoadFlags );
|
||||||
private:
|
private:
|
||||||
void operator=( const VersionData& );
|
void operator=( const VersionData& );
|
||||||
|
|||||||
@@ -60,3 +60,17 @@ bool IsFakeFolder( const wchar_t *fname )
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GetFakeFolder( wchar_t *dst, int len, const wchar_t *src )
|
||||||
|
{
|
||||||
|
Sprintf(dst,len,L"%s\\target.lnk",src);
|
||||||
|
if (GetFileAttributes(dst)!=INVALID_FILE_ATTRIBUTES)
|
||||||
|
{
|
||||||
|
wchar_t path[_MAX_PATH];
|
||||||
|
Sprintf(path,_countof(path),L"%s\\desktop.ini",src);
|
||||||
|
DWORD attrib=GetFileAttributes(path);
|
||||||
|
if (attrib!=INVALID_FILE_ATTRIBUTES && (attrib&FILE_ATTRIBUTE_SYSTEM))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,3 +7,4 @@
|
|||||||
bool CreateFakeFolder( const wchar_t *source, const wchar_t *fname );
|
bool CreateFakeFolder( const wchar_t *source, const wchar_t *fname );
|
||||||
void DeleteFakeFolder( const wchar_t *fname );
|
void DeleteFakeFolder( const wchar_t *fname );
|
||||||
bool IsFakeFolder( const wchar_t *fname );
|
bool IsFakeFolder( const wchar_t *fname );
|
||||||
|
bool GetFakeFolder( wchar_t *dst, int len, const wchar_t *src );
|
||||||
|
|||||||
@@ -127,7 +127,6 @@ VersionData CLanguageSettingsDlg::s_VersionData;
|
|||||||
|
|
||||||
void CLanguageSettingsDlg::AddFlag( const wchar_t *langName, int langId, HBITMAP bmp )
|
void CLanguageSettingsDlg::AddFlag( const wchar_t *langName, int langId, HBITMAP bmp )
|
||||||
{
|
{
|
||||||
std::vector<LangInfo>::iterator it=m_LanguageIDs.begin()+1;
|
|
||||||
int idx=1;
|
int idx=1;
|
||||||
for (;idx<(int)m_LanguageIDs.size();idx++)
|
for (;idx<(int)m_LanguageIDs.size();idx++)
|
||||||
{
|
{
|
||||||
@@ -205,8 +204,6 @@ void CLanguageSettingsDlg::UpdateFlags( void )
|
|||||||
DoEnvironmentSubst(path,_countof(path));
|
DoEnvironmentSubst(path,_countof(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
CWindow list=GetDlgItem(IDC_LISTLANGUAGE);
|
|
||||||
|
|
||||||
wchar_t find[_MAX_PATH];
|
wchar_t find[_MAX_PATH];
|
||||||
Sprintf(find,_countof(find),L"%s\\*.dll",path);
|
Sprintf(find,_countof(find),L"%s\\*.dll",path);
|
||||||
WIN32_FIND_DATA data;
|
WIN32_FIND_DATA data;
|
||||||
@@ -408,7 +405,7 @@ LRESULT CLanguageSettingsDlg::OnSelChange( int idCtrl, LPNMHDR pnmh, BOOL& bHand
|
|||||||
CComVariant val(name);
|
CComVariant val(name);
|
||||||
if (m_pSetting->value!=val)
|
if (m_pSetting->value!=val)
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
m_pSetting->value=val;
|
m_pSetting->value=std::move(val);
|
||||||
|
|
||||||
if (_wcsicmp(m_pSetting->value.bstrVal,m_pSetting->defValue.bstrVal)==0)
|
if (_wcsicmp(m_pSetting->value.bstrVal,m_pSetting->defValue.bstrVal)==0)
|
||||||
m_pSetting->flags|=CSetting::FLAG_DEFAULT;
|
m_pSetting->flags|=CSetting::FLAG_DEFAULT;
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ BEGIN
|
|||||||
CONTROL "Show all settings",IDC_CHECKALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154,7,79,12
|
CONTROL "Show all settings",IDC_CHECKALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154,7,79,12
|
||||||
CONTROL "<a>Help...</a>",IDC_LINKHELP,"SysLink",WS_TABSTOP,348,9,26,10,WS_EX_TRANSPARENT
|
CONTROL "<a>Help...</a>",IDC_LINKHELP,"SysLink",WS_TABSTOP,348,9,26,10,WS_EX_TRANSPARENT
|
||||||
CONTROL "",IDC_TABSETTINGS,"SysTabControl32",TCS_MULTILINE | TCS_FOCUSNEVER,7,20,367,169
|
CONTROL "",IDC_TABSETTINGS,"SysTabControl32",TCS_MULTILINE | TCS_FOCUSNEVER,7,20,367,169
|
||||||
CONTROL "<a>www.classicshell.net</a>",IDC_LINKWEB,"SysLink",WS_TABSTOP,7,195,66,10,WS_EX_TRANSPARENT
|
CONTROL "<a>Open-Shell Homepage</a>",IDC_LINKWEB,"SysLink",WS_TABSTOP,7,195,75,10,WS_EX_TRANSPARENT
|
||||||
CONTROL "Name of translator goes <a href=""http://www.yoursite.com"">here</a>",IDC_SYSLINKLOC,
|
CONTROL "Name of translator goes <a href=""http://www.yoursite.com"">here</a>",IDC_SYSLINKLOC,
|
||||||
"SysLink",NOT WS_VISIBLE | WS_TABSTOP,80,195,111,10
|
"SysLink",NOT WS_VISIBLE | WS_TABSTOP,80,195,111,10
|
||||||
PUSHBUTTON "&Backup",IDC_BUTTONBACKUP,200,192,60,14,WS_GROUP
|
PUSHBUTTON "&Backup",IDC_BUTTONBACKUP,200,192,60,14,WS_GROUP
|
||||||
@@ -277,7 +277,7 @@ BEGIN
|
|||||||
IDS_BMP_TITLE "Select Image File"
|
IDS_BMP_TITLE "Select Image File"
|
||||||
IDS_SEARCH_PROMPT "Search Settings"
|
IDS_SEARCH_PROMPT "Search Settings"
|
||||||
IDS_SETTING_SEARCH "Search Results"
|
IDS_SETTING_SEARCH "Search Results"
|
||||||
IDS_WEBSITE_TIP "Visit Open-Shell on the web - http://www.classicshell.net"
|
IDS_WEBSITE_TIP "Visit Open-Shell on the web - https://open-shell.github.io/Open-Shell-Menu"
|
||||||
IDS_LOCATE_SETTING "Locate setting"
|
IDS_LOCATE_SETTING "Locate setting"
|
||||||
IDS_LANGUAGE_UPDATED "The language %s is up to date."
|
IDS_LANGUAGE_UPDATED "The language %s is up to date."
|
||||||
IDS_LANGUAGE_MISSING "Update for language %s is not available."
|
IDS_LANGUAGE_MISSING "Update for language %s is not available."
|
||||||
|
|||||||
@@ -22,32 +22,32 @@
|
|||||||
<ProjectGuid>{D42FE717-485B-492D-884A-1999F6D51154}</ProjectGuid>
|
<ProjectGuid>{D42FE717-485B-492D-884A-1999F6D51154}</ProjectGuid>
|
||||||
<RootNamespace>Lib</RootNamespace>
|
<RootNamespace>Lib</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -83,6 +83,11 @@
|
|||||||
<OutDir>$(Configuration)64\</OutDir>
|
<OutDir>$(Configuration)64\</OutDir>
|
||||||
<IntDir>$(Configuration)64\</IntDir>
|
<IntDir>$(Configuration)64\</IntDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions>APPVEYOR_REPO_COMMIT="$(APPVEYOR_REPO_COMMIT)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
|
|||||||
@@ -332,6 +332,7 @@ HBITMAP BitmapFromIcon( HICON hIcon, int iconSize, unsigned int **pBits, bool bD
|
|||||||
// Premultiplies a DIB section by the alpha channel and a given color
|
// Premultiplies a DIB section by the alpha channel and a given color
|
||||||
void PremultiplyBitmap( HBITMAP hBitmap, COLORREF rgb )
|
void PremultiplyBitmap( HBITMAP hBitmap, COLORREF rgb )
|
||||||
{
|
{
|
||||||
|
if (hBitmap == NULL) return;
|
||||||
BITMAP info;
|
BITMAP info;
|
||||||
GetObject(hBitmap,sizeof(info),&info);
|
GetObject(hBitmap,sizeof(info),&info);
|
||||||
int n=info.bmWidth*info.bmHeight;
|
int n=info.bmWidth*info.bmHeight;
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ bool CSetting::IsEnabled( void ) const
|
|||||||
if (operation=='>' && pSetting->GetValue().intVal<=val)
|
if (operation=='>' && pSetting->GetValue().intVal<=val)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if ((pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG) && pSetting->GetValue().vt==VT_BSTR)
|
if ((pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_DIRECTORY) && pSetting->GetValue().vt==VT_BSTR)
|
||||||
{
|
{
|
||||||
if (operation=='~' && *pSetting->GetValue().bstrVal==0)
|
if (operation=='~' && *pSetting->GetValue().bstrVal==0)
|
||||||
return false;
|
return false;
|
||||||
@@ -202,7 +202,7 @@ bool CSetting::ReadValue( CRegKey ®Key, const wchar_t *valName )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// string
|
// string
|
||||||
if (type>=CSetting::TYPE_STRING && type<CSetting::TYPE_MULTISTRING)
|
if (type>=CSetting::TYPE_STRING && type!=CSetting::TYPE_MULTISTRING)
|
||||||
{
|
{
|
||||||
ULONG len;
|
ULONG len;
|
||||||
if (regKey.QueryStringValue(valName,NULL,&len)==ERROR_SUCCESS)
|
if (regKey.QueryStringValue(valName,NULL,&len)==ERROR_SUCCESS)
|
||||||
@@ -789,7 +789,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
|
|||||||
}
|
}
|
||||||
CComPtr<IXMLDOMNode> next;
|
CComPtr<IXMLDOMNode> next;
|
||||||
child2->get_nextSibling(&next);
|
child2->get_nextSibling(&next);
|
||||||
child2=next;
|
child2=std::move(next);
|
||||||
}
|
}
|
||||||
string.push_back(0);
|
string.push_back(0);
|
||||||
pSetting->value=CComVariant(&string[0]);
|
pSetting->value=CComVariant(&string[0]);
|
||||||
@@ -839,7 +839,7 @@ CString CSettingsManager::LoadSettingsXml( const wchar_t *fname )
|
|||||||
CComPtr<IXMLDOMNode> next;
|
CComPtr<IXMLDOMNode> next;
|
||||||
if (child->get_nextSibling(&next)!=S_OK)
|
if (child->get_nextSibling(&next)!=S_OK)
|
||||||
break;
|
break;
|
||||||
child=next;
|
child=std::move(next);
|
||||||
}
|
}
|
||||||
if (ver<0x03090000)
|
if (ver<0x03090000)
|
||||||
UpgradeSettings(false);
|
UpgradeSettings(false);
|
||||||
@@ -1701,6 +1701,7 @@ LRESULT CSettingsDlg::OnBackup( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
|
|||||||
ofn.Flags=OFN_DONTADDTORECENT|OFN_ENABLESIZING|OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR;
|
ofn.Flags=OFN_DONTADDTORECENT|OFN_ENABLESIZING|OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR;
|
||||||
if (GetOpenFileName(&ofn))
|
if (GetOpenFileName(&ofn))
|
||||||
{
|
{
|
||||||
|
SetCurTab(m_Index,true); // reload tab once to force-close any active edit boxes
|
||||||
CString error=g_SettingsManager.LoadSettingsXml(path);
|
CString error=g_SettingsManager.LoadSettingsXml(path);
|
||||||
if (!error.IsEmpty())
|
if (!error.IsEmpty())
|
||||||
{
|
{
|
||||||
@@ -1710,7 +1711,7 @@ LRESULT CSettingsDlg::OnBackup( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
|
|||||||
::MessageBox(m_hWnd,text,LoadStringEx(IDS_ERROR_TITLE),MB_OK|MB_ICONERROR);
|
::MessageBox(m_hWnd,text,LoadStringEx(IDS_ERROR_TITLE),MB_OK|MB_ICONERROR);
|
||||||
}
|
}
|
||||||
SetSettingsDirty();
|
SetSettingsDirty();
|
||||||
SetCurTab(m_Index,true);
|
SetCurTab(m_Index,true); // reload tab again to show the new settings
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (res==3)
|
if (res==3)
|
||||||
@@ -1810,7 +1811,7 @@ LRESULT CSettingsDlg::OnHelp( int idCtrl, LPNMHDR pnmh, BOOL& bHandled )
|
|||||||
|
|
||||||
LRESULT CSettingsDlg::OnWeb( int idCtrl, LPNMHDR pnmh, BOOL& bHandled )
|
LRESULT CSettingsDlg::OnWeb( int idCtrl, LPNMHDR pnmh, BOOL& bHandled )
|
||||||
{
|
{
|
||||||
ShellExecute(m_hWnd,NULL,L"http://www.classicshell.net",NULL,NULL,SW_SHOWNORMAL);
|
ShellExecute(m_hWnd,NULL,L"https://open-shell.github.io/Open-Shell-Menu",NULL,NULL,SW_SHOWNORMAL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2208,7 +2209,7 @@ bool GetSettingBool( const CSetting &setting )
|
|||||||
|
|
||||||
CString GetSettingString( const CSetting &setting )
|
CString GetSettingString( const CSetting &setting )
|
||||||
{
|
{
|
||||||
Assert(setting.type==CSetting::TYPE_STRING);
|
Assert(setting.type==CSetting::TYPE_STRING || setting.type==CSetting::TYPE_DIRECTORY);
|
||||||
if (setting.value.vt!=VT_BSTR)
|
if (setting.value.vt!=VT_BSTR)
|
||||||
return CString();
|
return CString();
|
||||||
return setting.value.bstrVal;
|
return setting.value.bstrVal;
|
||||||
@@ -2709,7 +2710,7 @@ bool SaveAdmx( TSettingsComponent component, const char *admxFile, const char *a
|
|||||||
{
|
{
|
||||||
fprintf_s(fAdmx,"\t\t\t\t<decimal id=\"Value\" valueName=\"%S\"/>\r\n",pSetting->name);
|
fprintf_s(fAdmx,"\t\t\t\t<decimal id=\"Value\" valueName=\"%S\"/>\r\n",pSetting->name);
|
||||||
}
|
}
|
||||||
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT)
|
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT || pSetting->type==CSetting::TYPE_DIRECTORY)
|
||||||
{
|
{
|
||||||
fprintf_s(fAdmx,"\t\t\t\t<text id=\"Value\" valueName=\"%S\"/>\r\n",pSetting->name);
|
fprintf_s(fAdmx,"\t\t\t\t<text id=\"Value\" valueName=\"%S\"/>\r\n",pSetting->name);
|
||||||
}
|
}
|
||||||
@@ -2769,7 +2770,7 @@ bool SaveAdmx( TSettingsComponent component, const char *admxFile, const char *a
|
|||||||
{
|
{
|
||||||
fprintf_s(fAdml,"\t\t\t\t<decimalTextBox refId=\"Value\" spin=\"false\">%s</decimalTextBox>\r\n",(const char*)name);
|
fprintf_s(fAdml,"\t\t\t\t<decimalTextBox refId=\"Value\" spin=\"false\">%s</decimalTextBox>\r\n",(const char*)name);
|
||||||
}
|
}
|
||||||
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT)
|
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT || pSetting->type==CSetting::TYPE_DIRECTORY)
|
||||||
{
|
{
|
||||||
fprintf_s(fAdml,"\t\t\t\t<textBox refId=\"Value\"><label>%s</label></textBox>\r\n",(const char*)name);
|
fprintf_s(fAdml,"\t\t\t\t<textBox refId=\"Value\"><label>%s</label></textBox>\r\n",(const char*)name);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ struct CSetting
|
|||||||
TYPE_SOUND,
|
TYPE_SOUND,
|
||||||
TYPE_FONT,
|
TYPE_FONT,
|
||||||
TYPE_MULTISTRING,
|
TYPE_MULTISTRING,
|
||||||
|
TYPE_DIRECTORY,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
|||||||
@@ -1156,7 +1156,7 @@ HRESULT STDMETHODCALLTYPE CBrowseLinkEvents::OnButtonClicked( IFileDialogCustomi
|
|||||||
{
|
{
|
||||||
pfd->GetFolder(&pItem);
|
pfd->GetFolder(&pItem);
|
||||||
}
|
}
|
||||||
m_pResult=pItem;
|
m_pResult=std::move(pItem);
|
||||||
pfd->Close(S_FALSE);
|
pfd->Close(S_FALSE);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
@@ -1216,7 +1216,7 @@ bool BrowseCommandHelper( HWND parent, wchar_t *text )
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BrowseLinkHelper( HWND parent, wchar_t *text )
|
bool BrowseLinkHelper( HWND parent, wchar_t *text, bool bFoldersOnly )
|
||||||
{
|
{
|
||||||
DoEnvironmentSubst(text,_MAX_PATH);
|
DoEnvironmentSubst(text,_MAX_PATH);
|
||||||
|
|
||||||
@@ -1227,15 +1227,21 @@ bool BrowseLinkHelper( HWND parent, wchar_t *text )
|
|||||||
if (!pCustomize)
|
if (!pCustomize)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
pDialog->SetTitle(LoadStringEx(IDS_PICK_LINK_TITLE));
|
pDialog->SetTitle(LoadStringEx(bFoldersOnly?IDS_PICK_LINK_FOLDER:IDS_PICK_LINK_TITLE));
|
||||||
|
if (!bFoldersOnly) // add separate buttons for selecting files/folders to the dialog
|
||||||
|
{
|
||||||
pDialog->SetOkButtonLabel(LoadStringEx(IDS_PICK_LINK_FILE));
|
pDialog->SetOkButtonLabel(LoadStringEx(IDS_PICK_LINK_FILE));
|
||||||
wchar_t button[256];
|
wchar_t button[256];
|
||||||
Sprintf(button,_countof(button),L" %s ",LoadStringEx(IDS_PICK_LINK_FOLDER));
|
Sprintf(button,_countof(button),L" %s ",LoadStringEx(IDS_PICK_LINK_FOLDER));
|
||||||
pCustomize->AddPushButton(101,button);
|
pCustomize->AddPushButton(101,button);
|
||||||
|
}
|
||||||
|
|
||||||
CBrowseLinkEvents events;
|
CBrowseLinkEvents events;
|
||||||
DWORD cookie;
|
DWORD cookie;
|
||||||
pDialog->Advise(&events,&cookie);
|
pDialog->Advise(&events,&cookie);
|
||||||
|
if (bFoldersOnly) // set FOS_PICKFOLDERS option to use dialog in folder-only mode
|
||||||
|
pDialog->SetOptions(FOS_PICKFOLDERS|FOS_ALLNONSTORAGEITEMS|FOS_DONTADDTORECENT|FOS_DEFAULTNOMINIMODE);
|
||||||
|
else
|
||||||
pDialog->SetOptions(FOS_ALLNONSTORAGEITEMS|FOS_FILEMUSTEXIST|FOS_DONTADDTORECENT|FOS_DEFAULTNOMINIMODE|FOS_NODEREFERENCELINKS);
|
pDialog->SetOptions(FOS_ALLNONSTORAGEITEMS|FOS_FILEMUSTEXIST|FOS_DONTADDTORECENT|FOS_DEFAULTNOMINIMODE|FOS_NODEREFERENCELINKS);
|
||||||
{
|
{
|
||||||
const wchar_t *c=wcschr(text,'|');
|
const wchar_t *c=wcschr(text,'|');
|
||||||
@@ -2271,6 +2277,7 @@ public:
|
|||||||
EDIT_HOTKEY_ANY,
|
EDIT_HOTKEY_ANY,
|
||||||
EDIT_COLOR,
|
EDIT_COLOR,
|
||||||
EDIT_FONT,
|
EDIT_FONT,
|
||||||
|
EDIT_DIRECTORY,
|
||||||
};
|
};
|
||||||
|
|
||||||
BEGIN_MSG_MAP( CTreeSettingsDlg )
|
BEGIN_MSG_MAP( CTreeSettingsDlg )
|
||||||
@@ -2714,6 +2721,29 @@ LRESULT CTreeSettingsDlg::OnBrowse( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO
|
|||||||
m_EditBox.SetFocus();
|
m_EditBox.SetFocus();
|
||||||
m_bIgnoreFocus=false;
|
m_bIgnoreFocus=false;
|
||||||
}
|
}
|
||||||
|
else if (m_EditMode==EDIT_DIRECTORY)
|
||||||
|
{
|
||||||
|
m_bIgnoreFocus=true;
|
||||||
|
CString str;
|
||||||
|
m_EditBox.GetWindowText(str);
|
||||||
|
str.TrimLeft(); str.TrimRight();
|
||||||
|
wchar_t text[1024];
|
||||||
|
DWORD dwAttrs=GetFileAttributes(str); // ensure directory exists before passing it to dialog
|
||||||
|
if (dwAttrs!=INVALID_FILE_ATTRIBUTES && dwAttrs&FILE_ATTRIBUTE_DIRECTORY)
|
||||||
|
{
|
||||||
|
Strcpy(text,_countof(text),str);
|
||||||
|
DoEnvironmentSubst(text,_countof(text));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
text[0]=0;
|
||||||
|
Strcpy(text,_countof(text),str);
|
||||||
|
DoEnvironmentSubst(text,_countof(text));
|
||||||
|
if (BrowseLinkHelper(m_hWnd,text,true))
|
||||||
|
m_EditBox.SetWindowText(text);
|
||||||
|
SendMessage(WM_NEXTDLGCTL,(LPARAM)m_EditBox.m_hWnd,TRUE);
|
||||||
|
m_EditBox.SetFocus();
|
||||||
|
m_bIgnoreFocus=false;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3034,6 +3064,20 @@ void CTreeSettingsDlg::ApplyEditBox( void )
|
|||||||
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (pSetting->type==CSetting::TYPE_DIRECTORY)
|
||||||
|
{
|
||||||
|
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
|
||||||
|
{
|
||||||
|
if (str.IsEmpty()) // empty directory strings cause unexpected behavior, so we reset to avoid this
|
||||||
|
pSetting->value=pSetting->defValue;
|
||||||
|
else // otherwise we are very lenient about what users can input as a path
|
||||||
|
pSetting->value=CComVariant(str);
|
||||||
|
if (pSetting->value==pSetting->defValue)
|
||||||
|
pSetting->flags|=CSetting::FLAG_DEFAULT;
|
||||||
|
else
|
||||||
|
pSetting->flags&=~CSetting::FLAG_DEFAULT;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
|
if (pSetting->value.vt!=VT_BSTR || str!=pSetting->value.bstrVal)
|
||||||
@@ -3074,7 +3118,7 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b
|
|||||||
val=valVar.intVal;
|
val=valVar.intVal;
|
||||||
Sprintf(text,_countof(text),L"%d",val);
|
Sprintf(text,_countof(text),L"%d",val);
|
||||||
}
|
}
|
||||||
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT)
|
else if (pSetting->type==CSetting::TYPE_STRING || pSetting->type==CSetting::TYPE_ICON || pSetting->type==CSetting::TYPE_BITMAP || pSetting->type==CSetting::TYPE_BITMAP_JPG || pSetting->type==CSetting::TYPE_SOUND || pSetting->type==CSetting::TYPE_FONT || pSetting->type==CSetting::TYPE_DIRECTORY)
|
||||||
{
|
{
|
||||||
if (valVar.vt==VT_BSTR)
|
if (valVar.vt==VT_BSTR)
|
||||||
Strcpy(text,_countof(text),valVar.bstrVal);
|
Strcpy(text,_countof(text),valVar.bstrVal);
|
||||||
@@ -3090,8 +3134,10 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b
|
|||||||
mode=EDIT_BITMAP_JPG;
|
mode=EDIT_BITMAP_JPG;
|
||||||
else if (pSetting->type==CSetting::TYPE_SOUND)
|
else if (pSetting->type==CSetting::TYPE_SOUND)
|
||||||
mode=EDIT_SOUND;
|
mode=EDIT_SOUND;
|
||||||
else
|
else if (pSetting->type==CSetting::TYPE_FONT)
|
||||||
mode=EDIT_FONT;
|
mode=EDIT_FONT;
|
||||||
|
else
|
||||||
|
mode=EDIT_DIRECTORY;
|
||||||
}
|
}
|
||||||
else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY)
|
else if (pSetting->type==CSetting::TYPE_HOTKEY || pSetting->type==CSetting::TYPE_HOTKEY_ANY)
|
||||||
{
|
{
|
||||||
@@ -3131,7 +3177,7 @@ void CTreeSettingsDlg::ItemSelected( HTREEITEM hItem, CSetting *pSetting, bool b
|
|||||||
m_pEditSetting=pSetting;
|
m_pEditSetting=pSetting;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode==EDIT_ICON || mode==EDIT_BITMAP || mode==EDIT_BITMAP_JPG || mode==EDIT_SOUND || mode==EDIT_FONT || mode==EDIT_COLOR)
|
if (mode==EDIT_ICON || mode==EDIT_BITMAP || mode==EDIT_BITMAP_JPG || mode==EDIT_SOUND || mode==EDIT_FONT || mode==EDIT_COLOR || mode==EDIT_DIRECTORY)
|
||||||
{
|
{
|
||||||
RECT rc2=rc;
|
RECT rc2=rc;
|
||||||
int width=(rc2.bottom-rc2.top)*3/2;
|
int width=(rc2.bottom-rc2.top)*3/2;
|
||||||
@@ -3189,14 +3235,15 @@ void CTreeSettingsDlg::UpdateEditPosition( void )
|
|||||||
DeleteDC(hdc);
|
DeleteDC(hdc);
|
||||||
DWORD margins=(DWORD)m_EditBox.SendMessage(EM_GETMARGINS);
|
DWORD margins=(DWORD)m_EditBox.SendMessage(EM_GETMARGINS);
|
||||||
size.cx+=HIWORD(margins)+LOWORD(margins)+12;
|
size.cx+=HIWORD(margins)+LOWORD(margins)+12;
|
||||||
if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR)
|
// adjust size and position of edit boxes for settings that use browse/play buttons
|
||||||
|
if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR || m_EditMode==EDIT_DIRECTORY)
|
||||||
size.cx+=width;
|
size.cx+=width;
|
||||||
if (m_EditMode==EDIT_SOUND)
|
if (m_EditMode==EDIT_SOUND)
|
||||||
size.cx+=width*2;
|
size.cx+=width*2;
|
||||||
if (size.cx<w)
|
if (size.cx<w)
|
||||||
rc.right=rc.left+size.cx;
|
rc.right=rc.left+size.cx;
|
||||||
|
|
||||||
if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_SOUND || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR)
|
if (m_EditMode==EDIT_ICON || m_EditMode==EDIT_BITMAP || m_EditMode==EDIT_BITMAP_JPG || m_EditMode==EDIT_SOUND || m_EditMode==EDIT_FONT || m_EditMode==EDIT_COLOR || m_EditMode==EDIT_DIRECTORY)
|
||||||
{
|
{
|
||||||
RECT rc2=rc;
|
RECT rc2=rc;
|
||||||
rc2.left=rc2.right-width;
|
rc2.left=rc2.right-width;
|
||||||
@@ -3376,6 +3423,9 @@ void CTreeSettingsDlg::UpdateGroup( const CSetting *pModified )
|
|||||||
bool bDefault=pSetting->IsDefault();
|
bool bDefault=pSetting->IsDefault();
|
||||||
const CComVariant &valVar=pSetting->GetValue();
|
const CComVariant &valVar=pSetting->GetValue();
|
||||||
|
|
||||||
|
// check if modified items should be bold
|
||||||
|
bool bBoldSettings=GetSettingBool(L"BoldSettings");
|
||||||
|
|
||||||
// calculate text
|
// calculate text
|
||||||
if (pSetting!=m_pEditSetting)
|
if (pSetting!=m_pEditSetting)
|
||||||
{
|
{
|
||||||
@@ -3458,7 +3508,7 @@ void CTreeSettingsDlg::UpdateGroup( const CSetting *pModified )
|
|||||||
DeleteDC(hdc);
|
DeleteDC(hdc);
|
||||||
DeleteDC(hdcMask);
|
DeleteDC(hdcMask);
|
||||||
}
|
}
|
||||||
int state=bDefault?0:TVIS_BOLD;
|
int state=bDefault||!bBoldSettings?0:TVIS_BOLD; // check if item should be highlighted in bold
|
||||||
if (!bEnabled)
|
if (!bEnabled)
|
||||||
{
|
{
|
||||||
if (pSetting->type!=CSetting::TYPE_COLOR) image|=SETTING_STATE_DISABLED;
|
if (pSetting->type!=CSetting::TYPE_COLOR) image|=SETTING_STATE_DISABLED;
|
||||||
|
|||||||
@@ -385,5 +385,5 @@ const wchar_t *GetSettingsRegPath( void );
|
|||||||
extern const GUID FOLDERID_DesktopRoot;
|
extern const GUID FOLDERID_DesktopRoot;
|
||||||
|
|
||||||
bool BrowseCommandHelper( HWND parent, wchar_t *text );
|
bool BrowseCommandHelper( HWND parent, wchar_t *text );
|
||||||
bool BrowseLinkHelper( HWND parent, wchar_t *text );
|
bool BrowseLinkHelper( HWND parent, wchar_t *text, bool bFoldersOnly );
|
||||||
bool BrowseIconHelper( HWND parent, wchar_t *text );
|
bool BrowseIconHelper( HWND parent, wchar_t *text );
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 15
|
# Visual Studio Version 16
|
||||||
VisualStudioVersion = 15.0.27130.2010
|
VisualStudioVersion = 16.0.29324.140
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Skins", "Skins", "{409484D8-C0DB-4991-AF03-124128EDEF98}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Skins", "Skins", "{409484D8-C0DB-4991-AF03-124128EDEF98}"
|
||||||
EndProject
|
EndProject
|
||||||
@@ -40,6 +40,9 @@ EndProject
|
|||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClassicIEDLL", "ClassicIE\ClassicIEDLL\ClassicIEDLL.vcxproj", "{BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClassicIEDLL", "ClassicIE\ClassicIEDLL\ClassicIEDLL.vcxproj", "{BC0E6E7C-08C1-4F12-A754-4608E5A22FA8}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Update", "Update\Update.vcxproj", "{171B46B0-6083-4D9E-BD33-946EA3BD76FA}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Update", "Update\Update.vcxproj", "{171B46B0-6083-4D9E-BD33-946EA3BD76FA}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1} = {D94BD2A6-1872-4F01-B911-F406603AA2E1}
|
||||||
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win7Aero7", "Skins\Win7Aero7\Win7Aero7.vcxproj", "{A2CCDE9F-17CE-461E-8BD9-00261B8855A6}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Win7Aero7", "Skins\Win7Aero7\Win7Aero7.vcxproj", "{A2CCDE9F-17CE-461E-8BD9-00261B8855A6}"
|
||||||
EndProject
|
EndProject
|
||||||
@@ -63,6 +66,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Metro", "Skins\Metro\Metro.
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Metallic7", "Skins\Metallic7\Metallic7.vcxproj", "{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Metallic7", "Skins\Metallic7\Metallic7.vcxproj", "{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DesktopToasts", "Update\DesktopToasts\DesktopToasts.vcxproj", "{D94BD2A6-1872-4F01-B911-F406603AA2E1}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
@@ -374,6 +379,15 @@ Global
|
|||||||
{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|Win32.ActiveCfg = Resource|Win32
|
{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|Win32.ActiveCfg = Resource|Win32
|
||||||
{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|Win32.Build.0 = Resource|Win32
|
{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|Win32.Build.0 = Resource|Win32
|
||||||
{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|x64.ActiveCfg = Resource|Win32
|
{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}.Setup|x64.ActiveCfg = Resource|Win32
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1}.Debug|x64.ActiveCfg = Debug|Win32
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1}.Release|x64.ActiveCfg = Release|Win32
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1}.Setup|Win32.ActiveCfg = Release|Win32
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1}.Setup|Win32.Build.0 = Release|Win32
|
||||||
|
{D94BD2A6-1872-4F01-B911-F406603AA2E1}.Setup|x64.ActiveCfg = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
@@ -3,9 +3,7 @@ REM ***** Collect PDBs
|
|||||||
echo -- Creating symbols package
|
echo -- Creating symbols package
|
||||||
set CS_SYMBOLS_NAME=OpenShellPDB_%CS_VERSION_STR%.7z
|
set CS_SYMBOLS_NAME=OpenShellPDB_%CS_VERSION_STR%.7z
|
||||||
|
|
||||||
cd Output
|
7z a -mx9 .\Final\%CS_SYMBOLS_NAME% .\Output\symbols\* > nul
|
||||||
7z a -mx9 ..\Final\%CS_SYMBOLS_NAME% PDB32 PDB64 > nul
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
if defined APPVEYOR (
|
if defined APPVEYOR (
|
||||||
appveyor PushArtifact Final\%CS_SYMBOLS_NAME%
|
appveyor PushArtifact Final\%CS_SYMBOLS_NAME%
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
if exist Output rd /Q /S Output
|
if exist Output rd /Q /S Output
|
||||||
md Output
|
md Output
|
||||||
md Output\x64
|
md Output\x64
|
||||||
md Output\PDB32
|
|
||||||
md Output\PDB64
|
|
||||||
|
|
||||||
echo -- Compiling
|
echo -- Compiling
|
||||||
|
|
||||||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set MSBuildDir=%%i\MSBuild\15.0\Bin\
|
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set MSBuildDir=%%i\MSBuild\Current\Bin\
|
||||||
|
|
||||||
REM ********* Build 64-bit solution
|
REM ********* Build 64-bit solution
|
||||||
echo --- 64bit
|
echo --- 64bit
|
||||||
@@ -40,6 +38,7 @@ copy /B ..\ClassicIE\Setup\ClassicIE_32.exe Output > nul
|
|||||||
copy /B ..\StartMenu\Setup\StartMenu.exe Output > nul
|
copy /B ..\StartMenu\Setup\StartMenu.exe Output > nul
|
||||||
copy /B ..\StartMenu\Setup\StartMenuDLL.dll Output > nul
|
copy /B ..\StartMenu\Setup\StartMenuDLL.dll Output > nul
|
||||||
copy /B ..\Update\Release\Update.exe Output > nul
|
copy /B ..\Update\Release\Update.exe Output > nul
|
||||||
|
copy /B ..\Update\DesktopToasts\Release\DesktopToasts.dll Output > nul
|
||||||
copy /B ..\StartMenu\StartMenuHelper\Setup\StartMenuHelper32.dll Output > nul
|
copy /B ..\StartMenu\StartMenuHelper\Setup\StartMenuHelper32.dll Output > nul
|
||||||
copy /B ..\Setup\SetupHelper\Release\SetupHelper.exe Output > nul
|
copy /B ..\Setup\SetupHelper\Release\SetupHelper.exe Output > nul
|
||||||
|
|
||||||
@@ -67,6 +66,8 @@ copy /B "..\StartMenu\Skins\Metallic.skin7" Output > nul
|
|||||||
|
|
||||||
|
|
||||||
REM ********* Collect debug info
|
REM ********* Collect debug info
|
||||||
|
md Output\PDB32
|
||||||
|
md Output\PDB64
|
||||||
|
|
||||||
REM Explorer 32
|
REM Explorer 32
|
||||||
copy /B ..\ClassicExplorer\Setup\ClassicExplorer32.pdb Output\PDB32 > nul
|
copy /B ..\ClassicExplorer\Setup\ClassicExplorer32.pdb Output\PDB32 > nul
|
||||||
@@ -99,6 +100,8 @@ copy /B ..\StartMenu\StartMenuHelper\Setup\StartMenuHelper32.pdb Output\PDB32 >
|
|||||||
copy /B Output\StartMenuHelper32.dll Output\PDB32 > nul
|
copy /B Output\StartMenuHelper32.dll Output\PDB32 > nul
|
||||||
copy /B ..\Update\Release\Update.pdb Output\PDB32 > nul
|
copy /B ..\Update\Release\Update.pdb Output\PDB32 > nul
|
||||||
copy /B Output\Update.exe Output\PDB32 > nul
|
copy /B Output\Update.exe Output\PDB32 > nul
|
||||||
|
copy /B ..\Update\DesktopToasts\Release\DesktopToasts.pdb Output\PDB32 > nul
|
||||||
|
copy /B Output\DesktopToasts.dll Output\PDB32 > nul
|
||||||
|
|
||||||
REM Menu 64
|
REM Menu 64
|
||||||
copy /B ..\StartMenu\Setup64\StartMenu.pdb Output\PDB64 > nul
|
copy /B ..\StartMenu\Setup64\StartMenu.pdb Output\PDB64 > nul
|
||||||
@@ -126,6 +129,18 @@ if exist %PDBSTR_PATH% (
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
REM ********* Prepare symbols
|
||||||
|
|
||||||
|
set SYMSTORE_PATH="C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\symstore.exe"
|
||||||
|
|
||||||
|
%SYMSTORE_PATH% add /r /f Output\PDB32 /s Output\symbols /t OpenShell -:NOREFS > nul
|
||||||
|
%SYMSTORE_PATH% add /r /f Output\PDB64 /s Output\symbols /t OpenShell -:NOREFS > nul
|
||||||
|
rd /Q /S Output\symbols\000Admin > nul
|
||||||
|
del Output\symbols\pingme.txt > nul
|
||||||
|
|
||||||
|
rd /Q /S Output\PDB32
|
||||||
|
rd /Q /S Output\PDB64
|
||||||
|
|
||||||
REM ********* Build ADMX
|
REM ********* Build ADMX
|
||||||
echo --- ADMX
|
echo --- ADMX
|
||||||
if exist Output\PolicyDefinitions.zip (
|
if exist Output\PolicyDefinitions.zip (
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ Utility\Release\Utility.exe crcmsi Temp
|
|||||||
|
|
||||||
REM ********* Build bootstrapper
|
REM ********* Build bootstrapper
|
||||||
echo --- Bootstrapper
|
echo --- Bootstrapper
|
||||||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set MSBuildDir=%%i\MSBuild\15.0\Bin\
|
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do set MSBuildDir=%%i\MSBuild\Current\Bin\
|
||||||
|
|
||||||
"%MSBuildDir%MSBuild.exe" Setup.sln /m /t:Rebuild /p:Configuration="Release" /p:Platform="Win32" /verbosity:quiet /nologo
|
"%MSBuildDir%MSBuild.exe" Setup.sln /m /t:Rebuild /p:Configuration="Release" /p:Platform="Win32" /verbosity:quiet /nologo
|
||||||
@if ERRORLEVEL 1 exit /b 1
|
@if ERRORLEVEL 1 exit /b 1
|
||||||
|
|||||||
@@ -14,18 +14,18 @@
|
|||||||
<ProjectGuid>{A4A4D3B1-24E7-401E-A37C-72141D7603DC}</ProjectGuid>
|
<ProjectGuid>{A4A4D3B1-24E7-401E-A37C-72141D7603DC}</ProjectGuid>
|
||||||
<RootNamespace>Setup</RootNamespace>
|
<RootNamespace>Setup</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
@@ -55,7 +55,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
|||||||
@@ -105,7 +105,9 @@
|
|||||||
</Feature>
|
</Feature>
|
||||||
<Feature Id="Update" Level="1" Title="!(loc.UpdateTitle)" ConfigurableDirectory="APPLICATIONFOLDER" AllowAdvertise="no" Description="!(loc.UpdateDesc)">
|
<Feature Id="Update" Level="1" Title="!(loc.UpdateTitle)" ConfigurableDirectory="APPLICATIONFOLDER" AllowAdvertise="no" Description="!(loc.UpdateDesc)">
|
||||||
<ComponentRef Id="Update.exe" />
|
<ComponentRef Id="Update.exe" />
|
||||||
|
<ComponentRef Id="DesktopToasts.dll" />
|
||||||
<ComponentRef Id="UpdateSettingsLink" />
|
<ComponentRef Id="UpdateSettingsLink" />
|
||||||
|
<ComponentRef Id="ToastActivator" />
|
||||||
</Feature>
|
</Feature>
|
||||||
</Feature>
|
</Feature>
|
||||||
<UI>
|
<UI>
|
||||||
@@ -388,8 +390,8 @@
|
|||||||
<Control Type="Icon" Id="Icon1" Width="12" Height="12" X="7" Y="203" Hidden="yes" Text="web.ico">
|
<Control Type="Icon" Id="Icon1" Width="12" Height="12" X="7" Y="203" Hidden="yes" Text="web.ico">
|
||||||
<Condition Action="show">NOT Installed</Condition>
|
<Condition Action="show">NOT Installed</Condition>
|
||||||
</Control>
|
</Control>
|
||||||
<Control Type="Hyperlink" Id="Link1" Width="131" Height="10" X="22" Y="204" Hidden="yes" ToolTip="https://github.com/Open-Shell/Open-Shell-Menu">
|
<Control Type="Hyperlink" Id="Link1" Width="131" Height="10" X="22" Y="204" Hidden="yes" ToolTip="https://open-shell.github.io/Open-Shell-Menu">
|
||||||
<Text><![CDATA[<a href="https://github.com/Open-Shell/Open-Shell-Menu">!(loc.WebLink)</a>]]></Text>
|
<Text><![CDATA[<a href="https://open-shell.github.io/Open-Shell-Menu">!(loc.WebLink)</a>]]></Text>
|
||||||
<Condition Action="show">NOT Installed</Condition>
|
<Condition Action="show">NOT Installed</Condition>
|
||||||
</Control>
|
</Control>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
@@ -476,6 +478,9 @@
|
|||||||
<Component Id="Update.exe" Guid="FB6C213F-B670-4888-8B2C-12E807E335A7" Win64="$(var.CS_WIN64)">
|
<Component Id="Update.exe" Guid="FB6C213F-B670-4888-8B2C-12E807E335A7" Win64="$(var.CS_WIN64)">
|
||||||
<File Id="Update" KeyPath="yes" Source="Output\Update.exe" Checksum="yes" Vital="yes" />
|
<File Id="Update" KeyPath="yes" Source="Output\Update.exe" Checksum="yes" Vital="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component Id="DesktopToasts.dll" Guid="B42157AF-3984-4796-8BD6-501FC5450FF1" Win64="$(var.CS_WIN64)">
|
||||||
|
<File Id="DesktopToasts.dll" KeyPath="yes" Source="Output\DesktopToasts.dll" Checksum="yes" Vital="yes" />
|
||||||
|
</Component>
|
||||||
<Component Id="PolicyDefinitions.zip" Guid="580A15D0-4023-471d-9D82-9D63FBA42B5D" Win64="$(var.CS_WIN64)">
|
<Component Id="PolicyDefinitions.zip" Guid="580A15D0-4023-471d-9D82-9D63FBA42B5D" Win64="$(var.CS_WIN64)">
|
||||||
<File Id="PolicyDefinitions.zip" KeyPath="yes" Source="Output\PolicyDefinitions.zip" Vital="yes" />
|
<File Id="PolicyDefinitions.zip" KeyPath="yes" Source="Output\PolicyDefinitions.zip" Vital="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
@@ -551,6 +556,11 @@
|
|||||||
<Component Id="TreatAs" Guid="B1E7462A-E1E2-47eb-A42C-7BD272D738AA" Win64="$(var.CS_WIN64)">
|
<Component Id="TreatAs" Guid="B1E7462A-E1E2-47eb-A42C-7BD272D738AA" Win64="$(var.CS_WIN64)">
|
||||||
<RegistryKey Root="HKCR" Key="CLSID\{ECD4FC4D-521C-11D0-B792-00A0C90312E1}\TreatAs" ForceDeleteOnUninstall="yes" />
|
<RegistryKey Root="HKCR" Key="CLSID\{ECD4FC4D-521C-11D0-B792-00A0C90312E1}\TreatAs" ForceDeleteOnUninstall="yes" />
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component Id="ToastActivator" Guid="3A0FDC31-D5D3-4C2E-9A0B-292CAB46DA87" Win64="$(var.CS_WIN64)">
|
||||||
|
<RegistryKey Root="HKCR" Key="CLSID\{E407B70A-1FBD-4D5E-8822-231C69102472}\LocalServer32" ForceDeleteOnUninstall="yes">
|
||||||
|
<RegistryValue Value=""[APPLICATIONFOLDER]Update.exe" -ToastActivated" Type="string" />
|
||||||
|
</RegistryKey>
|
||||||
|
</Component>
|
||||||
</DirectoryRef>
|
</DirectoryRef>
|
||||||
<DirectoryRef Id="StartMenuDir">
|
<DirectoryRef Id="StartMenuDir">
|
||||||
<Component Id="HelpLink" Guid="D631C351-7BD4-42CE-813C-5D46347068AF">
|
<Component Id="HelpLink" Guid="D631C351-7BD4-42CE-813C-5D46347068AF">
|
||||||
@@ -564,7 +574,11 @@
|
|||||||
<Condition>START_MENU_FOLDER=1</Condition>
|
<Condition>START_MENU_FOLDER=1</Condition>
|
||||||
</Component>
|
</Component>
|
||||||
<Component Id="UpdateSettingsLink" Guid="10B5A082-6C92-4EA7-AFF8-21AE3D2D7FE0">
|
<Component Id="UpdateSettingsLink" Guid="10B5A082-6C92-4EA7-AFF8-21AE3D2D7FE0">
|
||||||
<Shortcut Id="UpdateSettingsLink" Name="!(loc.UpdateItem)" Advertise="no" Description="!(loc.UpdateSettingsDesc)" Target="[APPLICATIONFOLDER]Update.exe" WorkingDirectory="APPLICATIONFOLDER" />
|
<Shortcut Id="UpdateSettingsLink" Name="!(loc.UpdateItem)" Advertise="no" Description="!(loc.UpdateSettingsDesc)" Target="[APPLICATIONFOLDER]Update.exe" WorkingDirectory="APPLICATIONFOLDER">
|
||||||
|
<ShortcutProperty Key="System.AppUserModel.ID" Value="OpenShell.Update"/>
|
||||||
|
<!-- Windows 7 doesn't recognize `System.AppUserModel.ToastActivatorCLSID` name so we have to use GUID directly -->
|
||||||
|
<ShortcutProperty Key="{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 26" Value="{E407B70A-1FBD-4D5E-8822-231C69102472}"/>
|
||||||
|
</Shortcut>
|
||||||
<CreateFolder />
|
<CreateFolder />
|
||||||
<Condition>START_MENU_FOLDER=1</Condition>
|
<Condition>START_MENU_FOLDER=1</Condition>
|
||||||
</Component>
|
</Component>
|
||||||
@@ -607,9 +621,9 @@
|
|||||||
<Property Id="ApplicationFolderName" Value="Open-Shell" />
|
<Property Id="ApplicationFolderName" Value="Open-Shell" />
|
||||||
<Property Id="WixAppFolder" Value="WixPerMachineFolder" />
|
<Property Id="WixAppFolder" Value="WixPerMachineFolder" />
|
||||||
<Property Id="ALLUSERS" Value="1" />
|
<Property Id="ALLUSERS" Value="1" />
|
||||||
<Property Id="ARPHELPLINK" Value="http://www.classicshell.net/forum/" />
|
<Property Id="ARPHELPLINK" Value="https://github.com/Open-Shell/Open-Shell-Menu/issues" />
|
||||||
<Property Id="ARPSIZE" Value="9000" />
|
<Property Id="ARPSIZE" Value="9000" />
|
||||||
<Property Id="ARPURLINFOABOUT" Value="http://www.classicshell.net/" />
|
<Property Id="ARPURLINFOABOUT" Value="https://open-shell.github.io/Open-Shell-Menu" />
|
||||||
<Property Id="ARPNOMODIFY" Value="1" />
|
<Property Id="ARPNOMODIFY" Value="1" />
|
||||||
<Property Id="ARPNOREPAIR" Value="1" />
|
<Property Id="ARPNOREPAIR" Value="1" />
|
||||||
<Property Id="START_MENU_FOLDER" Value="1" />
|
<Property Id="START_MENU_FOLDER" Value="1" />
|
||||||
|
|||||||
@@ -14,18 +14,18 @@
|
|||||||
<ProjectGuid>{E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}</ProjectGuid>
|
<ProjectGuid>{E1017135-9916-4B11-9AC5-1EC0BD8F8CD6}</ProjectGuid>
|
||||||
<RootNamespace>SetupHelper</RootNamespace>
|
<RootNamespace>SetupHelper</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
@@ -53,7 +53,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
|||||||
@@ -50,62 +50,62 @@
|
|||||||
<ProjectGuid>{F92A5473-F9E0-412F-923C-6632A66D13C1}</ProjectGuid>
|
<ProjectGuid>{F92A5473-F9E0-412F-923C-6632A66D13C1}</ProjectGuid>
|
||||||
<RootNamespace>UpdateBin</RootNamespace>
|
<RootNamespace>UpdateBin</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.1|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.1|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.0|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.3.0|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.7|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.7|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.6|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.6|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.5|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.5|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.4|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.4|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.3|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.3|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.2|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.2|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.1|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.1|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.0|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.2.0|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.1.0|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='update_4.1.0|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
#include <atlctl.h>
|
#include <atlctl.h>
|
||||||
#include <atlstr.h>
|
#include <atlstr.h>
|
||||||
#include <atltypes.h>
|
#include <atltypes.h>
|
||||||
|
#include <string>
|
||||||
#include "ResourceHelper.h"
|
#include "ResourceHelper.h"
|
||||||
#include "ComHelper.h"
|
#include "ComHelper.h"
|
||||||
#include "StringUtils.h"
|
#include "StringUtils.h"
|
||||||
@@ -452,6 +453,32 @@ static void SaveReportFile( void )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void RemoveShellExtKey(const wchar_t* progID)
|
||||||
|
{
|
||||||
|
static const auto ShellExtName = L"StartMenuExt";
|
||||||
|
auto contextMenuHandlers = std::wstring(progID) + L"\\ShellEx\\ContextMenuHandlers";
|
||||||
|
auto startMenuExt = contextMenuHandlers + L"\\" + ShellExtName;
|
||||||
|
|
||||||
|
HKEY hkey = NULL;
|
||||||
|
if (RegOpenKeyEx(HKEY_CLASSES_ROOT, startMenuExt.c_str(), 0, KEY_READ | KEY_WOW64_64KEY, &hkey) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
RegCloseKey(hkey);
|
||||||
|
LogMessage(-1, L"Deleting registry key HKEY_CLASSES_ROOT\\%s", startMenuExt.c_str());
|
||||||
|
auto error = RegCreateKeyEx(HKEY_CLASSES_ROOT, contextMenuHandlers.c_str(), NULL, NULL, REG_OPTION_BACKUP_RESTORE, KEY_WRITE | DELETE | KEY_WOW64_64KEY, NULL, &hkey, NULL);
|
||||||
|
if (error == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
error = RegDeleteTree2(hkey, ShellExtName);
|
||||||
|
if (error != ERROR_SUCCESS && error != ERROR_FILE_NOT_FOUND)
|
||||||
|
LogMessage(error, L"Failed to delete registry key HKEY_CLASSES_ROOT\\%s.", startMenuExt.c_str());
|
||||||
|
RegCloseKey(hkey);
|
||||||
|
}
|
||||||
|
else if (error != ERROR_FILE_NOT_FOUND)
|
||||||
|
{
|
||||||
|
LogMessage(error, L"Failed to open registry key HKEY_CLASSES_ROOT\\%s for writing.", contextMenuHandlers.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool RemoveRegistryKeys( bool bPin )
|
static bool RemoveRegistryKeys( bool bPin )
|
||||||
{
|
{
|
||||||
HKEY hkey=NULL;
|
HKEY hkey=NULL;
|
||||||
@@ -488,40 +515,11 @@ static bool RemoveRegistryKeys( bool bPin )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hkey=NULL;
|
|
||||||
if (bPin)
|
if (bPin)
|
||||||
{
|
{
|
||||||
if (RegOpenKeyEx(HKEY_CLASSES_ROOT,L"Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers\\StartMenuExt",0,KEY_READ|KEY_WOW64_64KEY,&hkey)==ERROR_SUCCESS)
|
RemoveShellExtKey(L"Launcher.ImmersiveApplication");
|
||||||
{
|
RemoveShellExtKey(L"Launcher.DesktopPackagedApplication");
|
||||||
RegCloseKey(hkey);
|
RemoveShellExtKey(L"Launcher.SystemSettings");
|
||||||
LogMessage(-1,L"Deleting registry key HKEY_CLASSES_ROOT\\Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers\\StartMenuExt");
|
|
||||||
error=RegCreateKeyEx(HKEY_CLASSES_ROOT,L"Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers",NULL,NULL,REG_OPTION_BACKUP_RESTORE,KEY_WRITE|DELETE|KEY_WOW64_64KEY,NULL,&hkey,NULL);
|
|
||||||
if (error==ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
error=RegDeleteTree2(hkey,L"StartMenuExt");
|
|
||||||
if (error!=ERROR_SUCCESS && error!=ERROR_FILE_NOT_FOUND)
|
|
||||||
LogMessage(error,L"Failed to delete registry key HKEY_CLASSES_ROOT\\Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers\\StartMenuExt.");
|
|
||||||
RegCloseKey(hkey);
|
|
||||||
}
|
|
||||||
else if (error!=ERROR_FILE_NOT_FOUND)
|
|
||||||
LogMessage(error,L"Failed to open registry key HKEY_CLASSES_ROOT\\Launcher.ImmersiveApplication\\ShellEx\\ContextMenuHandlers for writing.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (RegOpenKeyEx(HKEY_CLASSES_ROOT,L"Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers\\StartMenuExt",0,KEY_READ|KEY_WOW64_64KEY,&hkey)==ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
RegCloseKey(hkey);
|
|
||||||
LogMessage(-1,L"Deleting registry key HKEY_CLASSES_ROOT\\Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers\\StartMenuExt");
|
|
||||||
error=RegCreateKeyEx(HKEY_CLASSES_ROOT,L"Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers",NULL,NULL,REG_OPTION_BACKUP_RESTORE,KEY_WRITE|DELETE|KEY_WOW64_64KEY,NULL,&hkey,NULL);
|
|
||||||
if (error==ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
error=RegDeleteTree2(hkey,L"StartMenuExt");
|
|
||||||
if (error!=ERROR_SUCCESS && error!=ERROR_FILE_NOT_FOUND)
|
|
||||||
LogMessage(error,L"Failed to delete registry key HKEY_CLASSES_ROOT\\Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers\\StartMenuExt.");
|
|
||||||
RegCloseKey(hkey);
|
|
||||||
}
|
|
||||||
else if (error!=ERROR_FILE_NOT_FOUND)
|
|
||||||
LogMessage(error,L"Failed to open registry key HKEY_CLASSES_ROOT\\Launcher.SystemSettings\\ShellEx\\ContextMenuHandlers for writing.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ void ShowMetroColorViewer( void )
|
|||||||
if (fout) fprintf(fout,"%02X%02X%02X%02X %S\n",(color>>24)&0xFF,color&0xFF,(color>>8)&0xFF,(color>>16)&0xFF,name);
|
if (fout) fprintf(fout,"%02X%02X%02X%02X %S\n",(color>>24)&0xFF,color&0xFF,(color>>8)&0xFF,(color>>16)&0xFF,name);
|
||||||
#endif
|
#endif
|
||||||
MetroColor mc;
|
MetroColor mc;
|
||||||
mc.name=name;
|
mc.name=text;
|
||||||
mc.NAME=mc.name;
|
mc.NAME=mc.name;
|
||||||
mc.NAME.MakeUpper();
|
mc.NAME.MakeUpper();
|
||||||
mc.type=type;
|
mc.type=type;
|
||||||
|
|||||||
@@ -943,7 +943,7 @@ static BOOL CALLBACK EnumResLangProc( HMODULE hModule, LPCTSTR lpszType, LPCTSTR
|
|||||||
if (IS_INTRESOURCE(lpszName))
|
if (IS_INTRESOURCE(lpszName))
|
||||||
{
|
{
|
||||||
std::vector<std::pair<int,WORD>> &oldStrings=*(std::vector<std::pair<int,WORD>>*)lParam;
|
std::vector<std::pair<int,WORD>> &oldStrings=*(std::vector<std::pair<int,WORD>>*)lParam;
|
||||||
oldStrings.push_back(std::pair<int,WORD>(PtrToInt(lpszName),wIDLanguage));
|
oldStrings.emplace_back(PtrToInt(lpszName),wIDLanguage);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,32 +22,32 @@
|
|||||||
<ProjectGuid>{DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}</ProjectGuid>
|
<ProjectGuid>{DAE66C9B-05DC-4ACE-97DA-2547B490BBFF}</ProjectGuid>
|
||||||
<RootNamespace>Utility</RootNamespace>
|
<RootNamespace>Utility</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -92,7 +92,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
@@ -112,7 +111,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ rem Clean repository and build fresh. Will erase current changes so disabled by
|
|||||||
rem git clean -dfx
|
rem git clean -dfx
|
||||||
|
|
||||||
rem Default version
|
rem Default version
|
||||||
set CS_VERSION=4.4.110
|
set CS_VERSION=4.4.1000
|
||||||
|
|
||||||
if defined APPVEYOR_BUILD_VERSION (
|
if defined APPVEYOR_BUILD_VERSION (
|
||||||
set CS_VERSION=%APPVEYOR_BUILD_VERSION%
|
set CS_VERSION=%APPVEYOR_BUILD_VERSION%
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ rem Clean repository and build fresh. Will erase current changes so disabled by
|
|||||||
rem git clean -dfx
|
rem git clean -dfx
|
||||||
|
|
||||||
rem Default version
|
rem Default version
|
||||||
set CS_VERSION=4.3.2
|
set CS_VERSION=4.4.1000
|
||||||
|
|
||||||
if defined APPVEYOR_BUILD_VERSION (
|
if defined APPVEYOR_BUILD_VERSION (
|
||||||
set CS_VERSION=%APPVEYOR_BUILD_VERSION%
|
set CS_VERSION=%APPVEYOR_BUILD_VERSION%
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{0A60FD06-3A81-4651-A869-9850DBC115EA}</ProjectGuid>
|
<ProjectGuid>{0A60FD06-3A81-4651-A869-9850DBC115EA}</ProjectGuid>
|
||||||
<RootNamespace>enUS</RootNamespace>
|
<RootNamespace>enUS</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{9EC23CA9-384A-4EEB-979E-69879DC1A78C}</ProjectGuid>
|
<ProjectGuid>{9EC23CA9-384A-4EEB-979E-69879DC1A78C}</ProjectGuid>
|
||||||
<RootNamespace>ClassicSkin</RootNamespace>
|
<RootNamespace>ClassicSkin</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{31C016FB-9EA1-4AF5-987A-37210C04DA06}</ProjectGuid>
|
<ProjectGuid>{31C016FB-9EA1-4AF5-987A-37210C04DA06}</ProjectGuid>
|
||||||
<RootNamespace>ClassicSkin7</RootNamespace>
|
<RootNamespace>ClassicSkin7</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{066C9721-26D5-4C4D-868E-50C2BA0A8196}</ProjectGuid>
|
<ProjectGuid>{066C9721-26D5-4C4D-868E-50C2BA0A8196}</ProjectGuid>
|
||||||
<RootNamespace>FullGlass</RootNamespace>
|
<RootNamespace>FullGlass</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}</ProjectGuid>
|
<ProjectGuid>{CA5BFC96-428D-42F5-9F7D-CDDE048A357C}</ProjectGuid>
|
||||||
<RootNamespace>Metallic7</RootNamespace>
|
<RootNamespace>Metallic7</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}</ProjectGuid>
|
<ProjectGuid>{63BAF573-170B-4FA0-AEE3-16E04F3E9DF5}</ProjectGuid>
|
||||||
<RootNamespace>Metro</RootNamespace>
|
<RootNamespace>Metro</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -105,7 +105,6 @@ Submenu_padding=2,2,2,2
|
|||||||
|
|
||||||
; These have the same meaning as the Main_... properties
|
; These have the same meaning as the Main_... properties
|
||||||
Submenu_opacity=region
|
Submenu_opacity=region
|
||||||
Submenu_opacity=region
|
|
||||||
Submenu_bitmap=$SystemAccentDark1|$StartBackground
|
Submenu_bitmap=$SystemAccentDark1|$StartBackground
|
||||||
Submenu_bitmap_tint1=$StartHighlight
|
Submenu_bitmap_tint1=$StartHighlight
|
||||||
Submenu_bitmap_mask=2
|
Submenu_bitmap_mask=2
|
||||||
@@ -179,9 +178,11 @@ Main_icon_frame_tint1=$SystemAccentDark2|$StartSelectionBackground
|
|||||||
Main_icon_frame_mask=10
|
Main_icon_frame_mask=10
|
||||||
Main_icon_frame_slices_X=4,4,4
|
Main_icon_frame_slices_X=4,4,4
|
||||||
Main_icon_frame_slices_Y=4,4,4
|
Main_icon_frame_slices_Y=4,4,4
|
||||||
Main_icon_frame_offset=3,3
|
Main_icon_frame_offset=3,3,100%
|
||||||
Main_icon_padding=6,6,6,6,100%
|
Main_icon_padding=6,6,6,6,100%
|
||||||
Main_text_padding=5,2,8,2,100%
|
Main_text_padding=5,2,8,2,100%
|
||||||
|
|
||||||
|
[ICON_FRAMES AND NOT SMALL_ICONS AND NOT NO_ICONS]
|
||||||
Main2_icon_padding=6,6,6,6,100%
|
Main2_icon_padding=6,6,6,6,100%
|
||||||
Main2_text_padding=5,2,8,2,100%
|
Main2_text_padding=5,2,8,2,100%
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{598AB4AC-008E-4501-90B3-C5213834C1DA}</ProjectGuid>
|
<ProjectGuid>{598AB4AC-008E-4501-90B3-C5213834C1DA}</ProjectGuid>
|
||||||
<RootNamespace>Metro7</RootNamespace>
|
<RootNamespace>Metro7</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ Scrollbar_arrows_mask=17
|
|||||||
|
|
||||||
|
|
||||||
; LIST SECTION
|
; LIST SECTION
|
||||||
|
List_icon_padding=3,3,3,3,100%
|
||||||
List_text_padding=0,0,4,0,100%
|
List_text_padding=0,0,4,0,100%
|
||||||
List_separator_font="Segoe UI",bold,-9
|
List_separator_font="Segoe UI",bold,-9
|
||||||
List_separator_text_padding=3,0,0,0,100%
|
List_separator_text_padding=3,0,0,0,100%
|
||||||
@@ -249,7 +250,7 @@ Main_icon_frame_tint1=$SystemAccentDark2|$StartSelectionBackground
|
|||||||
Main_icon_frame_mask=10
|
Main_icon_frame_mask=10
|
||||||
Main_icon_frame_slices_X=4,4,4
|
Main_icon_frame_slices_X=4,4,4
|
||||||
Main_icon_frame_slices_Y=4,4,4
|
Main_icon_frame_slices_Y=4,4,4
|
||||||
Main_icon_frame_offset=3,3
|
Main_icon_frame_offset=3,3,100%
|
||||||
List_icon_frame=0
|
List_icon_frame=0
|
||||||
Main_icon_padding=6,6,6,6,100%
|
Main_icon_padding=6,6,6,6,100%
|
||||||
Main_text_padding=5,2,8,2,100%
|
Main_text_padding=5,2,8,2,100%
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{7BD26CB3-5280-48FD-9A86-C13E321018D5}</ProjectGuid>
|
<ProjectGuid>{7BD26CB3-5280-48FD-9A86-C13E321018D5}</ProjectGuid>
|
||||||
<RootNamespace>Midnight7</RootNamespace>
|
<RootNamespace>Midnight7</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{66D1EAA4-65D1-45CC-9989-E616FC0575EB}</ProjectGuid>
|
<ProjectGuid>{66D1EAA4-65D1-45CC-9989-E616FC0575EB}</ProjectGuid>
|
||||||
<RootNamespace>SmokedGlass</RootNamespace>
|
<RootNamespace>SmokedGlass</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}</ProjectGuid>
|
<ProjectGuid>{EA65FDDD-CB77-417F-8BB4-2F3ECB5B3E75}</ProjectGuid>
|
||||||
<RootNamespace>Win7Aero</RootNamespace>
|
<RootNamespace>Win7Aero</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{A2CCDE9F-17CE-461E-8BD9-00261B8855A6}</ProjectGuid>
|
<ProjectGuid>{A2CCDE9F-17CE-461E-8BD9-00261B8855A6}</ProjectGuid>
|
||||||
<RootNamespace>Win7Aero7</RootNamespace>
|
<RootNamespace>Win7Aero7</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{404821C5-4EE4-4908-A759-5EF6DAC14AB6}</ProjectGuid>
|
<ProjectGuid>{404821C5-4EE4-4908-A759-5EF6DAC14AB6}</ProjectGuid>
|
||||||
<RootNamespace>Win7Basic</RootNamespace>
|
<RootNamespace>Win7Basic</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}</ProjectGuid>
|
<ProjectGuid>{ED74EBA9-1BCB-4B8F-9AE1-DC63B3C24A94}</ProjectGuid>
|
||||||
<RootNamespace>Win8</RootNamespace>
|
<RootNamespace>Win8</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}</ProjectGuid>
|
<ProjectGuid>{5C875214-0E3A-4CF0-BC0C-BFF6FAA4C089}</ProjectGuid>
|
||||||
<RootNamespace>Win87</RootNamespace>
|
<RootNamespace>Win87</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -10,12 +10,12 @@
|
|||||||
<ProjectGuid>{81EB6336-366C-47DD-82CF-FF6C36CCD2B5}</ProjectGuid>
|
<ProjectGuid>{81EB6336-366C-47DD-82CF-FF6C36CCD2B5}</ProjectGuid>
|
||||||
<RootNamespace>WinXP</RootNamespace>
|
<RootNamespace>WinXP</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Resource|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|||||||
@@ -274,6 +274,97 @@ public:
|
|||||||
//const wchar_t *g_AppId=L"Microsoft.BingWeather_8wekyb3d8bbwe!App";
|
//const wchar_t *g_AppId=L"Microsoft.BingWeather_8wekyb3d8bbwe!App";
|
||||||
const wchar_t *g_AppId=L"microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar";
|
const wchar_t *g_AppId=L"microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar";
|
||||||
|
|
||||||
|
static DWORD g_winVer = GetVersionEx(GetModuleHandle(L"user32.dll"));
|
||||||
|
|
||||||
|
bool WasOsUpgrade()
|
||||||
|
{
|
||||||
|
CRegKey regKey;
|
||||||
|
if (regKey.Open(HKEY_LOCAL_MACHINE, L"Software\\OpenShell\\OpenShell", KEY_READ | KEY_WOW64_64KEY) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
DWORD ver;
|
||||||
|
if (regKey.QueryDWORDValue(L"WinVersion", ver) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
if (ver < g_winVer)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// starts new instance of StartMenu.exe with "-upgrade" command line parameter
|
||||||
|
// UAC dialog is shown to ensure it will run with administrator privileges
|
||||||
|
void RunOsUpgradeTaskAsAdmin()
|
||||||
|
{
|
||||||
|
#ifdef _WIN64
|
||||||
|
wchar_t path[_MAX_PATH] = L"%windir%\\System32\\StartMenuHelper64.dll";
|
||||||
|
#else
|
||||||
|
wchar_t path[_MAX_PATH] = L"%windir%\\System32\\StartMenuHelper32.dll";
|
||||||
|
#endif
|
||||||
|
DoEnvironmentSubst(path, _countof(path));
|
||||||
|
if (GetFileAttributes(path) != INVALID_FILE_ATTRIBUTES)
|
||||||
|
{
|
||||||
|
GetModuleFileName(NULL, path, _countof(path));
|
||||||
|
CoInitialize(NULL);
|
||||||
|
ShellExecute(NULL, L"runas", path, L"-upgrade", NULL, SW_SHOWNORMAL);
|
||||||
|
CoUninitialize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DWORD PerformOsUpgradeTask(bool silent)
|
||||||
|
{
|
||||||
|
CRegKey regKey;
|
||||||
|
DWORD error = regKey.Open(HKEY_LOCAL_MACHINE, L"Software\\OpenShell\\OpenShell", KEY_WRITE | KEY_WOW64_64KEY);
|
||||||
|
const wchar_t *nl = error == ERROR_SUCCESS ? L"\r\n\r\n" : L"\r\n";
|
||||||
|
if (error == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
regKey.SetDWORDValue(L"WinVersion", g_winVer);
|
||||||
|
|
||||||
|
// run regsvr32 StartMenuHelper
|
||||||
|
#ifdef _WIN64
|
||||||
|
wchar_t cmdLine[_MAX_PATH] = L"regsvr32 /s \"%windir%\\System32\\StartMenuHelper64.dll\"";
|
||||||
|
#else
|
||||||
|
wchar_t cmdLine[_MAX_PATH] = L"regsvr32 /s \"%windir%\\System32\\StartMenuHelper32.dll\"";
|
||||||
|
#endif
|
||||||
|
DoEnvironmentSubst(cmdLine, _countof(cmdLine));
|
||||||
|
|
||||||
|
wchar_t exe[_MAX_PATH] = L"%windir%\\System32\\regsvr32.exe";
|
||||||
|
DoEnvironmentSubst(exe, _countof(exe));
|
||||||
|
|
||||||
|
STARTUPINFO startupInfo = { sizeof(startupInfo) };
|
||||||
|
PROCESS_INFORMATION processInfo;
|
||||||
|
memset(&processInfo, 0, sizeof(processInfo));
|
||||||
|
if (CreateProcess(exe, cmdLine, NULL, NULL, FALSE, 0, NULL, NULL, &startupInfo, &processInfo))
|
||||||
|
{
|
||||||
|
CloseHandle(processInfo.hThread);
|
||||||
|
WaitForSingleObject(processInfo.hProcess, INFINITE);
|
||||||
|
GetExitCodeProcess(processInfo.hProcess, &error);
|
||||||
|
CloseHandle(processInfo.hProcess);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error = GetLastError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!silent)
|
||||||
|
{
|
||||||
|
if (error)
|
||||||
|
{
|
||||||
|
wchar_t msg[1024];
|
||||||
|
int len = Sprintf(msg, _countof(msg), L"%s%s", DllLoadStringEx(IDS_UPGRADE_ERROR), nl);
|
||||||
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error, 0, msg + len, _countof(msg) - len, NULL);
|
||||||
|
MessageBox(NULL, msg, DllLoadStringEx(IDS_APP_TITLE), MB_OK | MB_ICONERROR);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL, DllLoadStringEx(IDS_UPGRADE_SUCCESS), DllLoadStringEx(IDS_APP_TITLE), MB_OK | MB_ICONINFORMATION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrCmdLine, int nCmdShow )
|
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrCmdLine, int nCmdShow )
|
||||||
{
|
{
|
||||||
/* CoInitialize(NULL);
|
/* CoInitialize(NULL);
|
||||||
@@ -340,8 +431,8 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC
|
|||||||
ImportLegacyData();
|
ImportLegacyData();
|
||||||
|
|
||||||
DllLogToFile(STARTUP_LOG,L"StartMenu: start '%s'",lpstrCmdLine);
|
DllLogToFile(STARTUP_LOG,L"StartMenu: start '%s'",lpstrCmdLine);
|
||||||
DWORD winVer=GetVersionEx(GetModuleHandle(L"user32.dll"));
|
|
||||||
if (wcsstr(lpstrCmdLine,L"-startup") || (wcsstr(lpstrCmdLine,L"-autorun") && HIWORD(winVer)<WIN_VER_WIN8))
|
if (wcsstr(lpstrCmdLine,L"-startup") || (wcsstr(lpstrCmdLine,L"-autorun") && HIWORD(g_winVer)<WIN_VER_WIN8))
|
||||||
{
|
{
|
||||||
WaitDllInitThread();
|
WaitDllInitThread();
|
||||||
if (!DllGetSettingBool(L"AutoStart"))
|
if (!DllGetSettingBool(L"AutoStart"))
|
||||||
@@ -360,31 +451,11 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC
|
|||||||
else if (wcsstr(lpstrCmdLine,L"-autorun")) // on Win8+
|
else if (wcsstr(lpstrCmdLine,L"-autorun")) // on Win8+
|
||||||
{
|
{
|
||||||
WaitDllInitThread();
|
WaitDllInitThread();
|
||||||
CRegKey regKey;
|
if (WasOsUpgrade())
|
||||||
if (regKey.Open(HKEY_LOCAL_MACHINE,L"Software\\OpenShell\\OpenShell",KEY_READ|KEY_WOW64_64KEY)==ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
DWORD ver1;
|
|
||||||
if (regKey.QueryDWORDValue(L"WinVersion",ver1)==ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
if (ver1<winVer)
|
|
||||||
{
|
{
|
||||||
// this is an upgrade
|
// this is an upgrade
|
||||||
MessageBox(NULL,DllLoadStringEx(IDS_UPGRADE_WIN),DllLoadStringEx(IDS_APP_TITLE),MB_OK);
|
MessageBox(NULL, DllLoadStringEx(IDS_UPGRADE_WIN), DllLoadStringEx(IDS_APP_TITLE), MB_OK);
|
||||||
#ifdef _WIN64
|
RunOsUpgradeTaskAsAdmin();
|
||||||
wchar_t path[_MAX_PATH]=L"%windir%\\System32\\StartMenuHelper64.dll";
|
|
||||||
#else
|
|
||||||
wchar_t path[_MAX_PATH]=L"%windir%\\System32\\StartMenuHelper32.dll";
|
|
||||||
#endif
|
|
||||||
DoEnvironmentSubst(path,_countof(path));
|
|
||||||
if (GetFileAttributes(path)!=INVALID_FILE_ATTRIBUTES)
|
|
||||||
{
|
|
||||||
GetModuleFileName(NULL,path,_countof(path));
|
|
||||||
CoInitialize(NULL);
|
|
||||||
ShellExecute(NULL,L"runas",path,L"-upgrade",NULL,SW_SHOWNORMAL);
|
|
||||||
CoUninitialize();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!DllGetSettingBool(L"AutoStart"))
|
if (!DllGetSettingBool(L"AutoStart"))
|
||||||
{
|
{
|
||||||
@@ -399,49 +470,14 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC
|
|||||||
if (wcsstr(lpstrCmdLine,L"-upgrade"))
|
if (wcsstr(lpstrCmdLine,L"-upgrade"))
|
||||||
{
|
{
|
||||||
WaitDllInitThread();
|
WaitDllInitThread();
|
||||||
CRegKey regKey;
|
|
||||||
DWORD error=regKey.Open(HKEY_LOCAL_MACHINE,L"Software\\OpenShell\\OpenShell",KEY_WRITE|KEY_WOW64_64KEY);
|
|
||||||
const wchar_t *nl=error==ERROR_SUCCESS?L"\r\n\r\n":L"\r\n";
|
|
||||||
if (error==ERROR_SUCCESS)
|
|
||||||
{
|
|
||||||
regKey.SetDWORDValue(L"WinVersion",winVer);
|
|
||||||
|
|
||||||
// run regsvr32 StartMenuHelper
|
if (WasOsUpgrade())
|
||||||
#ifdef _WIN64
|
{
|
||||||
wchar_t cmdLine[_MAX_PATH]=L"regsvr32 /s \"%windir%\\System32\\StartMenuHelper64.dll\"";
|
const bool silent = wcsstr(lpstrCmdLine, L"-silent") != nullptr;
|
||||||
#else
|
return PerformOsUpgradeTask(silent);
|
||||||
wchar_t cmdLine[_MAX_PATH]=L"regsvr32 /s \"%windir%\\System32\\StartMenuHelper32.dll\"";
|
}
|
||||||
#endif
|
|
||||||
DoEnvironmentSubst(cmdLine,_countof(cmdLine));
|
|
||||||
|
|
||||||
wchar_t exe[_MAX_PATH]=L"%windir%\\System32\\regsvr32.exe";
|
return 0;
|
||||||
DoEnvironmentSubst(exe,_countof(exe));
|
|
||||||
|
|
||||||
STARTUPINFO startupInfo={sizeof(startupInfo)};
|
|
||||||
PROCESS_INFORMATION processInfo;
|
|
||||||
memset(&processInfo,0,sizeof(processInfo));
|
|
||||||
if (CreateProcess(exe,cmdLine,NULL,NULL,FALSE,0,NULL,NULL,&startupInfo,&processInfo))
|
|
||||||
{
|
|
||||||
CloseHandle(processInfo.hThread);
|
|
||||||
WaitForSingleObject(processInfo.hProcess,INFINITE);
|
|
||||||
GetExitCodeProcess(processInfo.hProcess,&error);
|
|
||||||
CloseHandle(processInfo.hProcess);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
error=GetLastError();
|
|
||||||
}
|
|
||||||
if (error)
|
|
||||||
{
|
|
||||||
wchar_t msg[1024];
|
|
||||||
int len=Sprintf(msg,_countof(msg),L"%s%s",DllLoadStringEx(IDS_UPGRADE_ERROR),nl);
|
|
||||||
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,error,0,msg+len,_countof(msg)-len,NULL);
|
|
||||||
MessageBox(NULL,msg,DllLoadStringEx(IDS_APP_TITLE),MB_OK|MB_ICONERROR);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MessageBox(NULL,DllLoadStringEx(IDS_UPGRADE_SUCCESS),DllLoadStringEx(IDS_APP_TITLE),MB_OK|MB_ICONINFORMATION);
|
|
||||||
}
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const wchar_t *pCmd=wcsstr(lpstrCmdLine,L"-cmd ");
|
const wchar_t *pCmd=wcsstr(lpstrCmdLine,L"-cmd ");
|
||||||
@@ -525,6 +561,7 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrC
|
|||||||
else if (wcsstr(lpstrCmdLine,L"-toggle")!=NULL) open=MSG_TOGGLE;
|
else if (wcsstr(lpstrCmdLine,L"-toggle")!=NULL) open=MSG_TOGGLE;
|
||||||
else if (wcsstr(lpstrCmdLine,L"-open")!=NULL) open=MSG_OPEN;
|
else if (wcsstr(lpstrCmdLine,L"-open")!=NULL) open=MSG_OPEN;
|
||||||
else if (wcsstr(lpstrCmdLine,L"-settings")!=NULL) open=MSG_SETTINGS;
|
else if (wcsstr(lpstrCmdLine,L"-settings")!=NULL) open=MSG_SETTINGS;
|
||||||
|
else if (wcsstr(lpstrCmdLine,L"-reloadsettings")!=NULL) open=MSG_RELOADSETTINGS;
|
||||||
else if (wcsstr(lpstrCmdLine,L"-exit")!=NULL) open=MSG_EXIT;
|
else if (wcsstr(lpstrCmdLine,L"-exit")!=NULL) open=MSG_EXIT;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,46 +30,46 @@
|
|||||||
<ProjectGuid>{87D5FE20-AF86-458A-9AA3-3131EB06179B}</ProjectGuid>
|
<ProjectGuid>{87D5FE20-AF86-458A-9AA3-3131EB06179B}</ProjectGuid>
|
||||||
<RootNamespace>StartMenu</RootNamespace>
|
<RootNamespace>StartMenu</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -136,7 +136,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>false</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
@@ -159,7 +158,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>false</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
|||||||
@@ -16,9 +16,7 @@ CMenuAccessible::CMenuAccessible( CMenuContainer *pOwner )
|
|||||||
CreateStdAccessibleObject(pOwner->m_hWnd,OBJID_CLIENT,IID_IAccessible,(void**)&m_pStdAccessible);
|
CreateStdAccessibleObject(pOwner->m_hWnd,OBJID_CLIENT,IID_IAccessible,(void**)&m_pStdAccessible);
|
||||||
}
|
}
|
||||||
|
|
||||||
CMenuAccessible::~CMenuAccessible( void )
|
CMenuAccessible::~CMenuAccessible( void ) = default;
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMenuAccessible::Reset( void )
|
void CMenuAccessible::Reset( void )
|
||||||
{
|
{
|
||||||
@@ -182,7 +180,7 @@ HRESULT STDMETHODCALLTYPE CMenuAccessible::accSelect( long flagsSelect, VARIANT
|
|||||||
int index=varChild.lVal-1;
|
int index=varChild.lVal-1;
|
||||||
if (index<0 || index>=(int)m_pOwner->m_Items.size())
|
if (index<0 || index>=(int)m_pOwner->m_Items.size())
|
||||||
return S_FALSE;
|
return S_FALSE;
|
||||||
m_pOwner->ActivateItem(index,CMenuContainer::ACTIVATE_SELECT,NULL,false);
|
m_pOwner->ActivateItem(index,CMenuContainer::ACTIVATE_SELECT,NULL);
|
||||||
}
|
}
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,13 +95,13 @@ CStdCommand7 g_StdCommands7[]={
|
|||||||
{L"user_videos",0,NULL,L"$Menu.UserVideosTip",NULL,&FOLDERID_Videos},
|
{L"user_videos",0,NULL,L"$Menu.UserVideosTip",NULL,&FOLDERID_Videos},
|
||||||
{L"control_panel",0,L"$Menu.ControlPanel",L"$Menu.ControlPanelTip",NULL,&FOLDERID_ControlPanelFolder,NULL,StdMenuItem::MENU_TRACK},
|
{L"control_panel",0,L"$Menu.ControlPanel",L"$Menu.ControlPanelTip",NULL,&FOLDERID_ControlPanelFolder,NULL,StdMenuItem::MENU_TRACK},
|
||||||
{L"pc_settings",IDS_PCSETTINGS,L"$Menu.PCSettings",L"",L"%windir%\\ImmersiveControlPanel\\SystemSettings.exe,10",NULL,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_SINGLE},
|
{L"pc_settings",IDS_PCSETTINGS,L"$Menu.PCSettings",L"",L"%windir%\\ImmersiveControlPanel\\SystemSettings.exe,10",NULL,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_SINGLE},
|
||||||
{L"network_connections",0,NULL,L"$Menu.NetworkTip",NULL,&FOLDERID_ConnectionsFolder},
|
{L"network_connections",0,NULL,L"$Menu.NetworkTip",NULL,&FOLDERID_ConnectionsFolder,NULL,0,CStdCommand7::ITEM_NODRIVES},
|
||||||
{L"network",0,NULL,NULL,NULL,&FOLDERID_NetworkFolder,NULL,0,CStdCommand7::ITEM_SINGLE},
|
{L"network",0,NULL,NULL,NULL,&FOLDERID_NetworkFolder,NULL,0,CStdCommand7::ITEM_SINGLE},
|
||||||
{L"printers",0,NULL,L"$Menu.PrintersTip",NULL,&FOLDERID_PrintersFolder},
|
{L"printers",0,NULL,L"$Menu.PrintersTip",NULL,&FOLDERID_PrintersFolder,NULL,0,CStdCommand7::ITEM_NODRIVES},
|
||||||
{L"fonts",0,NULL,NULL,NULL,&FOLDERID_Fonts},
|
{L"fonts",0,NULL,NULL,NULL,&FOLDERID_Fonts},
|
||||||
{L"desktop",0,NULL,NULL,NULL,&FOLDERID_Desktop},
|
{L"desktop",0,NULL,NULL,NULL,&FOLDERID_Desktop},
|
||||||
{L"admin",0,NULL,L"$Menu.AdminToolsTip",L"imageres.dll,114",&FOLDERID_CommonAdminTools,NULL,StdMenuItem::MENU_TRACK},
|
{L"admin",0,NULL,L"$Menu.AdminToolsTip",L"imageres.dll,114",&FOLDERID_CommonAdminTools,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_NODRIVES},
|
||||||
{L"startup",0,NULL,NULL,NULL,&FOLDERID_Startup,NULL,StdMenuItem::MENU_TRACK},
|
{L"startup",0,NULL,NULL,NULL,&FOLDERID_Startup,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_NODRIVES},
|
||||||
{L"downloads",0,NULL,L"$Menu.DownloadTip",NULL,&FOLDERID_Downloads},
|
{L"downloads",0,NULL,L"$Menu.DownloadTip",NULL,&FOLDERID_Downloads},
|
||||||
{L"games",0,NULL,L"$Menu.GamesTip",NULL,&FOLDERID_Games,NULL,StdMenuItem::MENU_TRACK},
|
{L"games",0,NULL,L"$Menu.GamesTip",NULL,&FOLDERID_Games,NULL,StdMenuItem::MENU_TRACK},
|
||||||
{L"links",0,NULL,NULL,NULL,&FOLDERID_Links},
|
{L"links",0,NULL,NULL,NULL,&FOLDERID_Links},
|
||||||
@@ -112,7 +112,7 @@ CStdCommand7 g_StdCommands7[]={
|
|||||||
{L"lib_videos",IDS_LIB_VIDEOS_ITEM,NULL,L"$Menu.VideosLibTip",NULL,&FOLDERID_VideosLibrary},
|
{L"lib_videos",IDS_LIB_VIDEOS_ITEM,NULL,L"$Menu.VideosLibTip",NULL,&FOLDERID_VideosLibrary},
|
||||||
{L"lib_tv",IDS_LIB_TV_ITEM,NULL,L"$Menu.RecordingsLibTip",NULL,&FOLDERID_RecordedTVLibrary},
|
{L"lib_tv",IDS_LIB_TV_ITEM,NULL,L"$Menu.RecordingsLibTip",NULL,&FOLDERID_RecordedTVLibrary},
|
||||||
{L"homegroup",0,NULL,L"$Menu.HomegroupTip",NULL,&FOLDERID_HomeGroup,NULL,0,CStdCommand7::ITEM_SINGLE},
|
{L"homegroup",0,NULL,L"$Menu.HomegroupTip",NULL,&FOLDERID_HomeGroup,NULL,0,CStdCommand7::ITEM_SINGLE},
|
||||||
{L"devices",0,NULL,NULL,NULL,NULL,L"::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"},
|
{L"devices",0,NULL,NULL,NULL,NULL,L"::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{A8A91A66-3A7D-4424-8D24-04E180695C7A}",0,CStdCommand7::ITEM_NODRIVES},
|
||||||
{L"defaults",0,NULL,NULL,NULL,NULL,L"::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{17CD9488-1228-4B2F-88CE-4298E93E0966}",0,CStdCommand7::ITEM_SINGLE},
|
{L"defaults",0,NULL,NULL,NULL,NULL,L"::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{17CD9488-1228-4B2F-88CE-4298E93E0966}",0,CStdCommand7::ITEM_SINGLE},
|
||||||
{L"apps",IDS_METRO_APPS,L"$Menu.Apps",NULL,L",2",NULL,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_FOLDER},
|
{L"apps",IDS_METRO_APPS,L"$Menu.Apps",NULL,L",2",NULL,NULL,StdMenuItem::MENU_TRACK,CStdCommand7::ITEM_FOLDER},
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ struct CStdCommand7
|
|||||||
ITEM_SINGLE=1, // this item never has sub-menu
|
ITEM_SINGLE=1, // this item never has sub-menu
|
||||||
ITEM_FOLDER=2, // this item always has sub-menu
|
ITEM_FOLDER=2, // this item always has sub-menu
|
||||||
ITEM_COMPUTER=4, // this item can be expanded only one level
|
ITEM_COMPUTER=4, // this item can be expanded only one level
|
||||||
|
ITEM_NODRIVES=8, // this item can never be expanded only one level
|
||||||
};
|
};
|
||||||
const wchar_t *command;
|
const wchar_t *command;
|
||||||
int nameID;
|
int nameID;
|
||||||
|
|||||||
@@ -248,7 +248,6 @@ bool CMenuContainer::DragOutApps( const CItemManager::ItemInfo *pInfo )
|
|||||||
s_bDragFromTree=false;
|
s_bDragFromTree=false;
|
||||||
if (!m_bDestroyed)
|
if (!m_bDestroyed)
|
||||||
KillTimer(TIMER_DRAG);
|
KillTimer(TIMER_DRAG);
|
||||||
HideTemp(false);
|
|
||||||
s_bPreventClosing=false;
|
s_bPreventClosing=false;
|
||||||
|
|
||||||
if (s_bDragClosed)
|
if (s_bDragClosed)
|
||||||
@@ -343,7 +342,6 @@ bool CMenuContainer::DragOut( int index, bool bApp )
|
|||||||
if (!m_bDestroyed)
|
if (!m_bDestroyed)
|
||||||
KillTimer(TIMER_DRAG);
|
KillTimer(TIMER_DRAG);
|
||||||
s_bDragMovable=false;
|
s_bDragMovable=false;
|
||||||
HideTemp(false);
|
|
||||||
s_bPreventClosing=false;
|
s_bPreventClosing=false;
|
||||||
|
|
||||||
if (s_bDragClosed)
|
if (s_bDragClosed)
|
||||||
@@ -854,21 +852,29 @@ HRESULT STDMETHODCALLTYPE CMenuContainer::Drop( IDataObject *pDataObj, DWORD grf
|
|||||||
CComQIPtr<IDataObjectAsyncCapability> pAsync=pDataObj;
|
CComQIPtr<IDataObjectAsyncCapability> pAsync=pDataObj;
|
||||||
if (pAsync)
|
if (pAsync)
|
||||||
pAsync->SetAsyncMode(FALSE);
|
pAsync->SetAsyncMode(FALSE);
|
||||||
for (std::vector<CMenuContainer*>::iterator it=s_Menus.begin();it!=s_Menus.end();++it)
|
for (auto& it : s_Menus)
|
||||||
if (!(*it)->m_bDestroyed)
|
{
|
||||||
(*it)->EnableWindow(FALSE); // disable all menus
|
if (!it->m_bDestroyed)
|
||||||
|
{
|
||||||
|
it->EnableWindow(FALSE); // disable all menus
|
||||||
|
it->SetWindowPos(HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
bool bAllPrograms=s_bAllPrograms;
|
bool bAllPrograms=s_bAllPrograms;
|
||||||
if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,FALSE);
|
if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,FALSE);
|
||||||
bool bOld=s_bPreventClosing;
|
bool bOld=s_bPreventClosing;
|
||||||
s_bPreventClosing=true;
|
s_bPreventClosing=true;
|
||||||
AddRef();
|
AddRef();
|
||||||
pTarget->Drop(pDataObj,grfKeyState,pt,pdwEffect);
|
pTarget->Drop(pDataObj,grfKeyState,pt,pdwEffect);
|
||||||
if (!bOld)
|
|
||||||
HideTemp(false);
|
|
||||||
s_bPreventClosing=bOld;
|
s_bPreventClosing=bOld;
|
||||||
for (std::vector<CMenuContainer*>::iterator it=s_Menus.begin();it!=s_Menus.end();++it)
|
for (auto& it : s_Menus)
|
||||||
if (!(*it)->m_bDestroyed)
|
{
|
||||||
(*it)->EnableWindow(TRUE); // enable all menus
|
if (!it->m_bDestroyed)
|
||||||
|
{
|
||||||
|
it->EnableWindow(TRUE); // enable all menus
|
||||||
|
it->SetWindowPos(HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,TRUE);
|
if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -15,9 +15,7 @@ public:
|
|||||||
m_RefCount=0;
|
m_RefCount=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
~CDropTargetProxy( void )
|
~CDropTargetProxy( void ) = default;
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Reset( void )
|
void Reset( void )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ GUID IID_IApplicationResolver8={0xde25675a,0x72de,0x44b4,{0x93,0x73,0x05,0x17,0x
|
|||||||
|
|
||||||
interface IResourceContext;
|
interface IResourceContext;
|
||||||
|
|
||||||
const GUID IID_IResourceMap={0x6e21e72b, 0xb9b0, 0x42ae, {0xa6, 0x86, 0x98, 0x3c, 0xf7, 0x84, 0xed, 0xcd}};
|
MIDL_INTERFACE("6e21e72b-b9b0-42ae-a686-983cf784edcd")
|
||||||
interface IResourceMap : public IUnknown
|
IResourceMap : public IUnknown
|
||||||
{
|
{
|
||||||
virtual HRESULT STDMETHODCALLTYPE GetUri(const wchar_t **pUri ) = 0;
|
virtual HRESULT STDMETHODCALLTYPE GetUri(const wchar_t **pUri ) = 0;
|
||||||
virtual HRESULT STDMETHODCALLTYPE GetSubtree(const wchar_t *propName, IResourceMap **pSubTree ) = 0;
|
virtual HRESULT STDMETHODCALLTYPE GetSubtree(const wchar_t *propName, IResourceMap **pSubTree ) = 0;
|
||||||
@@ -76,8 +76,8 @@ enum RESOURCE_SCALE
|
|||||||
RES_SCALE_80 =3,
|
RES_SCALE_80 =3,
|
||||||
};
|
};
|
||||||
|
|
||||||
const GUID IID_ResourceContext={0xe3c22b30, 0x8502, 0x4b2f, {0x91, 0x33, 0x55, 0x96, 0x74, 0x58, 0x7e, 0x51}};
|
MIDL_INTERFACE("e3c22b30-8502-4b2f-9133-559674587e51")
|
||||||
interface IResourceContext : public IUnknown
|
IResourceContext : public IUnknown
|
||||||
{
|
{
|
||||||
virtual HRESULT STDMETHODCALLTYPE GetLanguage( void ) = 0;
|
virtual HRESULT STDMETHODCALLTYPE GetLanguage( void ) = 0;
|
||||||
virtual HRESULT STDMETHODCALLTYPE GetHomeRegion( wchar_t *pRegion ) = 0;
|
virtual HRESULT STDMETHODCALLTYPE GetHomeRegion( wchar_t *pRegion ) = 0;
|
||||||
@@ -142,10 +142,11 @@ static bool DetectGrayscaleImage( const unsigned int *bits, int stride, int widt
|
|||||||
for (int x=0;x<width;x++)
|
for (int x=0;x<width;x++)
|
||||||
{
|
{
|
||||||
unsigned int pixel=bits[x];
|
unsigned int pixel=bits[x];
|
||||||
|
int a=(pixel>>24)&255;
|
||||||
int r=(pixel>>16)&255;
|
int r=(pixel>>16)&255;
|
||||||
int g=(pixel>>8)&255;
|
int g=(pixel>>8)&255;
|
||||||
int b=(pixel)&255;
|
int b=(pixel)&255;
|
||||||
if (abs(r-g)>2 || abs(r-b)>2 || abs(g-b)>2)
|
if (abs(a-r)>2 || abs(r-g)>2 || abs(r-b)>2 || abs(g-b)>2)
|
||||||
return false; // found colored pixel
|
return false; // found colored pixel
|
||||||
if (!(pixel&0xFF000000))
|
if (!(pixel&0xFF000000))
|
||||||
transparent++;
|
transparent++;
|
||||||
@@ -175,6 +176,27 @@ static void CreateMonochromeImage( unsigned int *bits, int stride, int width, in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HBITMAP ColorizeMonochromeImage(HBITMAP bitmap, DWORD color)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
BITMAP info{};
|
||||||
|
GetObject(bitmap, sizeof(info), &info);
|
||||||
|
if (!DetectGrayscaleImage((const unsigned int*)info.bmBits, info.bmWidth, info.bmWidth, info.bmHeight))
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
HBITMAP bmp = (HBITMAP)CopyImage(bitmap, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
|
||||||
|
if (bmp)
|
||||||
|
{
|
||||||
|
BITMAP info{};
|
||||||
|
GetObject(bmp, sizeof(info), &info);
|
||||||
|
|
||||||
|
CreateMonochromeImage((unsigned int*)info.bmBits, info.bmWidth, info.bmWidth, info.bmHeight, color);
|
||||||
|
}
|
||||||
|
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
|
||||||
static HBITMAP BitmapFromMetroIcon( HICON hIcon, int bitmapSize, int iconSize, DWORD metroColor, bool bDestroyIcon=true )
|
static HBITMAP BitmapFromMetroIcon( HICON hIcon, int bitmapSize, int iconSize, DWORD metroColor, bool bDestroyIcon=true )
|
||||||
{
|
{
|
||||||
ICONINFO info;
|
ICONINFO info;
|
||||||
@@ -258,7 +280,6 @@ static HBITMAP BitmapFromMetroBitmap( HBITMAP hBitmap, int bitmapSize, DWORD met
|
|||||||
HGDIOBJ bmp0=SelectObject(hdc,bmp);
|
HGDIOBJ bmp0=SelectObject(hdc,bmp);
|
||||||
HGDIOBJ bmp02=SelectObject(hsrc,hBitmap);
|
HGDIOBJ bmp02=SelectObject(hsrc,hBitmap);
|
||||||
int offset=(bitmapSize-info.bmWidth)/2;
|
int offset=(bitmapSize-info.bmWidth)/2;
|
||||||
bool bInvert=g_bInvertMetroIcons;
|
|
||||||
if (g_bInvertMetroIcons && bGrayscale)
|
if (g_bInvertMetroIcons && bGrayscale)
|
||||||
{
|
{
|
||||||
FillRect(hdc,&rc,(HBRUSH)GetStockObject(BLACK_BRUSH));
|
FillRect(hdc,&rc,(HBRUSH)GetStockObject(BLACK_BRUSH));
|
||||||
@@ -299,10 +320,9 @@ static HBITMAP BitmapFromMetroBitmap( HBITMAP hBitmap, int bitmapSize, DWORD met
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
static HBITMAP LoadMetroBitmap0( const wchar_t *path, int bitmapSize, DWORD metroColor )
|
static HBITMAP LoadMetroBitmap0(const wchar_t *path, int bitmapSize, DWORD metroColor = 0xFFFFFFFF)
|
||||||
{
|
{
|
||||||
int iconSize=g_bInvertMetroIcons?bitmapSize:(bitmapSize-2);
|
SIZE size={-bitmapSize,bitmapSize};
|
||||||
SIZE size={-iconSize,iconSize};
|
|
||||||
HBITMAP hBitmap=LoadImageFile(path,&size,true,true,NULL);
|
HBITMAP hBitmap=LoadImageFile(path,&size,true,true,NULL);
|
||||||
if (hBitmap)
|
if (hBitmap)
|
||||||
{
|
{
|
||||||
@@ -438,17 +458,9 @@ static HBITMAP LoadMetroBitmap2( const wchar_t *location, int bitmapSize, DWORD
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (iconSize)
|
if (iconSize)
|
||||||
{
|
|
||||||
if (g_bInvertMetroIcons)
|
|
||||||
{
|
{
|
||||||
if (iconSize>bitmapSize)
|
if (iconSize>bitmapSize)
|
||||||
iconSize=bitmapSize;
|
iconSize=bitmapSize;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (iconSize>bitmapSize-2)
|
|
||||||
iconSize=bitmapSize-2;
|
|
||||||
}
|
|
||||||
SIZE size={iconSize,iconSize};
|
SIZE size={iconSize,iconSize};
|
||||||
HBITMAP hBitmap=LoadImageFile(path,&size,true,true,NULL);
|
HBITMAP hBitmap=LoadImageFile(path,&size,true,true,NULL);
|
||||||
if (hBitmap)
|
if (hBitmap)
|
||||||
@@ -577,7 +589,7 @@ void CItemManager::Init( void )
|
|||||||
|
|
||||||
m_RootGames=L"::{ED228FDF-9EA8-4870-83B1-96B02CFE0D52}\\";
|
m_RootGames=L"::{ED228FDF-9EA8-4870-83B1-96B02CFE0D52}\\";
|
||||||
wchar_t text[_MAX_PATH];
|
wchar_t text[_MAX_PATH];
|
||||||
Strcpy(text,_countof(text),START_MENU_PINNED_ROOT L"\\");
|
Sprintf(text,_countof(text),L"%s\\",GetSettingString(L"PinnedItemsPath"));
|
||||||
DoEnvironmentSubst(text,_countof(text));
|
DoEnvironmentSubst(text,_countof(text));
|
||||||
m_RootStartMenu3=text;
|
m_RootStartMenu3=text;
|
||||||
StringUpper(m_RootStartMenu3);
|
StringUpper(m_RootStartMenu3);
|
||||||
@@ -597,7 +609,7 @@ void CItemManager::Init( void )
|
|||||||
{
|
{
|
||||||
int width, height;
|
int width, height;
|
||||||
pList->GetIconSize(&width,&height);
|
pList->GetIconSize(&width,&height);
|
||||||
m_ListSizes.push_back(std::pair<int,int>(width,i));
|
m_ListSizes.emplace_back(width,i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::sort(m_ListSizes.begin(),m_ListSizes.end());
|
std::sort(m_ListSizes.begin(),m_ListSizes.end());
|
||||||
@@ -605,7 +617,7 @@ void CItemManager::Init( void )
|
|||||||
CreateDefaultIcons();
|
CreateDefaultIcons();
|
||||||
LoadCacheFile();
|
LoadCacheFile();
|
||||||
|
|
||||||
ItemInfo &item=m_ItemInfos.insert(std::pair<unsigned int,ItemInfo>(0,ItemInfo()))->second;
|
ItemInfo &item=m_ItemInfos.emplace(0,ItemInfo())->second;
|
||||||
item.bIconOnly=true;
|
item.bIconOnly=true;
|
||||||
item.smallIcon=m_DefaultSmallIcon;
|
item.smallIcon=m_DefaultSmallIcon;
|
||||||
item.largeIcon=m_DefaultLargeIcon;
|
item.largeIcon=m_DefaultLargeIcon;
|
||||||
@@ -692,21 +704,21 @@ void CItemManager::CreateDefaultIcons( void )
|
|||||||
icon.bitmap=BitmapFromIcon(LoadShellIcon(index,SMALL_ICON_SIZE),SMALL_ICON_SIZE);
|
icon.bitmap=BitmapFromIcon(LoadShellIcon(index,SMALL_ICON_SIZE),SMALL_ICON_SIZE);
|
||||||
else
|
else
|
||||||
icon.bitmap=NULL;
|
icon.bitmap=NULL;
|
||||||
m_DefaultSmallIcon=&m_IconInfos.insert(std::pair<unsigned int,IconInfo>(0,icon))->second;
|
m_DefaultSmallIcon=&m_IconInfos.emplace(0,icon)->second;
|
||||||
|
|
||||||
icon.sizeType=ICON_SIZE_TYPE_LARGE;
|
icon.sizeType=ICON_SIZE_TYPE_LARGE;
|
||||||
if (index>=0)
|
if (index>=0)
|
||||||
icon.bitmap=BitmapFromIcon(LoadShellIcon(index,LARGE_ICON_SIZE),LARGE_ICON_SIZE);
|
icon.bitmap=BitmapFromIcon(LoadShellIcon(index,LARGE_ICON_SIZE),LARGE_ICON_SIZE);
|
||||||
else
|
else
|
||||||
icon.bitmap=NULL;
|
icon.bitmap=NULL;
|
||||||
m_DefaultLargeIcon=&m_IconInfos.insert(std::pair<unsigned int,IconInfo>(0,icon))->second;
|
m_DefaultLargeIcon=&m_IconInfos.emplace(0,icon)->second;
|
||||||
|
|
||||||
icon.sizeType=ICON_SIZE_TYPE_EXTRA_LARGE;
|
icon.sizeType=ICON_SIZE_TYPE_EXTRA_LARGE;
|
||||||
if (index>=0)
|
if (index>=0)
|
||||||
icon.bitmap=BitmapFromIcon(LoadShellIcon(index,EXTRA_LARGE_ICON_SIZE),EXTRA_LARGE_ICON_SIZE);
|
icon.bitmap=BitmapFromIcon(LoadShellIcon(index,EXTRA_LARGE_ICON_SIZE),EXTRA_LARGE_ICON_SIZE);
|
||||||
else
|
else
|
||||||
icon.bitmap=NULL;
|
icon.bitmap=NULL;
|
||||||
m_DefaultExtraLargeIcon=&m_IconInfos.insert(std::pair<unsigned int,IconInfo>(0,icon))->second;
|
m_DefaultExtraLargeIcon=&m_IconInfos.emplace(0,icon)->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
CItemManager::LoadIconData &CItemManager::GetLoadIconData( void )
|
CItemManager::LoadIconData &CItemManager::GetLoadIconData( void )
|
||||||
@@ -884,7 +896,7 @@ const CItemManager::ItemInfo *CItemManager::GetItemInfo( IShellItem *pItem, PIDL
|
|||||||
}
|
}
|
||||||
if (!pInfo)
|
if (!pInfo)
|
||||||
{
|
{
|
||||||
pInfo=&m_ItemInfos.insert(std::pair<unsigned int,ItemInfo>(hash,ItemInfo()))->second;
|
pInfo=&m_ItemInfos.emplace(hash,ItemInfo())->second;
|
||||||
pInfo->pidl.Clone(pidl);
|
pInfo->pidl.Clone(pidl);
|
||||||
pInfo->path=path;
|
pInfo->path=path;
|
||||||
pInfo->PATH=PATH;
|
pInfo->PATH=PATH;
|
||||||
@@ -966,7 +978,7 @@ const CItemManager::ItemInfo *CItemManager::GetItemInfo( CString path, int refre
|
|||||||
}
|
}
|
||||||
if (!pInfo)
|
if (!pInfo)
|
||||||
{
|
{
|
||||||
pInfo=&m_ItemInfos.insert(std::pair<unsigned int,ItemInfo>(hash,ItemInfo()))->second;
|
pInfo=&m_ItemInfos.emplace(hash,ItemInfo())->second;
|
||||||
if (!PATH.IsEmpty())
|
if (!PATH.IsEmpty())
|
||||||
MenuParseDisplayName(path,&pInfo->pidl,NULL,NULL);
|
MenuParseDisplayName(path,&pInfo->pidl,NULL,NULL);
|
||||||
if (pInfo->pidl)
|
if (pInfo->pidl)
|
||||||
@@ -1064,7 +1076,7 @@ const CItemManager::ItemInfo *CItemManager::GetCustomIcon( const wchar_t *locati
|
|||||||
}
|
}
|
||||||
if (!pInfo)
|
if (!pInfo)
|
||||||
{
|
{
|
||||||
pInfo=&m_ItemInfos.insert(std::pair<unsigned int,ItemInfo>(hash,ItemInfo()))->second;
|
pInfo=&m_ItemInfos.emplace(hash,ItemInfo())->second;
|
||||||
pInfo->bIconOnly=true;
|
pInfo->bIconOnly=true;
|
||||||
pInfo->bTemp=bTemp;
|
pInfo->bTemp=bTemp;
|
||||||
pInfo->iconPath=location;
|
pInfo->iconPath=location;
|
||||||
@@ -1113,6 +1125,49 @@ const CItemManager::ItemInfo *CItemManager::GetCustomIcon( const wchar_t *path,
|
|||||||
return GetCustomIcon(text,index,iconSizeType,false);
|
return GetCustomIcon(text,index,iconSizeType,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const CItemManager::ItemInfo* CItemManager::GetLinkIcon(IShellLink* link, TIconSizeType iconSizeType)
|
||||||
|
{
|
||||||
|
wchar_t location[_MAX_PATH];
|
||||||
|
int index;
|
||||||
|
|
||||||
|
if (link->GetIconLocation(location, _countof(location), &index) == S_OK && location[0])
|
||||||
|
return GetCustomIcon(location, index, iconSizeType, (index == 0)); // assuming that if index!=0 the icon comes from a permanent location like a dll or exe
|
||||||
|
|
||||||
|
CComQIPtr<IPropertyStore> store(link);
|
||||||
|
if (store)
|
||||||
|
{
|
||||||
|
// Name: System.AppUserModel.DestListLogoUri -- PKEY_AppUserModel_DestListLogoUri
|
||||||
|
// Type: String -- VT_LPWSTR
|
||||||
|
// FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 29
|
||||||
|
static const PROPERTYKEY PKEY_AppUserModel_DestListLogoUri = { {0x9F4C2855, 0x9F79, 0x4B39, {0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3}}, 29 };
|
||||||
|
|
||||||
|
auto logoUri = GetPropertyStoreString(store, PKEY_AppUserModel_DestListLogoUri);
|
||||||
|
if (!logoUri.IsEmpty())
|
||||||
|
{
|
||||||
|
auto appId = GetPropertyStoreString(store, PKEY_AppUserModel_ID);
|
||||||
|
if (!appId.IsEmpty())
|
||||||
|
{
|
||||||
|
CComPtr<IResourceManager> resManager;
|
||||||
|
if (SUCCEEDED(resManager.CoCreateInstance(CLSID_ResourceManager)))
|
||||||
|
{
|
||||||
|
if (SUCCEEDED(resManager->InitializeForPackage(GetPackageFullName(appId))))
|
||||||
|
{
|
||||||
|
CComPtr<IResourceMap> resMap;
|
||||||
|
if (SUCCEEDED(resManager->GetMainResourceMap(IID_PPV_ARGS(&resMap))))
|
||||||
|
{
|
||||||
|
CComString location;
|
||||||
|
if (SUCCEEDED(resMap->GetFilePath(logoUri, &location)))
|
||||||
|
return GetCustomIcon(location, -65536, iconSizeType, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
const CItemManager::ItemInfo *CItemManager::GetMetroAppInfo10( const wchar_t *appid )
|
const CItemManager::ItemInfo *CItemManager::GetMetroAppInfo10( const wchar_t *appid )
|
||||||
{
|
{
|
||||||
wchar_t APPID[256];
|
wchar_t APPID[256];
|
||||||
@@ -1823,7 +1878,11 @@ void CItemManager::RefreshItemInfo( ItemInfo *pInfo, int refreshFlags, IShellIte
|
|||||||
{
|
{
|
||||||
newInfo.bLink=true;
|
newInfo.bLink=true;
|
||||||
pStore=pLink;
|
pStore=pLink;
|
||||||
|
#ifdef _DEBUG
|
||||||
|
LOG_MENU(LOG_OPEN, L"Link: %s", newInfo.path);
|
||||||
|
LOG_MENU(LOG_OPEN, L"Link property store:");
|
||||||
|
LogPropertyStore(LOG_OPEN, pStore);
|
||||||
|
#endif
|
||||||
if (SUCCEEDED(pLink->GetIDList(&newInfo.targetPidl)))
|
if (SUCCEEDED(pLink->GetIDList(&newInfo.targetPidl)))
|
||||||
{
|
{
|
||||||
wchar_t path[_MAX_PATH];
|
wchar_t path[_MAX_PATH];
|
||||||
@@ -1832,6 +1891,28 @@ void CItemManager::RefreshItemInfo( ItemInfo *pInfo, int refreshFlags, IShellIte
|
|||||||
CharUpper(path);
|
CharUpper(path);
|
||||||
newInfo.targetPATH=path;
|
newInfo.targetPATH=path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CComPtr<IShellItem> target;
|
||||||
|
if (SUCCEEDED(SHCreateItemFromIDList(newInfo.targetPidl, IID_PPV_ARGS(&target))))
|
||||||
|
{
|
||||||
|
CComPtr<IPropertyStore> store;
|
||||||
|
if (SUCCEEDED(target->BindToHandler(nullptr, BHID_PropertyStore, IID_PPV_ARGS(&store))))
|
||||||
|
{
|
||||||
|
#ifdef _DEBUG
|
||||||
|
LOG_MENU(LOG_OPEN, L"Target property store:");
|
||||||
|
LogPropertyStore(LOG_OPEN, store);
|
||||||
|
#endif
|
||||||
|
PROPVARIANT val;
|
||||||
|
PropVariantInit(&val);
|
||||||
|
if (SUCCEEDED(store->GetValue(PKEY_MetroAppLauncher, &val)) && (val.vt == VT_I4 || val.vt == VT_UI4) && val.intVal)
|
||||||
|
{
|
||||||
|
newInfo.bLink = false;
|
||||||
|
pItem = std::move(target);
|
||||||
|
pStore = store;
|
||||||
|
}
|
||||||
|
PropVariantClear(&val);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1923,7 +2004,6 @@ void CItemManager::RefreshItemInfo( ItemInfo *pInfo, int refreshFlags, IShellIte
|
|||||||
{
|
{
|
||||||
newInfo.targetPidl.Clear();
|
newInfo.targetPidl.Clear();
|
||||||
newInfo.targetPATH.Empty();
|
newInfo.targetPATH.Empty();
|
||||||
newInfo.metroName.Empty();
|
|
||||||
newInfo.iconPath.Empty();
|
newInfo.iconPath.Empty();
|
||||||
newInfo.bNoPin=newInfo.bNoNew=false;
|
newInfo.bNoPin=newInfo.bNoNew=false;
|
||||||
if (!newInfo.bMetroApp)
|
if (!newInfo.bMetroApp)
|
||||||
@@ -2296,12 +2376,6 @@ void CItemManager::LoadShellIcon( IShellItem *pItem, int refreshFlags, const Ico
|
|||||||
int smallIconSize=SMALL_ICON_SIZE;
|
int smallIconSize=SMALL_ICON_SIZE;
|
||||||
int largeIconSize=LARGE_ICON_SIZE;
|
int largeIconSize=LARGE_ICON_SIZE;
|
||||||
int extraLargeIconSize=EXTRA_LARGE_ICON_SIZE;
|
int extraLargeIconSize=EXTRA_LARGE_ICON_SIZE;
|
||||||
if (pMetroColor)
|
|
||||||
{
|
|
||||||
smallIconSize-=2;
|
|
||||||
largeIconSize-=2;
|
|
||||||
extraLargeIconSize-=2;
|
|
||||||
}
|
|
||||||
HICON hSmallIcon=NULL, hLargeIcon=NULL, hExtraLargeIcon=NULL;
|
HICON hSmallIcon=NULL, hLargeIcon=NULL, hExtraLargeIcon=NULL;
|
||||||
if (bNotFileName)
|
if (bNotFileName)
|
||||||
{
|
{
|
||||||
@@ -2414,14 +2488,13 @@ void CItemManager::LoadMetroIcon( IShellItem *pItem, int &refreshFlags, const Ic
|
|||||||
if (FAILED(pResManager->InitializeForPackage(packageName)))
|
if (FAILED(pResManager->InitializeForPackage(packageName)))
|
||||||
return;
|
return;
|
||||||
CComPtr<IResourceMap> pResMap;
|
CComPtr<IResourceMap> pResMap;
|
||||||
if (FAILED(pResManager->GetMainResourceMap(IID_IResourceMap,(void**)&pResMap)))
|
if (FAILED(pResManager->GetMainResourceMap(IID_PPV_ARGS(&pResMap))))
|
||||||
return;
|
return;
|
||||||
CComPtr<IResourceContext> pResContext;
|
CComPtr<IResourceContext> pResContext;
|
||||||
if (FAILED(pResManager->GetDefaultContext(IID_ResourceContext,(void**)&pResContext)))
|
if (FAILED(pResManager->GetDefaultContext(IID_PPV_ARGS(&pResContext))))
|
||||||
return;
|
return;
|
||||||
int iconFlags=0;
|
int iconFlags=0;
|
||||||
int delta=g_bInvertMetroIcons?0:2;
|
if ((refreshFlags&INFO_SMALL_ICON) && SetResContextTargetSize(pResContext,SMALL_ICON_SIZE))
|
||||||
if ((refreshFlags&INFO_SMALL_ICON) && SetResContextTargetSize(pResContext,SMALL_ICON_SIZE-delta))
|
|
||||||
{
|
{
|
||||||
CComString pLocation;
|
CComString pLocation;
|
||||||
if (SUCCEEDED(pResMap->GetFilePath(iconName,&pLocation)))
|
if (SUCCEEDED(pResMap->GetFilePath(iconName,&pLocation)))
|
||||||
@@ -2431,7 +2504,7 @@ void CItemManager::LoadMetroIcon( IShellItem *pItem, int &refreshFlags, const Ic
|
|||||||
StoreInCache(hash,L"",hSmallBitmap,NULL,NULL,INFO_SMALL_ICON,smallIcon,largeIcon,extraLargeIcon,false,true);
|
StoreInCache(hash,L"",hSmallBitmap,NULL,NULL,INFO_SMALL_ICON,smallIcon,largeIcon,extraLargeIcon,false,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((refreshFlags&INFO_LARGE_ICON) && SetResContextTargetSize(pResContext,LARGE_ICON_SIZE-delta))
|
if ((refreshFlags&INFO_LARGE_ICON) && SetResContextTargetSize(pResContext,LARGE_ICON_SIZE))
|
||||||
{
|
{
|
||||||
CComString pLocation;
|
CComString pLocation;
|
||||||
if (SUCCEEDED(pResMap->GetFilePath(iconName,&pLocation)))
|
if (SUCCEEDED(pResMap->GetFilePath(iconName,&pLocation)))
|
||||||
@@ -2441,7 +2514,7 @@ void CItemManager::LoadMetroIcon( IShellItem *pItem, int &refreshFlags, const Ic
|
|||||||
StoreInCache(hash,L"",NULL,hLargeBitmap,NULL,INFO_LARGE_ICON,smallIcon,largeIcon,extraLargeIcon,false,true);
|
StoreInCache(hash,L"",NULL,hLargeBitmap,NULL,INFO_LARGE_ICON,smallIcon,largeIcon,extraLargeIcon,false,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((refreshFlags&INFO_SMALL_ICON) && SetResContextTargetSize(pResContext,EXTRA_LARGE_ICON_SIZE-delta))
|
if ((refreshFlags&INFO_EXTRA_LARGE_ICON) && SetResContextTargetSize(pResContext,EXTRA_LARGE_ICON_SIZE))
|
||||||
{
|
{
|
||||||
CComString pLocation;
|
CComString pLocation;
|
||||||
if (SUCCEEDED(pResMap->GetFilePath(iconName,&pLocation)))
|
if (SUCCEEDED(pResMap->GetFilePath(iconName,&pLocation)))
|
||||||
@@ -2524,7 +2597,7 @@ void CItemManager::StoreInCache( unsigned int hash, const wchar_t *path, HBITMAP
|
|||||||
|
|
||||||
if ((refreshFlags&INFO_SMALL_ICON) && hSmallBitmap)
|
if ((refreshFlags&INFO_SMALL_ICON) && hSmallBitmap)
|
||||||
{
|
{
|
||||||
IconInfo *pInfo=&m_IconInfos.insert(std::pair<unsigned int,IconInfo>(hash,IconInfo()))->second;
|
IconInfo *pInfo=&m_IconInfos.emplace(hash,IconInfo())->second;
|
||||||
pInfo->sizeType=ICON_SIZE_TYPE_SMALL;
|
pInfo->sizeType=ICON_SIZE_TYPE_SMALL;
|
||||||
pInfo->bTemp=bTemp;
|
pInfo->bTemp=bTemp;
|
||||||
pInfo->bMetro=bMetro;
|
pInfo->bMetro=bMetro;
|
||||||
@@ -2534,7 +2607,7 @@ void CItemManager::StoreInCache( unsigned int hash, const wchar_t *path, HBITMAP
|
|||||||
}
|
}
|
||||||
if ((refreshFlags&INFO_LARGE_ICON) && hLargeBitmap)
|
if ((refreshFlags&INFO_LARGE_ICON) && hLargeBitmap)
|
||||||
{
|
{
|
||||||
IconInfo *pInfo=&m_IconInfos.insert(std::pair<unsigned int,IconInfo>(hash,IconInfo()))->second;
|
IconInfo *pInfo=&m_IconInfos.emplace(hash,IconInfo())->second;
|
||||||
pInfo->sizeType=ICON_SIZE_TYPE_LARGE;
|
pInfo->sizeType=ICON_SIZE_TYPE_LARGE;
|
||||||
pInfo->bTemp=bTemp;
|
pInfo->bTemp=bTemp;
|
||||||
pInfo->bMetro=bMetro;
|
pInfo->bMetro=bMetro;
|
||||||
@@ -2544,7 +2617,7 @@ void CItemManager::StoreInCache( unsigned int hash, const wchar_t *path, HBITMAP
|
|||||||
}
|
}
|
||||||
if ((refreshFlags&INFO_EXTRA_LARGE_ICON) && hExtraLargeBitmap)
|
if ((refreshFlags&INFO_EXTRA_LARGE_ICON) && hExtraLargeBitmap)
|
||||||
{
|
{
|
||||||
IconInfo *pInfo=&m_IconInfos.insert(std::pair<unsigned int,IconInfo>(hash,IconInfo()))->second;
|
IconInfo *pInfo=&m_IconInfos.emplace(hash,IconInfo())->second;
|
||||||
pInfo->sizeType=ICON_SIZE_TYPE_EXTRA_LARGE;
|
pInfo->sizeType=ICON_SIZE_TYPE_EXTRA_LARGE;
|
||||||
pInfo->bTemp=bTemp;
|
pInfo->bTemp=bTemp;
|
||||||
pInfo->bMetro=bMetro;
|
pInfo->bMetro=bMetro;
|
||||||
@@ -2586,49 +2659,45 @@ void CItemManager::IconInfo::SetPath( const wchar_t *path )
|
|||||||
timestamp.dwHighDateTime=timestamp.dwLowDateTime=0;
|
timestamp.dwHighDateTime=timestamp.dwLowDateTime=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CItemManager::LoadCustomIcon( const wchar_t *iconPath, int iconIndex, int refreshFlags, const IconInfo *&smallIcon, const IconInfo *&largeIcon, const IconInfo *&extraLargeIcon, bool bTemp )
|
void CItemManager::LoadCustomIcon(const wchar_t *iconPath, int iconIndex, int refreshFlags, const IconInfo *&smallIcon, const IconInfo *&largeIcon, const IconInfo *&extraLargeIcon, bool bTemp)
|
||||||
{
|
{
|
||||||
unsigned int hash=CalcFNVHash(iconPath,CalcFNVHash(&iconIndex,4));
|
unsigned int hash = CalcFNVHash(iconPath, CalcFNVHash(&iconIndex, 4));
|
||||||
|
|
||||||
FindInCache(hash,refreshFlags,smallIcon,largeIcon,extraLargeIcon);
|
FindInCache(hash, refreshFlags, smallIcon, largeIcon, extraLargeIcon);
|
||||||
if (!refreshFlags) return;
|
if (!refreshFlags)
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto ExtractIconAsBitmap = [&](int iconSize) -> HBITMAP {
|
||||||
|
|
||||||
|
if (iconIndex == -65536)
|
||||||
|
return LoadMetroBitmap0(iconPath, iconSize);
|
||||||
|
|
||||||
|
HICON hIcon;
|
||||||
|
|
||||||
|
if (!*iconPath)
|
||||||
|
hIcon = (HICON)LoadImage(g_Instance, MAKEINTRESOURCE(-iconIndex), IMAGE_ICON, iconSize, iconSize, LR_DEFAULTCOLOR);
|
||||||
|
else
|
||||||
|
hIcon = ShExtractIcon(iconPath, iconIndex == -1 ? 0 : iconIndex, iconSize);
|
||||||
|
|
||||||
|
if (hIcon)
|
||||||
|
return BitmapFromIcon(hIcon, iconSize);
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
// extract icon
|
// extract icon
|
||||||
HBITMAP hSmallBitmap=NULL, hLargeBitmap=NULL, hExtraLargeBitmap=NULL;
|
HBITMAP hSmallBitmap = nullptr, hLargeBitmap = nullptr, hExtraLargeBitmap = nullptr;
|
||||||
if (refreshFlags&INFO_SMALL_ICON)
|
|
||||||
{
|
|
||||||
HICON hIcon;
|
|
||||||
if (!*iconPath)
|
|
||||||
hIcon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(-iconIndex),IMAGE_ICON,SMALL_ICON_SIZE,SMALL_ICON_SIZE,LR_DEFAULTCOLOR);
|
|
||||||
else
|
|
||||||
hIcon=ShExtractIcon(iconPath,iconIndex==-1?0:iconIndex,SMALL_ICON_SIZE);
|
|
||||||
if (hIcon)
|
|
||||||
hSmallBitmap=BitmapFromIcon(hIcon,SMALL_ICON_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (refreshFlags&INFO_LARGE_ICON)
|
if (refreshFlags & INFO_SMALL_ICON)
|
||||||
{
|
hSmallBitmap = ExtractIconAsBitmap(SMALL_ICON_SIZE);
|
||||||
HICON hIcon;
|
|
||||||
if (!*iconPath)
|
|
||||||
hIcon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(-iconIndex),IMAGE_ICON,LARGE_ICON_SIZE,LARGE_ICON_SIZE,LR_DEFAULTCOLOR);
|
|
||||||
else
|
|
||||||
hIcon=ShExtractIcon(iconPath,iconIndex==-1?0:iconIndex,LARGE_ICON_SIZE);
|
|
||||||
if (hIcon)
|
|
||||||
hLargeBitmap=BitmapFromIcon(hIcon,LARGE_ICON_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (refreshFlags&INFO_EXTRA_LARGE_ICON)
|
if (refreshFlags & INFO_LARGE_ICON)
|
||||||
{
|
hLargeBitmap = ExtractIconAsBitmap(LARGE_ICON_SIZE);
|
||||||
HICON hIcon;
|
|
||||||
if (!*iconPath)
|
|
||||||
hIcon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(-iconIndex),IMAGE_ICON,EXTRA_LARGE_ICON_SIZE,EXTRA_LARGE_ICON_SIZE,LR_DEFAULTCOLOR);
|
|
||||||
else
|
|
||||||
hIcon=ShExtractIcon(iconPath,iconIndex==-1?0:iconIndex,EXTRA_LARGE_ICON_SIZE);
|
|
||||||
if (hIcon)
|
|
||||||
hExtraLargeBitmap=BitmapFromIcon(hIcon,EXTRA_LARGE_ICON_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
StoreInCache(hash,bTemp?NULL:iconPath,hSmallBitmap,hLargeBitmap,hExtraLargeBitmap,refreshFlags,smallIcon,largeIcon,extraLargeIcon,bTemp,false);
|
if (refreshFlags & INFO_EXTRA_LARGE_ICON)
|
||||||
|
hExtraLargeBitmap = ExtractIconAsBitmap(EXTRA_LARGE_ICON_SIZE);
|
||||||
|
|
||||||
|
StoreInCache(hash, bTemp ? nullptr : iconPath, hSmallBitmap, hLargeBitmap, hExtraLargeBitmap, refreshFlags, smallIcon, largeIcon, extraLargeIcon, bTemp, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recursive function to preload the items for a folder
|
// Recursive function to preload the items for a folder
|
||||||
@@ -2798,7 +2867,8 @@ void CItemManager::PreloadItemsThread( void )
|
|||||||
else if (g_CacheFolders[i].folder==FOLDERID_ClassicPinned)
|
else if (g_CacheFolders[i].folder==FOLDERID_ClassicPinned)
|
||||||
{
|
{
|
||||||
if (GetSettingInt(L"PinnedPrograms")!=PINNED_PROGRAMS_PINNED) continue;
|
if (GetSettingInt(L"PinnedPrograms")!=PINNED_PROGRAMS_PINNED) continue;
|
||||||
wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT;
|
wchar_t path[_MAX_PATH];
|
||||||
|
Strcpy(path,_countof(path),GetSettingString(L"PinnedItemsPath"));
|
||||||
DoEnvironmentSubst(path,_countof(path));
|
DoEnvironmentSubst(path,_countof(path));
|
||||||
if (FAILED(SHParseDisplayName(path,NULL,&pidl,0,NULL)) || !pidl) continue;
|
if (FAILED(SHParseDisplayName(path,NULL,&pidl,0,NULL)) || !pidl) continue;
|
||||||
if (FAILED(SHCreateItemFromIDList(pidl,IID_IShellItem,(void**)&pFolder)) || !pFolder) continue;
|
if (FAILED(SHCreateItemFromIDList(pidl,IID_IShellItem,(void**)&pFolder)) || !pFolder) continue;
|
||||||
@@ -3204,7 +3274,7 @@ void CItemManager::LoadCacheFile( void )
|
|||||||
bError=true;
|
bError=true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
remapIcons.push_back(&m_IconInfos.insert(std::pair<unsigned int,IconInfo>(data.key,info))->second);
|
remapIcons.push_back(&m_IconInfos.emplace(data.key,info)->second);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -3235,7 +3305,7 @@ void CItemManager::LoadCacheFile( void )
|
|||||||
bError=true;
|
bError=true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ItemInfo &info=m_ItemInfos.insert(std::pair<unsigned int,ItemInfo>(data.key,ItemInfo()))->second;
|
ItemInfo &info=m_ItemInfos.emplace(data.key,ItemInfo())->second;
|
||||||
|
|
||||||
info.writestamp=data.writestamp;
|
info.writestamp=data.writestamp;
|
||||||
info.createstamp=data.createstamp;
|
info.createstamp=data.createstamp;
|
||||||
@@ -3499,7 +3569,7 @@ void CItemManager::ClearCache( void )
|
|||||||
m_IconInfos.clear();
|
m_IconInfos.clear();
|
||||||
m_MetroItemInfos10.clear();
|
m_MetroItemInfos10.clear();
|
||||||
CreateDefaultIcons();
|
CreateDefaultIcons();
|
||||||
ItemInfo &item=m_ItemInfos.insert(std::pair<unsigned int,ItemInfo>(0,ItemInfo()))->second;
|
ItemInfo &item=m_ItemInfos.emplace(0,ItemInfo())->second;
|
||||||
item.bIconOnly=true;
|
item.bIconOnly=true;
|
||||||
item.smallIcon=m_DefaultSmallIcon;
|
item.smallIcon=m_DefaultSmallIcon;
|
||||||
item.largeIcon=m_DefaultLargeIcon;
|
item.largeIcon=m_DefaultLargeIcon;
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ public:
|
|||||||
const ItemInfo *GetItemInfo( CString path, int refreshFlags, TLocation location=LOCATION_UNKNOWN );
|
const ItemInfo *GetItemInfo( CString path, int refreshFlags, TLocation location=LOCATION_UNKNOWN );
|
||||||
const ItemInfo *GetCustomIcon( const wchar_t *location, int index, TIconSizeType iconSizeType, bool bTemp );
|
const ItemInfo *GetCustomIcon( const wchar_t *location, int index, TIconSizeType iconSizeType, bool bTemp );
|
||||||
const ItemInfo *GetCustomIcon( const wchar_t *path, TIconSizeType iconSizeType );
|
const ItemInfo *GetCustomIcon( const wchar_t *path, TIconSizeType iconSizeType );
|
||||||
|
const ItemInfo* GetLinkIcon(IShellLink* link, TIconSizeType iconSizeType);
|
||||||
const ItemInfo *GetMetroAppInfo10( const wchar_t *appid );
|
const ItemInfo *GetMetroAppInfo10( const wchar_t *appid );
|
||||||
void UpdateItemInfo( const ItemInfo *pInfo, int refreshFlags, bool bHasWriteLock=false );
|
void UpdateItemInfo( const ItemInfo *pInfo, int refreshFlags, bool bHasWriteLock=false );
|
||||||
void WaitForShortcuts( const POINT &balloonPos );
|
void WaitForShortcuts( const POINT &balloonPos );
|
||||||
@@ -466,9 +467,9 @@ bool MenuGetFileTimestamp( const wchar_t *path, FILETIME *pWriteTime, FILETIME *
|
|||||||
STDAPI ShGetKnownFolderPath( REFKNOWNFOLDERID rfid, PWSTR *pPath );
|
STDAPI ShGetKnownFolderPath( REFKNOWNFOLDERID rfid, PWSTR *pPath );
|
||||||
STDAPI ShGetKnownFolderIDList(REFKNOWNFOLDERID rfid, PIDLIST_ABSOLUTE *pPidl );
|
STDAPI ShGetKnownFolderIDList(REFKNOWNFOLDERID rfid, PIDLIST_ABSOLUTE *pPidl );
|
||||||
STDAPI ShGetKnownFolderItem(REFKNOWNFOLDERID rfid, IShellItem **ppItem );
|
STDAPI ShGetKnownFolderItem(REFKNOWNFOLDERID rfid, IShellItem **ppItem );
|
||||||
|
HBITMAP ColorizeMonochromeImage(HBITMAP bitmap, DWORD color);
|
||||||
|
|
||||||
#define TASKBAR_PINNED_ROOT L"%APPDATA%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar"
|
#define TASKBAR_PINNED_ROOT L"%APPDATA%\\Microsoft\\Internet Explorer\\Quick Launch\\User Pinned\\TaskBar"
|
||||||
#define START_MENU_PINNED_ROOT L"%APPDATA%\\OpenShell\\Pinned"
|
|
||||||
#define STARTSCREEN_COMMAND L"startscreen.lnk"
|
#define STARTSCREEN_COMMAND L"startscreen.lnk"
|
||||||
#define USERASSIST_LINKS_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist\\{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\\Count"
|
#define USERASSIST_LINKS_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist\\{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\\Count"
|
||||||
#define USERASSIST_APPIDS_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist\\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\\Count"
|
#define USERASSIST_APPIDS_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist\\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\\Count"
|
||||||
|
|||||||
@@ -198,8 +198,14 @@ bool HasJumplist( const wchar_t *appid )
|
|||||||
{
|
{
|
||||||
UINT count;
|
UINT count;
|
||||||
if (SUCCEEDED(pCustomList->GetCategoryCount(&count)) && count>0)
|
if (SUCCEEDED(pCustomList->GetCategoryCount(&count)) && count>0)
|
||||||
|
{
|
||||||
|
// skip Settings app (it reports one category with unsupported type, thus jump-list will be empty)
|
||||||
|
if (wcscmp(appid, L"windows.immersivecontrolpanel_cw5n1h2txyewy!microsoft.windows.immersivecontrolpanel") == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (CAutomaticList(appid).HasList())
|
if (CAutomaticList(appid).HasList())
|
||||||
return true;
|
return true;
|
||||||
@@ -322,6 +328,9 @@ static void AddJumpItem( CJumpGroup &group, IUnknown *pUnknown, std::vector<CCom
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOG_MENU(LOG_OPEN,L"Jumplist Link Name: %s",item.name);
|
LOG_MENU(LOG_OPEN,L"Jumplist Link Name: %s",item.name);
|
||||||
|
#ifdef _DEBUG
|
||||||
|
LogPropertyStore(LOG_OPEN, pStore);
|
||||||
|
#endif
|
||||||
if (!item.name.IsEmpty())
|
if (!item.name.IsEmpty())
|
||||||
group.items.push_back(item);
|
group.items.push_back(item);
|
||||||
return;
|
return;
|
||||||
@@ -519,91 +528,15 @@ bool GetJumplist( const wchar_t *appid, CJumpList &list, int maxCount, int maxHe
|
|||||||
bool ExecuteJumpItem( const CItemManager::ItemInfo *pAppInfo, const CJumpItem &item, HWND hwnd )
|
bool ExecuteJumpItem( const CItemManager::ItemInfo *pAppInfo, const CJumpItem &item, HWND hwnd )
|
||||||
{
|
{
|
||||||
Assert(GetWinVersion()>=WIN_VER_WIN7);
|
Assert(GetWinVersion()>=WIN_VER_WIN7);
|
||||||
if (!item.pItem) return false;
|
if (!item.pItem)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (item.type==CJumpItem::TYPE_ITEM)
|
if (item.type==CJumpItem::TYPE_ITEM)
|
||||||
{
|
{
|
||||||
/* CString appid;
|
|
||||||
{
|
|
||||||
CItemManager::RWLock lock(&g_ItemManager,false,CItemManager::RWLOCK_ITEMS);
|
|
||||||
appid=pAppInfo->GetAppid();
|
|
||||||
}
|
|
||||||
LOG_MENU(LOG_OPEN,L"Execute Item: name=%s, appid=%s",item.name,appid);*/
|
|
||||||
CComQIPtr<IShellItem> pItem(item.pItem);
|
CComQIPtr<IShellItem> pItem(item.pItem);
|
||||||
if (!pItem)
|
if (!pItem)
|
||||||
return false;
|
return false;
|
||||||
/* CComString pName;
|
|
||||||
if (FAILED(pItem->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING,&pName)))
|
|
||||||
return false;
|
|
||||||
wchar_t ext[_MAX_EXT];
|
|
||||||
Strcpy(ext,_countof(ext),PathFindExtension(pName));
|
|
||||||
|
|
||||||
// find the correct association handler by appid and invoke it on the item
|
|
||||||
CComPtr<IEnumAssocHandlers> pEnumHandlers;
|
|
||||||
if (ext[0] && SUCCEEDED(SHAssocEnumHandlers(ext,ASSOC_FILTER_RECOMMENDED,&pEnumHandlers)))
|
|
||||||
{
|
|
||||||
CComPtr<IAssocHandler> pHandler;
|
|
||||||
ULONG count;
|
|
||||||
while (SUCCEEDED(pEnumHandlers->Next(1,&pHandler,&count)) && count==1)
|
|
||||||
{
|
|
||||||
CComQIPtr<IObjectWithAppUserModelID> pObject=pHandler;
|
|
||||||
if (pObject)
|
|
||||||
{
|
|
||||||
CComString pID;
|
|
||||||
if (SUCCEEDED(pObject->GetAppID(&pID)))
|
|
||||||
{
|
|
||||||
// found explicit appid
|
|
||||||
if (_wcsicmp(appid,pID)==0)
|
|
||||||
{
|
|
||||||
LOG_MENU(LOG_OPEN,L"Found handler appid");
|
|
||||||
CComPtr<IDataObject> pDataObject;
|
|
||||||
if (SUCCEEDED(pItem->BindToHandler(NULL,BHID_DataObject,IID_IDataObject,(void**)&pDataObject)) && SUCCEEDED(pHandler->Invoke(pDataObject)))
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pHandler=NULL;
|
|
||||||
}
|
|
||||||
pEnumHandlers=NULL;
|
|
||||||
|
|
||||||
// find the correct association handler by exe name and invoke it on the item
|
|
||||||
wchar_t targetPath[_MAX_PATH];
|
|
||||||
targetPath[0]=0;
|
|
||||||
{
|
|
||||||
CComPtr<IShellItem> pItem;
|
|
||||||
SHCreateItemFromIDList(pAppInfo->GetPidl(),IID_IShellItem,(void**)&pItem);
|
|
||||||
CComPtr<IShellLink> pLink;
|
|
||||||
if (pItem)
|
|
||||||
pItem->BindToHandler(NULL,BHID_SFUIObject,IID_IShellLink,(void**)&pLink);
|
|
||||||
CAbsolutePidl target;
|
|
||||||
if (pLink && SUCCEEDED(pLink->Resolve(NULL,SLR_INVOKE_MSI|SLR_NO_UI|SLR_NOUPDATE)) && SUCCEEDED(pLink->GetIDList(&target)))
|
|
||||||
{
|
|
||||||
if (FAILED(SHGetPathFromIDList(target,targetPath)))
|
|
||||||
targetPath[0]=0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (targetPath[0] && SUCCEEDED(SHAssocEnumHandlers(ext,ASSOC_FILTER_RECOMMENDED,&pEnumHandlers)))
|
|
||||||
{
|
|
||||||
while (SUCCEEDED(pEnumHandlers->Next(1,&pHandler,&count)) && count==1)
|
|
||||||
{
|
|
||||||
CComString pExe;
|
|
||||||
if (SUCCEEDED(pHandler->GetName(&pExe)))
|
|
||||||
{
|
|
||||||
if (_wcsicmp(targetPath,pExe)==0)
|
|
||||||
{
|
|
||||||
LOG_MENU(LOG_OPEN,L"Found handler appexe %s",targetPath);
|
|
||||||
CComPtr<IDataObject> pDataObject;
|
|
||||||
if (SUCCEEDED(pItem->BindToHandler(NULL,BHID_DataObject,IID_IDataObject,(void**)&pDataObject)) && SUCCEEDED(pHandler->Invoke(pDataObject)))
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pHandler=NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
// couldn't find a handler, execute the old way
|
|
||||||
SHELLEXECUTEINFO execute={sizeof(execute),SEE_MASK_IDLIST|SEE_MASK_FLAG_LOG_USAGE};
|
SHELLEXECUTEINFO execute={sizeof(execute),SEE_MASK_IDLIST|SEE_MASK_FLAG_LOG_USAGE};
|
||||||
execute.nShow=SW_SHOWNORMAL;
|
execute.nShow=SW_SHOWNORMAL;
|
||||||
CAbsolutePidl pidl;
|
CAbsolutePidl pidl;
|
||||||
@@ -617,9 +550,50 @@ bool ExecuteJumpItem( const CItemManager::ItemInfo *pAppInfo, const CJumpItem &i
|
|||||||
|
|
||||||
if (item.type==CJumpItem::TYPE_LINK)
|
if (item.type==CJumpItem::TYPE_LINK)
|
||||||
{
|
{
|
||||||
// invoke the link through its context menu
|
// Name: System.AppUserModel.HostEnvironment -- PKEY_AppUserModel_HostEnvironment
|
||||||
|
// Type: UInt32 -- VT_UI4
|
||||||
|
// FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 14
|
||||||
|
static const PROPERTYKEY PKEY_AppUserModel_HostEnvironment = { {0x9F4C2855, 0x9F79, 0x4B39, {0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3}}, 14 };
|
||||||
|
|
||||||
|
// Name: System.AppUserModel.ActivationContext -- PKEY_AppUserModel_ActivationContext
|
||||||
|
// Type: String -- VT_LPWSTR
|
||||||
|
// FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 20
|
||||||
|
static const PROPERTYKEY PKEY_AppUserModel_ActivationContext = { {0x9F4C2855, 0x9F79, 0x4B39, {0xA8, 0xD0, 0xE1, 0xD4, 0x2D, 0xE1, 0xD5, 0xF3}}, 20 };
|
||||||
|
|
||||||
CComQIPtr<IContextMenu> pMenu(item.pItem);
|
CComQIPtr<IContextMenu> pMenu(item.pItem);
|
||||||
if (!pMenu) return false;
|
CStringA params;
|
||||||
|
|
||||||
|
CComQIPtr<IShellLink> pLink(item.pItem);
|
||||||
|
if (pLink)
|
||||||
|
{
|
||||||
|
CComQIPtr<IPropertyStore> store(pLink);
|
||||||
|
if (store)
|
||||||
|
{
|
||||||
|
auto appId = GetPropertyStoreString(store, PKEY_AppUserModel_ID);
|
||||||
|
if (!appId.IsEmpty())
|
||||||
|
{
|
||||||
|
CComPtr<IShellItem2> target;
|
||||||
|
if (SUCCEEDED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder, 0, appId, IID_PPV_ARGS(&target))))
|
||||||
|
{
|
||||||
|
ULONG modern = 0;
|
||||||
|
if (SUCCEEDED(target->GetUInt32(PKEY_AppUserModel_HostEnvironment, &modern)) && modern)
|
||||||
|
{
|
||||||
|
CComQIPtr<IContextMenu> targetMenu;
|
||||||
|
if (SUCCEEDED(target->BindToHandler(nullptr, BHID_SFUIObject, IID_PPV_ARGS(&targetMenu))))
|
||||||
|
{
|
||||||
|
pMenu = targetMenu;
|
||||||
|
params = CT2CA(GetPropertyStoreString(store, PKEY_AppUserModel_ActivationContext));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// invoke the link through its context menu
|
||||||
|
if (!pMenu)
|
||||||
|
return false;
|
||||||
|
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
HMENU menu=CreatePopupMenu();
|
HMENU menu=CreatePopupMenu();
|
||||||
hr=pMenu->QueryContextMenu(menu,0,1,1000,CMF_DEFAULTONLY);
|
hr=pMenu->QueryContextMenu(menu,0,1,1000,CMF_DEFAULTONLY);
|
||||||
@@ -633,6 +607,8 @@ bool ExecuteJumpItem( const CItemManager::ItemInfo *pAppInfo, const CJumpItem &i
|
|||||||
{
|
{
|
||||||
CMINVOKECOMMANDINFO command={sizeof(command),CMIC_MASK_FLAG_LOG_USAGE};
|
CMINVOKECOMMANDINFO command={sizeof(command),CMIC_MASK_FLAG_LOG_USAGE};
|
||||||
command.lpVerb=MAKEINTRESOURCEA(id-1);
|
command.lpVerb=MAKEINTRESOURCEA(id-1);
|
||||||
|
if (!params.IsEmpty())
|
||||||
|
command.lpParameters = params;
|
||||||
wchar_t path[_MAX_PATH];
|
wchar_t path[_MAX_PATH];
|
||||||
GetModuleFileName(NULL,path,_countof(path));
|
GetModuleFileName(NULL,path,_countof(path));
|
||||||
if (_wcsicmp(PathFindFileName(path),L"explorer.exe")==0)
|
if (_wcsicmp(PathFindFileName(path),L"explorer.exe")==0)
|
||||||
|
|||||||
@@ -7,10 +7,13 @@
|
|||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "LogManager.h"
|
#include "LogManager.h"
|
||||||
#include "ResourceHelper.h"
|
#include "ResourceHelper.h"
|
||||||
|
#include "ComHelper.h"
|
||||||
|
#include <propvarutil.h>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
int g_LogCategories;
|
int g_LogCategories;
|
||||||
static FILE *g_LogFile;
|
static FILE *g_LogFile;
|
||||||
static int g_LogTime;
|
static std::chrono::time_point<std::chrono::steady_clock> g_LogTime;
|
||||||
|
|
||||||
void InitLog( int categories, const wchar_t *fname )
|
void InitLog( int categories, const wchar_t *fname )
|
||||||
{
|
{
|
||||||
@@ -21,7 +24,7 @@ void InitLog( int categories, const wchar_t *fname )
|
|||||||
wchar_t bom=0xFEFF;
|
wchar_t bom=0xFEFF;
|
||||||
fwrite(&bom,2,1,g_LogFile);
|
fwrite(&bom,2,1,g_LogFile);
|
||||||
g_LogCategories=categories;
|
g_LogCategories=categories;
|
||||||
g_LogTime=GetTickCount();
|
g_LogTime=std::chrono::steady_clock::now();
|
||||||
LogMessage(L"version=%x, PID=%d, TID=%d, Categories=%08x\r\n",GetWinVersion(),GetCurrentProcessId(),GetCurrentThreadId(),categories);
|
LogMessage(L"version=%x, PID=%d, TID=%d, Categories=%08x\r\n",GetWinVersion(),GetCurrentProcessId(),GetCurrentThreadId(),categories);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -38,7 +41,7 @@ void LogMessage( const wchar_t *text, ... )
|
|||||||
if (!g_LogFile) return;
|
if (!g_LogFile) return;
|
||||||
|
|
||||||
wchar_t buf[2048];
|
wchar_t buf[2048];
|
||||||
int len=Sprintf(buf,_countof(buf),L"%8d: ",GetTickCount()-g_LogTime);
|
int len=Sprintf(buf,_countof(buf),L"%8d: ",std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now()-g_LogTime).count());
|
||||||
fwrite(buf,2,len,g_LogFile);
|
fwrite(buf,2,len,g_LogFile);
|
||||||
|
|
||||||
va_list args;
|
va_list args;
|
||||||
@@ -51,3 +54,31 @@ void LogMessage( const wchar_t *text, ... )
|
|||||||
|
|
||||||
fflush(g_LogFile);
|
fflush(g_LogFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LogPropertyStore(TLogCategory category, IPropertyStore* store)
|
||||||
|
{
|
||||||
|
if (!store)
|
||||||
|
return;
|
||||||
|
|
||||||
|
DWORD count = 0;
|
||||||
|
store->GetCount(&count);
|
||||||
|
for (DWORD i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
PROPERTYKEY key{};
|
||||||
|
store->GetAt(i, &key);
|
||||||
|
|
||||||
|
PROPVARIANT val;
|
||||||
|
PropVariantInit(&val);
|
||||||
|
|
||||||
|
store->GetValue(key, &val);
|
||||||
|
|
||||||
|
CComString valueStr;
|
||||||
|
PropVariantToStringAlloc(val, &valueStr);
|
||||||
|
PropVariantClear(&val);
|
||||||
|
|
||||||
|
wchar_t guidStr[100]{};
|
||||||
|
StringFromGUID2(key.fmtid, guidStr, _countof(guidStr));
|
||||||
|
|
||||||
|
LOG_MENU(category, L"Property: {%s, %u} = %s", guidStr, key.pid, valueStr ? valueStr : L"???");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <propsys.h>
|
||||||
|
|
||||||
// LogManager.h - logging functionality (for debugging)
|
// LogManager.h - logging functionality (for debugging)
|
||||||
// Logs different events in the start menu
|
// Logs different events in the start menu
|
||||||
// Turn it on by setting the LogLevel setting in the registry
|
// Turn it on by setting the LogLevel setting in the registry
|
||||||
@@ -33,3 +35,5 @@ void CloseLog( void );
|
|||||||
void LogMessage( const wchar_t *text, ... );
|
void LogMessage( const wchar_t *text, ... );
|
||||||
|
|
||||||
#define STARTUP_LOG L"Software\\OpenShell\\StartMenu\\Settings|LogStartup|%LOCALAPPDATA%\\OpenShell\\StartupLog.txt"
|
#define STARTUP_LOG L"Software\\OpenShell\\StartMenu\\Settings|LogStartup|%LOCALAPPDATA%\\OpenShell\\StartupLog.txt"
|
||||||
|
|
||||||
|
void LogPropertyStore(TLogCategory category, IPropertyStore* store);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
#include "SettingsUI.h"
|
#include "SettingsUI.h"
|
||||||
#include "SettingsUIHelper.h"
|
#include "SettingsUIHelper.h"
|
||||||
|
#include "FileHelper.h"
|
||||||
#include "Translations.h"
|
#include "Translations.h"
|
||||||
#include "LogManager.h"
|
#include "LogManager.h"
|
||||||
#include "FNVHash.h"
|
#include "FNVHash.h"
|
||||||
@@ -402,7 +403,7 @@ void CMenuContainer::OpenSubMenu( int index, TActivateType type, bool bShift )
|
|||||||
if (m_Options&CONTAINER_NOEXTENSIONS)
|
if (m_Options&CONTAINER_NOEXTENSIONS)
|
||||||
options|=CONTAINER_NOEXTENSIONS;
|
options|=CONTAINER_NOEXTENSIONS;
|
||||||
|
|
||||||
if (item.id==MENU_PROGRAMS || item.id==MENU_APPS || (m_Options&CONTAINER_MULTICOL_REC))
|
if (item.id==MENU_PROGRAMS || item.id==MENU_APPS || item.bFolder || (m_Options&CONTAINER_MULTICOL_REC))
|
||||||
options|=CONTAINER_MULTICOL_REC;
|
options|=CONTAINER_MULTICOL_REC;
|
||||||
if ((options&CONTAINER_MULTICOL_REC) && !bShift)
|
if ((options&CONTAINER_MULTICOL_REC) && !bShift)
|
||||||
options|=CONTAINER_MULTICOLUMN;
|
options|=CONTAINER_MULTICOLUMN;
|
||||||
@@ -2192,11 +2193,15 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p
|
|||||||
|
|
||||||
if (res==CMD_PINSETTING)
|
if (res==CMD_PINSETTING)
|
||||||
{
|
{
|
||||||
CSearchManager::TItemCategory cat=(CSearchManager::TItemCategory)(item.categoryHash&CSearchManager::CATEGORY_MASK);
|
CString iconPath;
|
||||||
if (cat==CSearchManager::CATEGORY_SETTING)
|
if (item.pItemInfo)
|
||||||
CreatePinLink(pItemPidl1,item.name,NULL,0);
|
{
|
||||||
else if (cat==CSearchManager::CATEGORY_METROSETTING)
|
CItemManager::RWLock lock(&g_ItemManager, false, CItemManager::RWLOCK_ITEMS);
|
||||||
CreatePinLink(pItemPidl1,item.name,L"%windir%\\ImmersiveControlPanel\\systemsettings.exe",0);
|
if (_wcsicmp(PathFindExtension(item.pItemInfo->GetPath()), L".settingcontent-ms") == 0)
|
||||||
|
iconPath = L"%windir%\\ImmersiveControlPanel\\systemsettings.exe";
|
||||||
|
}
|
||||||
|
|
||||||
|
CreatePinLink(pItemPidl1, item.name, iconPath.IsEmpty() ? nullptr : iconPath.GetString(), 0);
|
||||||
m_bRefreshItems=true;
|
m_bRefreshItems=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2396,7 +2401,6 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
DestroyMenu(menu2);
|
DestroyMenu(menu2);
|
||||||
HideTemp(false);
|
|
||||||
s_bPreventClosing=false;
|
s_bPreventClosing=false;
|
||||||
|
|
||||||
PITEMID_CHILD newPidl=NULL;
|
PITEMID_CHILD newPidl=NULL;
|
||||||
@@ -2485,7 +2489,6 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p
|
|||||||
Invalidate();
|
Invalidate();
|
||||||
if (m_HotItem<0) SetHotItem(index);
|
if (m_HotItem<0) SetHotItem(index);
|
||||||
}
|
}
|
||||||
HideTemp(false);
|
|
||||||
s_bPreventClosing=false;
|
s_bPreventClosing=false;
|
||||||
}
|
}
|
||||||
SetContextItem(-1);
|
SetContextItem(-1);
|
||||||
@@ -2742,7 +2745,6 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p
|
|||||||
else
|
else
|
||||||
SetFocus();
|
SetFocus();
|
||||||
}
|
}
|
||||||
HideTemp(false);
|
|
||||||
s_bPreventClosing=false;
|
s_bPreventClosing=false;
|
||||||
s_HotPos=GetMessagePos();
|
s_HotPos=GetMessagePos();
|
||||||
res=CMD_RENAME;
|
res=CMD_RENAME;
|
||||||
@@ -2781,13 +2783,20 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p
|
|||||||
info.lpVerb=MAKEINTRESOURCEA(res-verbOffset);
|
info.lpVerb=MAKEINTRESOURCEA(res-verbOffset);
|
||||||
info.lpVerbW=MAKEINTRESOURCEW(res-verbOffset);
|
info.lpVerbW=MAKEINTRESOURCEW(res-verbOffset);
|
||||||
info.nShow=SW_SHOWNORMAL;
|
info.nShow=SW_SHOWNORMAL;
|
||||||
|
bool bOpenTruePath=false;
|
||||||
|
wchar_t targetlnkPath[_MAX_PATH]; // path to target.lnk in a fake folder
|
||||||
wchar_t dir[_MAX_PATH];
|
wchar_t dir[_MAX_PATH];
|
||||||
if (SHGetPathFromIDList(pItemPidl1,dir))
|
if (SHGetPathFromIDList(pItemPidl1,dir))
|
||||||
|
{
|
||||||
|
if (_stricmp(command,"open")==0 && GetSettingBool(L"OpenTruePath") && GetFakeFolder(targetlnkPath,_countof(targetlnkPath),dir))
|
||||||
|
bOpenTruePath=true;
|
||||||
|
else
|
||||||
{
|
{
|
||||||
PathRemoveFileSpec(dir);
|
PathRemoveFileSpec(dir);
|
||||||
if (GetFileAttributes(dir)!=INVALID_FILE_ATTRIBUTES)
|
if (GetFileAttributes(dir)!=INVALID_FILE_ATTRIBUTES)
|
||||||
info.lpDirectoryW=dir;
|
info.lpDirectoryW=dir;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (pPt)
|
if (pPt)
|
||||||
{
|
{
|
||||||
info.fMask|=CMIC_MASK_PTINVOKE;
|
info.fMask|=CMIC_MASK_PTINVOKE;
|
||||||
@@ -2802,10 +2811,12 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p
|
|||||||
if (bRefresh || bRefreshMain)
|
if (bRefresh || bRefreshMain)
|
||||||
info.fMask|=CMIC_MASK_NOASYNC; // wait for delete/link commands to finish so we can refresh the menu
|
info.fMask|=CMIC_MASK_NOASYNC; // wait for delete/link commands to finish so we can refresh the menu
|
||||||
|
|
||||||
if ((type!=ACTIVATE_MENU && type!=ACTIVATE_DELETE) || GetWinVersion()<WIN_VER_WIN8)
|
|
||||||
s_bPreventClosing=true;
|
s_bPreventClosing=true;
|
||||||
for (std::vector<CMenuContainer*>::iterator it=s_Menus.begin();it!=s_Menus.end();++it)
|
for (auto& it : s_Menus)
|
||||||
(*it)->EnableWindow(FALSE); // disable all menus
|
{
|
||||||
|
it->EnableWindow(FALSE); // disable all menus
|
||||||
|
it->SetWindowPos(HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
|
||||||
|
}
|
||||||
bool bAllPrograms=s_bAllPrograms;
|
bool bAllPrograms=s_bAllPrograms;
|
||||||
if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,FALSE);
|
if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,FALSE);
|
||||||
info.hwnd=g_OwnerWindow;
|
info.hwnd=g_OwnerWindow;
|
||||||
@@ -2815,9 +2826,20 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p
|
|||||||
::SetForegroundWindow(g_OwnerWindow);
|
::SetForegroundWindow(g_OwnerWindow);
|
||||||
::SetWindowPos(g_OwnerWindow,HWND_TOPMOST,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top,0);
|
::SetWindowPos(g_OwnerWindow,HWND_TOPMOST,rc.left,rc.top,rc.right-rc.left,rc.bottom-rc.top,0);
|
||||||
LOG_MENU(LOG_EXECUTE,L"Invoke command, ptr=%p, command='%S'",this,command);
|
LOG_MENU(LOG_EXECUTE,L"Invoke command, ptr=%p, command='%S'",this,command);
|
||||||
|
bool executeSuccess;
|
||||||
|
if (bOpenTruePath) // we are trying to open a fake folder, directly open target.lnk instead
|
||||||
|
{
|
||||||
|
HINSTANCE hinst=ShellExecute(NULL,NULL,targetlnkPath,NULL,NULL,SW_SHOWNORMAL);
|
||||||
|
LOG_MENU(LOG_EXECUTE,L"Invoke command, ptr=%p, res=%d",this,hinst);
|
||||||
|
executeSuccess=static_cast<int>(reinterpret_cast<uintptr_t>(hinst))>=32;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
HRESULT hr=pInvokeMenu->InvokeCommand((LPCMINVOKECOMMANDINFO)&info);
|
HRESULT hr=pInvokeMenu->InvokeCommand((LPCMINVOKECOMMANDINFO)&info);
|
||||||
LOG_MENU(LOG_EXECUTE,L"Invoke command, ptr=%p, res=%d",this,hr);
|
LOG_MENU(LOG_EXECUTE,L"Invoke command, ptr=%p, res=%d",this,hr);
|
||||||
if (type==ACTIVATE_EXECUTE && SUCCEEDED(hr))
|
executeSuccess=SUCCEEDED(hr);
|
||||||
|
}
|
||||||
|
if (type==ACTIVATE_EXECUTE && executeSuccess)
|
||||||
{
|
{
|
||||||
if (bTrackRecent)
|
if (bTrackRecent)
|
||||||
{
|
{
|
||||||
@@ -2850,9 +2872,14 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (std::vector<CMenuContainer*>::iterator it=s_Menus.begin();it!=s_Menus.end();++it)
|
for (auto& it : s_Menus)
|
||||||
if (!(*it)->m_bDestroyed)
|
{
|
||||||
(*it)->EnableWindow(TRUE); // enable all menus
|
if (!it->m_bDestroyed)
|
||||||
|
{
|
||||||
|
it->EnableWindow(TRUE); // enable all menus
|
||||||
|
it->SetWindowPos(HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,TRUE);
|
if (bAllPrograms) ::EnableWindow(g_TopWin7Menu,TRUE);
|
||||||
if (bRefreshMain && m_bSubMenu)
|
if (bRefreshMain && m_bSubMenu)
|
||||||
{
|
{
|
||||||
@@ -2880,7 +2907,6 @@ void CMenuContainer::ActivateItem( int index, TActivateType type, const POINT *p
|
|||||||
else
|
else
|
||||||
SetFocus();
|
SetFocus();
|
||||||
}
|
}
|
||||||
HideTemp(false);
|
|
||||||
s_bPreventClosing=false;
|
s_bPreventClosing=false;
|
||||||
|
|
||||||
if (!bKeepOpen && !bRefresh && !bRefreshMain)
|
if (!bKeepOpen && !bRefresh && !bRefreshMain)
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ static StdMenuOption g_StdOptions[]=
|
|||||||
{MENU_USERPICTURES,MENU_ENABLED}, // check policy
|
{MENU_USERPICTURES,MENU_ENABLED}, // check policy
|
||||||
{MENU_SLEEP,MENU_ENABLED}, // check power caps
|
{MENU_SLEEP,MENU_ENABLED}, // check power caps
|
||||||
{MENU_HIBERNATE,MENU_ENABLED}, // check power caps
|
{MENU_HIBERNATE,MENU_ENABLED}, // check power caps
|
||||||
|
{MENU_LOCK,MENU_ENABLED}, // check power settings
|
||||||
{MENU_SWITCHUSER,MENU_ENABLED}, // check group policy
|
{MENU_SWITCHUSER,MENU_ENABLED}, // check group policy
|
||||||
{MENU_APPS,MENU_ENABLED}, // enable on Win8+
|
{MENU_APPS,MENU_ENABLED}, // enable on Win8+
|
||||||
{MENU_PCSETTINGS,MENU_ENABLED}, // enable on Win8+
|
{MENU_PCSETTINGS,MENU_ENABLED}, // enable on Win8+
|
||||||
@@ -314,6 +315,7 @@ bool CMenuContainer::s_bShowTopEmpty=false;
|
|||||||
bool CMenuContainer::s_bNoDragDrop=false;
|
bool CMenuContainer::s_bNoDragDrop=false;
|
||||||
bool CMenuContainer::s_bNoContextMenu=false;
|
bool CMenuContainer::s_bNoContextMenu=false;
|
||||||
bool CMenuContainer::s_bExpandLinks=false;
|
bool CMenuContainer::s_bExpandLinks=false;
|
||||||
|
bool CMenuContainer::s_bSingleClickFolders=false;
|
||||||
bool CMenuContainer::s_bLogicalSort=false;
|
bool CMenuContainer::s_bLogicalSort=false;
|
||||||
bool CMenuContainer::s_bExtensionSort=false;
|
bool CMenuContainer::s_bExtensionSort=false;
|
||||||
bool CMenuContainer::s_bAllPrograms=false;
|
bool CMenuContainer::s_bAllPrograms=false;
|
||||||
@@ -333,6 +335,7 @@ bool CMenuContainer::s_bDragMovable;
|
|||||||
bool CMenuContainer::s_bRightDrag;
|
bool CMenuContainer::s_bRightDrag;
|
||||||
bool CMenuContainer::s_bLockWorkArea;
|
bool CMenuContainer::s_bLockWorkArea;
|
||||||
bool CMenuContainer::s_bPendingSearchEnter;
|
bool CMenuContainer::s_bPendingSearchEnter;
|
||||||
|
bool CMenuContainer::s_bMoreResults;
|
||||||
std::vector<CMenuContainer*> CMenuContainer::s_Menus;
|
std::vector<CMenuContainer*> CMenuContainer::s_Menus;
|
||||||
volatile HWND CMenuContainer::s_FirstMenu, CMenuContainer::s_SearchMenu;
|
volatile HWND CMenuContainer::s_FirstMenu, CMenuContainer::s_SearchMenu;
|
||||||
CSearchManager::SearchResults CMenuContainer::s_SearchResults;
|
CSearchManager::SearchResults CMenuContainer::s_SearchResults;
|
||||||
@@ -442,6 +445,9 @@ LRESULT CALLBACK CMenuContainer::SubclassSearchBox( HWND hWnd, UINT uMsg, WPARAM
|
|||||||
SetBkColor(hdc,GetSysColor(COLOR_WINDOW));
|
SetBkColor(hdc,GetSysColor(COLOR_WINDOW));
|
||||||
SetBkMode(hdc,TRANSPARENT);
|
SetBkMode(hdc,TRANSPARENT);
|
||||||
SetTextColor(hdc,s_Skin.Search_text_colors[1]);
|
SetTextColor(hdc,s_Skin.Search_text_colors[1]);
|
||||||
|
if (GetSettingBool(L"SearchHint"))
|
||||||
|
DrawText(hdc,GetSettingString(L"SearchHintText"),-1,&rc,DT_SINGLELINE|DT_EDITCONTROL|(s_bRTL?DT_RIGHT:DT_LEFT));
|
||||||
|
else
|
||||||
DrawText(hdc,pParent->m_Items[pParent->m_SearchIndex].name,-1,&rc,DT_SINGLELINE|DT_EDITCONTROL|(s_bRTL?DT_RIGHT:DT_LEFT));
|
DrawText(hdc,pParent->m_Items[pParent->m_SearchIndex].name,-1,&rc,DT_SINGLELINE|DT_EDITCONTROL|(s_bRTL?DT_RIGHT:DT_LEFT));
|
||||||
SelectObject(hdc,font0);
|
SelectObject(hdc,font0);
|
||||||
}
|
}
|
||||||
@@ -1065,7 +1071,7 @@ void CMenuContainer::AddStandardItems( void )
|
|||||||
const StdMenuItem *pInlineParent=NULL;
|
const StdMenuItem *pInlineParent=NULL;
|
||||||
int searchProviderIndex=-1;
|
int searchProviderIndex=-1;
|
||||||
m_SearchProvidersCount=0;
|
m_SearchProvidersCount=0;
|
||||||
MenuSkin::TIconSize mainIconSize=s_Skin.Main_icon_size;
|
bool bSecondColumn=false;
|
||||||
for (const StdMenuItem *pStdItem=m_pStdItem;;pStdItem++)
|
for (const StdMenuItem *pStdItem=m_pStdItem;;pStdItem++)
|
||||||
{
|
{
|
||||||
if (pStdItem->id==MENU_LAST)
|
if (pStdItem->id==MENU_LAST)
|
||||||
@@ -1083,8 +1089,8 @@ void CMenuContainer::AddStandardItems( void )
|
|||||||
if (m_bSubMenu && pStdItem->id==s_ShutdownCommand)
|
if (m_bSubMenu && pStdItem->id==s_ShutdownCommand)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pStdItem->id==MENU_COLUMN_BREAK && m_bTwoColumns)
|
if (pStdItem->id==MENU_COLUMN_BREAK && !m_bSubMenu && s_Skin.TwoColumns)
|
||||||
mainIconSize=s_Skin.Main2_icon_size;
|
bSecondColumn=true;
|
||||||
|
|
||||||
int stdOptions=GetStdOptions(pStdItem->id);
|
int stdOptions=GetStdOptions(pStdItem->id);
|
||||||
if (!(stdOptions&MENU_ENABLED)) continue;
|
if (!(stdOptions&MENU_ENABLED)) continue;
|
||||||
@@ -1265,6 +1271,10 @@ void CMenuContainer::AddStandardItems( void )
|
|||||||
item.bSplit=item.bFolder && (item.pStdItem->settings&StdMenuItem::MENU_SPLIT_BUTTON)!=0;
|
item.bSplit=item.bFolder && (item.pStdItem->settings&StdMenuItem::MENU_SPLIT_BUTTON)!=0;
|
||||||
|
|
||||||
// get icon
|
// get icon
|
||||||
|
MenuSkin::TIconSize mainIconSize=!bSecondColumn ? s_Skin.Main_icon_size : s_Skin.Main2_icon_size;
|
||||||
|
if (item.bInline && mainIconSize==MenuSkin::ICON_SIZE_NONE)
|
||||||
|
mainIconSize=s_Skin.Main_icon_size;
|
||||||
|
|
||||||
CItemManager::TIconSizeType iconSizeType;
|
CItemManager::TIconSizeType iconSizeType;
|
||||||
int refreshFlags;
|
int refreshFlags;
|
||||||
if (bSearchProvider7 || m_bSubMenu)
|
if (bSearchProvider7 || m_bSubMenu)
|
||||||
@@ -1936,15 +1946,6 @@ void CMenuContainer::GetRecentPrograms( std::vector<MenuItem> &items, int maxCou
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
CComPtr<IShellItem> pAppItem;
|
|
||||||
if (FAILED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder2,0,uaItem.name,IID_IShellItem,(void**)&pAppItem)))
|
|
||||||
continue;
|
|
||||||
CComString pName;
|
|
||||||
if (FAILED(pAppItem->GetDisplayName(SIGDN_NORMALDISPLAY,&pName)) || wcsncmp(pName,L"@{",2)==0)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
uaItem.pLinkInfo=g_ItemManager.GetMetroAppInfo10(uaItem.name);
|
uaItem.pLinkInfo=g_ItemManager.GetMetroAppInfo10(uaItem.name);
|
||||||
if (!uaItem.pLinkInfo)
|
if (!uaItem.pLinkInfo)
|
||||||
{
|
{
|
||||||
@@ -1955,6 +1956,11 @@ void CMenuContainer::GetRecentPrograms( std::vector<MenuItem> &items, int maxCou
|
|||||||
LOG_MENU(LOG_MFU,L"UserAssist: '%s', %d, %.3f",uaItem.name,data.count,uaItem.rank);
|
LOG_MENU(LOG_MFU,L"UserAssist: '%s', %d, %.3f",uaItem.name,data.count,uaItem.rank);
|
||||||
{
|
{
|
||||||
CItemManager::RWLock lock(&g_ItemManager,false,CItemManager::RWLOCK_ITEMS);
|
CItemManager::RWLock lock(&g_ItemManager,false,CItemManager::RWLOCK_ITEMS);
|
||||||
|
if (uaItem.pLinkInfo->GetMetroName().IsEmpty() || wcsncmp(uaItem.pLinkInfo->GetMetroName(), L"@{",2)==0)
|
||||||
|
{
|
||||||
|
LOG_MENU(LOG_MFU, L"UserAssist: Dropping: No metro name");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (uaItem.pLinkInfo->IsNoPin())
|
if (uaItem.pLinkInfo->IsNoPin())
|
||||||
{
|
{
|
||||||
LOG_MENU(LOG_MFU,L"UserAssist: Dropping: No pin");
|
LOG_MENU(LOG_MFU,L"UserAssist: Dropping: No pin");
|
||||||
@@ -2206,10 +2212,7 @@ void CMenuContainer::AddJumpListItems( std::vector<MenuItem> &items )
|
|||||||
if (pLink)
|
if (pLink)
|
||||||
{
|
{
|
||||||
pLink->GetIDList(&item.pItem1);
|
pLink->GetIDList(&item.pItem1);
|
||||||
wchar_t location[_MAX_PATH];
|
item.pItemInfo = g_ItemManager.GetLinkIcon(pLink, CItemManager::ICON_SIZE_TYPE_SMALL);
|
||||||
int index;
|
|
||||||
if (pLink->GetIconLocation(location,_countof(location),&index)==S_OK && location[0])
|
|
||||||
item.pItemInfo=g_ItemManager.GetCustomIcon(location,index,CItemManager::ICON_SIZE_TYPE_SMALL,(index==0)); // assuming that if index!=0 the icon comes from a permanent location like a dll or exe
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (jumpItem.type==CJumpItem::TYPE_ITEM)
|
else if (jumpItem.type==CJumpItem::TYPE_ITEM)
|
||||||
@@ -2243,7 +2246,7 @@ void CMenuContainer::AddJumpListItems( std::vector<MenuItem> &items )
|
|||||||
{
|
{
|
||||||
ILFree(item.pItem1);
|
ILFree(item.pItem1);
|
||||||
item.pItem1=pidl2.Detach();
|
item.pItem1=pidl2.Detach();
|
||||||
pItem=pItem2;
|
pItem=std::move(pItem2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2505,9 +2508,9 @@ void CMenuContainer::InitItems( void )
|
|||||||
m_Items.resize(MAX_MENU_ITEMS);
|
m_Items.resize(MAX_MENU_ITEMS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_Options&CONTAINER_CONTROLPANEL)
|
if (m_Options&CONTAINER_CONTROLPANEL && !(m_Options&CONTAINER_NOSUBFOLDERS))
|
||||||
{
|
{
|
||||||
// expand Administrative Tools. must be done after the sorting because we don't want the folder to jump to the top
|
// expand Administrative Tools when displaying as a menu. must be done after the sorting because we don't want the folder to jump to the top
|
||||||
unsigned int AdminToolsHash=CalcFNVHash(L"::{D20EA4E1-3957-11D2-A40B-0C5020524153}");
|
unsigned int AdminToolsHash=CalcFNVHash(L"::{D20EA4E1-3957-11D2-A40B-0C5020524153}");
|
||||||
for (std::vector<MenuItem>::iterator it=m_Items.begin();it!=m_Items.end();++it)
|
for (std::vector<MenuItem>::iterator it=m_Items.begin();it!=m_Items.end();++it)
|
||||||
if (it->nameHash==AdminToolsHash)
|
if (it->nameHash==AdminToolsHash)
|
||||||
@@ -2655,17 +2658,11 @@ int CMenuContainer::AddSearchItems( const std::vector<SearchItem> &items, const
|
|||||||
if (!categoryName.IsEmpty())
|
if (!categoryName.IsEmpty())
|
||||||
{
|
{
|
||||||
MenuItem item(MENU_SEARCH_CATEGORY);
|
MenuItem item(MENU_SEARCH_CATEGORY);
|
||||||
if (categoryHash==CSearchManager::CATEGORY_PROGRAM || categoryHash==CSearchManager::CATEGORY_SETTING)
|
|
||||||
{
|
|
||||||
item.name.Format(L"%s (%d)",categoryName,originalCount);
|
item.name.Format(L"%s (%d)",categoryName,originalCount);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.name=categoryName;
|
|
||||||
item.bSplit=(s_Skin.More_bitmap_Size.cx>0);
|
|
||||||
}
|
|
||||||
item.nameHash=CalcFNVHash(categoryName);
|
item.nameHash=CalcFNVHash(categoryName);
|
||||||
item.categoryHash=categoryHash;
|
item.categoryHash=categoryHash;
|
||||||
|
if (categoryHash!=CSearchManager::CATEGORY_PROGRAM || categoryHash!=CSearchManager::CATEGORY_SETTING)
|
||||||
|
item.bSplit=(s_Skin.More_bitmap_Size.cx>0);
|
||||||
m_Items.push_back(item);
|
m_Items.push_back(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2723,7 +2720,7 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
unsigned int runCategoryHash=0;
|
unsigned int runCategoryHash=0;
|
||||||
CString runCommand;
|
CString runCommand;
|
||||||
CComString runExe;
|
CComString runExe;
|
||||||
if (!bAutoComlpete && !s_bNoRun && s_SearchResults.programs.empty() && s_SearchResults.settings.empty())
|
if (!bAutoComlpete && !s_bNoRun && s_SearchResults.programs.empty() && s_SearchResults.settings.empty() && s_SearchResults.metrosettings.empty())
|
||||||
{
|
{
|
||||||
if (s_bWin7Style)
|
if (s_bWin7Style)
|
||||||
m_SearchBox.GetWindowText(runCommand);
|
m_SearchBox.GetWindowText(runCommand);
|
||||||
@@ -2752,9 +2749,9 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
{
|
{
|
||||||
sepHeight=s_Skin.ItemSettings[s_Skin.More_bitmap_Size.cx?MenuSkin::LIST_SEPARATOR_SPLIT:MenuSkin::LIST_SEPARATOR].itemHeight;
|
sepHeight=s_Skin.ItemSettings[s_Skin.More_bitmap_Size.cx?MenuSkin::LIST_SEPARATOR_SPLIT:MenuSkin::LIST_SEPARATOR].itemHeight;
|
||||||
itemHeight=s_Skin.ItemSettings[MenuSkin::LIST_ITEM].itemHeight;
|
itemHeight=s_Skin.ItemSettings[MenuSkin::LIST_ITEM].itemHeight;
|
||||||
// total height minus the search box and the "more results"/"search internet"
|
// total height minus the search box and the "more results"/"search internet", if present
|
||||||
maxHeight=m_Items[m_SearchIndex].itemRect.top-s_Skin.Main_search_padding.top-s_Skin.Search_padding.top;
|
maxHeight=m_Items[m_SearchIndex].itemRect.top-s_Skin.Main_search_padding.top-s_Skin.Search_padding.top;
|
||||||
maxHeight-=itemHeight*(m_SearchItemCount-1);
|
maxHeight-=itemHeight*(m_SearchItemCount-(s_bMoreResults?1:2));
|
||||||
if (!s_SearchResults.bSearching && !HasMoreResults())
|
if (!s_SearchResults.bSearching && !HasMoreResults())
|
||||||
maxHeight+=itemHeight;
|
maxHeight+=itemHeight;
|
||||||
}
|
}
|
||||||
@@ -2780,6 +2777,12 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
if (m_SearchCategoryHash==CSearchManager::CATEGORY_PROGRAM)
|
if (m_SearchCategoryHash==CSearchManager::CATEGORY_PROGRAM)
|
||||||
selectedCount=(int)s_SearchResults.programs.size();
|
selectedCount=(int)s_SearchResults.programs.size();
|
||||||
}
|
}
|
||||||
|
if (!s_SearchResults.metrosettings.empty())
|
||||||
|
{
|
||||||
|
counts.push_back((int)s_SearchResults.metrosettings.size());
|
||||||
|
if (m_SearchCategoryHash==CSearchManager::CATEGORY_METROSETTING)
|
||||||
|
selectedCount=(int)s_SearchResults.metrosettings.size();
|
||||||
|
}
|
||||||
if (!s_SearchResults.settings.empty())
|
if (!s_SearchResults.settings.empty())
|
||||||
{
|
{
|
||||||
counts.push_back((int)s_SearchResults.settings.size());
|
counts.push_back((int)s_SearchResults.settings.size());
|
||||||
@@ -2828,13 +2831,15 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
|
|
||||||
// add categories
|
// add categories
|
||||||
std::list<CSearchManager::SearchCategory>::const_iterator it=s_SearchResults.indexed.begin();
|
std::list<CSearchManager::SearchCategory>::const_iterator it=s_SearchResults.indexed.begin();
|
||||||
for (size_t idx=0;idx<s_SearchResults.indexed.size()+2;idx++)
|
for (size_t idx=0;idx<s_SearchResults.indexed.size()+3;idx++)
|
||||||
{
|
{
|
||||||
items.clear();
|
items.clear();
|
||||||
unsigned int categoryHash;
|
unsigned int categoryHash;
|
||||||
if (idx==0)
|
if (idx==0)
|
||||||
categoryHash=CSearchManager::CATEGORY_PROGRAM;
|
categoryHash=CSearchManager::CATEGORY_PROGRAM;
|
||||||
else if (idx==1)
|
else if (idx==1)
|
||||||
|
categoryHash=CSearchManager::CATEGORY_METROSETTING;
|
||||||
|
else if (idx==2)
|
||||||
categoryHash=CSearchManager::CATEGORY_SETTING;
|
categoryHash=CSearchManager::CATEGORY_SETTING;
|
||||||
else
|
else
|
||||||
categoryHash=it->categoryHash;
|
categoryHash=it->categoryHash;
|
||||||
@@ -2853,7 +2858,7 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
}
|
}
|
||||||
if (count<=0)
|
if (count<=0)
|
||||||
{
|
{
|
||||||
if (idx>=2) ++it;
|
if (idx>=3) ++it;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2870,6 +2875,16 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
name=FindTranslation(L"Search.CategoryPrograms",L"Programs");
|
name=FindTranslation(L"Search.CategoryPrograms",L"Programs");
|
||||||
}
|
}
|
||||||
else if (idx==1)
|
else if (idx==1)
|
||||||
|
{
|
||||||
|
originalCount=(int)s_SearchResults.metrosettings.size();
|
||||||
|
if (count>originalCount)
|
||||||
|
count=originalCount;
|
||||||
|
items.reserve(count);
|
||||||
|
for (std::vector<const CItemManager::ItemInfo*>::const_iterator it=s_SearchResults.metrosettings.begin();it!=s_SearchResults.metrosettings.end() && (int)items.size()<count;++it)
|
||||||
|
items.push_back(SearchItem(*it));
|
||||||
|
name=FindTranslation(L"Search.CategoryPCSettings", L"Settings");
|
||||||
|
}
|
||||||
|
else if (idx==2)
|
||||||
{
|
{
|
||||||
originalCount=(int)s_SearchResults.settings.size();
|
originalCount=(int)s_SearchResults.settings.size();
|
||||||
if (count>originalCount)
|
if (count>originalCount)
|
||||||
@@ -2877,7 +2892,7 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
items.reserve(count);
|
items.reserve(count);
|
||||||
for (std::vector<const CItemManager::ItemInfo*>::const_iterator it=s_SearchResults.settings.begin();it!=s_SearchResults.settings.end() && (int)items.size()<count;++it)
|
for (std::vector<const CItemManager::ItemInfo*>::const_iterator it=s_SearchResults.settings.begin();it!=s_SearchResults.settings.end() && (int)items.size()<count;++it)
|
||||||
items.push_back(SearchItem(*it));
|
items.push_back(SearchItem(*it));
|
||||||
name=FindTranslation(L"Search.CategorySettings",L"Settings");
|
name=FindTranslation(L"Search.CategorySettings",L"Control Panel");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2930,6 +2945,8 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
if (s_bWin7Style)
|
if (s_bWin7Style)
|
||||||
{
|
{
|
||||||
UpdateAccelerators(m_OriginalCount,(int)m_Items.size());
|
UpdateAccelerators(m_OriginalCount,(int)m_Items.size());
|
||||||
|
if (s_bMoreResults)
|
||||||
|
{
|
||||||
MenuItem &item=m_Items[m_SearchIndex-m_SearchItemCount+1];
|
MenuItem &item=m_Items[m_SearchIndex-m_SearchItemCount+1];
|
||||||
if (s_SearchResults.bSearching)
|
if (s_SearchResults.bSearching)
|
||||||
{
|
{
|
||||||
@@ -2944,11 +2961,12 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
item.pItemInfo=g_ItemManager.GetCustomIcon(L"imageres.dll,177",CItemManager::ICON_SIZE_TYPE_SMALL);
|
item.pItemInfo=g_ItemManager.GetCustomIcon(L"imageres.dll,177",CItemManager::ICON_SIZE_TYPE_SMALL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_ScrollCount=(int)m_Items.size();
|
m_ScrollCount=(int)m_Items.size();
|
||||||
bool bInternet=GetSettingBool(L"SearchInternet");
|
bool bInternet=GetSettingBool(L"SearchInternet");
|
||||||
if (s_SearchResults.bSearching)
|
if (s_bMoreResults && s_SearchResults.bSearching)
|
||||||
{
|
{
|
||||||
MenuItem item(MENU_SEARCH_EMPTY);
|
MenuItem item(MENU_SEARCH_EMPTY);
|
||||||
item.name=FindTranslation(L"Menu.Searching",L"Searching...");
|
item.name=FindTranslation(L"Menu.Searching",L"Searching...");
|
||||||
@@ -2963,7 +2981,7 @@ bool CMenuContainer::InitSearchItems( void )
|
|||||||
item.name=FindTranslation(L"Menu.NoMatch",L"No items match your search.");
|
item.name=FindTranslation(L"Menu.NoMatch",L"No items match your search.");
|
||||||
m_Items.push_back(item);
|
m_Items.push_back(item);
|
||||||
}
|
}
|
||||||
if (HasMoreResults())
|
if (s_bMoreResults && HasMoreResults())
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
MenuItem item(MENU_SEPARATOR);
|
MenuItem item(MENU_SEPARATOR);
|
||||||
@@ -5051,7 +5069,7 @@ void CMenuContainer::UpdateSearchResults( bool bForceShowAll )
|
|||||||
g_SearchManager.BeginSearch(s_SearchResults.currentString);
|
g_SearchManager.BeginSearch(s_SearchResults.currentString);
|
||||||
s_SearchResults.bSearching=true;
|
s_SearchResults.bSearching=true;
|
||||||
s_bPendingSearchEnter=false;
|
s_bPendingSearchEnter=false;
|
||||||
if (s_bWin7Style)
|
if (s_bWin7Style && s_bMoreResults)
|
||||||
{
|
{
|
||||||
MenuItem &item=m_Items[m_SearchIndex-m_SearchItemCount+1];
|
MenuItem &item=m_Items[m_SearchIndex-m_SearchItemCount+1];
|
||||||
item.id=MENU_SEARCH_EMPTY;
|
item.id=MENU_SEARCH_EMPTY;
|
||||||
@@ -6364,11 +6382,6 @@ LRESULT CMenuContainer::OnRefresh( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMenuContainer::HideTemp( bool bHide )
|
|
||||||
{
|
|
||||||
::PostMessage(g_OwnerWindow,WM_CLEAR,bHide,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
LRESULT CMenuContainer::OnActivate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
LRESULT CMenuContainer::OnActivate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
||||||
{
|
{
|
||||||
if (LOWORD(wParam)!=WA_INACTIVE)
|
if (LOWORD(wParam)!=WA_INACTIVE)
|
||||||
@@ -6378,6 +6391,9 @@ LRESULT CMenuContainer::OnActivate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOO
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#ifndef PREVENT_CLOSING
|
#ifndef PREVENT_CLOSING
|
||||||
|
if (s_bPreventClosing)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (lParam)
|
if (lParam)
|
||||||
{
|
{
|
||||||
// check if another menu window is being activated
|
// check if another menu window is being activated
|
||||||
@@ -6388,16 +6404,8 @@ LRESULT CMenuContainer::OnActivate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOO
|
|||||||
|
|
||||||
if ((HWND)lParam==g_OwnerWindow || (HWND)lParam==g_TopWin7Menu)
|
if ((HWND)lParam==g_OwnerWindow || (HWND)lParam==g_TopWin7Menu)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (s_bPreventClosing && (::GetWindowLong((HWND)lParam,GWL_EXSTYLE)&WS_EX_TOPMOST))
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// a non-top-most window tries to activate while we are still here
|
|
||||||
if (s_bPreventClosing && (!g_TopWin7Menu || !s_bAllPrograms))
|
|
||||||
HideTemp(true);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (std::vector<CMenuContainer*>::reverse_iterator it=s_Menus.rbegin();it!=s_Menus.rend();++it)
|
for (std::vector<CMenuContainer*>::reverse_iterator it=s_Menus.rbegin();it!=s_Menus.rend();++it)
|
||||||
if ((*it)->m_hWnd && !(*it)->m_bDestroyed)
|
if ((*it)->m_hWnd && !(*it)->m_bDestroyed)
|
||||||
{
|
{
|
||||||
@@ -6405,7 +6413,6 @@ LRESULT CMenuContainer::OnActivate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOO
|
|||||||
(*it)->m_bClosing=true;
|
(*it)->m_bClosing=true;
|
||||||
}
|
}
|
||||||
if (g_TopWin7Menu && s_bAllPrograms) ::PostMessage(g_TopWin7Menu,WM_CLOSE,0,0);
|
if (g_TopWin7Menu && s_bAllPrograms) ::PostMessage(g_TopWin7Menu,WM_CLOSE,0,0);
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -6670,8 +6677,7 @@ bool CMenuContainer::GetDescription( int index, wchar_t *text, int size )
|
|||||||
{
|
{
|
||||||
if (SUCCEEDED(pLink->GetDescription(text,size)) && text[0])
|
if (SUCCEEDED(pLink->GetDescription(text,size)) && text[0])
|
||||||
return true;
|
return true;
|
||||||
wchar_t args[256];
|
if (jumpItem.bHasArguments)
|
||||||
if (SUCCEEDED(pLink->GetArguments(args,_countof(args))) && args[0])
|
|
||||||
{
|
{
|
||||||
// don't use default tip for items with arguments
|
// don't use default tip for items with arguments
|
||||||
Strcpy(text,size,item.name);
|
Strcpy(text,size,item.name);
|
||||||
@@ -6804,7 +6810,7 @@ LRESULT CMenuContainer::OnLButtonDblClick( UINT uMsg, WPARAM wParam, LPARAM lPar
|
|||||||
ClientToScreen(&pt);
|
ClientToScreen(&pt);
|
||||||
if (s_bWin7Style && item.id==MENU_PROGRAMS) // only single clicks for All Programs
|
if (s_bWin7Style && item.id==MENU_PROGRAMS) // only single clicks for All Programs
|
||||||
OnLButtonDown(WM_LBUTTONDOWN,wParam,lParam,bHandled);
|
OnLButtonDown(WM_LBUTTONDOWN,wParam,lParam,bHandled);
|
||||||
else if (!bArrow) // ignore double-click on the split arrow
|
else if (!bArrow && item.id!=MENU_APPS) // ignore double-click on the split arrow and Apps folder
|
||||||
ActivateItem(index,ACTIVATE_EXECUTE,&pt);
|
ActivateItem(index,ACTIVATE_EXECUTE,&pt);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -6828,7 +6834,7 @@ LRESULT CMenuContainer::OnLButtonUp( UINT uMsg, WPARAM wParam, LPARAM lParam, BO
|
|||||||
const MenuItem &item=m_Items[index];
|
const MenuItem &item=m_Items[index];
|
||||||
POINT pt2=pt;
|
POINT pt2=pt;
|
||||||
ClientToScreen(&pt2);
|
ClientToScreen(&pt2);
|
||||||
if (!item.bFolder)
|
if (!item.bFolder || (s_bSingleClickFolders && item.id!=MENU_PROGRAMS && item.id!=MENU_APPS && !bArrow)) // never open All Programs, Apps folder, or jumplists with single click
|
||||||
{
|
{
|
||||||
if (item.jumpIndex>=0 && m_bHotArrow)
|
if (item.jumpIndex>=0 && m_bHotArrow)
|
||||||
{
|
{
|
||||||
@@ -7329,8 +7335,9 @@ static void NewVersionCallback( VersionData &data )
|
|||||||
wchar_t cmdLine[1024];
|
wchar_t cmdLine[1024];
|
||||||
Sprintf(cmdLine,_countof(cmdLine),L"\"%s\" -popup",path);
|
Sprintf(cmdLine,_countof(cmdLine),L"\"%s\" -popup",path);
|
||||||
STARTUPINFO startupInfo={sizeof(startupInfo)};
|
STARTUPINFO startupInfo={sizeof(startupInfo)};
|
||||||
PROCESS_INFORMATION processInfo;
|
// don't display busy cursor as we are doing this on background
|
||||||
memset(&processInfo,0,sizeof(processInfo));
|
startupInfo.dwFlags=STARTF_FORCEOFFFEEDBACK;
|
||||||
|
PROCESS_INFORMATION processInfo{};
|
||||||
if (CreateProcess(path,cmdLine,NULL,NULL,TRUE,0,NULL,NULL,&startupInfo,&processInfo))
|
if (CreateProcess(path,cmdLine,NULL,NULL,TRUE,0,NULL,NULL,&startupInfo,&processInfo))
|
||||||
{
|
{
|
||||||
CloseHandle(processInfo.hThread);
|
CloseHandle(processInfo.hThread);
|
||||||
@@ -7406,35 +7413,46 @@ bool CMenuContainer::HasMoreResults( void )
|
|||||||
|
|
||||||
RECT CMenuContainer::CalculateWorkArea( const RECT &taskbarRect )
|
RECT CMenuContainer::CalculateWorkArea( const RECT &taskbarRect )
|
||||||
{
|
{
|
||||||
RECT rc=s_MenuLimits;
|
RECT rc;
|
||||||
if ((s_TaskBarEdge==ABE_LEFT || s_TaskBarEdge==ABE_RIGHT) && GetSettingBool(L"ShowNextToTaskbar"))
|
if (!GetSettingBool(L"AlignToWorkArea"))
|
||||||
|
{
|
||||||
|
rc = s_MenuLimits;
|
||||||
|
if ((s_TaskBarEdge == ABE_LEFT || s_TaskBarEdge == ABE_RIGHT) && GetSettingBool(L"ShowNextToTaskbar"))
|
||||||
{
|
{
|
||||||
// when the taskbar is on the side and the menu is not on top of it
|
// when the taskbar is on the side and the menu is not on top of it
|
||||||
// the start button is assumed at the top
|
// the start button is assumed at the top
|
||||||
if (s_TaskBarEdge==ABE_LEFT)
|
if (s_TaskBarEdge == ABE_LEFT)
|
||||||
rc.left=taskbarRect.right;
|
rc.left = taskbarRect.right;
|
||||||
else
|
else
|
||||||
rc.right=taskbarRect.left;
|
rc.right = taskbarRect.left;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (s_TaskBarEdge==ABE_BOTTOM)
|
if (s_TaskBarEdge == ABE_BOTTOM)
|
||||||
{
|
{
|
||||||
// taskbar is at the bottom
|
// taskbar is at the bottom
|
||||||
rc.bottom=taskbarRect.top;
|
rc.bottom = taskbarRect.top;
|
||||||
}
|
}
|
||||||
else if (s_TaskBarEdge==ABE_TOP)
|
else if (s_TaskBarEdge == ABE_TOP)
|
||||||
{
|
{
|
||||||
// taskbar is at the top
|
// taskbar is at the top
|
||||||
rc.top=taskbarRect.bottom;
|
rc.top = taskbarRect.bottom;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// taskbar is on the side, start button must be at the top
|
// taskbar is on the side, start button must be at the top
|
||||||
rc.top=s_StartRect.bottom;
|
rc.top = s_StartRect.bottom;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Get working area of the monitor the specified taskbar is on
|
||||||
|
MONITORINFO info{ sizeof(MONITORINFO) };
|
||||||
|
HMONITOR mon = MonitorFromRect(&taskbarRect, 0);
|
||||||
|
GetMonitorInfo(mon, &info);
|
||||||
|
rc = info.rcWork;
|
||||||
|
}
|
||||||
if (!s_bLockWorkArea)
|
if (!s_bLockWorkArea)
|
||||||
{
|
{
|
||||||
// exclude floating keyboard
|
// exclude floating keyboard
|
||||||
@@ -7460,6 +7478,32 @@ RECT CMenuContainer::CalculateWorkArea( const RECT &taskbarRect )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//calculate offsets
|
||||||
|
int xOff = GetSettingInt(L"HorizontalMenuOffset");
|
||||||
|
int yOff = GetSettingInt(L"VerticalMenuOffset");
|
||||||
|
if (s_TaskBarEdge == ABE_BOTTOM)
|
||||||
|
{
|
||||||
|
if (xOff != 0)
|
||||||
|
rc.left += xOff;
|
||||||
|
if (yOff != 0)
|
||||||
|
rc.bottom += yOff;
|
||||||
|
}
|
||||||
|
else if (s_TaskBarEdge == ABE_TOP || s_TaskBarEdge == ABE_LEFT)
|
||||||
|
{
|
||||||
|
if (xOff != 0)
|
||||||
|
rc.left += xOff;
|
||||||
|
if (yOff != 0)
|
||||||
|
rc.top += yOff;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (xOff != 0)
|
||||||
|
rc.right += xOff;
|
||||||
|
if (yOff != 0)
|
||||||
|
rc.top += yOff;
|
||||||
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7639,6 +7683,7 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
|
|||||||
g_ItemManager.ResetTempIcons();
|
g_ItemManager.ResetTempIcons();
|
||||||
s_ScrollMenus=GetSettingInt(L"ScrollType");
|
s_ScrollMenus=GetSettingInt(L"ScrollType");
|
||||||
s_bExpandLinks=GetSettingBool(L"ExpandFolderLinks");
|
s_bExpandLinks=GetSettingBool(L"ExpandFolderLinks");
|
||||||
|
s_bSingleClickFolders=GetSettingBool(L"SingleClickFolders");
|
||||||
s_bLogicalSort=GetSettingBool(L"NumericSort");
|
s_bLogicalSort=GetSettingBool(L"NumericSort");
|
||||||
s_MaxRecentDocuments=GetSettingInt(L"MaxRecentDocuments");
|
s_MaxRecentDocuments=GetSettingInt(L"MaxRecentDocuments");
|
||||||
s_ShellFormat=RegisterClipboardFormat(CFSTR_SHELLIDLIST);
|
s_ShellFormat=RegisterClipboardFormat(CFSTR_SHELLIDLIST);
|
||||||
@@ -7656,6 +7701,7 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
|
|||||||
s_bDisableHover=false;
|
s_bDisableHover=false;
|
||||||
s_bDragClosed=false;
|
s_bDragClosed=false;
|
||||||
s_bPendingSearchEnter=false;
|
s_bPendingSearchEnter=false;
|
||||||
|
s_bMoreResults=GetSettingBool(L"MoreResults");
|
||||||
InitTouchHelper();
|
InitTouchHelper();
|
||||||
|
|
||||||
bool bRemote=GetSystemMetrics(SM_REMOTESESSION)!=0;
|
bool bRemote=GetSystemMetrics(SM_REMOTESESSION)!=0;
|
||||||
@@ -7709,14 +7755,43 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
|
|||||||
|
|
||||||
s_bHasUpdates=(!bRemote || GetSettingBool(L"RemoteShutdown")) && GetSettingBool(L"CheckWinUpdates") && CheckForUpdates();
|
s_bHasUpdates=(!bRemote || GetSettingBool(L"RemoteShutdown")) && GetSettingBool(L"CheckWinUpdates") && CheckForUpdates();
|
||||||
|
|
||||||
|
// Check control panel options for power buttons
|
||||||
|
bool bHibernate = true, bSleep = true, bLock = true;
|
||||||
|
{
|
||||||
|
CRegKey regKeyButtons;
|
||||||
|
if (regKeyButtons.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FlyoutMenuSettings", KEY_READ) == ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
DWORD dwValue = 1;
|
||||||
|
if (regKeyButtons.QueryDWORDValue(L"ShowHibernateOption", dwValue) == ERROR_SUCCESS)
|
||||||
|
if (dwValue == 0)
|
||||||
|
bHibernate = false;
|
||||||
|
|
||||||
|
if (regKeyButtons.QueryDWORDValue(L"ShowLockOption", dwValue) == ERROR_SUCCESS)
|
||||||
|
if (dwValue == 0)
|
||||||
|
bLock = false;
|
||||||
|
|
||||||
|
if (regKeyButtons.QueryDWORDValue(L"ShowSleepOption", dwValue) == ERROR_SUCCESS)
|
||||||
|
if (dwValue == 0)
|
||||||
|
bSleep = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bHibernate || bSleep)
|
||||||
|
{
|
||||||
SYSTEM_POWER_CAPABILITIES powerCaps;
|
SYSTEM_POWER_CAPABILITIES powerCaps;
|
||||||
GetPwrCapabilities(&powerCaps);
|
GetPwrCapabilities(&powerCaps);
|
||||||
|
|
||||||
bool bHibernate=false;
|
// no sleep capabilities, turn off the sleep option
|
||||||
if (powerCaps.HiberFilePresent)
|
if (!(powerCaps.SystemS1 || powerCaps.SystemS2 || powerCaps.SystemS3 || powerCaps.AoAc))
|
||||||
{
|
{
|
||||||
bHibernate=true;
|
bSleep = false;
|
||||||
/* disabled for now, use group policy to hide Hibernate
|
}
|
||||||
|
|
||||||
|
// no hibernate capabilities, turn off hibernate option
|
||||||
|
if (!powerCaps.HiberFilePresent)
|
||||||
|
{
|
||||||
|
bHibernate = false;
|
||||||
|
/* disabled for now, use group policy to hide Hibernate
|
||||||
// disable hibernate if hybrid sleep (fast s4) is enabled
|
// disable hibernate if hybrid sleep (fast s4) is enabled
|
||||||
SYSTEM_POWER_STATUS status;
|
SYSTEM_POWER_STATUS status;
|
||||||
if (GetSystemPowerStatus(&status) && (status.ACLineStatus==0 || status.ACLineStatus==1))
|
if (GetSystemPowerStatus(&status) && (status.ACLineStatus==0 || status.ACLineStatus==1))
|
||||||
@@ -7731,6 +7806,7 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
|
|||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (int i=0;i<_countof(g_StdOptions);i++)
|
for (int i=0;i<_countof(g_StdOptions);i++)
|
||||||
{
|
{
|
||||||
@@ -7939,8 +8015,11 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
|
|||||||
g_StdOptions[i].options=MENU_ENABLED|MENU_EXPANDED;
|
g_StdOptions[i].options=MENU_ENABLED|MENU_EXPANDED;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case MENU_LOCK:
|
||||||
|
g_StdOptions[i].options=(bLock)?MENU_ENABLED|MENU_EXPANDED:0;
|
||||||
|
break;
|
||||||
case MENU_SLEEP:
|
case MENU_SLEEP:
|
||||||
g_StdOptions[i].options=(!s_bNoClose && (powerCaps.SystemS1 || powerCaps.SystemS2 || powerCaps.SystemS3 || powerCaps.AoAc))?MENU_ENABLED|MENU_EXPANDED:0;
|
g_StdOptions[i].options=(!s_bNoClose && bSleep)?MENU_ENABLED|MENU_EXPANDED:0;
|
||||||
break;
|
break;
|
||||||
case MENU_HIBERNATE:
|
case MENU_HIBERNATE:
|
||||||
g_StdOptions[i].options=(!s_bNoClose && bHibernate)?MENU_ENABLED|MENU_EXPANDED:0;
|
g_StdOptions[i].options=(!s_bNoClose && bHibernate)?MENU_ENABLED|MENU_EXPANDED:0;
|
||||||
@@ -7991,7 +8070,8 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT;
|
wchar_t path[_MAX_PATH];
|
||||||
|
Strcpy(path,_countof(path),GetSettingString(L"PinnedItemsPath"));
|
||||||
DoEnvironmentSubst(path,_countof(path));
|
DoEnvironmentSubst(path,_countof(path));
|
||||||
SHCreateDirectory(NULL,path);
|
SHCreateDirectory(NULL,path);
|
||||||
s_PinFolder=path;
|
s_PinFolder=path;
|
||||||
@@ -8003,7 +8083,8 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
|
|||||||
{
|
{
|
||||||
bool bPinned=GetSettingInt(L"PinnedPrograms")==PINNED_PROGRAMS_PINNED;
|
bool bPinned=GetSettingInt(L"PinnedPrograms")==PINNED_PROGRAMS_PINNED;
|
||||||
bool bShortcut=GetSettingBool(L"StartScreenShortcut");
|
bool bShortcut=GetSettingBool(L"StartScreenShortcut");
|
||||||
wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT L"\\" STARTSCREEN_COMMAND;
|
wchar_t path[_MAX_PATH];
|
||||||
|
Sprintf(path,_countof(path),L"%s\\%s",GetSettingString(L"PinnedItemsPath"),STARTSCREEN_COMMAND);
|
||||||
DoEnvironmentSubst(path,_countof(path));
|
DoEnvironmentSubst(path,_countof(path));
|
||||||
if (bPinned)
|
if (bPinned)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -876,6 +876,7 @@ private:
|
|||||||
static bool s_bNoDragDrop; // disables drag/drop
|
static bool s_bNoDragDrop; // disables drag/drop
|
||||||
static bool s_bNoContextMenu; // disables the context menu
|
static bool s_bNoContextMenu; // disables the context menu
|
||||||
static bool s_bExpandLinks; // expand links to folders
|
static bool s_bExpandLinks; // expand links to folders
|
||||||
|
static bool s_bSingleClickFolders; // open links to folders with one click instead of two
|
||||||
static bool s_bLogicalSort; // use StrCmpLogical instead of CompareString
|
static bool s_bLogicalSort; // use StrCmpLogical instead of CompareString
|
||||||
static bool s_bExtensionSort; // sort file names by extension
|
static bool s_bExtensionSort; // sort file names by extension
|
||||||
static bool s_bAllPrograms; // this is the All Programs menu of the Windows start menu
|
static bool s_bAllPrograms; // this is the All Programs menu of the Windows start menu
|
||||||
@@ -895,6 +896,7 @@ private:
|
|||||||
static bool s_bRightDrag; // dragging with the right mouse button
|
static bool s_bRightDrag; // dragging with the right mouse button
|
||||||
static bool s_bLockWorkArea; // changes to the work area are ignored
|
static bool s_bLockWorkArea; // changes to the work area are ignored
|
||||||
static bool s_bPendingSearchEnter; // Enter was pressed before the search results were ready
|
static bool s_bPendingSearchEnter; // Enter was pressed before the search results were ready
|
||||||
|
static bool s_bMoreResults; // shows the "Show More Results" item at the bottom of searches
|
||||||
static RECT s_MenuLimits; // area of the main monitor accessible to all menus
|
static RECT s_MenuLimits; // area of the main monitor accessible to all menus
|
||||||
static RECT s_MainMenuLimits; // area of the main monitor accessible by the main menu
|
static RECT s_MainMenuLimits; // area of the main monitor accessible by the main menu
|
||||||
static DWORD s_TaskbarState; // the state of the taskbar (ABS_AUTOHIDE and ABS_ALWAYSONTOP)
|
static DWORD s_TaskbarState; // the state of the taskbar (ABS_AUTOHIDE and ABS_ALWAYSONTOP)
|
||||||
@@ -957,7 +959,6 @@ private:
|
|||||||
friend LRESULT CALLBACK SubclassTopMenuProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
|
friend LRESULT CALLBACK SubclassTopMenuProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
|
||||||
friend HRESULT CreatePinLink( PCIDLIST_ABSOLUTE sourcePidl, const wchar_t *name, const wchar_t *iconPath, int iconIndex );
|
friend HRESULT CreatePinLink( PCIDLIST_ABSOLUTE sourcePidl, const wchar_t *name, const wchar_t *iconPath, int iconIndex );
|
||||||
|
|
||||||
static void HideTemp( bool bHide );
|
|
||||||
static void AddMRUShortcut( const wchar_t *path );
|
static void AddMRUShortcut( const wchar_t *path );
|
||||||
static void AddMRUAppId( const wchar_t *appid );
|
static void AddMRUAppId( const wchar_t *appid );
|
||||||
static void DeleteMRUShortcut( const wchar_t *path );
|
static void DeleteMRUShortcut( const wchar_t *path );
|
||||||
|
|||||||
@@ -2200,6 +2200,21 @@ void CMenuContainer::DrawBackground( HDC hdc, const RECT &drawRect )
|
|||||||
else
|
else
|
||||||
iconSize.cx=iconSize.cy=0;
|
iconSize.cx=iconSize.cy=0;
|
||||||
|
|
||||||
|
COLORREF color, shadowColor;
|
||||||
|
{
|
||||||
|
bool bHotColor = (bHot && !bSplit) || stateLeft > 0;
|
||||||
|
if (item.id == MENU_EMPTY || item.id == MENU_EMPTY_TOP)
|
||||||
|
{
|
||||||
|
color = settings.textColors[bHotColor ? 3 : 2];
|
||||||
|
shadowColor = settings.textShadowColors[bHotColor ? 3 : 2];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
color = settings.textColors[bHotColor ? 1 : 0];
|
||||||
|
shadowColor = settings.textShadowColors[bHotColor ? 1 : 0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// draw icon
|
// draw icon
|
||||||
if (drawType==MenuSkin::PROGRAMS_BUTTON || drawType==MenuSkin::PROGRAMS_BUTTON_NEW)
|
if (drawType==MenuSkin::PROGRAMS_BUTTON || drawType==MenuSkin::PROGRAMS_BUTTON_NEW)
|
||||||
{
|
{
|
||||||
@@ -2256,15 +2271,21 @@ void CMenuContainer::DrawBackground( HDC hdc, const RECT &drawRect )
|
|||||||
const CItemManager::IconInfo *pIcon=(settings.iconSize==MenuSkin::ICON_SIZE_LARGE)?item.pItemInfo->largeIcon:item.pItemInfo->smallIcon;
|
const CItemManager::IconInfo *pIcon=(settings.iconSize==MenuSkin::ICON_SIZE_LARGE)?item.pItemInfo->largeIcon:item.pItemInfo->smallIcon;
|
||||||
if (pIcon && pIcon->bitmap)
|
if (pIcon && pIcon->bitmap)
|
||||||
{
|
{
|
||||||
|
HBITMAP temp = ColorizeMonochromeImage(pIcon->bitmap, color);
|
||||||
|
HBITMAP bitmap = temp ? temp : pIcon->bitmap;
|
||||||
|
|
||||||
BITMAP info;
|
BITMAP info;
|
||||||
GetObject(pIcon->bitmap,sizeof(info),&info);
|
GetObject(bitmap,sizeof(info),&info);
|
||||||
HGDIOBJ bmp0=SelectObject(hdc2,pIcon->bitmap);
|
HGDIOBJ bmp0=SelectObject(hdc2,bitmap);
|
||||||
if (bmp0)
|
if (bmp0)
|
||||||
{
|
{
|
||||||
BLENDFUNCTION func={AC_SRC_OVER,0,255,AC_SRC_ALPHA};
|
BLENDFUNCTION func={AC_SRC_OVER,0,255,AC_SRC_ALPHA};
|
||||||
AlphaBlend(hdc,iconX,iconY,iconSize.cx,iconSize.cy,hdc2,0,0,info.bmWidth,info.bmHeight,func);
|
AlphaBlend(hdc,iconX,iconY,iconSize.cx,iconSize.cy,hdc2,0,0,info.bmWidth,info.bmHeight,func);
|
||||||
SelectObject(hdc2,bmp0);
|
SelectObject(hdc2,bmp0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (temp)
|
||||||
|
DeleteObject(temp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (item.id==MENU_SHUTDOWN_BUTTON && s_bHasUpdates && s_Skin.Shutdown_bitmap.GetBitmap())
|
else if (item.id==MENU_SHUTDOWN_BUTTON && s_bHasUpdates && s_Skin.Shutdown_bitmap.GetBitmap())
|
||||||
@@ -2287,18 +2308,6 @@ void CMenuContainer::DrawBackground( HDC hdc, const RECT &drawRect )
|
|||||||
|
|
||||||
// draw text
|
// draw text
|
||||||
SelectObject(hdc,settings.font);
|
SelectObject(hdc,settings.font);
|
||||||
COLORREF color, shadowColor;
|
|
||||||
bool bHotColor=(bHot && !bSplit) || stateLeft>0;
|
|
||||||
if (item.id==MENU_EMPTY || item.id==MENU_EMPTY_TOP)
|
|
||||||
{
|
|
||||||
color=settings.textColors[bHotColor?3:2];
|
|
||||||
shadowColor=settings.textShadowColors[bHotColor?3:2];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
color=settings.textColors[bHotColor?1:0];
|
|
||||||
shadowColor=settings.textShadowColors[bHotColor?1:0];
|
|
||||||
}
|
|
||||||
RECT rc={itemRect.left+settings.iconPadding.left+settings.iconPadding.right+settings.textPadding.left,itemRect.top+settings.textPadding.top,
|
RECT rc={itemRect.left+settings.iconPadding.left+settings.iconPadding.right+settings.textPadding.left,itemRect.top+settings.textPadding.top,
|
||||||
itemRect.right-settings.arrPadding.cx-settings.arrPadding.cy-settings.textPadding.right,itemRect.bottom-settings.textPadding.bottom};
|
itemRect.right-settings.arrPadding.cx-settings.arrPadding.cy-settings.textPadding.right,itemRect.bottom-settings.textPadding.bottom};
|
||||||
if (item.id==MENU_SHUTDOWN_BUTTON)
|
if (item.id==MENU_SHUTDOWN_BUTTON)
|
||||||
|
|||||||
@@ -301,21 +301,12 @@ bool CanUninstallMetroApp( const wchar_t *appid )
|
|||||||
// Uninstalls the app with the given id
|
// Uninstalls the app with the given id
|
||||||
void UninstallMetroApp( const wchar_t *appid )
|
void UninstallMetroApp( const wchar_t *appid )
|
||||||
{
|
{
|
||||||
CComPtr<IShellItem> pAppItem;
|
auto packageName = GetPackageFullName(appid);
|
||||||
if (SUCCEEDED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder2,0,appid,IID_IShellItem,(void**)&pAppItem)))
|
|
||||||
{
|
|
||||||
CComPtr<IPropertyStore> pStore;
|
|
||||||
pAppItem->BindToHandler(NULL,BHID_PropertyStore,IID_IPropertyStore,(void**)&pStore);
|
|
||||||
if (pStore)
|
|
||||||
{
|
|
||||||
CString packageName=GetPropertyStoreString(pStore,PKEY_MetroPackageName);
|
|
||||||
if (!packageName.IsEmpty())
|
if (!packageName.IsEmpty())
|
||||||
{
|
{
|
||||||
wchar_t command[1024];
|
wchar_t command[1024];
|
||||||
Sprintf(command,_countof(command),L"Remove-AppxPackage %s",packageName);
|
Sprintf(command, _countof(command), L"Remove-AppxPackage %s", packageName);
|
||||||
ShellExecute(NULL,L"open",L"powershell.exe",command,NULL,SW_HIDE);
|
ShellExecute(NULL, L"open", L"powershell.exe", command, NULL, SW_HIDE);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -381,3 +372,16 @@ bool IsEdgeDefaultBrowser( void )
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CString GetPackageFullName(const wchar_t* appId)
|
||||||
|
{
|
||||||
|
CComPtr<IShellItem> item;
|
||||||
|
if (SUCCEEDED(SHCreateItemInKnownFolder(FOLDERID_AppsFolder, 0, appId, IID_PPV_ARGS(&item))))
|
||||||
|
{
|
||||||
|
CComPtr<IPropertyStore> store;
|
||||||
|
if (SUCCEEDED(item->BindToHandler(nullptr, BHID_PropertyStore, IID_PPV_ARGS(&store))))
|
||||||
|
return GetPropertyStoreString(store, PKEY_MetroPackageName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|||||||
@@ -53,3 +53,6 @@ CComPtr<IContextMenu> GetMetroPinMenu( const wchar_t *appid );
|
|||||||
|
|
||||||
// Determines if Edge is the default browser
|
// Determines if Edge is the default browser
|
||||||
bool IsEdgeDefaultBrowser( void );
|
bool IsEdgeDefaultBrowser( void );
|
||||||
|
|
||||||
|
// Returns full package name for given App ID
|
||||||
|
CString GetPackageFullName(const wchar_t* appId);
|
||||||
|
|||||||
@@ -60,9 +60,9 @@ void CProgramsTree::Create( CMenuContainer *pOwner )
|
|||||||
HWND hWnd=CreateWindowEx(0,WC_TREEVIEW,NULL,WS_CHILD|TVS_EDITLABELS|TVS_FULLROWSELECT|(CMenuContainer::s_TipHideTime?TVS_INFOTIP:0)|TVS_NOHSCROLL|TVS_SHOWSELALWAYS|TVS_NONEVENHEIGHT,0,0,0,0,pOwner->m_hWnd,NULL,g_Instance,NULL);
|
HWND hWnd=CreateWindowEx(0,WC_TREEVIEW,NULL,WS_CHILD|TVS_EDITLABELS|TVS_FULLROWSELECT|(CMenuContainer::s_TipHideTime?TVS_INFOTIP:0)|TVS_NOHSCROLL|TVS_SHOWSELALWAYS|TVS_NONEVENHEIGHT,0,0,0,0,pOwner->m_hWnd,NULL,g_Instance,NULL);
|
||||||
TreeView_SetExtendedStyle(hWnd,TVS_EX_AUTOHSCROLL,TVS_EX_AUTOHSCROLL);
|
TreeView_SetExtendedStyle(hWnd,TVS_EX_AUTOHSCROLL,TVS_EX_AUTOHSCROLL);
|
||||||
const MenuSkin &skin=CMenuContainer::s_Skin;
|
const MenuSkin &skin=CMenuContainer::s_Skin;
|
||||||
m_TreeTheme=OpenThemeData(m_hWnd,L"treeview");
|
m_TreeTheme=OpenThemeData(hWnd,L"treeview");
|
||||||
if (skin.BHasScrollbar)
|
if (skin.BHasScrollbar)
|
||||||
m_ScrollTheme=OpenThemeData(m_hWnd,L"scrollbar");
|
m_ScrollTheme=OpenThemeData(hWnd,L"scrollbar");
|
||||||
|
|
||||||
const MenuSkin::ItemDrawSettings &settings=skin.ItemSettings[MenuSkin::PROGRAMS_TREE_ITEM];
|
const MenuSkin::ItemDrawSettings &settings=skin.ItemSettings[MenuSkin::PROGRAMS_TREE_ITEM];
|
||||||
|
|
||||||
@@ -1601,8 +1601,6 @@ HRESULT CProgramsTree::Drop( IDataObject *pDataObj, DWORD grfKeyState, POINTL pt
|
|||||||
CMenuContainer::s_bPreventClosing=true;
|
CMenuContainer::s_bPreventClosing=true;
|
||||||
m_pOwner->AddRef();
|
m_pOwner->AddRef();
|
||||||
pTarget->Drop(pDataObj,grfKeyState,pt,pdwEffect);
|
pTarget->Drop(pDataObj,grfKeyState,pt,pdwEffect);
|
||||||
if (!bOld)
|
|
||||||
CMenuContainer::HideTemp(false);
|
|
||||||
CMenuContainer::s_bPreventClosing=bOld;
|
CMenuContainer::s_bPreventClosing=bOld;
|
||||||
for (std::vector<CMenuContainer*>::iterator it=CMenuContainer::s_Menus.begin();it!=CMenuContainer::s_Menus.end();++it)
|
for (std::vector<CMenuContainer*>::iterator it=CMenuContainer::s_Menus.begin();it!=CMenuContainer::s_Menus.end();++it)
|
||||||
if (!(*it)->m_bDestroyed)
|
if (!(*it)->m_bDestroyed)
|
||||||
|
|||||||
@@ -139,18 +139,25 @@ void CSearchManager::CloseMenu( void )
|
|||||||
Lock lock(this,LOCK_DATA);
|
Lock lock(this,LOCK_DATA);
|
||||||
m_LastRequestId++;
|
m_LastRequestId++;
|
||||||
m_LastProgramsRequestId=m_LastRequestId;
|
m_LastProgramsRequestId=m_LastRequestId;
|
||||||
if (g_LogCategories&LOG_SEARCH)
|
if (g_LogCategories & LOG_SEARCH)
|
||||||
{
|
{
|
||||||
for (std::vector<SearchItem>::const_iterator it=m_ProgramItems.begin();it!=m_ProgramItems.end();++it)
|
for (const auto& item : m_ProgramItems)
|
||||||
{
|
{
|
||||||
if (it->category==CATEGORY_PROGRAM)
|
if (item.category == CATEGORY_PROGRAM)
|
||||||
LOG_MENU(LOG_SEARCH,L"Program: '%s', %d",it->name,it->rank);
|
LOG_MENU(LOG_SEARCH, L"Program: '%s', %d", item.name, item.rank);
|
||||||
}
|
}
|
||||||
std::sort(m_SettingsItems.begin(),m_SettingsItems.end());
|
|
||||||
for (std::vector<SearchItem>::const_iterator it=m_SettingsItems.begin();it!=m_SettingsItems.end();++it)
|
std::sort(m_SettingsItems.begin(), m_SettingsItems.end());
|
||||||
|
|
||||||
|
for (const auto& item : m_SettingsItems)
|
||||||
{
|
{
|
||||||
if (it->category==CATEGORY_SETTING)
|
if (item.category == CATEGORY_SETTING)
|
||||||
LOG_MENU(LOG_SEARCH,L"Setting: '%s', %d",it->name,it->rank);
|
LOG_MENU(LOG_SEARCH, L"Setting: '%s', %d", item.name, item.rank);
|
||||||
|
}
|
||||||
|
for (const auto& item : m_SettingsItems)
|
||||||
|
{
|
||||||
|
if (item.category == CATEGORY_METROSETTING)
|
||||||
|
LOG_MENU(LOG_SEARCH, L"MetroSetting: '%s', %d", item.name, item.rank);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_bProgramsFound)
|
if (m_bProgramsFound)
|
||||||
@@ -170,6 +177,7 @@ void CSearchManager::CloseMenu( void )
|
|||||||
m_SettingsItems.clear();
|
m_SettingsItems.clear();
|
||||||
m_SettingsHash=FNV_HASH0;
|
m_SettingsHash=FNV_HASH0;
|
||||||
m_bSettingsFound=false;
|
m_bSettingsFound=false;
|
||||||
|
m_bMetroSettingsFound = false;
|
||||||
|
|
||||||
m_IndexedItems.clear();
|
m_IndexedItems.clear();
|
||||||
m_AutoCompleteItems.clear();
|
m_AutoCompleteItems.clear();
|
||||||
@@ -310,7 +318,9 @@ bool CSearchManager::AddSearchItem( IShellItem *pItem, const wchar_t *name, int
|
|||||||
PROPVARIANT val;
|
PROPVARIANT val;
|
||||||
PropVariantInit(&val);
|
PropVariantInit(&val);
|
||||||
pItem2->GetProperty(PKEY_Keywords,&val);
|
pItem2->GetProperty(PKEY_Keywords,&val);
|
||||||
wchar_t keywords[1024];
|
if (val.vt==VT_EMPTY)
|
||||||
|
pItem2->GetProperty(PKEY_HighKeywords,&val);
|
||||||
|
wchar_t keywords[2048];
|
||||||
int len=0;
|
int len=0;
|
||||||
if (val.vt==VT_BSTR || val.vt==VT_LPWSTR)
|
if (val.vt==VT_BSTR || val.vt==VT_LPWSTR)
|
||||||
{
|
{
|
||||||
@@ -334,7 +344,7 @@ bool CSearchManager::AddSearchItem( IShellItem *pItem, const wchar_t *name, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
Lock lock(this,LOCK_DATA);
|
Lock lock(this,LOCK_DATA);
|
||||||
if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING)
|
if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING || category==CATEGORY_METROSETTING)
|
||||||
{
|
{
|
||||||
if (searchRequest.requestId<m_LastProgramsRequestId)
|
if (searchRequest.requestId<m_LastProgramsRequestId)
|
||||||
return false;
|
return false;
|
||||||
@@ -345,10 +355,10 @@ bool CSearchManager::AddSearchItem( IShellItem *pItem, const wchar_t *name, int
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
bool res=true;
|
bool res=true;
|
||||||
if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING)
|
if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING || category==CATEGORY_METROSETTING)
|
||||||
{
|
{
|
||||||
std::vector<SearchItem> &items=(category==CATEGORY_PROGRAM)?m_ProgramItems:m_SettingsItems;
|
std::vector<SearchItem> &items=(category==CATEGORY_PROGRAM)?m_ProgramItems:m_SettingsItems;
|
||||||
if (category==CATEGORY_SETTING)
|
if (category==CATEGORY_SETTING || category==CATEGORY_METROSETTING)
|
||||||
{
|
{
|
||||||
// remove duplicate settings
|
// remove duplicate settings
|
||||||
for (std::vector<SearchItem>::const_iterator it=items.begin();it!=items.end();++it)
|
for (std::vector<SearchItem>::const_iterator it=items.begin();it!=items.end();++it)
|
||||||
@@ -381,6 +391,8 @@ bool CSearchManager::AddSearchItem( IShellItem *pItem, const wchar_t *name, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
items.push_back(item);
|
items.push_back(item);
|
||||||
|
if (item.category==CATEGORY_METROSETTING)
|
||||||
|
m_bMetroSettingsFound=true;
|
||||||
}
|
}
|
||||||
else if (category==CATEGORY_AUTOCOMPLETE)
|
else if (category==CATEGORY_AUTOCOMPLETE)
|
||||||
{
|
{
|
||||||
@@ -409,7 +421,7 @@ void CSearchManager::CollectSearchItems( IShellItem *pFolder, int flags, TItemCa
|
|||||||
CComPtr<IShellItem> pChild;
|
CComPtr<IShellItem> pChild;
|
||||||
while (pChild=NULL,pEnum->Next(1,&pChild,NULL)==S_OK)
|
while (pChild=NULL,pEnum->Next(1,&pChild,NULL)==S_OK)
|
||||||
{
|
{
|
||||||
if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING)
|
if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING || category==CATEGORY_METROSETTING)
|
||||||
{
|
{
|
||||||
if (searchRequest.requestId<m_LastProgramsRequestId)
|
if (searchRequest.requestId<m_LastProgramsRequestId)
|
||||||
break;
|
break;
|
||||||
@@ -428,7 +440,7 @@ void CSearchManager::CollectSearchItems( IShellItem *pFolder, int flags, TItemCa
|
|||||||
{
|
{
|
||||||
// go into subfolders but not archives or links to folders
|
// go into subfolders but not archives or links to folders
|
||||||
CollectSearchItems(pChild,flags,category,searchRequest);
|
CollectSearchItems(pChild,flags,category,searchRequest);
|
||||||
if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING)
|
if (category==CATEGORY_PROGRAM || category==CATEGORY_SETTING || category==CATEGORY_METROSETTING)
|
||||||
{
|
{
|
||||||
if (searchRequest.requestId<m_LastProgramsRequestId)
|
if (searchRequest.requestId<m_LastProgramsRequestId)
|
||||||
break;
|
break;
|
||||||
@@ -514,7 +526,7 @@ bool CSearchManager::SearchScope::ParseSearchConnector( const wchar_t *fname )
|
|||||||
CComPtr<IXMLDOMNode> pNext;
|
CComPtr<IXMLDOMNode> pNext;
|
||||||
if (pScopeItem->get_nextSibling(&pNext)!=S_OK)
|
if (pScopeItem->get_nextSibling(&pNext)!=S_OK)
|
||||||
break;
|
break;
|
||||||
pScopeItem=pNext;
|
pScopeItem=std::move(pNext);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -627,7 +639,8 @@ void CSearchManager::SearchThread( void )
|
|||||||
// pinned folder
|
// pinned folder
|
||||||
if (searchRequest.bPinnedFolder)
|
if (searchRequest.bPinnedFolder)
|
||||||
{
|
{
|
||||||
wchar_t path[_MAX_PATH]=START_MENU_PINNED_ROOT;
|
wchar_t path[_MAX_PATH];
|
||||||
|
Strcpy(path,_countof(path),GetSettingString(L"PinnedItemsPath"));
|
||||||
DoEnvironmentSubst(path,_MAX_PATH);
|
DoEnvironmentSubst(path,_MAX_PATH);
|
||||||
CComPtr<IShellItem> pFolder;
|
CComPtr<IShellItem> pFolder;
|
||||||
if (SUCCEEDED(SHCreateItemFromParsingName(path,NULL,IID_IShellItem,(void**)&pFolder)))
|
if (SUCCEEDED(SHCreateItemFromParsingName(path,NULL,IID_IShellItem,(void**)&pFolder)))
|
||||||
@@ -670,7 +683,7 @@ void CSearchManager::SearchThread( void )
|
|||||||
if (GetWinVersion()>=WIN_VER_WIN8 && searchRequest.bSearchMetroApps)
|
if (GetWinVersion()>=WIN_VER_WIN8 && searchRequest.bSearchMetroApps)
|
||||||
{
|
{
|
||||||
std::vector<MetroLink> links;
|
std::vector<MetroLink> links;
|
||||||
GetMetroLinks(links,false);
|
GetMetroLinks(links,true);
|
||||||
for (std::vector<MetroLink>::const_iterator it=links.begin();it!=links.end();++it)
|
for (std::vector<MetroLink>::const_iterator it=links.begin();it!=links.end();++it)
|
||||||
{
|
{
|
||||||
if (GetWinVersion()<WIN_VER_WIN10)
|
if (GetWinVersion()<WIN_VER_WIN10)
|
||||||
@@ -733,6 +746,14 @@ void CSearchManager::SearchThread( void )
|
|||||||
if (searchRequest.requestId<m_LastProgramsRequestId)
|
if (searchRequest.requestId<m_LastProgramsRequestId)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (searchRequest.bSearchMetroSettings)
|
||||||
|
{
|
||||||
|
CComPtr<IShellItem> pFolder;
|
||||||
|
if (SUCCEEDED(SHCreateItemFromParsingName(L"shell:::{82E749ED-B971-4550-BAF7-06AA2BF7E836}",NULL,IID_IShellItem,(void**)&pFolder)))
|
||||||
|
CollectSearchItems(pFolder,(searchRequest.bSearchKeywords?COLLECT_KEYWORDS:0)|COLLECT_NOREFRESH,CATEGORY_METROSETTING,searchRequest);
|
||||||
|
if (searchRequest.requestId<m_LastProgramsRequestId)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
bool bRefresh=false;
|
bool bRefresh=false;
|
||||||
{
|
{
|
||||||
@@ -778,9 +799,9 @@ void CSearchManager::SearchThread( void )
|
|||||||
CSession session;
|
CSession session;
|
||||||
if (SUCCEEDED(dataSource.OpenFromInitializationString(L"provider=Search.CollatorDSO.1;EXTENDED PROPERTIES=\"Application=Windows\"")) && SUCCEEDED(session.Open(dataSource)))
|
if (SUCCEEDED(dataSource.OpenFromInitializationString(L"provider=Search.CollatorDSO.1;EXTENDED PROPERTIES=\"Application=Windows\"")) && SUCCEEDED(session.Open(dataSource)))
|
||||||
{
|
{
|
||||||
std::list<SearchScope> scopeList;
|
std::vector<SearchScope> scopeList;
|
||||||
|
|
||||||
if (searchRequest.bSearchMetroSettings)
|
if (searchRequest.bSearchMetroSettings && !m_bMetroSettingsFound)
|
||||||
{
|
{
|
||||||
scopeList.push_back(SearchScope());
|
scopeList.push_back(SearchScope());
|
||||||
SearchScope &scope=*scopeList.rbegin();
|
SearchScope &scope=*scopeList.rbegin();
|
||||||
@@ -1084,7 +1105,7 @@ void CSearchManager::SearchThread( void )
|
|||||||
command0.Close();
|
command0.Close();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (std::list<SearchScope>::iterator it=scopeList.begin();it!=scopeList.end();++it)
|
for (auto it=scopeList.begin();it!=scopeList.end();++it)
|
||||||
{
|
{
|
||||||
if (it->roots.empty())
|
if (it->roots.empty())
|
||||||
continue;
|
continue;
|
||||||
@@ -1102,7 +1123,7 @@ void CSearchManager::SearchThread( void )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
len+=Strcpy(query+len,_countof(query)-len,L" AND System.Search.Store='FILE' AND System.ItemType!='.settingcontent-ms'");
|
len+=Strcpy(query+len,_countof(query)-len,L" AND System.Search.Store='FILE' AND System.ItemType!='.settingcontent-ms'");
|
||||||
for (std::list<SearchScope>::iterator it2=scopeList.begin();it2!=it;++it2)
|
for (auto it2=scopeList.begin();it2!=it;++it2)
|
||||||
{
|
{
|
||||||
if (it2->categoryHash==CATEGORY_METROSETTING)
|
if (it2->categoryHash==CATEGORY_METROSETTING)
|
||||||
continue;
|
continue;
|
||||||
@@ -1240,7 +1261,7 @@ void CSearchManager::SearchThread( void )
|
|||||||
Lock lock(this,LOCK_DATA);
|
Lock lock(this,LOCK_DATA);
|
||||||
m_IndexedItems.push_back(SearchCategory());
|
m_IndexedItems.push_back(SearchCategory());
|
||||||
pCategory=&*m_IndexedItems.rbegin();
|
pCategory=&*m_IndexedItems.rbegin();
|
||||||
pCategory->name.Format(L"%s (%d)",it->name,it->resultCount);
|
pCategory->name=it->name;
|
||||||
pCategory->categoryHash=it->categoryHash;
|
pCategory->categoryHash=it->categoryHash;
|
||||||
pCategory->search.Clone(it->search);
|
pCategory->search.Clone(it->search);
|
||||||
}
|
}
|
||||||
@@ -1348,6 +1369,7 @@ void CSearchManager::GetSearchResults( SearchResults &results )
|
|||||||
{
|
{
|
||||||
results.programs.clear();
|
results.programs.clear();
|
||||||
results.settings.clear();
|
results.settings.clear();
|
||||||
|
results.metrosettings.clear();
|
||||||
results.indexed.clear();
|
results.indexed.clear();
|
||||||
results.autocomplete.clear();
|
results.autocomplete.clear();
|
||||||
results.autoCompletePath.Empty();
|
results.autoCompletePath.Empty();
|
||||||
@@ -1397,14 +1419,19 @@ void CSearchManager::GetSearchResults( SearchResults &results )
|
|||||||
std::vector<SearchItem> &settings=m_bSettingsFound?m_SettingsItems:m_SettingsItemsOld;
|
std::vector<SearchItem> &settings=m_bSettingsFound?m_SettingsItems:m_SettingsItemsOld;
|
||||||
for (std::vector<SearchItem>::iterator it=settings.begin();it!=settings.end();++it)
|
for (std::vector<SearchItem>::iterator it=settings.begin();it!=settings.end();++it)
|
||||||
{
|
{
|
||||||
int match=(it->category==CATEGORY_SETTING)?it->MatchText(m_SearchText,bSearchSubWord):0;
|
int match=(it->category==CATEGORY_SETTING || it->category==CATEGORY_METROSETTING)?it->MatchText(m_SearchText,bSearchSubWord):0;
|
||||||
it->rank=(it->rank&0xFFFFFFFE)|(match>>1);
|
it->rank=(it->rank&0xFFFFFFFE)|(match>>1);
|
||||||
}
|
}
|
||||||
std::sort(settings.begin(),settings.end());
|
std::sort(settings.begin(),settings.end());
|
||||||
for (std::vector<SearchItem>::const_iterator it=settings.begin();it!=settings.end();++it)
|
for (std::vector<SearchItem>::const_iterator it=settings.begin();it!=settings.end();++it)
|
||||||
{
|
{
|
||||||
if (it->category==CATEGORY_SETTING && it->MatchText(m_SearchText,bSearchSubWord))
|
if (it->MatchText(m_SearchText, bSearchSubWord))
|
||||||
|
{
|
||||||
|
if (it->category==CATEGORY_SETTING)
|
||||||
results.settings.push_back(it->pInfo);
|
results.settings.push_back(it->pInfo);
|
||||||
|
if (it->category==CATEGORY_METROSETTING)
|
||||||
|
results.metrosettings.push_back(it->pInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1423,7 +1450,7 @@ void CSearchManager::GetSearchResults( SearchResults &results )
|
|||||||
results.autocomplete.push_back(it->pInfo);
|
results.autocomplete.push_back(it->pInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
results.bResults=(!results.programs.empty() || !results.settings.empty() || !results.indexed.empty() || !results.autocomplete.empty());
|
results.bResults=(!results.programs.empty() || !results.settings.empty() || !results.metrosettings.empty() || !results.indexed.empty() || !results.autocomplete.empty());
|
||||||
results.bSearching=(m_LastCompletedId!=m_LastRequestId);
|
results.bSearching=(m_LastCompletedId!=m_LastRequestId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public:
|
|||||||
|
|
||||||
struct SearchCategory
|
struct SearchCategory
|
||||||
{
|
{
|
||||||
SearchCategory( void ) {}
|
SearchCategory( void ) = default;
|
||||||
SearchCategory( const SearchCategory &cat )
|
SearchCategory( const SearchCategory &cat )
|
||||||
{
|
{
|
||||||
search.Clone(cat.search);
|
search.Clone(cat.search);
|
||||||
@@ -63,6 +63,7 @@ public:
|
|||||||
CString autoCompletePath;
|
CString autoCompletePath;
|
||||||
std::vector<const CItemManager::ItemInfo*> programs;
|
std::vector<const CItemManager::ItemInfo*> programs;
|
||||||
std::vector<const CItemManager::ItemInfo*> settings;
|
std::vector<const CItemManager::ItemInfo*> settings;
|
||||||
|
std::vector<const CItemManager::ItemInfo*> metrosettings;
|
||||||
std::vector<const CItemManager::ItemInfo*> autocomplete;
|
std::vector<const CItemManager::ItemInfo*> autocomplete;
|
||||||
std::list<SearchCategory> indexed;
|
std::list<SearchCategory> indexed;
|
||||||
};
|
};
|
||||||
@@ -149,6 +150,7 @@ private:
|
|||||||
unsigned int m_SettingsHashOld;
|
unsigned int m_SettingsHashOld;
|
||||||
bool m_bProgramsFound;
|
bool m_bProgramsFound;
|
||||||
bool m_bSettingsFound;
|
bool m_bSettingsFound;
|
||||||
|
bool m_bMetroSettingsFound = false;
|
||||||
std::vector<SearchItem> m_AutoCompleteItems;
|
std::vector<SearchItem> m_AutoCompleteItems;
|
||||||
std::list<SearchCategory> m_IndexedItems;
|
std::list<SearchCategory> m_IndexedItems;
|
||||||
std::vector<ItemRank> m_ItemRanks;
|
std::vector<ItemRank> m_ItemRanks;
|
||||||
|
|||||||
@@ -1001,7 +1001,7 @@ static const CStdCommand g_StdCommands[]={
|
|||||||
{L"settings",IDS_SETTINGS_ITEM,IDS_SETTINGS_MENU_TIP,L"SettingsMenu",L"$Menu.Settings",L"",L"shell32.dll,330"},
|
{L"settings",IDS_SETTINGS_ITEM,IDS_SETTINGS_MENU_TIP,L"SettingsMenu",L"$Menu.Settings",L"",L"shell32.dll,330"},
|
||||||
{L"search",IDS_SEARCH_MENU_ITEM,IDS_SEARCH_TIP,L"SearchMenu",L"$Menu.Search",L"",L"shell32.dll,323"},
|
{L"search",IDS_SEARCH_MENU_ITEM,IDS_SEARCH_TIP,L"SearchMenu",L"$Menu.Search",L"",L"shell32.dll,323"},
|
||||||
{L"search_box",IDS_SEARCH_BOX_ITEM,IDS_SEARCH_BOX_TIP,L"SearchBoxItem",L"$Menu.SearchBox",NULL,L"none",NULL,StdMenuItem::MENU_TRACK|StdMenuItem::MENU_OPENUP},
|
{L"search_box",IDS_SEARCH_BOX_ITEM,IDS_SEARCH_BOX_TIP,L"SearchBoxItem",L"$Menu.SearchBox",NULL,L"none",NULL,StdMenuItem::MENU_TRACK|StdMenuItem::MENU_OPENUP},
|
||||||
{L"help",IDS_HELP_ITEM,IDS_HELP_TIP,L"HelpItem",L"$Menu.Help",L"$Menu.HelpTip",L"shell32.dll,324"},
|
{L"help",IDS_HELP_ITEM,IDS_HELP_TIP,L"HelpItem",L"$Menu.Help",L"$Menu.HelpTip",L"imageres.dll,99"},
|
||||||
{L"run",IDS_RUN_ITEM,IDS_RUN_TIP,L"RunItem",L"$Menu.Run",L"$Menu.RunTip",L"shell32.dll,328"},
|
{L"run",IDS_RUN_ITEM,IDS_RUN_TIP,L"RunItem",L"$Menu.Run",L"$Menu.RunTip",L"shell32.dll,328"},
|
||||||
{L"logoff",IDS_SHUTDOWN_LOGOFF,IDS_LOGOFF_TIP,L"LogOffItem",L"$Menu.Logoff",L"$Menu.LogOffTip",L"shell32.dll,325",NULL,StdMenuItem::MENU_STYLE_CLASSIC1},
|
{L"logoff",IDS_SHUTDOWN_LOGOFF,IDS_LOGOFF_TIP,L"LogOffItem",L"$Menu.Logoff",L"$Menu.LogOffTip",L"shell32.dll,325",NULL,StdMenuItem::MENU_STYLE_CLASSIC1},
|
||||||
{L"logoff",IDS_SHUTDOWN_LOGOFF,IDS_LOGOFF_TIP,L"LogOffItem",L"$Menu.Logoff",L"$Menu.LogOffTip",L"none",NULL,StdMenuItem::MENU_STYLE_CLASSIC2},
|
{L"logoff",IDS_SHUTDOWN_LOGOFF,IDS_LOGOFF_TIP,L"LogOffItem",L"$Menu.Logoff",L"$Menu.LogOffTip",L"none",NULL,StdMenuItem::MENU_STYLE_CLASSIC2},
|
||||||
@@ -1057,7 +1057,7 @@ L"RecentDocumentsItem.Label=$Menu.Documents\n"
|
|||||||
L"RecentDocumentsItem.Icon=shell32.dll,327\n"
|
L"RecentDocumentsItem.Icon=shell32.dll,327\n"
|
||||||
L"RecentDocumentsItem.Settings=ITEMS_FIRST\n"
|
L"RecentDocumentsItem.Settings=ITEMS_FIRST\n"
|
||||||
L"SettingsMenu.Command=settings\n"
|
L"SettingsMenu.Command=settings\n"
|
||||||
L"SettingsMenu.Items=ControlPanelItem, PCSettingsItem, SEPARATOR, SecurityItem, NetworkItem, PrintersItem, TaskbarSettingsItem, ProgramsFeaturesItem, SEPARATOR, MenuSettingsItem\n"
|
L"SettingsMenu.Items=PCSettingsItem, ControlPanelItem, SEPARATOR, SecurityItem, NetworkItem, PrintersItem, TaskbarSettingsItem, ProgramsFeaturesItem, SEPARATOR, MenuSettingsItem\n"
|
||||||
L"SettingsMenu.Label=$Menu.Settings\n"
|
L"SettingsMenu.Label=$Menu.Settings\n"
|
||||||
L"SettingsMenu.Icon=shell32.dll,330\n"
|
L"SettingsMenu.Icon=shell32.dll,330\n"
|
||||||
L"SearchMenu.Command=search\n"
|
L"SearchMenu.Command=search\n"
|
||||||
@@ -1068,7 +1068,7 @@ L"ComputerItem.Command=computer\n"
|
|||||||
L"HelpItem.Command=help\n"
|
L"HelpItem.Command=help\n"
|
||||||
L"HelpItem.Label=$Menu.Help\n"
|
L"HelpItem.Label=$Menu.Help\n"
|
||||||
L"HelpItem.Tip=$Menu.HelpTip\n"
|
L"HelpItem.Tip=$Menu.HelpTip\n"
|
||||||
L"HelpItem.Icon=shell32.dll,324\n"
|
L"HelpItem.Icon=imageres.dll,99\n"
|
||||||
L"RunItem.Command=run\n"
|
L"RunItem.Command=run\n"
|
||||||
L"RunItem.Label=$Menu.Run\n"
|
L"RunItem.Label=$Menu.Run\n"
|
||||||
L"RunItem.Tip=$Menu.RunTip\n"
|
L"RunItem.Tip=$Menu.RunTip\n"
|
||||||
@@ -1183,7 +1183,7 @@ L"ShutdownItem.Icon=none\n"
|
|||||||
;
|
;
|
||||||
|
|
||||||
const wchar_t *g_DefaultStartMenu2=
|
const wchar_t *g_DefaultStartMenu2=
|
||||||
L"Items=COLUMN_PADDING, ProgramsMenu, AppsMenu, SearchBoxItem, COLUMN_BREAK, FavoritesItem, UserFilesItem, UserDocumentsItem, UserPicturesItem, ComputerItem, RecentDocumentsItem, SEPARATOR, ControlPanelItem, PCSettingsItem, SecurityItem, NetworkItem, PrintersItem, SEPARATOR, SearchMenu, HelpItem, RunItem, COLUMN_PADDING, SEPARATOR, ShutdownBoxItem\n"
|
L"Items=COLUMN_PADDING, ProgramsMenu, AppsMenu, SearchBoxItem, COLUMN_BREAK, FavoritesItem, UserFilesItem, UserDocumentsItem, UserPicturesItem, ComputerItem, RecentDocumentsItem, SEPARATOR, PCSettingsItem, ControlPanelItem, SecurityItem, NetworkItem, PrintersItem, SEPARATOR, SearchMenu, HelpItem, RunItem, COLUMN_PADDING, SEPARATOR, ShutdownBoxItem\n"
|
||||||
L"ProgramsMenu.Command=programs\n"
|
L"ProgramsMenu.Command=programs\n"
|
||||||
L"ProgramsMenu.Label=$Menu.Programs\n"
|
L"ProgramsMenu.Label=$Menu.Programs\n"
|
||||||
L"ProgramsMenu.Icon=shell32.dll,326\n"
|
L"ProgramsMenu.Icon=shell32.dll,326\n"
|
||||||
@@ -1203,7 +1203,7 @@ L"SearchMenu.Icon=shell32.dll,323\n"
|
|||||||
L"HelpItem.Command=help\n"
|
L"HelpItem.Command=help\n"
|
||||||
L"HelpItem.Label=$Menu.Help\n"
|
L"HelpItem.Label=$Menu.Help\n"
|
||||||
L"HelpItem.Tip=$Menu.HelpTip\n"
|
L"HelpItem.Tip=$Menu.HelpTip\n"
|
||||||
L"HelpItem.Icon=shell32.dll,324\n"
|
L"HelpItem.Icon=imageres.dll,99\n"
|
||||||
L"RunItem.Command=run\n"
|
L"RunItem.Command=run\n"
|
||||||
L"RunItem.Label=$Menu.Run\n"
|
L"RunItem.Label=$Menu.Run\n"
|
||||||
L"RunItem.Tip=$Menu.RunTip\n"
|
L"RunItem.Tip=$Menu.RunTip\n"
|
||||||
@@ -1379,9 +1379,9 @@ L"Item13.Settings=ITEM_DISABLED\n"
|
|||||||
L"Item14.Command=network_connections\n"
|
L"Item14.Command=network_connections\n"
|
||||||
L"Item14.Settings=ITEM_DISABLED\n"
|
L"Item14.Settings=ITEM_DISABLED\n"
|
||||||
L"Item15.Command=separator\n"
|
L"Item15.Command=separator\n"
|
||||||
L"Item16.Command=control_panel\n"
|
L"Item16.Command=pc_settings\n"
|
||||||
L"Item16.Settings=TRACK_RECENT\n"
|
L"Item16.Settings=TRACK_RECENT\n"
|
||||||
L"Item17.Command=pc_settings\n"
|
L"Item17.Command=control_panel\n"
|
||||||
L"Item17.Settings=TRACK_RECENT\n"
|
L"Item17.Settings=TRACK_RECENT\n"
|
||||||
L"Item18.Command=admin\n"
|
L"Item18.Command=admin\n"
|
||||||
L"Item18.Settings=TRACK_RECENT|ITEM_DISABLED\n"
|
L"Item18.Settings=TRACK_RECENT|ITEM_DISABLED\n"
|
||||||
@@ -1742,7 +1742,7 @@ LRESULT CEditMenuDlg::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO
|
|||||||
{
|
{
|
||||||
wchar_t text[_MAX_PATH];
|
wchar_t text[_MAX_PATH];
|
||||||
GetDlgItemText(IDC_COMBOLINK,text,_countof(text));
|
GetDlgItemText(IDC_COMBOLINK,text,_countof(text));
|
||||||
if (BrowseLinkHelper(m_hWnd,text))
|
if (BrowseLinkHelper(m_hWnd,text,false))
|
||||||
{
|
{
|
||||||
SetDlgItemText(IDC_COMBOLINK,text);
|
SetDlgItemText(IDC_COMBOLINK,text);
|
||||||
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOLINK,CBN_KILLFOCUS));
|
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOLINK,CBN_KILLFOCUS));
|
||||||
@@ -2437,7 +2437,7 @@ LRESULT CEditMenuDlg7::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl, B
|
|||||||
{
|
{
|
||||||
wchar_t text[_MAX_PATH];
|
wchar_t text[_MAX_PATH];
|
||||||
GetDlgItemText(IDC_EDITLINK2,text,_countof(text));
|
GetDlgItemText(IDC_EDITLINK2,text,_countof(text));
|
||||||
if (BrowseLinkHelper(m_hWnd,text))
|
if (BrowseLinkHelper(m_hWnd,text,false))
|
||||||
{
|
{
|
||||||
SetDlgItemText(IDC_EDITLINK2,text);
|
SetDlgItemText(IDC_EDITLINK2,text);
|
||||||
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_EDITLINK2,EN_KILLFOCUS));
|
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_EDITLINK2,EN_KILLFOCUS));
|
||||||
@@ -2725,8 +2725,11 @@ void CCustomMenuDlg7::CItemList::UpdateItem( int index )
|
|||||||
str=LoadStringEx(IDS_ITEM_SHOW2);
|
str=LoadStringEx(IDS_ITEM_SHOW2);
|
||||||
else if ((menuItem.settings&StdMenuItem::MENU_NOEXPAND) && !(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_FOLDER))
|
else if ((menuItem.settings&StdMenuItem::MENU_NOEXPAND) && !(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_FOLDER))
|
||||||
str=LoadStringEx(IDS_ITEM_SHOW);
|
str=LoadStringEx(IDS_ITEM_SHOW);
|
||||||
else if ((menuItem.settings&StdMenuItem::MENU_SINGLE_EXPAND) && (g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_COMPUTER))
|
else if ((menuItem.settings&StdMenuItem::MENU_SINGLE_EXPAND) && !(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_NODRIVES))
|
||||||
|
if (g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_COMPUTER)
|
||||||
str=LoadStringEx(IDS_ITEM_DRIVES);
|
str=LoadStringEx(IDS_ITEM_DRIVES);
|
||||||
|
else
|
||||||
|
str=LoadStringEx(IDS_ITEM_LINKS);
|
||||||
else
|
else
|
||||||
str=LoadStringEx(IDS_ITEM_MENU);
|
str=LoadStringEx(IDS_ITEM_MENU);
|
||||||
ListView_SetItemText(m_hWnd,index,2,(wchar_t*)(const wchar_t*)str);
|
ListView_SetItemText(m_hWnd,index,2,(wchar_t*)(const wchar_t*)str);
|
||||||
@@ -3155,13 +3158,12 @@ LRESULT CCustomMenuDlg7::CItemList::OnSelEndOk( WORD wNotifyCode, WORD wID, HWND
|
|||||||
if (m_Column==2)
|
if (m_Column==2)
|
||||||
{
|
{
|
||||||
// state
|
// state
|
||||||
CString str;
|
|
||||||
menuItem.settings&=~CEditMenuDlg7::SETTINGS_MASK;
|
menuItem.settings&=~CEditMenuDlg7::SETTINGS_MASK;
|
||||||
if (sel==0)
|
if (sel==0)
|
||||||
menuItem.settings|=StdMenuItem::MENU_ITEM_DISABLED;
|
menuItem.settings|=StdMenuItem::MENU_ITEM_DISABLED;
|
||||||
else if (sel==1 && !(g_StdCommands7[menuItem.stdItemIndex].flags&(CStdCommand7::ITEM_SINGLE|CStdCommand7::ITEM_FOLDER)))
|
else if (sel==1 && !(g_StdCommands7[menuItem.stdItemIndex].flags&(CStdCommand7::ITEM_SINGLE|CStdCommand7::ITEM_FOLDER)))
|
||||||
menuItem.settings|=StdMenuItem::MENU_NOEXPAND;
|
menuItem.settings|=StdMenuItem::MENU_NOEXPAND;
|
||||||
else if (sel==3 && (g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_COMPUTER))
|
else if (sel==3 && !(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_NODRIVES))
|
||||||
menuItem.settings|=StdMenuItem::MENU_SINGLE_EXPAND;
|
menuItem.settings|=StdMenuItem::MENU_SINGLE_EXPAND;
|
||||||
}
|
}
|
||||||
UpdateItem(m_Line);
|
UpdateItem(m_Line);
|
||||||
@@ -3308,12 +3310,17 @@ void CCustomMenuDlg7::CItemList::CreateCombo( int line, int column )
|
|||||||
str=LoadStringEx(IDS_ITEM_DRIVES);
|
str=LoadStringEx(IDS_ITEM_DRIVES);
|
||||||
m_Combo.SendMessage(CB_ADDSTRING,0,(LPARAM)(const wchar_t*)str);
|
m_Combo.SendMessage(CB_ADDSTRING,0,(LPARAM)(const wchar_t*)str);
|
||||||
}
|
}
|
||||||
|
else if (!(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_NODRIVES))
|
||||||
|
{
|
||||||
|
str=LoadStringEx(IDS_ITEM_LINKS);
|
||||||
|
m_Combo.SendMessage(CB_ADDSTRING,0,(LPARAM)(const wchar_t*)str);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (menuItem.settings&StdMenuItem::MENU_ITEM_DISABLED)
|
if (menuItem.settings&StdMenuItem::MENU_ITEM_DISABLED)
|
||||||
m_Combo.SendMessage(CB_SETCURSEL,0);
|
m_Combo.SendMessage(CB_SETCURSEL,0);
|
||||||
else if ((g_StdCommands7[menuItem.stdItemIndex].flags&(CStdCommand7::ITEM_SINGLE|CStdCommand7::ITEM_FOLDER)) || (menuItem.settings&StdMenuItem::MENU_NOEXPAND))
|
else if ((g_StdCommands7[menuItem.stdItemIndex].flags&(CStdCommand7::ITEM_SINGLE|CStdCommand7::ITEM_FOLDER)) || (menuItem.settings&StdMenuItem::MENU_NOEXPAND))
|
||||||
m_Combo.SendMessage(CB_SETCURSEL,1);
|
m_Combo.SendMessage(CB_SETCURSEL,1);
|
||||||
else if ((g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_COMPUTER) && (menuItem.settings&StdMenuItem::MENU_SINGLE_EXPAND))
|
else if (!(g_StdCommands7[menuItem.stdItemIndex].flags&CStdCommand7::ITEM_NODRIVES) && (menuItem.settings&StdMenuItem::MENU_SINGLE_EXPAND))
|
||||||
m_Combo.SendMessage(CB_SETCURSEL,3);
|
m_Combo.SendMessage(CB_SETCURSEL,3);
|
||||||
else
|
else
|
||||||
m_Combo.SendMessage(CB_SETCURSEL,2);
|
m_Combo.SendMessage(CB_SETCURSEL,2);
|
||||||
@@ -3718,7 +3725,6 @@ protected:
|
|||||||
CWindow m_ImageClassic1, m_ImageClassic2, m_ImageWin7;
|
CWindow m_ImageClassic1, m_ImageClassic2, m_ImageWin7;
|
||||||
CWindow m_Tooltip;
|
CWindow m_Tooltip;
|
||||||
CWindow m_ButtonAero, m_ButtonClassic, m_ButtonCustom;
|
CWindow m_ButtonAero, m_ButtonClassic, m_ButtonCustom;
|
||||||
bool m_bLargeBitmaps;
|
|
||||||
HICON m_hIcon;
|
HICON m_hIcon;
|
||||||
CString m_IconPath;
|
CString m_IconPath;
|
||||||
|
|
||||||
@@ -3737,14 +3743,13 @@ LRESULT CMenuStyleDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BO
|
|||||||
HDC hdc=::GetDC(NULL);
|
HDC hdc=::GetDC(NULL);
|
||||||
int dpi=GetDeviceCaps(hdc,LOGPIXELSY);
|
int dpi=GetDeviceCaps(hdc,LOGPIXELSY);
|
||||||
::ReleaseDC(NULL,hdc);
|
::ReleaseDC(NULL,hdc);
|
||||||
m_bLargeBitmaps=dpi>=144;
|
bool bLargeBitmaps=dpi>=144;
|
||||||
if (m_bLargeBitmaps)
|
|
||||||
{
|
{
|
||||||
HBITMAP bmp=(HBITMAP)LoadImage(g_Instance,MAKEINTRESOURCE(IDB_STYLE_CLASSIC1150),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION);
|
HBITMAP bmp=LoadImageResource(g_Instance,MAKEINTRESOURCE(bLargeBitmaps?IDB_STYLE_CLASSIC1150:IDB_STYLE_CLASSIC1),true,true);
|
||||||
m_ImageClassic1.SendMessage(STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bmp);
|
m_ImageClassic1.SendMessage(STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bmp);
|
||||||
bmp=(HBITMAP)LoadImage(g_Instance,MAKEINTRESOURCE(IDB_STYLE_CLASSIC2150),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION);
|
bmp=LoadImageResource(g_Instance,MAKEINTRESOURCE(bLargeBitmaps?IDB_STYLE_CLASSIC2150:IDB_STYLE_CLASSIC2),true,true);
|
||||||
m_ImageClassic2.SendMessage(STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bmp);
|
m_ImageClassic2.SendMessage(STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bmp);
|
||||||
bmp=(HBITMAP)LoadImage(g_Instance,MAKEINTRESOURCE(IDB_STYLE_WIN7150),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION);
|
bmp=LoadImageResource(g_Instance,MAKEINTRESOURCE(bLargeBitmaps?IDB_STYLE_WIN7150:IDB_STYLE_WIN7),true,true);
|
||||||
m_ImageWin7.SendMessage(STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bmp);
|
m_ImageWin7.SendMessage(STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)bmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3779,7 +3784,6 @@ LRESULT CMenuStyleDlg::OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL&
|
|||||||
{
|
{
|
||||||
if (m_hIcon) DestroyIcon(m_hIcon);
|
if (m_hIcon) DestroyIcon(m_hIcon);
|
||||||
m_hIcon=NULL;
|
m_hIcon=NULL;
|
||||||
if (m_bLargeBitmaps)
|
|
||||||
{
|
{
|
||||||
HBITMAP bmp=(HBITMAP)m_ImageClassic1.SendMessage(STM_GETIMAGE,IMAGE_BITMAP);
|
HBITMAP bmp=(HBITMAP)m_ImageClassic1.SendMessage(STM_GETIMAGE,IMAGE_BITMAP);
|
||||||
if (bmp) DeleteObject(bmp);
|
if (bmp) DeleteObject(bmp);
|
||||||
@@ -4143,38 +4147,50 @@ CSetting g_Settings[]={
|
|||||||
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
||||||
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
||||||
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
||||||
|
{L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP},
|
||||||
{L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP,0,CSetting::FLAG_HIDDEN},
|
{L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP,0,CSetting::FLAG_HIDDEN},
|
||||||
|
{L"MouseClickCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"%userprofile%",0,L"MouseClick=3",L"Command"},
|
||||||
{L"ShiftClick",CSetting::TYPE_INT,IDS_SHIFT_LCLICK,IDS_SHIFT_LCLICK_TIP,2,CSetting::FLAG_BASIC},
|
{L"ShiftClick",CSetting::TYPE_INT,IDS_SHIFT_LCLICK,IDS_SHIFT_LCLICK_TIP,2,CSetting::FLAG_BASIC},
|
||||||
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
||||||
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
||||||
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
||||||
|
{L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP},
|
||||||
{L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP,0,CSetting::FLAG_HIDDEN},
|
{L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP,0,CSetting::FLAG_HIDDEN},
|
||||||
/* {L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP,0,CSetting::FLAG_HIDDEN},
|
/* {L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP,0,CSetting::FLAG_HIDDEN},
|
||||||
{L"Cortana",CSetting::TYPE_RADIO,IDS_OPEN_CORTANA,IDS_OPEN_CORTANA_TIP},*/
|
{L"Cortana",CSetting::TYPE_RADIO,IDS_OPEN_CORTANA,IDS_OPEN_CORTANA_TIP},*/
|
||||||
|
{L"ShiftClickCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"%systemdrive%",0,L"ShiftClick=3",L"Command"},
|
||||||
{L"WinKey",CSetting::TYPE_INT,IDS_WIN_KEY,IDS_WIN_KEY_TIP,1,CSetting::FLAG_BASIC},
|
{L"WinKey",CSetting::TYPE_INT,IDS_WIN_KEY,IDS_WIN_KEY_TIP,1,CSetting::FLAG_BASIC},
|
||||||
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
||||||
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
||||||
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
||||||
|
{L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP},
|
||||||
{L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP},
|
{L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP},
|
||||||
{L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP},
|
{L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP},
|
||||||
|
{L"WinKeyCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"cmd",0,L"WinKey=3",L"Command"},
|
||||||
{L"ShiftWin",CSetting::TYPE_INT,IDS_SHIFT_WIN,IDS_SHIFT_WIN_TIP,2,CSetting::FLAG_BASIC},
|
{L"ShiftWin",CSetting::TYPE_INT,IDS_SHIFT_WIN,IDS_SHIFT_WIN_TIP,2,CSetting::FLAG_BASIC},
|
||||||
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
||||||
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
||||||
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
||||||
|
{L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP},
|
||||||
{L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP},
|
{L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP},
|
||||||
/* {L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP,0,CSetting::FLAG_HIDDEN},
|
/* {L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP,0,CSetting::FLAG_HIDDEN},
|
||||||
{L"Cortana",CSetting::TYPE_RADIO,IDS_OPEN_CORTANA,IDS_OPEN_CORTANA_TIP},*/
|
{L"Cortana",CSetting::TYPE_RADIO,IDS_OPEN_CORTANA,IDS_OPEN_CORTANA_TIP},*/
|
||||||
|
{L"ShiftWinCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"powershell",0,L"ShiftWin=3",L"Command"},
|
||||||
{L"MiddleClick",CSetting::TYPE_INT,IDS_MCLICK,IDS_MCLICK_TIP,0},
|
{L"MiddleClick",CSetting::TYPE_INT,IDS_MCLICK,IDS_MCLICK_TIP,0},
|
||||||
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
||||||
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
||||||
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
||||||
|
{L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP},
|
||||||
/* {L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP,0,CSetting::FLAG_HIDDEN},
|
/* {L"Both",CSetting::TYPE_RADIO,IDS_OPEN_BOTH,IDS_OPEN_BOTH_TIP,0,CSetting::FLAG_HIDDEN},
|
||||||
{L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP,0,CSetting::FLAG_HIDDEN},
|
{L"Desktop",CSetting::TYPE_RADIO,IDS_OPEN_DESKTOP,IDS_OPEN_DESKTOP_TIP,0,CSetting::FLAG_HIDDEN},
|
||||||
{L"Cortana",CSetting::TYPE_RADIO,IDS_OPEN_CORTANA,IDS_OPEN_CORTANA_TIP},*/
|
{L"Cortana",CSetting::TYPE_RADIO,IDS_OPEN_CORTANA,IDS_OPEN_CORTANA_TIP},*/
|
||||||
|
{L"MiddleClickCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"taskmgr",0,L"MiddleClick=3",L"Command"},
|
||||||
{L"Hover",CSetting::TYPE_INT,IDS_HOVER,IDS_HOVER_TIP,0},
|
{L"Hover",CSetting::TYPE_INT,IDS_HOVER,IDS_HOVER_TIP,0},
|
||||||
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
{L"Nothing",CSetting::TYPE_RADIO,IDS_OPEN_NOTHING,IDS_OPEN_NOTHING_TIP},
|
||||||
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
{L"ClassicMenu",CSetting::TYPE_RADIO,IDS_OPEN_CSM,IDS_OPEN_CSM_TIP},
|
||||||
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
{L"WindowsMenu",CSetting::TYPE_RADIO,IDS_OPEN_WSM,IDS_OPEN_WSM_TIP},
|
||||||
|
{L"Command",CSetting::TYPE_RADIO,IDS_OPEN_CMD,IDS_OPEN_CMD_TIP},
|
||||||
|
{L"HoverCommand",CSetting::TYPE_STRING,IDS_OPEN_CMD_TEXT,IDS_OPEN_CMD_TEXT_TIP,"",0,L"Hover=3",L"Command"},
|
||||||
{L"StartHoverDelay",CSetting::TYPE_INT,IDS_HOVER_DELAY,IDS_HOVER_DELAY_TIP,1000,0,L"Hover",L"Hover"},
|
{L"StartHoverDelay",CSetting::TYPE_INT,IDS_HOVER_DELAY,IDS_HOVER_DELAY_TIP,1000,0,L"Hover",L"Hover"},
|
||||||
{L"ShiftRight",CSetting::TYPE_BOOL,IDS_RIGHT_SHIFT,IDS_RIGHT_SHIFT_TIP,0},
|
{L"ShiftRight",CSetting::TYPE_BOOL,IDS_RIGHT_SHIFT,IDS_RIGHT_SHIFT_TIP,0},
|
||||||
{L"CSMHotkey",CSetting::TYPE_HOTKEY,IDS_CSM_HOTKEY,IDS_CSM_HOTKEY_TIP,0},
|
{L"CSMHotkey",CSetting::TYPE_HOTKEY,IDS_CSM_HOTKEY,IDS_CSM_HOTKEY_TIP,0},
|
||||||
@@ -4249,6 +4265,7 @@ CSetting g_Settings[]={
|
|||||||
{L"PinnedPrograms",CSetting::TYPE_INT,IDS_PINNED_PROGRAMS,IDS_PINNED_PROGRAMS_TIP,PINNED_PROGRAMS_PINNED},
|
{L"PinnedPrograms",CSetting::TYPE_INT,IDS_PINNED_PROGRAMS,IDS_PINNED_PROGRAMS_TIP,PINNED_PROGRAMS_PINNED},
|
||||||
{L"FastItems",CSetting::TYPE_RADIO,IDS_FAST_ITEMS,IDS_FAST_ITEMS_TIP},
|
{L"FastItems",CSetting::TYPE_RADIO,IDS_FAST_ITEMS,IDS_FAST_ITEMS_TIP},
|
||||||
{L"PinnedItems",CSetting::TYPE_RADIO,IDS_PINNED_ITEMS,IDS_PINNED_ITEMS_TIP},
|
{L"PinnedItems",CSetting::TYPE_RADIO,IDS_PINNED_ITEMS,IDS_PINNED_ITEMS_TIP},
|
||||||
|
{L"PinnedItemsPath",CSetting::TYPE_DIRECTORY,IDS_PINNED_PATH,IDS_PINNED_PATH_TIP,L"%APPDATA%\\OpenShell\\Pinned",0,L"PinnedPrograms=1",L"PinnedItems"},
|
||||||
{L"RecentPrograms",CSetting::TYPE_INT,IDS_RECENT_PROGRAMS,IDS_RECENT_PROGRAMS_TIP,RECENT_PROGRAMS_RECENT,CSetting::FLAG_BASIC},
|
{L"RecentPrograms",CSetting::TYPE_INT,IDS_RECENT_PROGRAMS,IDS_RECENT_PROGRAMS_TIP,RECENT_PROGRAMS_RECENT,CSetting::FLAG_BASIC},
|
||||||
{L"None",CSetting::TYPE_RADIO,IDS_NO_RECENT,IDS_NO_RECENT_TIP},
|
{L"None",CSetting::TYPE_RADIO,IDS_NO_RECENT,IDS_NO_RECENT_TIP},
|
||||||
{L"Recent",CSetting::TYPE_RADIO,IDS_SHOW_RECENT,IDS_SHOW_RECENT_TIP},
|
{L"Recent",CSetting::TYPE_RADIO,IDS_SHOW_RECENT,IDS_SHOW_RECENT_TIP},
|
||||||
@@ -4317,11 +4334,14 @@ CSetting g_Settings[]={
|
|||||||
{L"UserNameCommand",CSetting::TYPE_STRING,IDS_NAME_COMMAND,IDS_NAME_COMMAND_TIP,L"control nusrmgr.cpl"},
|
{L"UserNameCommand",CSetting::TYPE_STRING,IDS_NAME_COMMAND,IDS_NAME_COMMAND_TIP,L"control nusrmgr.cpl"},
|
||||||
{L"SearchFilesCommand",CSetting::TYPE_STRING,IDS_SEARCH_COMMAND,IDS_SEARCH_COMMAND_TIP,L"search-ms:",CSetting::FLAG_MENU_CLASSIC_BOTH},
|
{L"SearchFilesCommand",CSetting::TYPE_STRING,IDS_SEARCH_COMMAND,IDS_SEARCH_COMMAND_TIP,L"search-ms:",CSetting::FLAG_MENU_CLASSIC_BOTH},
|
||||||
{L"ExpandFolderLinks",CSetting::TYPE_BOOL,IDS_EXPAND_LINKS,IDS_EXPAND_LINKS_TIP,1},
|
{L"ExpandFolderLinks",CSetting::TYPE_BOOL,IDS_EXPAND_LINKS,IDS_EXPAND_LINKS_TIP,1},
|
||||||
|
{L"SingleClickFolders",CSetting::TYPE_BOOL,IDS_NO_DBLCLICK,IDS_NO_DBLCLICK_TIP,0},
|
||||||
|
{L"OpenTruePath",CSetting::TYPE_BOOL,IDS_OPEN_TRUE_PATH,IDS_OPEN_TRUE_PATH_TIP,1},
|
||||||
{L"EnableTouch",CSetting::TYPE_BOOL,IDS_ENABLE_TOUCH,IDS_ENABLE_TOUCH_TIP,1},
|
{L"EnableTouch",CSetting::TYPE_BOOL,IDS_ENABLE_TOUCH,IDS_ENABLE_TOUCH_TIP,1},
|
||||||
{L"EnableAccessibility",CSetting::TYPE_BOOL,IDS_ACCESSIBILITY,IDS_ACCESSIBILITY_TIP,1},
|
{L"EnableAccessibility",CSetting::TYPE_BOOL,IDS_ACCESSIBILITY,IDS_ACCESSIBILITY_TIP,1},
|
||||||
{L"ShowNextToTaskbar",CSetting::TYPE_BOOL,IDS_NEXTTASKBAR,IDS_NEXTTASKBAR_TIP,0},
|
{L"ShowNextToTaskbar",CSetting::TYPE_BOOL,IDS_NEXTTASKBAR,IDS_NEXTTASKBAR_TIP,0},
|
||||||
{L"PreCacheIcons",CSetting::TYPE_BOOL,IDS_CACHE_ICONS,IDS_CACHE_ICONS_TIP,1,CSetting::FLAG_COLD},
|
{L"PreCacheIcons",CSetting::TYPE_BOOL,IDS_CACHE_ICONS,IDS_CACHE_ICONS_TIP,1,CSetting::FLAG_COLD},
|
||||||
{L"DelayIcons",CSetting::TYPE_BOOL,IDS_DELAY_ICONS,IDS_DELAY_ICONS_TIP,1,CSetting::FLAG_COLD},
|
{L"DelayIcons",CSetting::TYPE_BOOL,IDS_DELAY_ICONS,IDS_DELAY_ICONS_TIP,1,CSetting::FLAG_COLD},
|
||||||
|
{L"BoldSettings",CSetting::TYPE_BOOL,IDS_BOLD_SETTINGS,IDS_BOLD_SETTINGS_TIP,1},
|
||||||
{L"ReportSkinErrors",CSetting::TYPE_BOOL,IDS_SKIN_ERRORS,IDS_SKIN_ERRORS_TIP,0},
|
{L"ReportSkinErrors",CSetting::TYPE_BOOL,IDS_SKIN_ERRORS,IDS_SKIN_ERRORS_TIP,0},
|
||||||
|
|
||||||
{L"SearchBoxSettings",CSetting::TYPE_GROUP,IDS_SEARCH_BOX},
|
{L"SearchBoxSettings",CSetting::TYPE_GROUP,IDS_SEARCH_BOX},
|
||||||
@@ -4330,6 +4350,8 @@ CSetting g_Settings[]={
|
|||||||
{L"Normal",CSetting::TYPE_RADIO,IDS_SEARCH_BOX_SHOW,IDS_SEARCH_BOX_SHOW_TIP},
|
{L"Normal",CSetting::TYPE_RADIO,IDS_SEARCH_BOX_SHOW,IDS_SEARCH_BOX_SHOW_TIP},
|
||||||
{L"Tab",CSetting::TYPE_RADIO,IDS_SEARCH_BOX_TAB,IDS_SEARCH_BOX_TAB_TIP},
|
{L"Tab",CSetting::TYPE_RADIO,IDS_SEARCH_BOX_TAB,IDS_SEARCH_BOX_TAB_TIP},
|
||||||
{L"SearchSelect",CSetting::TYPE_BOOL,IDS_SEARCH_BOX_SEL,IDS_SEARCH_BOX_SEL_TIP,1,0,L"SearchBox=1",L"Normal"},
|
{L"SearchSelect",CSetting::TYPE_BOOL,IDS_SEARCH_BOX_SEL,IDS_SEARCH_BOX_SEL_TIP,1,0,L"SearchBox=1",L"Normal"},
|
||||||
|
{L"SearchHint",CSetting::TYPE_BOOL,IDS_SEARCH_HINT,IDS_SEARCH_HINT_TIP,0,0,L"SearchBox"},
|
||||||
|
{L"SearchHintText",CSetting::TYPE_STRING,IDS_NEW_SEARCH_HINT,IDS_NEW_SEARCH_HINT_TIP,L"",0,L"#SearchHint",L"SearchHint"},
|
||||||
{L"SearchTrack",CSetting::TYPE_BOOL,IDS_SEARCH_TRACK,IDS_SEARCH_TRACK_TIP,1,0,L"SearchBox"},
|
{L"SearchTrack",CSetting::TYPE_BOOL,IDS_SEARCH_TRACK,IDS_SEARCH_TRACK_TIP,1,0,L"SearchBox"},
|
||||||
{L"SearchResults",CSetting::TYPE_INT,IDS_SEARCH_MAX2,IDS_SEARCH_MAX_TIP2,5,CSetting::FLAG_MENU_CLASSIC_BOTH,L"SearchBox"},
|
{L"SearchResults",CSetting::TYPE_INT,IDS_SEARCH_MAX2,IDS_SEARCH_MAX_TIP2,5,CSetting::FLAG_MENU_CLASSIC_BOTH,L"SearchBox"},
|
||||||
{L"SearchResultsMax",CSetting::TYPE_INT,IDS_SEARCH_MAX3,IDS_SEARCH_MAX_TIP3,20,CSetting::FLAG_MENU_CLASSIC_BOTH,L"SearchBox"},
|
{L"SearchResultsMax",CSetting::TYPE_INT,IDS_SEARCH_MAX3,IDS_SEARCH_MAX_TIP3,20,CSetting::FLAG_MENU_CLASSIC_BOTH,L"SearchBox"},
|
||||||
@@ -4344,6 +4366,7 @@ CSetting g_Settings[]={
|
|||||||
{L"SearchContents",CSetting::TYPE_BOOL,IDS_SEARCH_CONTENTS,IDS_SEARCH_CONTENTS_TIP,1,0,L"#SearchFiles",L"SearchFiles"},
|
{L"SearchContents",CSetting::TYPE_BOOL,IDS_SEARCH_CONTENTS,IDS_SEARCH_CONTENTS_TIP,1,0,L"#SearchFiles",L"SearchFiles"},
|
||||||
{L"SearchCategories",CSetting::TYPE_BOOL,IDS_SEARCH_CATEGORIES,IDS_SEARCH_CATEGORIES_TIP,1,0,L"#SearchFiles",L"SearchFiles"},
|
{L"SearchCategories",CSetting::TYPE_BOOL,IDS_SEARCH_CATEGORIES,IDS_SEARCH_CATEGORIES_TIP,1,0,L"#SearchFiles",L"SearchFiles"},
|
||||||
{L"SearchInternet",CSetting::TYPE_BOOL,IDS_SEARCH_INTERNET,IDS_SEARCH_INTERNET_TIP,1,0,L"SearchBox"},
|
{L"SearchInternet",CSetting::TYPE_BOOL,IDS_SEARCH_INTERNET,IDS_SEARCH_INTERNET_TIP,1,0,L"SearchBox"},
|
||||||
|
{L"MoreResults",CSetting::TYPE_BOOL,IDS_MORE_RESULTS,IDS_MORE_RESULTS_TIP,1,0,L"SearchBox"},
|
||||||
|
|
||||||
{L"Look",CSetting::TYPE_GROUP,IDS_LOOK_SETTINGS},
|
{L"Look",CSetting::TYPE_GROUP,IDS_LOOK_SETTINGS},
|
||||||
{L"SmallIconSize",CSetting::TYPE_INT,IDS_SMALL_SIZE_SM,IDS_SMALL_SIZE_SM_TIP,-1,CSetting::FLAG_COLD}, // 16 for DPI<=96, 20 for DPI<=120, 24 otherwise
|
{L"SmallIconSize",CSetting::TYPE_INT,IDS_SMALL_SIZE_SM,IDS_SMALL_SIZE_SM_TIP,-1,CSetting::FLAG_COLD}, // 16 for DPI<=96, 20 for DPI<=120, 24 otherwise
|
||||||
@@ -4351,6 +4374,9 @@ CSetting g_Settings[]={
|
|||||||
{L"InvertMetroIcons",CSetting::TYPE_BOOL,IDS_INVERT_ICONS,IDS_INVERT_ICONS_TIP,0},
|
{L"InvertMetroIcons",CSetting::TYPE_BOOL,IDS_INVERT_ICONS,IDS_INVERT_ICONS_TIP,0},
|
||||||
{L"MaxMainMenuWidth",CSetting::TYPE_INT,IDS_MENU_WIDTH,IDS_MENU_WIDTH_TIP,60,CSetting::FLAG_MENU_CLASSIC_BOTH},
|
{L"MaxMainMenuWidth",CSetting::TYPE_INT,IDS_MENU_WIDTH,IDS_MENU_WIDTH_TIP,60,CSetting::FLAG_MENU_CLASSIC_BOTH},
|
||||||
{L"MaxMenuWidth",CSetting::TYPE_INT,IDS_SUBMENU_WIDTH,IDS_SUBMENU_WIDTH_TIP,60},
|
{L"MaxMenuWidth",CSetting::TYPE_INT,IDS_SUBMENU_WIDTH,IDS_SUBMENU_WIDTH_TIP,60},
|
||||||
|
{L"AlignToWorkArea",CSetting::TYPE_BOOL,IDS_ALIGN_WORK_AREA,IDS_ALIGN_WORK_AREA_TIP,0},
|
||||||
|
{L"HorizontalMenuOffset",CSetting::TYPE_INT,IDS_HOR_OFFSET,IDS_HOR_OFFSET_TIP,0},
|
||||||
|
{L"VerticalMenuOffset",CSetting::TYPE_INT,IDS_VERT_OFFSET,IDS_VERT_OFFSET_TIP,0 },
|
||||||
{L"OverrideDPI",CSetting::TYPE_INT,IDS_DPI_OVERRIDE,IDS_DPI_OVERRIDE_TIP,0,CSetting::FLAG_COLD},
|
{L"OverrideDPI",CSetting::TYPE_INT,IDS_DPI_OVERRIDE,IDS_DPI_OVERRIDE_TIP,0,CSetting::FLAG_COLD},
|
||||||
{L"MainMenuAnimate",CSetting::TYPE_BOOL,IDS_ANIMATION7,IDS_ANIMATION7_TIP,1,CSetting::FLAG_MENU_WIN7},
|
{L"MainMenuAnimate",CSetting::TYPE_BOOL,IDS_ANIMATION7,IDS_ANIMATION7_TIP,1,CSetting::FLAG_MENU_WIN7},
|
||||||
{L"MainMenuAnimation",CSetting::TYPE_INT,IDS_ANIMATION,IDS_ANIMATION_TIP,-1}, // system animation type
|
{L"MainMenuAnimation",CSetting::TYPE_INT,IDS_ANIMATION,IDS_ANIMATION_TIP,-1}, // system animation type
|
||||||
@@ -4416,7 +4442,7 @@ CSetting g_Settings[]={
|
|||||||
{L"StartButtonIconSize",CSetting::TYPE_INT,IDS_BUTTON_ICON_SIZE,IDS_BUTTON_ICON_SIZE_TIP,0,0,L"#StartButtonType=1",L"ClasicButton"},
|
{L"StartButtonIconSize",CSetting::TYPE_INT,IDS_BUTTON_ICON_SIZE,IDS_BUTTON_ICON_SIZE_TIP,0,0,L"#StartButtonType=1",L"ClasicButton"},
|
||||||
{L"StartButtonText",CSetting::TYPE_STRING,IDS_BUTTON_TEXT,IDS_BUTTON_TEXT_TIP,L"$Menu.Start",0,L"#StartButtonType=1",L"ClasicButton"},
|
{L"StartButtonText",CSetting::TYPE_STRING,IDS_BUTTON_TEXT,IDS_BUTTON_TEXT_TIP,L"$Menu.Start",0,L"#StartButtonType=1",L"ClasicButton"},
|
||||||
|
|
||||||
{L"Taskbar",CSetting::TYPE_GROUP,IDS_TASKBAR_SETTINGS},
|
{L"Taskbar",CSetting::TYPE_GROUP,IDS_TASKBAR_SETTINGS,0,0,CSetting::FLAG_BASIC},
|
||||||
{L"CustomTaskbar",CSetting::TYPE_BOOL,IDS_TASK_CUSTOM,IDS_TASK_CUSTOM_TIP,0,CSetting::FLAG_CALLBACK},
|
{L"CustomTaskbar",CSetting::TYPE_BOOL,IDS_TASK_CUSTOM,IDS_TASK_CUSTOM_TIP,0,CSetting::FLAG_CALLBACK},
|
||||||
{L"TaskbarLook",CSetting::TYPE_INT,IDS_TASK_LOOK,IDS_TASK_LOOK_TIP,1,CSetting::FLAG_CALLBACK,L"CustomTaskbar",L"CustomTaskbar"},
|
{L"TaskbarLook",CSetting::TYPE_INT,IDS_TASK_LOOK,IDS_TASK_LOOK_TIP,1,CSetting::FLAG_CALLBACK,L"CustomTaskbar",L"CustomTaskbar"},
|
||||||
{L"Opaque",CSetting::TYPE_RADIO,IDS_TASK_OPAQUE,IDS_TASK_OPAQUE_TIP},
|
{L"Opaque",CSetting::TYPE_RADIO,IDS_TASK_OPAQUE,IDS_TASK_OPAQUE_TIP},
|
||||||
@@ -4425,8 +4451,8 @@ CSetting g_Settings[]={
|
|||||||
{L"AeroGlass",CSetting::TYPE_RADIO,IDS_TASK_AEROGLASS,IDS_TASK_AEROGLASS_TIP,0,CSetting::FLAG_HIDDEN},
|
{L"AeroGlass",CSetting::TYPE_RADIO,IDS_TASK_AEROGLASS,IDS_TASK_AEROGLASS_TIP,0,CSetting::FLAG_HIDDEN},
|
||||||
{L"TaskbarOpacity",CSetting::TYPE_INT,IDS_TASK_OPACITY,IDS_TASK_OPACITY_TIP,DEFAULT_TASK_OPACITY10,CSetting::FLAG_CALLBACK,L"TaskbarLook",L"CustomTaskbar"},
|
{L"TaskbarOpacity",CSetting::TYPE_INT,IDS_TASK_OPACITY,IDS_TASK_OPACITY_TIP,DEFAULT_TASK_OPACITY10,CSetting::FLAG_CALLBACK,L"TaskbarLook",L"CustomTaskbar"},
|
||||||
{L"TaskbarColor",CSetting::TYPE_COLOR,IDS_TASK_COLOR,IDS_TASK_COLOR_TIP,0,CSetting::FLAG_CALLBACK,L"CustomTaskbar",L"CustomTaskbar"},
|
{L"TaskbarColor",CSetting::TYPE_COLOR,IDS_TASK_COLOR,IDS_TASK_COLOR_TIP,0,CSetting::FLAG_CALLBACK,L"CustomTaskbar",L"CustomTaskbar"},
|
||||||
{L"TaskbarTextColor",CSetting::TYPE_COLOR,IDS_TASK_TEXTCOLOR,IDS_TASK_TEXTCOLOR_TIP,0xFFFFFF,CSetting::FLAG_CALLBACK|(1<<24),L"CustomTaskbar",L"CustomTaskbar"},
|
{L"TaskbarTextColor",CSetting::TYPE_COLOR,IDS_TASK_TEXTCOLOR,IDS_TASK_TEXTCOLOR_TIP,0xFFFFFF,CSetting::FLAG_COLD|(1<<24),L"CustomTaskbar",L"CustomTaskbar"},
|
||||||
{L"TaskbarTexture",CSetting::TYPE_BITMAP_JPG,IDS_TASK_TEXTURE,IDS_TASK_TEXTURE_TIP,L"",CSetting::FLAG_CALLBACK,L"CustomTaskbar",L"CustomTaskbar"},
|
{L"TaskbarTexture",CSetting::TYPE_BITMAP_JPG,IDS_TASK_TEXTURE,IDS_TASK_TEXTURE_TIP,L"",CSetting::FLAG_COLD,L"CustomTaskbar",L"CustomTaskbar"},
|
||||||
{L"TaskbarTileH",CSetting::TYPE_INT,IDS_TASK_STRETCHH,IDS_TASK_STRETCHH_TIP,1,CSetting::FLAG_CALLBACK,L"#TaskbarTexture",L"TaskbarTexture"},
|
{L"TaskbarTileH",CSetting::TYPE_INT,IDS_TASK_STRETCHH,IDS_TASK_STRETCHH_TIP,1,CSetting::FLAG_CALLBACK,L"#TaskbarTexture",L"TaskbarTexture"},
|
||||||
{L"Tile",CSetting::TYPE_RADIO,IDS_TASK_TILE,IDS_TASK_TILE_TIP},
|
{L"Tile",CSetting::TYPE_RADIO,IDS_TASK_TILE,IDS_TASK_TILE_TIP},
|
||||||
{L"Stretch",CSetting::TYPE_RADIO,IDS_TASK_STRETCH,IDS_TASK_STRETCH_TIP},
|
{L"Stretch",CSetting::TYPE_RADIO,IDS_TASK_STRETCH,IDS_TASK_STRETCH_TIP},
|
||||||
@@ -4659,11 +4685,19 @@ void UpdateSettings( void )
|
|||||||
else if (dpi<96) dpi=96;
|
else if (dpi<96) dpi=96;
|
||||||
else if (dpi>480) dpi=480;
|
else if (dpi>480) dpi=480;
|
||||||
|
|
||||||
int iconSize=24;
|
int iconSize=16;
|
||||||
if (dpi<=96)
|
if (dpi>=240)
|
||||||
iconSize=16;
|
iconSize=40; // for 250% scaling
|
||||||
else if (dpi<=120)
|
else if (dpi>=216)
|
||||||
iconSize=20;
|
iconSize=36; // for 225% scaling
|
||||||
|
else if (dpi>=192)
|
||||||
|
iconSize=32; // for 200% scaling
|
||||||
|
else if (dpi>=168)
|
||||||
|
iconSize=28; // for 175% scaling
|
||||||
|
else if (dpi>=144)
|
||||||
|
iconSize=24; // for 150% scaling
|
||||||
|
else if (dpi>=120)
|
||||||
|
iconSize=20; // for 125% scaling
|
||||||
UpdateSetting(L"SmallIconSize",CComVariant(iconSize),false);
|
UpdateSetting(L"SmallIconSize",CComVariant(iconSize),false);
|
||||||
UpdateSetting(L"LargeIconSize",CComVariant(iconSize*2),false);
|
UpdateSetting(L"LargeIconSize",CComVariant(iconSize*2),false);
|
||||||
|
|
||||||
|
|||||||
@@ -375,6 +375,9 @@ COLORREF MenuSkin::GetMetroColor( const wchar_t *names ) const
|
|||||||
if (GetImmersiveUserColorSetPreference!=NULL)
|
if (GetImmersiveUserColorSetPreference!=NULL)
|
||||||
{
|
{
|
||||||
wchar_t text[256];
|
wchar_t text[256];
|
||||||
|
if (wcsncmp(name,L"Immersive",9)==0)
|
||||||
|
wcscpy_s(text,name);
|
||||||
|
else
|
||||||
Sprintf(text,_countof(text),L"Immersive%s",name);
|
Sprintf(text,_countof(text),L"Immersive%s",name);
|
||||||
int type=GetImmersiveColorTypeFromName(text);
|
int type=GetImmersiveColorTypeFromName(text);
|
||||||
data.colorType=type<0?-1:type;
|
data.colorType=type<0?-1:type;
|
||||||
@@ -1495,8 +1498,21 @@ bool MenuSkin::ComputeOptionStates( const std::map<CString,CString> &options, st
|
|||||||
values.push_back(L"ALL_PROGRAMS");
|
values.push_back(L"ALL_PROGRAMS");
|
||||||
if (SkinType==SKIN_TYPE_CLASSIC2)
|
if (SkinType==SKIN_TYPE_CLASSIC2)
|
||||||
values.push_back(L"TWO_COLUMNS");
|
values.push_back(L"TWO_COLUMNS");
|
||||||
|
// for compatibility with existing skins
|
||||||
if (Dpi>=144)
|
if (Dpi>=144)
|
||||||
values.push_back(L"HIGH_DPI");
|
values.push_back(L"HIGH_DPI");
|
||||||
|
if (Dpi>=240)
|
||||||
|
values.push_back(L"240_DPI"); // 250% scaling
|
||||||
|
else if (Dpi>=216)
|
||||||
|
values.push_back(L"216_DPI"); // 225% scaling
|
||||||
|
else if (Dpi>=192)
|
||||||
|
values.push_back(L"192_DPI"); // 200% scaling
|
||||||
|
else if (Dpi>=168)
|
||||||
|
values.push_back(L"168_DPI"); // 175% scaling
|
||||||
|
else if (Dpi>=144)
|
||||||
|
values.push_back(L"144_DPI"); // 150% scaling
|
||||||
|
else if (Dpi>=120)
|
||||||
|
values.push_back(L"120_DPI"); // 125% scaling
|
||||||
if (ForceTouch || (GetWinVersion()>=WIN_VER_WIN8 && GetSettingBool(L"EnableTouch") && (GetSystemMetrics(SM_DIGITIZER)&NID_INTEGRATED_TOUCH)!=0))
|
if (ForceTouch || (GetWinVersion()>=WIN_VER_WIN8 && GetSettingBool(L"EnableTouch") && (GetSystemMetrics(SM_DIGITIZER)&NID_INTEGRATED_TOUCH)!=0))
|
||||||
values.push_back(L"TOUCH_ENABLED");
|
values.push_back(L"TOUCH_ENABLED");
|
||||||
if (GetSettingInt(L"SearchBox")!=SEARCHBOX_HIDDEN)
|
if (GetSettingInt(L"SearchBox")!=SEARCHBOX_HIDDEN)
|
||||||
@@ -1762,7 +1778,7 @@ bool MenuSkin::LoadSkin( HMODULE hMod, const wchar_t *variation, const wchar_t *
|
|||||||
var.label=token;
|
var.label=token;
|
||||||
if (var.labelEn.IsEmpty())
|
if (var.labelEn.IsEmpty())
|
||||||
var.labelEn=var.label;
|
var.labelEn=var.label;
|
||||||
Variations.push_back(std::pair<int,Variation>(res,var));
|
Variations.emplace_back(res,var);
|
||||||
LOG_MENU(LOG_OPEN,L"Variation found: name=%s, id=%d",token,res);
|
LOG_MENU(LOG_OPEN,L"Variation found: name=%s, id=%d",token,res);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ enum
|
|||||||
OPEN_NOTHING,
|
OPEN_NOTHING,
|
||||||
OPEN_CLASSIC,
|
OPEN_CLASSIC,
|
||||||
OPEN_WINDOWS,
|
OPEN_WINDOWS,
|
||||||
|
OPEN_CUSTOM,
|
||||||
OPEN_BOTH,
|
OPEN_BOTH,
|
||||||
OPEN_DESKTOP,
|
OPEN_DESKTOP,
|
||||||
OPEN_CORTANA,
|
OPEN_CORTANA,
|
||||||
@@ -292,7 +293,6 @@ public:
|
|||||||
// message handlers
|
// message handlers
|
||||||
BEGIN_MSG_MAP( COwnerWindow )
|
BEGIN_MSG_MAP( COwnerWindow )
|
||||||
MESSAGE_HANDLER( WM_ACTIVATE, OnActivate )
|
MESSAGE_HANDLER( WM_ACTIVATE, OnActivate )
|
||||||
MESSAGE_HANDLER( WM_CLEAR, OnClear )
|
|
||||||
MESSAGE_HANDLER( WM_SYSCOLORCHANGE, OnColorChange )
|
MESSAGE_HANDLER( WM_SYSCOLORCHANGE, OnColorChange )
|
||||||
MESSAGE_HANDLER( WM_SETTINGCHANGE, OnSettingChange )
|
MESSAGE_HANDLER( WM_SETTINGCHANGE, OnSettingChange )
|
||||||
MESSAGE_HANDLER( WM_DISPLAYCHANGE, OnDisplayChange )
|
MESSAGE_HANDLER( WM_DISPLAYCHANGE, OnDisplayChange )
|
||||||
@@ -304,7 +304,7 @@ protected:
|
|||||||
if (LOWORD(wParam)!=WA_INACTIVE)
|
if (LOWORD(wParam)!=WA_INACTIVE)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (CMenuContainer::s_bPreventClosing && lParam && (::GetWindowLongPtr((HWND)lParam,GWL_EXSTYLE)&WS_EX_TOPMOST))
|
if (CMenuContainer::s_bPreventClosing)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// check if another menu window is being activated
|
// check if another menu window is being activated
|
||||||
@@ -313,41 +313,13 @@ protected:
|
|||||||
if ((*it)->m_hWnd==(HWND)lParam)
|
if ((*it)->m_hWnd==(HWND)lParam)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (CMenuContainer::s_bPreventClosing)
|
|
||||||
{
|
|
||||||
CMenuContainer::HideTemp(true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (std::vector<CMenuContainer*>::reverse_iterator it=CMenuContainer::s_Menus.rbegin();it!=CMenuContainer::s_Menus.rend();++it)
|
for (std::vector<CMenuContainer*>::reverse_iterator it=CMenuContainer::s_Menus.rbegin();it!=CMenuContainer::s_Menus.rend();++it)
|
||||||
if (!(*it)->m_bDestroyed)
|
if (!(*it)->m_bDestroyed)
|
||||||
(*it)->PostMessage(WM_CLOSE);
|
(*it)->PostMessage(WM_CLOSE);
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT OnClear( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
|
||||||
{
|
|
||||||
bool bHide=(wParam!=0); // hide or destroy
|
|
||||||
if (CMenuContainer::s_bTempHidden!=bHide)
|
|
||||||
{
|
|
||||||
CMenuContainer::s_bTempHidden=bHide;
|
|
||||||
if (bHide && CMenuContainer::s_UserPicture.m_hWnd)
|
|
||||||
CMenuContainer::s_UserPicture.ShowWindow(SW_HIDE);
|
|
||||||
for (std::vector<CMenuContainer*>::iterator it=CMenuContainer::s_Menus.begin();it!=CMenuContainer::s_Menus.end();++it)
|
|
||||||
{
|
|
||||||
if ((*it)->m_hWnd && !(*it)->m_bDestroyed)
|
|
||||||
{
|
|
||||||
(*it)->m_bClosing=true;
|
|
||||||
if (!bHide)
|
|
||||||
(*it)->PostMessage(WM_CLOSE);
|
|
||||||
else
|
|
||||||
(*it)->ShowWindow(SW_HIDE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
LRESULT OnColorChange( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
LRESULT OnColorChange( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
||||||
{
|
{
|
||||||
@@ -2819,6 +2791,9 @@ static void OpenCortana( void )
|
|||||||
|
|
||||||
static void InitStartMenuDLL( void )
|
static void InitStartMenuDLL( void )
|
||||||
{
|
{
|
||||||
|
LogToFile(STARTUP_LOG, L"StartMenu DLL: InitStartMenuDLL");
|
||||||
|
WaitDllInitThread();
|
||||||
|
|
||||||
InitializeIatHooks();
|
InitializeIatHooks();
|
||||||
if (IsWin81Update1())
|
if (IsWin81Update1())
|
||||||
{
|
{
|
||||||
@@ -2846,6 +2821,8 @@ static void InitStartMenuDLL( void )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (GetSettingBool(L"CustomTaskbar"))
|
||||||
|
{
|
||||||
if (GetWinVersion()>=WIN_VER_WIN10)
|
if (GetWinVersion()>=WIN_VER_WIN10)
|
||||||
{
|
{
|
||||||
HMODULE shlwapi=GetModuleHandle(L"shlwapi.dll");
|
HMODULE shlwapi=GetModuleHandle(L"shlwapi.dll");
|
||||||
@@ -2875,10 +2852,9 @@ static void InitStartMenuDLL( void )
|
|||||||
g_DrawThemeTextCtlHook=SetIatHook(GetModuleHandle(L"comctl32.dll"),"uxtheme.dll","DrawThemeText",DrawThemeText2);
|
g_DrawThemeTextCtlHook=SetIatHook(GetModuleHandle(L"comctl32.dll"),"uxtheme.dll","DrawThemeText",DrawThemeText2);
|
||||||
if (GetWinVersion()>=WIN_VER_WIN10)
|
if (GetWinVersion()>=WIN_VER_WIN10)
|
||||||
g_SetWindowCompositionAttributeHook=SetIatHook(GetModuleHandle(NULL),"user32.dll","SetWindowCompositionAttribute",SetWindowCompositionAttribute2);
|
g_SetWindowCompositionAttributeHook=SetIatHook(GetModuleHandle(NULL),"user32.dll","SetWindowCompositionAttribute",SetWindowCompositionAttribute2);
|
||||||
|
}
|
||||||
|
|
||||||
g_TaskbarThreadId=GetCurrentThreadId();
|
g_TaskbarThreadId=GetCurrentThreadId();
|
||||||
LogToFile(STARTUP_LOG,L"StartMenu DLL: InitStartMenuDLL");
|
|
||||||
WaitDllInitThread();
|
|
||||||
g_bTrimHooks=GetWinVersion()==WIN_VER_WIN7 && (GetSettingInt(L"CompatibilityFixes")&COMPATIBILITY_TRIM_HOOKS);
|
g_bTrimHooks=GetWinVersion()==WIN_VER_WIN7 && (GetSettingInt(L"CompatibilityFixes")&COMPATIBILITY_TRIM_HOOKS);
|
||||||
InitManagers(false);
|
InitManagers(false);
|
||||||
int level=GetSettingInt(L"CrashDump");
|
int level=GetSettingInt(L"CrashDump");
|
||||||
@@ -3373,6 +3349,16 @@ static LRESULT CALLBACK HookProgManThread( int code, WPARAM wParam, LPARAM lPara
|
|||||||
msg->message=WM_NULL;
|
msg->message=WM_NULL;
|
||||||
if (control==OPEN_CLASSIC)
|
if (control==OPEN_CLASSIC)
|
||||||
PostMessage(g_TaskBar,g_StartMenuMsg,MSG_TOGGLE,0);
|
PostMessage(g_TaskBar,g_StartMenuMsg,MSG_TOGGLE,0);
|
||||||
|
else if (control==OPEN_CUSTOM)
|
||||||
|
{
|
||||||
|
CString commandText=GetSettingString(L"WinKeyCommand");
|
||||||
|
if (!commandText.IsEmpty())
|
||||||
|
{
|
||||||
|
wchar_t expandedCommand[_MAX_PATH]{};
|
||||||
|
::ExpandEnvironmentStrings(commandText, expandedCommand, _countof(expandedCommand));
|
||||||
|
ShellExecute(NULL,NULL,expandedCommand,NULL,NULL,SW_SHOWNORMAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3456,6 +3442,16 @@ if (!g_bTrimHooks)
|
|||||||
PostMessage(g_ProgWin,WM_SYSCOMMAND,SC_TASKLIST,'WSMK');
|
PostMessage(g_ProgWin,WM_SYSCOMMAND,SC_TASKLIST,'WSMK');
|
||||||
else if (control==OPEN_CORTANA)
|
else if (control==OPEN_CORTANA)
|
||||||
OpenCortana();
|
OpenCortana();
|
||||||
|
else if (control==OPEN_CUSTOM)
|
||||||
|
{
|
||||||
|
CString commandText=GetSettingString(L"ShiftWinCommand");
|
||||||
|
if (!commandText.IsEmpty())
|
||||||
|
{
|
||||||
|
wchar_t expandedCommand[_MAX_PATH]{};
|
||||||
|
::ExpandEnvironmentStrings(commandText, expandedCommand, _countof(expandedCommand));
|
||||||
|
ShellExecute(NULL,NULL,expandedCommand,NULL,NULL,SW_SHOWNORMAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (msg->wParam==MSG_DRAG || msg->wParam==MSG_SHIFTDRAG)
|
else if (msg->wParam==MSG_DRAG || msg->wParam==MSG_SHIFTDRAG)
|
||||||
{
|
{
|
||||||
@@ -3615,12 +3611,22 @@ if (!g_bTrimHooks)
|
|||||||
// left or middle click on start button
|
// left or middle click on start button
|
||||||
FindWindowsMenu();
|
FindWindowsMenu();
|
||||||
const wchar_t *name;
|
const wchar_t *name;
|
||||||
|
const wchar_t *command;
|
||||||
if (bMiddle)
|
if (bMiddle)
|
||||||
|
{
|
||||||
name=L"MiddleClick";
|
name=L"MiddleClick";
|
||||||
|
command=L"MiddleClickCommand";
|
||||||
|
}
|
||||||
else if (GetKeyState(VK_SHIFT)<0)
|
else if (GetKeyState(VK_SHIFT)<0)
|
||||||
|
{
|
||||||
name=L"ShiftClick";
|
name=L"ShiftClick";
|
||||||
|
command=L"ShiftClickCommand";
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
name=L"MouseClick";
|
name=L"MouseClick";
|
||||||
|
command=L"MouseClickCommand";
|
||||||
|
}
|
||||||
|
|
||||||
int control=GetSettingInt(name);
|
int control=GetSettingInt(name);
|
||||||
if (control==OPEN_BOTH && GetWinVersion()>=WIN_VER_WIN10)
|
if (control==OPEN_BOTH && GetWinVersion()>=WIN_VER_WIN10)
|
||||||
@@ -3636,6 +3642,16 @@ if (!g_bTrimHooks)
|
|||||||
PostMessage(g_ProgWin,WM_SYSCOMMAND,SC_TASKLIST,'WSMM');
|
PostMessage(g_ProgWin,WM_SYSCOMMAND,SC_TASKLIST,'WSMM');
|
||||||
else if (control==OPEN_CORTANA)
|
else if (control==OPEN_CORTANA)
|
||||||
OpenCortana();
|
OpenCortana();
|
||||||
|
else if (control==OPEN_CUSTOM)
|
||||||
|
{
|
||||||
|
CString commandText=GetSettingString(command);
|
||||||
|
if (!commandText.IsEmpty())
|
||||||
|
{
|
||||||
|
wchar_t expandedCommand[_MAX_PATH]{};
|
||||||
|
::ExpandEnvironmentStrings(commandText, expandedCommand, _countof(expandedCommand));
|
||||||
|
ShellExecute(NULL,NULL,expandedCommand,NULL,NULL,SW_SHOWNORMAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
msg->message=WM_NULL;
|
msg->message=WM_NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3776,6 +3792,16 @@ if (!g_bTrimHooks)
|
|||||||
FindWindowsMenu();
|
FindWindowsMenu();
|
||||||
PostMessage(g_ProgWin,WM_SYSCOMMAND,SC_TASKLIST,'WSMM');
|
PostMessage(g_ProgWin,WM_SYSCOMMAND,SC_TASKLIST,'WSMM');
|
||||||
}
|
}
|
||||||
|
else if (control==OPEN_CUSTOM)
|
||||||
|
{
|
||||||
|
CString commandText=GetSettingString(L"HoverCommand");
|
||||||
|
if (!commandText.IsEmpty())
|
||||||
|
{
|
||||||
|
wchar_t expandedCommand[_MAX_PATH]{};
|
||||||
|
::ExpandEnvironmentStrings(commandText, expandedCommand, _countof(expandedCommand));
|
||||||
|
ShellExecute(NULL,NULL,expandedCommand,NULL,NULL,SW_SHOWNORMAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
taskBar->bTimer=false;
|
taskBar->bTimer=false;
|
||||||
@@ -3785,7 +3811,6 @@ if (!g_bTrimHooks)
|
|||||||
// context menu
|
// context menu
|
||||||
if (msg->message==WM_NCRBUTTONUP || msg->message==WM_RBUTTONUP)
|
if (msg->message==WM_NCRBUTTONUP || msg->message==WM_RBUTTONUP)
|
||||||
{
|
{
|
||||||
CPoint pt0(GetMessagePos());
|
|
||||||
TaskbarInfo *taskBar=FindTaskBarInfoButton(msg->hwnd);
|
TaskbarInfo *taskBar=FindTaskBarInfoButton(msg->hwnd);
|
||||||
DWORD winVer=GetWinVersion();
|
DWORD winVer=GetWinVersion();
|
||||||
if (!taskBar && winVer>=WIN_VER_WIN8)
|
if (!taskBar && winVer>=WIN_VER_WIN8)
|
||||||
@@ -3796,6 +3821,7 @@ if (!g_bTrimHooks)
|
|||||||
}
|
}
|
||||||
if (taskBar)
|
if (taskBar)
|
||||||
{
|
{
|
||||||
|
CPoint pt0(GetMessagePos());
|
||||||
if (msg->message==WM_RBUTTONUP && msg->hwnd==taskBar->startButton && msg->lParam==MAKELPARAM(-1,-1))
|
if (msg->message==WM_RBUTTONUP && msg->hwnd==taskBar->startButton && msg->lParam==MAKELPARAM(-1,-1))
|
||||||
{
|
{
|
||||||
RECT rc;
|
RECT rc;
|
||||||
@@ -3830,6 +3856,7 @@ if (!g_bTrimHooks)
|
|||||||
CMD_OPEN,
|
CMD_OPEN,
|
||||||
CMD_OPEN_ALL,
|
CMD_OPEN_ALL,
|
||||||
CMD_EXPLORER,
|
CMD_EXPLORER,
|
||||||
|
CMD_OPEN_PINNED,
|
||||||
};
|
};
|
||||||
|
|
||||||
// right-click on the start button - open the context menu (Settings, Help, Exit)
|
// right-click on the start button - open the context menu (Settings, Help, Exit)
|
||||||
@@ -3850,6 +3877,8 @@ if (!g_bTrimHooks)
|
|||||||
AppendMenu(menu,MF_STRING,CMD_OPEN,FindTranslation(L"Menu.Open",L"&Open"));
|
AppendMenu(menu,MF_STRING,CMD_OPEN,FindTranslation(L"Menu.Open",L"&Open"));
|
||||||
if (!SHRestricted(REST_NOCOMMONGROUPS))
|
if (!SHRestricted(REST_NOCOMMONGROUPS))
|
||||||
AppendMenu(menu,MF_STRING,CMD_OPEN_ALL,FindTranslation(L"Menu.OpenAll",L"O&pen All Users"));
|
AppendMenu(menu,MF_STRING,CMD_OPEN_ALL,FindTranslation(L"Menu.OpenAll",L"O&pen All Users"));
|
||||||
|
if (GetSettingInt(L"PinnedPrograms")==PINNED_PROGRAMS_PINNED)
|
||||||
|
AppendMenu(menu,MF_STRING,CMD_OPEN_PINNED,FindTranslation(L"Menu.OpenPinned",L"O&pen Pinned"));
|
||||||
AppendMenu(menu,MF_SEPARATOR,0,0);
|
AppendMenu(menu,MF_SEPARATOR,0,0);
|
||||||
}
|
}
|
||||||
if (GetSettingBool(L"EnableSettings"))
|
if (GetSettingBool(L"EnableSettings"))
|
||||||
@@ -3896,6 +3925,16 @@ if (!g_bTrimHooks)
|
|||||||
if (SUCCEEDED(ShGetKnownFolderPath((res==CMD_OPEN)?FOLDERID_StartMenu:FOLDERID_CommonStartMenu,&pPath)))
|
if (SUCCEEDED(ShGetKnownFolderPath((res==CMD_OPEN)?FOLDERID_StartMenu:FOLDERID_CommonStartMenu,&pPath)))
|
||||||
ShellExecute(NULL,L"open",pPath,NULL,NULL,SW_SHOWNORMAL);
|
ShellExecute(NULL,L"open",pPath,NULL,NULL,SW_SHOWNORMAL);
|
||||||
}
|
}
|
||||||
|
if (res==CMD_OPEN_PINNED) // open pinned folder
|
||||||
|
{
|
||||||
|
SHELLEXECUTEINFO execute={sizeof(execute)};
|
||||||
|
CString path=GetSettingString(L"PinnedItemsPath");
|
||||||
|
execute.lpVerb=L"open";
|
||||||
|
execute.lpFile=path;
|
||||||
|
execute.nShow=SW_SHOWNORMAL;
|
||||||
|
execute.fMask=SEE_MASK_DOENVSUBST;
|
||||||
|
ShellExecuteEx(&execute);
|
||||||
|
}
|
||||||
if (res==CMD_EXPLORER)
|
if (res==CMD_EXPLORER)
|
||||||
{
|
{
|
||||||
CString path=GetSettingString(L"ExplorerPath");
|
CString path=GetSettingString(L"ExplorerPath");
|
||||||
|
|||||||
@@ -369,19 +369,20 @@ IDI_START10 ICON "start10.ico"
|
|||||||
IDB_ARROWS BITMAP "menu_arrows.bmp"
|
IDB_ARROWS BITMAP "menu_arrows.bmp"
|
||||||
IDB_ARROWS150 BITMAP "menu_arrows150.bmp"
|
IDB_ARROWS150 BITMAP "menu_arrows150.bmp"
|
||||||
IDB_SEARCH_ICONS BITMAP "search_icons.bmp"
|
IDB_SEARCH_ICONS BITMAP "search_icons.bmp"
|
||||||
IDB_STYLE_CLASSIC1 BITMAP "style_classic.bmp"
|
|
||||||
IDB_STYLE_CLASSIC2 BITMAP "style_vista.bmp"
|
|
||||||
IDB_STYLE_WIN7 BITMAP "style_7.bmp"
|
|
||||||
IDB_BTN_CLASSIC BITMAP "btn_classic.bmp"
|
IDB_BTN_CLASSIC BITMAP "btn_classic.bmp"
|
||||||
IDB_STYLE_CLASSIC1150 BITMAP "style_classic150.bmp"
|
|
||||||
IDB_STYLE_CLASSIC2150 BITMAP "style_vista150.bmp"
|
|
||||||
IDB_STYLE_WIN7150 BITMAP "style_7150.bmp"
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// IMAGE
|
// IMAGE
|
||||||
//
|
//
|
||||||
|
|
||||||
|
IDB_STYLE_CLASSIC1 IMAGE "style_classic.png"
|
||||||
|
IDB_STYLE_CLASSIC2 IMAGE "style_vista.png"
|
||||||
|
IDB_STYLE_WIN7 IMAGE "style_7.png"
|
||||||
|
IDB_STYLE_CLASSIC1150 IMAGE "style_classic150.png"
|
||||||
|
IDB_STYLE_CLASSIC2150 IMAGE "style_vista150.png"
|
||||||
|
IDB_STYLE_WIN7150 IMAGE "style_7150.png"
|
||||||
|
|
||||||
IDB_BUTTON96 IMAGE "button96.png"
|
IDB_BUTTON96 IMAGE "button96.png"
|
||||||
IDB_BUTTON120 IMAGE "button120.png"
|
IDB_BUTTON120 IMAGE "button120.png"
|
||||||
IDB_BUTTON144 IMAGE "button144.png"
|
IDB_BUTTON144 IMAGE "button144.png"
|
||||||
@@ -643,6 +644,12 @@ BEGIN
|
|||||||
IDS_PIC_COMMAND_TIP "Enter the command you want to run when you click on the user picture"
|
IDS_PIC_COMMAND_TIP "Enter the command you want to run when you click on the user picture"
|
||||||
IDS_NAME_COMMAND "User name command"
|
IDS_NAME_COMMAND "User name command"
|
||||||
IDS_NAME_COMMAND_TIP "Enter the command you want to run when you click on the user name"
|
IDS_NAME_COMMAND_TIP "Enter the command you want to run when you click on the user name"
|
||||||
|
IDS_ALIGN_WORK_AREA "Align start menu to working area"
|
||||||
|
IDS_ALIGN_WORK_AREA_TIP "Align the start menu to the working area instead of to the taskbar. Use with custom taskbars"
|
||||||
|
IDS_HOR_OFFSET "Horizontal position offset"
|
||||||
|
IDS_HOR_OFFSET_TIP "Offset the start menu horizontally by the amount of pixels specified"
|
||||||
|
IDS_VERT_OFFSET "Vertical position offset"
|
||||||
|
IDS_VERT_OFFSET_TIP "Offset the start menu vertically by the amount of pixels specified"
|
||||||
IDS_SMALL_SIZE_SM "Small icon size"
|
IDS_SMALL_SIZE_SM "Small icon size"
|
||||||
IDS_SMALL_SIZE_SM_TIP "Set the small icon size. The default is 16 for DPI<=96, 20 for 96<DPI<=120 and 24 for DPI>120"
|
IDS_SMALL_SIZE_SM_TIP "Set the small icon size. The default is 16 for DPI<=96, 20 for 96<DPI<=120 and 24 for DPI>120"
|
||||||
IDS_LARGE_SIZE_SM "Large icon size"
|
IDS_LARGE_SIZE_SM "Large icon size"
|
||||||
@@ -1037,7 +1044,7 @@ BEGIN
|
|||||||
IDS_FOLDERS_FIRST "Show folders first"
|
IDS_FOLDERS_FIRST "Show folders first"
|
||||||
IDS_FOLDERS_FIRST_TIP "When this is checked, the All Programs tree will show the folders first and the programs last"
|
IDS_FOLDERS_FIRST_TIP "When this is checked, the All Programs tree will show the folders first and the programs last"
|
||||||
IDS_PINNED_PROGRAMS "Pinned Programs folder"
|
IDS_PINNED_PROGRAMS "Pinned Programs folder"
|
||||||
IDS_PINNED_PROGRAMS_TIP "Select the location to store the pinned programs"
|
IDS_PINNED_PROGRAMS_TIP "Select the location to store pinned programs. After updating this setting, close this window in order to pin items through the context menu again"
|
||||||
IDS_FAST_ITEMS "Use Start Menu folder"
|
IDS_FAST_ITEMS "Use Start Menu folder"
|
||||||
END
|
END
|
||||||
|
|
||||||
@@ -1153,21 +1160,21 @@ END
|
|||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_STRING7100 "This is the default skin when no other skin is selected or if the selected skin fails to load.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7100 "This is the default skin when no other skin is selected or if the selected skin fails to load.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
IDS_STRING7101 "Windows Aero skin\n\nDefault skin to use for the Windows Aero theme.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7101 "Windows Aero skin\n\nDefault skin to use for the Windows Aero theme.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
IDS_STRING7102 "Windows Basic skin\n\nDefault skin to use for the Windows Basic theme.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7102 "Windows Basic skin\n\nDefault skin to use for the Windows Basic theme.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
IDS_STRING7103 "Classic skin\n\nClassic look with large or small icons.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7103 "Classic skin\n\nClassic look with large or small icons.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_STRING7104 "Full Glass skin\n\nTransparent menu with large or small icons.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7104 "Full Glass skin\n\nTransparent menu with large or small icons.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
IDS_STRING7105 "Smoked Glass skin\n\nSimple transparent menu with dark background.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7105 "Smoked Glass skin\n\nSimple transparent menu with dark background.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
IDS_STRING7106 "Windows XP Luna skin\n\nA start menu similar to the one in Windows XP.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7106 "Windows XP Luna skin\n\nA start menu similar to the one in Windows XP.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
IDS_STRING7107 "Windows 8 skin\n\nDefault skin to use for Windows 8.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7107 "Windows 8 skin\n\nDefault skin to use for Windows 8.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
IDS_STRING7108 "Midnight skin\n\nSkin with dark background.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7108 "Midnight skin\n\nSkin with dark background.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
IDS_STRING7109 "Metro skin\n\nSkin that uses the start screen colors.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7109 "Metro skin\n\nSkin that uses the start screen colors.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
IDS_STRING7110 "Metallic skin\n\nA start menu skin with metallic look.\n\nPart of <A HREF=""http://www.classicshell.net/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
IDS_STRING7110 "Metallic skin\n\nA start menu skin with metallic look.\n\nPart of <A HREF=""https://github.com/Open-Shell/Open-Shell-Menu/"">Open-Shell</A> (c) 2009-2017, Ivo Beltchev"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
@@ -1288,6 +1295,34 @@ BEGIN
|
|||||||
IDS_CLEAR_CACHE "Clear cached information"
|
IDS_CLEAR_CACHE "Clear cached information"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_NO_DBLCLICK "Single-click to open folder shortcuts"
|
||||||
|
IDS_NO_DBLCLICK_TIP "When this is checked, single-clicking shortcuts (links) to folders will open them in explorer. Hovering over the shortcut will still expand sub-menus"
|
||||||
|
IDS_BOLD_SETTINGS "Highlight modified settings"
|
||||||
|
IDS_BOLD_SETTINGS_TIP "When this is checked, settings that have been modified will be highlighted in bold"
|
||||||
|
IDS_SEARCH_HINT "Custom search hint"
|
||||||
|
IDS_SEARCH_HINT_TIP "When this is checked, the hint text in the search box will be replaced"
|
||||||
|
IDS_NEW_SEARCH_HINT "Custom search hint text"
|
||||||
|
IDS_NEW_SEARCH_HINT_TIP "The text to replace the search hint with. Empty text is a valid option"
|
||||||
|
IDS_MORE_RESULTS "Enable ""See more results"" option"
|
||||||
|
IDS_MORE_RESULTS_TIP "When this is checked, the search results will include an option to do a more advanced search"
|
||||||
|
IDS_OPEN_CMD "Custom command"
|
||||||
|
IDS_OPEN_CMD_TIP "The action will run a user-defined command"
|
||||||
|
IDS_OPEN_CMD_TEXT "Command to run"
|
||||||
|
IDS_OPEN_CMD_TEXT_TIP "Enter the command to run when you use this control"
|
||||||
|
IDS_ITEM_LINKS "Display as a list of links"
|
||||||
|
IDS_ITEM_LINKS_TIP "This item will appear as a sub-menu showing only its top-level contents"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
BEGIN
|
||||||
|
IDS_OPEN_TRUE_PATH "Open pinned folders to their true path"
|
||||||
|
IDS_OPEN_TRUE_PATH_TIP "When this is checked, pinned folders will open to their true path instead of the path to their shortcut in the Pinned Programs folder"
|
||||||
|
IDS_PINNED_PATH "Pinned folder path"
|
||||||
|
IDS_PINNED_PATH_TIP "The path to use as the Pinned folder. If the path does not exist, it will be created (if possible) after opening the start menu. Close this window after updating this setting to update your context menu.\n\nNote: If you do not have permissions for the selected path, you will not be able to pin items until you take ownership of the new folder"
|
||||||
|
END
|
||||||
|
|
||||||
#endif // English (U.S.) resources
|
#endif // English (U.S.) resources
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|||||||
@@ -30,46 +30,46 @@
|
|||||||
<ProjectGuid>{85DEECBB-1F9B-4983-9D54-3BF42182B7E7}</ProjectGuid>
|
<ProjectGuid>{85DEECBB-1F9B-4983-9D54-3BF42182B7E7}</ProjectGuid>
|
||||||
<RootNamespace>StartMenuDLL</RootNamespace>
|
<RootNamespace>StartMenuDLL</RootNamespace>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
<UseOfAtl>Static</UseOfAtl>
|
<UseOfAtl>Static</UseOfAtl>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -136,7 +136,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>false</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
@@ -161,7 +160,6 @@
|
|||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CLASSICSTARTMENUDLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<MinimalRebuild>false</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
|||||||
@@ -754,6 +754,32 @@
|
|||||||
#define IDS_SELECT_LAST 3657
|
#define IDS_SELECT_LAST 3657
|
||||||
#define IDS_SELECT_LAST_TIP 3658
|
#define IDS_SELECT_LAST_TIP 3658
|
||||||
#define IDS_CLEAR_CACHE 3659
|
#define IDS_CLEAR_CACHE 3659
|
||||||
|
#define IDS_ALIGN_WORK_AREA 3660
|
||||||
|
#define IDS_ALIGN_WORK_AREA_TIP 3661
|
||||||
|
#define IDS_HOR_OFFSET 3662
|
||||||
|
#define IDS_HOR_OFFSET_TIP 3663
|
||||||
|
#define IDS_VERT_OFFSET 3664
|
||||||
|
#define IDS_VERT_OFFSET_TIP 3665
|
||||||
|
#define IDS_NO_DBLCLICK 3666
|
||||||
|
#define IDS_NO_DBLCLICK_TIP 3667
|
||||||
|
#define IDS_BOLD_SETTINGS 3668
|
||||||
|
#define IDS_BOLD_SETTINGS_TIP 3669
|
||||||
|
#define IDS_SEARCH_HINT 3670
|
||||||
|
#define IDS_SEARCH_HINT_TIP 3671
|
||||||
|
#define IDS_NEW_SEARCH_HINT 3672
|
||||||
|
#define IDS_NEW_SEARCH_HINT_TIP 3673
|
||||||
|
#define IDS_MORE_RESULTS 3674
|
||||||
|
#define IDS_MORE_RESULTS_TIP 3675
|
||||||
|
#define IDS_OPEN_CMD 3676
|
||||||
|
#define IDS_OPEN_CMD_TIP 3677
|
||||||
|
#define IDS_OPEN_CMD_TEXT 3678
|
||||||
|
#define IDS_OPEN_CMD_TEXT_TIP 3679
|
||||||
|
#define IDS_ITEM_LINKS 3680
|
||||||
|
#define IDS_ITEM_LINKS_TIP 3681
|
||||||
|
#define IDS_OPEN_TRUE_PATH 3682
|
||||||
|
#define IDS_OPEN_TRUE_PATH_TIP 3683
|
||||||
|
#define IDS_PINNED_PATH 3684
|
||||||
|
#define IDS_PINNED_PATH_TIP 3685
|
||||||
#define IDS_STRING7001 7001
|
#define IDS_STRING7001 7001
|
||||||
#define IDS_STRING7002 7002
|
#define IDS_STRING7002 7002
|
||||||
#define IDS_STRING7003 7003
|
#define IDS_STRING7003 7003
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 270 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 182 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 259 KiB |