This commit is contained in:
coddec
2018-11-06 16:34:53 +11:00
parent a16729129a
commit dc1b122e66
1104 changed files with 0 additions and 168632 deletions

View File

@@ -1,7 +0,0 @@
root=true
[*]
indent_style=tab
indent_size=4
trim_trailing_whitespace=true
insert_final_newline=true

355
.gitignore vendored
View File

@@ -1,355 +0,0 @@
.vs
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebug64/
[Dd]ebugPublic/
[Rr]elease/
[Rr]elease64/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*.dll
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.exe
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.tlog/
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
*.lastbuildstate
*.exp
*.lib
*.res
*.ipdb
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# PVS-Studio temporary files (Github integration performance fix)
*.PVS-Studio.*
# Classic-Shell specific ignores
Src/StartMenu/Skins/
Src/Setup/Output/
Src/Setup/Final/
Src/Setup/Temp/
*.adml
*.admx
*.zip
*.bin
*.chm

21
LICENSE
View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017-2018
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,437 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Classic Explorer</title>
<style type="text/css">
h1 {
color: #0070c0;
font-family: "Times New Roman",Times,serif;
}
body {
font-family: Arial,Helvetica,sans-serif;
}
</style></head><body>
<h1><a target="_blank" href="http://www.classicshell.net/"><img src="images/OpenShell.png" style="border: 0px solid ; width: 64px; height: 64px;" alt="Open-Shell website" title="Open-Shell website"></a>&nbsp; Classic Explorer</h1><span style="font-style: italic; color: rgb(0, 112, 192); font-weight: bold;"></span><br>
<span style="font-weight: bold; color: rgb(79, 129, 189);">Classic
Explorer</span> is a plugin for Windows Explorer that:
<ul>
<li>Adds a toolbar to Explorer for some common operations (Go
to parent folder, Cut, Copy, Paste, Delete, Properties, Email). The toolbar is fully customizable</li>
<li>Replaces the copy UI in Windows 7 with the more user-friendly &#8220;classic&#8221; version similar to Windows XP</li>
<li>Handles Alt+Enter in the folder panel of Windows Explorer and shows the properties of the selected folder</li>
<li>Has options for customizing the folder panel to look more like the Windows XP version or to not fade the expand buttons</li>
<li>Can show the free disk space and the total file size in the status bar</li>
<li>Can disable the breadcrumbs in the address bar</li>
<li>Fixes
a long list of features that are broken in Windows 7 &#8211; missing icon
overlay for shared folders, the jumping folders in the navigation pane,
missing sorting headers in list view, and more<br>
</li>
</ul><br>
<h1><a name="copy"></a>New copy UI (Windows 7 only)<br>
</h1>
In Vista when you copy files and there is a conflict you are presented
with this:<br>
<br>
<img src="images/before.png" style="width: 460px; height: 472px;" alt="Before" title="Before"><br>
<p>What&#8217;s wrong with it?</p>
<p>Well, for
starters it is half a screen full of text that you have to read. Also
it is not immediately clear what parts of it are clickable. You have to
move the mouse around to discover the UI like in a <a target="_blank" href="http://en.wikipedia.org/wiki/Day_of_the_Tentacle">Lucas Arts
adventure game</a>. And finally the keyboard usability is awful. To
tell it
<span style="font-weight: bold; color: rgb(79, 129, 189);">&#8220;yes, I know what I&#8217;m doing, I want to overwrite all files&#8221;</span> you have to
press <strong><span style="color: rgb(79, 129, 189);">Alt+D, up, up, up, Space</span></strong>! It is harder than performing the <a target="_blank" href="http://www.youtube.com/watch?v=AErqKebdqjU&amp;feature=fvw">Akuma
Kara Demon move</a> in Street Fighter 3. There is a time and a place
for
that stuff and copying files is not it.</p>
<p>The Classic Explorer plugin brings back the simpler dialog box from Windows XP:<br>
</p>
<p><img src="images/after.png" style="width: 438px; height: 251px;" alt="After" title="After"><br>
</p>
<p>It
is immediately clear what is clickable <span style="font-style: italic;">(clue &#8211; the buttons at the
bottom)</span>, there is easy keyboard navigation (press <span style="font-weight: bold; color: rgb(79, 129, 189);">Y</span> for &#8220;Yes&#8221;, <span style="font-weight: bold; color: rgb(79, 129, 189);">A</span> to
copy all files) and you can still see which file is newer and which is
larger. And of course just like in Windows XP, holding down <strong style="color: rgb(79, 129, 189);">Shift</strong> while clicking on the No button means "No to All" (or just press <strong style="color: rgb(79, 129, 189);">Shift+N</strong>).<br>
</p>
<p>If you click
on <span style="text-decoration: underline;">More&#8230;</span> you will get
the original dialog from Windows. From there you
will see all the details and you&#8217;ll get an extra option to &#8220;Copy, but
keep both files&#8221;.</p>
<p><span style="font-weight: bold;">Important Note:</span> Only the UI is replaced. The underlying system that does the actual copying is not affected.<br>
</p>
<p><br>
</p>
<h1><a name="alt_enter"></a>Alt+Enter in the folder panel</h1>
Alt+Enter is
universal shortcut across Windows to bring up the properties of the
selection. But newer versions of Windows it doesn&#8217;t work in the left
panel that shows the folders. It works fine on the right where the
files are. This is broken compared to Windows XP where Alt+Enter works
in both places.
<p>To solve the
problem, the Classic Explorer plugin detects when you press Alt+Enter
and shows the properties for the currently selected folder.<br>
</p>
<p><br>
</p>
<h1><a name="toolbar"></a>Toolbar for Windows Explorer</h1>
Windows
Explorer in Vista doesn&#8217;t have a toolbar like the one in Windows XP. If
you want to go to the parent folder you have to use the breadcrumbs
bar. If you want to copy or delete a file with the mouse you have to
right-click and look for the Delete command. The right-click menu gets
bigger and bigger the more shell extensions you have installed, and
finding the right command can take a while.<br>
<p>To solve the problem, the Classic Explorer plugin adds a new toolbar:<br>
</p>
&nbsp;<img src="images/toolbar.png" alt="Explorer Toolbar" title="Explorer Toolbar"><br>
<br>
The available button are: Go Up, Cut, Copy, Paste, Delete, Properties,
Email, Settings. More buttons can be added from the Settings dialog.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 112, 192);">Hints:</span><br>
&nbsp;&nbsp;&nbsp; - Hold the <strong>Control key</strong> when clicking the Up button to open the parent folder in a new Explorer window.<br>
&nbsp;&nbsp;&nbsp; - Hold the <strong>Shift key</strong> when clicking the Delete button to permanently delete a file<br>
<br>
The new toolbar doesn&#8217;t show up in Explorer automatically after
installation. You have to do a few things before you can use it:<br>
<ol style="font-family: Helvetica,Arial,sans-serif;">
<li>Open a new Windows Explorer window (Win key+E)</li>
<li>Turn on the menu in Explorer &#8211; Go to Tools (Alt+T), Folder
Options, the View tab, and make sure &#8220;Always show menus&#8221; is checked.</li>
<li>Right click on the menu bar and select &#8220;Classic Explorer Bar&#8221; to
show the toolbar.</li>
<li>If that option is not available (you only see &#8220;Lock the
Toolbars&#8221;) you may have to enable the plugin from Internet Explorer.
Run IE, right click on its toolbar and select &#8220;Classic Explorer Bar&#8221;.
It will ask you if you want to enable this add-on. Select &#8220;Enable&#8221;,
then repeat steps 1 through 3 again.</li>
<li>If even then you don't see the toolbar, maybe the browser
extensions are disabled on your system. This is usually the default for
servers. Open the "Internet Options", go to the "Advanced" tab, and check
the option "Enable third-party browser extensions".<br>
</li>
</ol><br>
<h1><a name="statusbar"></a>Status bar<br>
</h1>
Classic Explorer restores the original Explorer status bar that shows the free disk space and the size of the selected files:<br>
<br>
<img src="images/statusbar.png" style="width: 507px; height: 26px;" alt="File size in status bar" title="File size in status bar"><br>
<br>
Unlike the built-in status bar, the selection size is shown even if
more than 100 files are selected. When no files are selected the total
size of all files in the folder is shown.<br>
<br><strong>Windows 7 note:</strong> Classic Explorer enhances the
default status bar instead of replacing it. To see it, you have to turn
it on first from the View menu.
The status bar is different from the blue
Details Pane you see at the bottom of Explorer. You can turn off the
Details Pane from the Organize menu to save space. Also there is a bug
in the Windows 7 Explorer that sometimes doesn't show any text in the
status bar. Press <strong style="color: rgb(0, 112, 192);">F5</strong> to refresh the view and get the status text.<br>
<br><strong>Windows 8 note:</strong> Classic Explorer adds its own
status bar. You should hide the default status bar to save space.
Select the View tab in the ribbon, then click on Options. Select the
View tab in the options. Locate the checkbox "Show status bar" and
uncheck it.
<br>
<br>
<h1><a name="settings"></a>Settings</h1>You can access the settings of Classic Explorer from the toolbar or from the start menu:<br>
<img style="width: 682px; height: 465px;" alt="" src="images/explorer_settings.png"><br>
<br>You can choose from seeing only the basic settings, or all
available settings. Hover over each setting to see a description of
what it's for. Type in the search box to find a setting by name.<br>
Every setting has a default value. The default value can be constant,
or it may depend on the current system settings. Once you edit a
setting it becomes "modified" and is shown in bold. To revert to the
default value, right-click on the setting.<br>
<br>You can save the settings to an XML file, and later load them back.
Press the <span style="font-weight: bold;">Backup</span> button to access these functions. From there you can
also reset all settings to their default value.<br>
<br>
Press OK to store your settings. Most of the settings will be applied
the next time you open a new Explorer window. Small number of settings
will require a log off before you can see the change.<br>
<br>
<span style="font-weight: bold;">Note:</span> All Settings windows are resizable. Resize them and place them where you want them to be. They will remember the new position.<br>
<br>
Here's one example of what can be customized:<br>
<img src="images/titlebar.png" alt="Title bar tweaks" title="Title bar tweaks"><br>
<br>
Click on the <span style="font-weight: bold;">Toolbar Buttons</span> tab to customize the toolbar:<br>
<img style="width: 682px; height: 465px;" alt="" src="images/toolbar_settings.png"><br>
<br>The column on the left shows the current buttons in the toolbar,
and the column on the right lists the buttons you can add to the
toolbar. You can drag and drop buttons from the right column to the
left. You
can rearrange the buttons by dragging them up and down. If you drop one button inside another you will create a sub-menu.<br>
Hover over each
button to see a short description of what it does. Right-click on each
button to access more functions (like Delete, Rename, etc). From the
right-click menu you can also reset the toolbar to the original state.<br>
Each item in the left column must have a unique name. This is the
identifier of the item and can only contain English letters, digits and
underscore. Some items (like SEPARATOR) cannot be renamed.<br>
<br>
<span style="font-weight: bold;">Important Note:</span> Not all available commands have default icons or text. That's because Windows doesn't have icons for things like <span style="font-weight: bold;">Undo</span>, <span style="font-weight: bold;">Select All</span>, etc. If you want to use such buttons in your toolbar you will have to provide your own icon. See below how to do it.<br>
<br>
After you place a button in the toolbar, you can edit it's attributes. Double-click on the button to edit:<br>
<img style="width: 446px; height: 375px;" alt="Edit toolbar button" title="Edit toolbar button" src="images/button_settings.png"><br>
Here you can select a command for the button, its text and icon. Press the <span style="font-weight: bold;">Restore Defaults</span> button to get the default text and icon for the chosen command.<br>
The command can be:<br>
<ul>
<li><span style="font-weight: bold;">left blank</span> - then if the link attribute is used, it will act as a command</li>
<li><span style="font-weight: bold;">one of the predefined commands</span> - from the dropdown</li>
<li><span style="font-weight: bold;">open &lt;some folder&gt;</span> - this will open the folder in the current browser</li>
<li><span style="font-weight: bold;">sortby &lt;property&gt;</span> - this will sort the folder by the given property - <span style="font-weight: bold;">name, type, size </span>or<span style="font-weight: bold;"> date</span>. Use '-' in front of the property to sort in descending order: <span style="font-weight: bold;">"sortby -name"</span>. You can use other properties if you know their code. For example <span style="font-weight: bold;">"sortby {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 10"</span> is the same as <span style="font-weight: bold;">"sortby name"</span>. For more property codes refer to the file <span style="font-weight: bold;">propkey.h</span> in the Windows SDK (also found <a href="http://msdn.microsoft.com/en-us/library/cc251929%28v=prot.10%29.aspx">here</a> - scroll down to the "Full property table"). Not all property codes are valid or supported (for example the <span style="font-weight: bold;">album year</span> property <span style="font-weight: bold;">{56A3372E-CE9C-11D2-9F0E-006097C686F6}, 5</span> only works when showing music albums)</li>
<li><span style="font-weight: bold;">groupby &lt;property&gt;</span> - similar to <span style="font-weight: bold;">sortby</span>, but groups the files by a given property. Use the command <span style="font-weight: bold;">groupby</span> with no property to disable the grouping<br>
</li>
<li><span style="font-weight: bold;">custom executable string</span>
- this can be a name of a program and its arguments, or even a URL
(like http://www.google.com). You can use environment variables like <span style="font-weight: bold;">%SystemRoot%</span>. You can also use the
placeholders <span style="font-weight: bold;">%1</span>, <span style="font-weight: bold;">%2</span>, <span style="font-weight: bold;">%3</span>, <span style="font-weight: bold;">%4</span> and <span style="font-weight: bold;">%5</span>:</li>
<ul>
<li><span style="font-weight: bold;">%1</span> is the path of the
current folder. Keep in mind that if the current folder is a root of a
drive it will end with a backslash (like C:\)<br>
</li>
<li><span style="font-weight: bold;">%2</span> is the path of the selected file (only when a single file is
selected)</li>
<li><span style="font-weight: bold;">%3</span>
is a name of a temporary text file that contains all selected files.
Each line in the text file contains one file with its full path<br>
</li>
<li><span style="font-weight: bold;">%4</span>
is the same as %3, but the file is in Unicode (UTF16) format. The file
contains no byte order mark. %3 and %4 can't both be used by the same command<br>
</li>
<li><span style="font-weight: bold;">Note to developers: </span>When
%3 or %4 is used, it is the responsibility of the command to delete the
temporary file when it finishes. Otherwise the temp file will be left
behind and waste disk space. Also if the command is a console application
or a batch file it will be launched in silent mode with no console
window</li>
<li><span style="font-weight: bold;">%5</span> is a name of a
temporary text file, which can be used to return a command back to
Classic Explorer. If the first 2 bytes of the file are 255 and 254, the
file is treated as Unicode. Only one command can be used at a time. The command
can be:</li>
<ul>
<li><span style="font-weight: bold;">open &lt;folder name&gt;</span> - causes Explorer to navigate to the given folder</li>
<li><span style="font-weight: bold;">select &lt;list of file names&gt;</span>
- selects the given files, deselects the rest. The file names must be
separated by a tab or a newline character. The files should not contain
a path. If they do, the path will be ignored<br>
</li>
<li><span style="font-weight: bold;">refresh</span> - refreshes Explorer</li>
</ul>
</ul>
<ul>
<li><span style="font-weight: bold;">Note to developers:</span>
commands using %5 will run in silent mode (like commands using %3 or
%4) but
also Explorer will wait for the process to finish. The process must
finish as quickly as possible, because Explorer will be frozen during
the execution of the command</li>
<li>See the next section for a few examples how to use these parameters<br>
</li>
</ul>
</ul>
The link can be a path to a file or a folder. If it is a file, that
file will be executed. If it is a folder, that folder will be opened as
a sub-menu (only for top-level buttons).<br>
<br>
The icon can be:<br style="font-weight: bold;">
<ul>
<li><span style="font-weight: bold;">left blank</span> - then if the link attribute points to a file or a folder, the icon of that file or folder will be used<br>
<span style="font-weight: bold;"></span></li>
<li><span style="font-weight: bold;">resource file,icon ID</span> - for example <span style="font-weight: bold;">%windir%\notepad.exe,2</span>. Do not leave space between the file name and the comma. <span style="font-weight: bold;">Make sure you are using the icon's resource ID, and not the icon's index.</span> For best results use the <span style="font-weight: bold;">[...]</span> button next to the icon box</li>
<li><span style="font-weight: bold;">,icon ID</span> - same as above, but the resource file is the <span style="font-weight: bold;">ClassicExplorer.dll</span> itself. This is useful when referring to Classic Explorer's own icons<br>
</li>
<li><span style="font-weight: bold;">icon file</span> -&nbsp; for example <span style="font-weight: bold;">C:\Program Files\Mozilla Thunderbird\Email.ico</span></li>
<li><span style="font-weight: bold;">none</span> - this will use a blank icon</li>
</ul>
If the label or the tip attribute start with <span style="font-weight: bold;">$</span> (dollar sign), then the
system will treat it as a name of a string in the <span style="font-weight: bold;">ExplorerL10N.ini</span>
file. The actual text will depend on the current language setting. This
is useful when creating a toolbar that can be used by multiple languages.<br>
<br>
<span style="font-weight: bold;">Note to developers: </span>Buttons for custom commands can be checked or disabled. The toolbar checks the registry key <span style="font-weight: bold;">HKCU\Software\OpenShell\ClassicExplorer</span>
for a DWORD value with the name of the button (the name used in left
column). 0 means normal, 1 is disabled and 2 is checked. The toolbar
reads the registry keys on startup. To force the buttons to update
their state after that you need to find all Explorer windows, locate
the child window with class <span style="font-weight: bold;">OpenShell.CBandWindow</span>, and post a message <span style="font-weight: bold;">WM_CLEAR</span>. This is useful if you are developing a custom exe to be used by the toolbar.<br>
<br>
<h1><a name="examples"></a>Examples for Custom Commands</h1>
<h3>0) Use quotes when necessary</h3>In order to support paths that
contain spaces, you should use quotes around the path parameters. The
quotes are not always required, like in examples 1 and 2 below. Make
sure you test your commands with paths containing spaces to avoid
surprises.<br>
<br>
<h3>1) Print the current folder</h3>
Use this command: <span style="font-weight: bold;">cmd.exe /k echo %1</span>. %1 will be replaced by the path of the current folder.<br>
<br>
<h3>2) Open the selected file in Notepad</h3>
Use this command: <span style="font-weight: bold;">%SystemRoot%\notepad.exe %2</span>.
%2 will be replaced by the full name of the selected file. It doesn't
need to be in quotes because Notepad uses the whole command line as a
file name.<br>
<br>
<h3>3) Copy selected files to the parent folder<br>
</h3>
Create a batch file called <span style="font-weight: bold;">C:\CopyParent.bat:<br><span style="font-family: monospace;">
set list=%1<br>
set list=%list:"=%<br>
for /F "delims=" %%i in (%list%) do copy /Y "%%i" ..<br>
del %1<br style="font-family: monospace;"></span></span>
<br>
Use this command: <span style="font-weight: bold;">C:\</span><span style="font-weight: bold;">CopyParent</span><span style="font-weight: bold;">.bat "%3"</span>.
%3 will be replaced by a text file containing the full names of all
selected files. The batch file will read each line of that text file,
and copy each of the selected files to the parent folder. At the end
the batch file deletes the initial
temp file. The first two <b>set</b> commands remove the quotes from the %1 parameter.<br>
<br>
<h3>4) Select all text files</h3>
Create a batch file called <span style="font-weight: bold;">C:\SelectText.bat</span>:<br>
<span style="font-weight: bold; font-family: monospace;">echo select &gt; %1</span><br style="font-weight: bold; font-family: monospace;">
<span style="font-weight: bold; font-family: monospace;">dir *.txt /b &gt;&gt; %1</span><br style="font-weight: bold; font-family: monospace;">
<br>
Use this command: <span style="font-weight: bold;">C:\SelectText.bat "%5".</span>
%5 will be replaced by a blank text file, where the command must output
the word "select" and a list of files it wants to select. The "dir
*.txt /b" command provides that list.<br>
<br>
<br>
<h1><a name="admin"></a>Administrative Settings</h1>The settings are
per user and are stored in the registry. By default every user can edit
all of their settings. An administrator can lock specific settings, so
no user can edit them:<br>
<img style="width: 682px; height: 465px;" alt="" src="images/up_locked.png"><br>
In this example the setting "Show Up button" is locked to always be
"Before Back/Forward" and can't be changed by any user. This is achieved
by adding the setting to the <span style="font-weight: bold;">HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\ClassicExplorer</span> registry key. Create a string value called "ShowUpButton" and set it to "BeforeBack".<br>
<br>In some cases you may not want to lock the value for all users, but
simply modify the initial value of the setting. In such case add
"_Default" to the name of the value. For example if you want the Up
button to be before Back by default but still allow the users to change
it if they wish, create a string value named "ShowUpButton_Default" and
set it to "BeforeBack".<br>
<br>
The easiest way to know the registry name of a setting and its value is to modify it, and then look it up in <span style="font-weight: bold;">HKEY_CURRENT_USER\Software\OpenShell\ClassicExplorer\Settings</span>.<br>
Sometimes you may want to lock a setting to its default value, but you
don't know what the default value is. Then create a DWORD value and set
it to 0xDEFA.<br>
<br>
There is also a global setting <span style="font-weight: bold;">EnableSettings</span>. Set it to 0 in the
registry to prevent the users from even opening the Settings dialog:<br>
<img style="width: 603px; height: 257px;" alt="Disable all settings" title="Disable all settings" src="images/settings_disable_ex.png"><br>
<br>
You can enable or disable Classic Explorer for individual processes
using the 2 registry settings "ProcessWhiteList" and
"ProcessBlackList". <span style="font-weight: bold;">ProcessWhiteList </span>is
a list of processes for which Classic Explorer will load. Use only the
file name of the process (like "notepad.exe"), separate multiple names
with a comma or a semicolon. <span style="font-weight: bold;">ProcessBlackList</span>
is a list of processes for which Classic Explorer will not load. You
should only use one of the two lists. If both lists are specified, the
black list will be ignored. The lists are only used when you enable the
features that are supported for processes other than Explorer. At the
moment these features are: the shared overlay icon and the replacements
for the copy dialogs.<br>
<br>
Editing the settings through group policies is also supported. Extract the file <b>PolicyDefinitions.zip</b> found in the installation folder and read the document <b>PolicyDefinitions.rtf</b> for more details.<br>
<br>
<br>
<h1><a name="dependencies"></a>Dependencies on Windows settings<br>
</h1>
Some Classic Explorer settings require specific Windows settings to be enabled:<br>
<ul>
<li><span style="font-weight: bold;">Windows Vista navigation pane style</span> - requires Windows to be using Aero or Basic theme</li>
<li><span style="font-weight: bold;">Auto-navigate to the selected folder</span>
- this setting can be set to "Always" only when Explorer is set to
"Automatically expand to current folder". Look for it in the <span style="font-weight: bold;">General</span> tab of <span style="font-weight: bold;">Tools -&gt; Folder Options</span></li>
<li><span style="font-weight: bold;">Show caption in the title bar</span>
- the caption will show either the full path name or only the name of
the current folder. To see the full path you need to enable "Display
the full path in the title bar (Classic theme only)" in the <span style="font-weight: bold;">View</span> tab of <span style="font-weight: bold;">Tools -&gt; Folder Options</span></li>
<li><span style="font-weight: bold;">All status bar settings</span> - require the status bar to be visible (not to be confused with the Details Pane). Check <span style="font-weight: bold;">View -&gt; Status bar</span></li>
</ul>
<br>
<h1><a name="localization"></a>Localization</h1>
The user
interface (except the Settings dialog box) is localized in 35
languages.<br>
The Settings dialog box is translated in a smaller number of languages.
The default installation contains only English. More languages can be
downloaded from the <a href="http://www.classicshell.net/translations/">translations page</a>. Make sure you download the translation package for the exact version of Open-Shell.<br>
<span style="font-weight: bold;"></span><br>
</body></html>

View File

@@ -1,62 +0,0 @@
; DON'T TRANSLATE =============================================================
; disabled
LogLevel.supportedOn = never
ShowFreeSpace2.supportedOn = never
ShowInfoTip2.supportedOn = never
; os-specific
ReplaceFileUI.supportedOn = win7
ReplaceFolderUI.supportedOn = win7
OverwriteAlertLevel.supportedOn = win7
EnableMore.supportedOn = win7
MoreProgressDelay.supportedOn = win7
FileExplorer.supportedOn = win7
ShowUpButton.supportedOn = win7
UpIconNormal.supportedOn = win7
UpIconPressed.supportedOn = win7
UpIconHot.supportedOn = win7
UpIconDisabled.supportedOn = win7
UpIconSize.supportedOn = win7
FixFolderScroll.supportedOn = win7
ForceRefreshWin7.supportedOn = win7
ShowCaption.supportedOn = win7
ShowIcon.supportedOn = win7
ShowStatusBar.supportedOn = win881
ShowZone.supportedOn = win881
; TRANSLATE ===================================================================
Title.text = Open-Shell settings
State.text = State:
State1.text = Locked to this value
State2.text = Locked to default
State3.text = Unlocked
State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users.
State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored.
State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting.
ClassicExplorerCat.text = Classic Explorer
ClassicExplorerCatHelp.text = Classic Explorer group policy settings
SUPPORTED_CS404.text = Requires Open-Shell 4.0.4 or later.
SUPPORTED_CS404_WIN7.text = Requires Windows 7.
SUPPORTED_CS404_WIN881.text = Requires Windows 8 or Windows 8.1.
AddressAltD.nameOverride = Additional shortcut for the address bar
AddressAltD.tipOverride = Enter a letter 'A' to 'Z' to be a shortcut for the address bar in combination with the Alt key
EnableSettings.nameOverride = Enable settings
EnableSettings.tipOverride = Enables the users to edit their own settings
ProcessWhiteList.nameOverride = Process white list
ProcessWhiteList.tipOverride = List of processes that can load Classic Explorer. Use only the file name of the process (like "notepad.exe"), separate multiple names with a comma or semicolon.
ProcessBlackList.nameOverride = Process black list
ProcessBlackList.tipOverride = List of processes that will not load Classic Explorer. Use only the file name of the process (like "notepad.exe"), separate multiple names with a comma or semicolon.
ToolbarItems.nameOverride = Toolbar buttons
ToolbarItems.tipOverride = Select the buttons to be shown in the toolbar.\nThe best way to get the right string is to configure the buttons in the Classic Explorer settings dialog and then look up the value named ToolbarItems in HKCU\Software\OpenShell\ClassicExplorer\Settings
NoInitialToolbar.nameOverride = No initial showing of the toolbar
NoInitialToolbar.tipOverride = When this is checked, the Explorer toolbar will not be automatically displayed
; os-specific
FileExplorer.nameOverride = Enable dialogs only in Explorer (improves performance)

View File

@@ -1,100 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Classic IE</title>
<style type="text/css">
h1 {
font-family: "Times New Roman",Times,serif;
color: #0070c0;
}
p {
font-family: Arial,Helvetica,sans-serif;
}
body {
font-family: Arial,Helvetica,sans-serif;
}
</style></head><body>
<h1><a target="_blank" href="http://www.classicshell.net/"><img src="images/OpenShell.png" style="border: 0px solid ; width: 64px; height: 64px;" alt="Open-Shell website" title="Open-Shell website"></a>&nbsp;
Classic IE</h1><span style="font-style: italic; color: rgb(0, 112, 192); font-weight: bold;"></span><span style="color: rgb(79, 129, 189); font-weight: bold;"><br>
Classic IE</span>
is a
small plugin for Internet Explorer that:<br>
<ul>
<li>Adds a caption to the title
bar so you can see the full title of the page</li>
<li>Shows the security zone in the status bar</li>
<li>Shows the loading progress in the status bar</li>
</ul>
<br>
See the full page title even when it doesn't fit in the tab:<br>
<img style="width: 748px; height: 190px;" alt="" src="images/ie9_caption.png"><br>
<br>See the progress and the security zone:<br>
<img style="width: 429px; height: 56px;" alt="" src="images/ie9_status.png"><br>
<br>
<h1><a name="install"></a>Installation</h1>
When you run Internet Explorer for the first time after installing
Classic IE it may prompt you that a new add-on called ClassicIEBHO is
installed and if you want to enable it. Click on the Enable button. If
you don't get a prompt, go to <span style="font-weight: bold;">Tools -&gt; Manage add-ons</span> and make sure ClassicIEBHO is enabled. After enabling the add-on you have to restart Internet Explorer to activate the plugin.<br>
<br>
<h1><a name="settings"></a>Settings</h1>
You can access the settings from <span style="font-weight: bold;">Tools -&gt; Classic IE Settings</span>
or from the start menu. The settings control the color and the font of
the caption, and what information to display on the status bar.<br>
<img style="width: 683px; height: 438px;" alt="" src="images/ie9_settings.png"><br>
<br>You can choose from seeing only the basic settings, or all
available settings. Hover over each setting to see a description of
what it's for. Type in the search box to find a setting by name.<br>
Every setting has a default value. The default value can be constant,
or it may depend on the current system settings. Once you edit a
setting it becomes "modified" and is shown in bold. To revert to the
default value, right-click on the setting.<br>
<br>
You can save the settings to an XML file, and later load them back.
Press the <span style="font-weight: bold;">Backup</span> button to access these functions. From there you can
also reset all settings to their default value.<br>
<br>
Press OK to store your settings. You need to restart Internet Explorer to apply the new settings.<br>
<br>
<h1><a name="admin"></a>Administrative Settings</h1>
The settings are
per user and are stored in the registry. By default every user can edit
all of their settings. An administrator can lock specific settings, so
no user can edit them. This is achieved by adding the setting to the <span style="font-weight: bold;">HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\ClassicIE</span> registry key.<br>
<br>
You may also wish to not lock the setting but only override its initial
value. Then add "_Default" to the name of the registry value.<br>
<br>
The easiest way to know the registry name of a setting and its value is to modify it, and then look it up in <span style="font-weight: bold;">HKEY_CURRENT_USER\Software\OpenShell\ClassicIE\Settings</span>.<br>
Sometimes you may want to lock a setting to its default value, but you
don't know what the default value is. Then create a DWORD value and set
it to 0xDEFA.<br>
<br>
There is also a global setting <span style="font-weight: bold;">EnableSettings</span>. Set it to 0 in the
registry to prevent the users from even opening the Settings dialog:<br>
<img style="width: 656px; height: 292px;" alt="" src="images/settings_disable_ie9.png"><br>
<br>
Editing the settings through group policies is also supported. Extract the file <b>PolicyDefinitions.zip</b> found in the installation folder and read the document <b>PolicyDefinitions.rtf</b> for more details.<br>
<br>
</body></html>

View File

@@ -1,26 +0,0 @@
; DON'T TRANSLATE =============================================================
LogLevel.supportedOn = never
; TRANSLATE ===================================================================
Title.text = Open-Shell settings
State.text = State:
State1.text = Locked to this value
State2.text = Locked to default
State3.text = Unlocked
State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users.
State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored.
State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting.
ClassicIECat.text = Classic IE
ClassicIECatHelp.text = Classic IE group policy settings
SUPPORTED_CS404.text = Requires Open-Shell 4.0.4 or later.
SUPPORTED_IE9.text = Requires Internet Explorer 9 or later.
EnableSettings.nameOverride = Enable settings
EnableSettings.tipOverride = Enables the users to edit their own settings
CaptionFont.tipAddition = .\n\nThe format is <font name>, <normal | bold | italic | bold_italic>, <size>. For example "Segoe UI, normal, 9"

View File

@@ -1,62 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>License Agreement</title>
<style type="text/css">
h1 {
color: #0070c0;
font-family: "Times New Roman",Times,serif;
}
body {
font-family: Arial,Helvetica,sans-serif;
}
</style></head><body>
<h1><a target="_blank" href="http://www.classicshell.net/"><img src="images/OpenShell.png" style="border: 0px solid ; width: 64px; height: 64px;" alt="Open-Shell website" title="Open-Shell website"></a>&nbsp; License Agreement<br>
</h1><br>
<span style="font-weight: bold; color: rgb(79, 129, 189);">
Classic Shell © 2009-2017, Ivo Beltchev <a target="_blank" href="http://www.classicshell.net/"></span>http://www.classicshell.net/</a><br>
<span style="font-weight: bold; color: rgb(79, 129, 189);">
Open-Shell © 2017-2018, The Open-Shell Team <a target="_blank" href="https://github.com/open-shell"></span>https://github.com/open-shell</a><br>
<br>
<span style="font-weight: bold;">BY USING THIS SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.</span><br>
<br>
If you comply with these license terms, you have the rights below.<br>
<br>
<ol>
<li>
<p><span style="font-weight: bold;">SCOPE OF LICENSE.</span> This agreement only gives you some rights to use the software. The author reserves all other rights.</p>
</li>
<li>
<p><span style="font-weight: bold;">INSTALLATION AND USE RIGHTS.</span> This software is free for both personal and commercial use. You may install and use it on your computers free of charge.</p>
</li>
<li>
<p><span style="font-weight: bold;">REDISTRIBUTION RIGHTS.</span> You may redistribute the software as long as you do it free of charge and you don&#8217;t misrepresent the origin of the software.</p>
</li>
<li>
<p><span style="font-weight: bold;">TRADEMARKS.</span> The Open-Shell name and logo are trademarks of the author. Using them to to identify other products or services is not permitted.</p>
</li>
<li>
<p><span style="font-weight: bold;">DISCLAIMER OF WARRANTY.</span>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>
</li>
<li>
<p><span style="font-weight: bold;">IN OTHER WORDS:</span>
Basically you can use this software freely for any purpose but don&#8217;t be
surprised if it doesn&#8217;t work as you expect. You can&#8217;t hold the author
responsible for any damages that come to you from using the software.
You can&#8217;t profit from selling this software. You got it for free after
all.</p>
</li>
</ol>
</body></html>

View File

@@ -1,39 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Open-Shell</title>
<style type="text/css">
h1 {
color: #0070c0;
font-family: "Times New Roman",Times,serif;
}
body {
font-family: Arial,Helvetica,sans-serif;
}
</style></head><body>
<h1><a target="_blank" href="http://www.classicshell.net/"><img src="images/OpenShell.png" style="border: 0px solid ; width: 64px; height: 64px;" alt="Open-Shell website" title="Open-Shell website"></a>&nbsp; Links</h1><span style="font-style: italic; color: rgb(0, 112, 192); font-weight: bold;"></span><br>The latest version can be found on the Open-Shell website:<br>
<a target="_blank" href="http://www.classicshell.net/">http://www.classicshell.net/</a><br>
<br>
View the project history here:<br>
<span style="font-weight: bold;">History: </span><a target="_blank" href="http://www.classicshell.net/history/">http://www.classicshell.net/history/</a><br>
<br>
<br>
<h1>Get Help</h1>
For answers to frequently asked questions look here:<br>
<span style="font-weight: bold;">FAQ: </span><a target="_blank" href="http://www.classicshell.net/faq/" target="_blank">http://www.classicshell.net/faq/</a><br>
<br>
If you don't find your answer in the FAQ, try the discussion forums:<br>
<span style="font-weight: bold;">Discussion Forums: </span><a target="_blank" href="http://www.classicshell.net/forum/viewforum.php?f=6" target="_blank">http://www.classicshell.net/forum/viewforum.php?f=6</a><br>
<br>
<br>
<h1>Report Problems</h1>
Report bugs and feature requests in the development forums:<br>
<span style="font-weight: bold;">Development Forums: </span><a target="_blank" href="http://www.classicshell.net/forum/viewforum.php?f=11" target="_blank">http://www.classicshell.net/forum/viewforum.php?f=11</a><br>
</body></html>

View File

@@ -1,108 +0,0 @@
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fprq2\fcharset0 Cambria;}{\f1\fswiss\fprq2\fcharset0 Arial;}{\f2\fnil\fcharset2 Symbol;}}
{\colortbl ;\red0\green0\blue255;}
{\*\listtable
{\list\listhybrid
{\listlevel\levelnfc23\leveljc0\levelstartat1{\leveltext\'01\'B7;}{\levelnumbers;}\f2\jclisttab\tx0}
{\listlevel\levelnfc23\leveljc0\levelstartat1{\leveltext\'01\'B7;}{\levelnumbers;}\f2\jclisttab\tx0}\listid1 }}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
{\stylesheet{ Normal;}{\s1 heading 1;}{\s2 heading 2;}}
{\*\generator Riched20 10.0.17134}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
\pard\keepn\widctlpar\s1\sb240\sa60\sl276\slmult1\kerning32\b\f0\fs32 Localization of Open-Shell\par
\pard\nowidctlpar\kerning0\b0\f1\fs20\par
This file explains the localization system used by Open-Shell and how to translate Open-Shell in new languages.\par
\par
\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 1. What can be localized\par
\pard\nowidctlpar\b0\i0\f1\fs20\par
Open-Shell has 2 major systems for providing localized text.\par
\par
The first one is the L10N.ini files. There are 3 files \endash ExplorerL10N.ini, StartMenuL10N.ini and StartMenuHelperL10N.ini. They contain translations for the text in Explorer and the start menu that users will encounter during normal use. These files contain translations for all of the 35 supported languages. Each language is separated in its own section. You will generally not need to edit these files unless you find a typo. If you do, please send the correction to {{\field{\*\fldinst{HYPERLINK "mailto:classicshell@ibeltchev.com" }}{\fldrslt{\ul\cf1\cf1\ul classicshell@ibeltchev.com}}}}\f1\fs20 , so I can fix the typo in the next release.\par
\par
The second system is for localizing the settings UI and the system messages that Open-Shell displays. The translations are packaged into a resource DLL with the name of the language \endash en-US.dll, ja-JP.dll, etc. The DLL can contain:\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720 A string table with replacement strings\par
{\pntext\f2\'B7\tab}Dialog resources for the Settings UI\par
{\pntext\f2\'B7\tab}Overrides for text lines in the L10N.ini files\par
\pard\nowidctlpar\par
The same DLL contains resources for all of the Open-Shell components \endash Classic Explorer, Open-Shell Menu, etc. Generally resources from 2000 to 3000 belong to Classic Explorer, from 3000 to 4000 belong to Open-Shell Menu, from 5000 to 6000 belong to Classic IE, 6000 to 7000 belong to the updater component and from 4000 to 5000 are shared by all components.\par
\par
\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 2. What else can be localized (if you really want to)\par
\pard\nowidctlpar\b0\i0\f1\fs20\par
Open-Shell is designed to mainly support localizations for the UI. Localizations for other areas, like the installer and the documentation will require more work.\par
\par
To translate the installer you need to translate the OpenShellText-en-US.wxl file. It contain the text for the installer. One benefit of translating the installer is that you can localize the names of the shortcuts in the Start menu. You also need to translate the OpenShellReadme.rtf file and OpenShellEULA.rtf if you want them to display in your language.\par
\par
To translate the help file you will need to translate the HTML files included in OpenShellLoc.zip. If you install the tool HTML Help Workshop from Microsoft, you will be able to also compile the CHM file and preview it yourself. Use the OpenShell.hhp help project file for that.\par
\par
To translate the group policies you will need to translate the files ClassicExplorerADMX.txt, ClassicIEADMX.txt, OpenShellADMX.txt and MenuADMX.txt. You may also translate the PolicyDefinitions.rtf file.\par
\par
When you are done, send all translations to me and I will prepare an installer for your language. \par
\par
\par
\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 3. The DLL structure in detail\par
\pard\nowidctlpar\b0\i0\f1\fs20\par
Look at the provided \b en-US.dll\b0 file. It contains all English resources that can be translated.\par
\b\i Note:\b0 Open-Shell doesn\rquote t need the en-US.dll file. The English text is already built-in. The purpose of the en-US.dll file is to serve as an example and starting point for other languages.\par
\i0\par
The localization DLL contains the following resources:\par
\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720 A version resource. It must match the version of Open-Shell it is intended to be used with. The reason is that the text often changes between versions, so translations from one version will not work with the next. You may also use the comments section to list your name as the author.\par
\pard\nowidctlpar\li720\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720 A string table. Provides translations for the UI text in Open-Shell. Use the text from en-US.dll as a source. The string table doesn\rquote t need to include all strings. If a string is missing, it will stay in English.\line\par
{\pntext\f2\'B7\tab}A set of dialog resources. These are the dialog boxes that the Settings UI needs. You can replace the text in the dialogs with your own. You can also resize some of the dialog elements to make the text fit. Like with the strings, if a dialog is missing from the DLL, the English version will be used.\line\par
{\pntext\f2\'B7\tab}A L10N resource (its resource ID must be 1). This is a UTF-16 text file that contains replacement strings for the ini files. For example the ini files do not have the text \ldblquote Settings for Open-Shell Menu\rdblquote translated in all languages (since I don\rquote t know how to say it in all 35 languages). So the DLL can provide the translations for the current language. It is possible to replace even text that is already translated \endash for example if you want to fix a typo in the ini file, or to provide a better version of some text line.\line\par
\pard\widctlpar\sa200\sl276\slmult1 You can edit a DLL using a resource editor like Visual Studio, Res Hacker, and many others.\par
\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 4. What if I don\rquote t know how to edit DLLs?\par
\pard\nowidctlpar\b0\i0\f1\fs20\par
Look at the provided \b en-US.csv\b0 file. It is a tab-separated file in UTF-16 format. You can open it in Excel or any compatible editor. The file contains 4 columns:\par
\pard
{\listtext\f1\u10625?\tab}\ls1\nowidctlpar\fi-360\li720\b ID\b0 \endash this is the identifier of the text line. There are 3 types of IDs:\par
\pard
{\listtext\f1\u10625?\tab}\ls1\ilvl1\nowidctlpar\fi-360\li1440 A number, like 2001, 4030, etc. These correspond to the strings in the string table\par
{\listtext\f1 1\tab}A pair of numbers, like 3002/1025. These correspond to strings found in the dialog boxes. The first number is the ID of the dialog, and the second is the ID of the control in that dialog\par
{\listtext\f1 2\tab}Text, like \ldblquote Menu.SettingsTip\rdblquote . These correspond to the lines of the L10N resource\par
\pard\nowidctlpar\li720\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720\b English\b0 \endash this is the original English text\par
\pard\nowidctlpar\li720\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\nowidctlpar\fi-360\li720\b Translation\b0 \endash this column is empty. That\rquote s where you will have to enter the translations for your language\line\par
{\pntext\f2\'B7\tab}\b Comment\b0 \endash some lines contain hints for the meaning of the translation, or instructions for providing better translation. If you are still unclear about something, ask me. I will provide more comments in future versions based on which text lines people find confusing\par
\pard\nowidctlpar\par
\par
Once you are done, send the CSV file to {{\field{\*\fldinst{HYPERLINK "mailto:classicshell@ibeltchev.com" }}{\fldrslt{\ul\cf1\cf1\ul classicshell@ibeltchev.com}}}}\f1\fs20 and I will convert that text into a DLL and upload it to the Open-Shell website.\par
\par
\pard\keepn\widctlpar\s2\sb240\sa60\sl276\slmult1\b\i\f0\fs28 5. Special characters\par
\pard\nowidctlpar\b0\i0\f1\fs20\par
Some text lines in the DLL or the CSV contain special characters. They are:\par
\b\\t\b0 \endash this is the Tab character. Do not enter an actual tab in the text, because the CSVs don\rquote t handle it well\par
\b\\r\b0 \endash this is a carriage return character\par
\b\\n\b0 \endash this is a new line character\par
\b\\\\\b0 - this is the backslash character. You must use \\\\ instead of \\, because a single \\ can be mistaken for a special character\par
\b %d\b0 \endash this is a placeholder for a number. The actual number will be provided at run-time\par
\b %s\b0 \endash this is a placeholder for a string. The actual string will be provided at run-time\par
\par
In general, try to keep the special characters as they are.\par
\par
}

View File

@@ -1,49 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Open-Shell</title>
<style type="text/css">
h1 {
color: #0070c0;
font-family: "Times New Roman",Times,serif;
}
body {
font-family: Arial,Helvetica,sans-serif;
}
</style></head><body>
<h1><a target="_blank" href="http://www.classicshell.net/"><img src="images/OpenShell.png" style="border: 0px solid ; width: 64px; height: 64px;" alt="Open-Shell website" title="Open-Shell website"></a>&nbsp; Open-Shell</h1>
<span style="font-style: italic; color: rgb(0, 112, 192); font-weight: bold;">Version 4.3.1 &#8211; general release</span><br><br>
<h1>What is Open-Shell?</h1>
<strong style="color: rgb(79, 129, 189);">Open-Shell&#8482;</strong> is a collection of usability enhancement for Windows. It
has a customizable Start menu and Start button, it adds a
toolbar for Windows Explorer and supports a variety of smaller features.<br>
<br>
<br>
<h1>System Requirements</h1>
Open-Shell works on Windows 7, Windows 8, Windows 8.1, Windows Server 2008 R2,
Windows Server 2012 and Windows Server 2012 R2. Both 32 and 64-bit versions are
supported (the same installer works for both). Some skins for the start menu
require Aero theme to be enabled. Others require at least Basic theme.<br>
<br>
<br>
<h1>Components</h1><br>
Open-Shell has three major components:<ul>
<li><a href="Menu.html">Open-Shell Menu</a></li>
<li><a href="ClassicExplorer.html">Classic Explorer</a></li>
<li><a href="ClassicIE.html">Classic IE</a></li>
</ul>
<br>
<h1>Uninstallation</h1>
You can uninstall Open-Shell from <span style="font-weight: bold;">Control Panel -&gt; Programs and Features</span>. Another way is&nbsp; to run the setup again and chose "Remove".<br>
A logoff may be required to complete the process.<br>
<br>
</body></html>

View File

@@ -1,349 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Open-Shell Menu</title>
<style type="text/css">
h1 {
font-family: "Times New Roman",Times,serif;
color: #0070c0;
}
p {
font-family: Arial,Helvetica,sans-serif;
}
body {
font-family: Arial,Helvetica,sans-serif;
}
</style></head><body><span style="font-weight: bold;"></span><span style="font-weight: bold;"></span>
<h1><a target="_blank" href="http://www.classicshell.net/"><img src="images/OpenShell.png" style="border: 0px solid ; width: 64px; height: 64px;" alt="Open-Shell website" title="Open-Shell website"></a>&nbsp;
Open-Shell Menu</h1><span style="font-style: italic; color: rgb(0, 112, 192); font-weight: bold;"></span><span style="color: rgb(79, 129, 189); font-weight: bold;"><br>
Open-Shell Menu</span>
is a flexible start menu that can mimic the menu behavior of Windows
2000, XP and Windows 7. It has a variety of advanced features:
<ul>
<li>Choose between &#8220;Classic&#8221; and &#8220;Windows 7&#8221; styles<br>
</li>
<li>Drag and drop to let you organize your applications</li>
<li>Options to show Favorites, expand Control Panel, etc</li>
<li>Shows recently used documents. The number of documents to display
is customizable</li>
<li>Translated in 35 languages, including Right-to-left support for
Arabic and Hebrew</li>
<li>Does not disable the original start menu in Windows. You can
access it by Shift+Click on the start button</li>
<li>Right-click on an item in the menu to delete, rename, sort, or
perform other tasks</li>
<li>The search box helps you find your programs and files without getting in the way of your keyboard shortcuts</li>
<li>Supports jumplists for easy access to recent documents and common tasks</li>
<li>Available for 32 and 64-bit operating systems</li>
<li>Has support for skins, including additional 3rd party skins. Make your own!</li>
<li>Fully customizable in both looks and functionality</li>
<li>Support for Microsoft&#8217;s Active Accessibility</li>
<li>Converts the &#8220;All Programs&#8221; button in the Windows menu into a cascading menu</li>
<li>Implements a customizable start button<br>
</li>
<li>Can show, search and launch Windows Store apps (Windows 8)</li>
<li>And last but not least &#8211; it's FREE!</li>
</ul><br>
<h1><a name="styles"></a> Styles</h1>
The start menu offers 3 styles to choose from.<br>
<h3>1) Single-column classic style</h3>
<img src="images/style1.png" style="width: 640px; height: 550px;" alt=""><br>
This style is similar to the menu found in Windows 2000. It has one
column in the main menu with vertical text on the side. you can
customize the order of items, icons and text.<br>
Programs, jumplists and search results show as cascading sub-menus.<br>
<br>
<h3>2) Two-column classic style</h3>
<img src="images/style2.png" style="width: 640px; height: 550px;" alt=""><br>
This style is similar to the Windows XP menu. There are two columns
where you can arrange your menu items. Customize the order, icons and
text.<br>
Programs, jumplists and search results show as cascading sub-menus.<br>
<br>
<h3>3) Windows 7 style<br>
</h3>
<img src="images/style3.png" style="width: 640px; height: 550px;" alt=""><br>
This style is similar to the Windows Vista and Windows 7 menu. The
items in the first column are pre-defined to pinned and recent
programs, all programs list and search box. The items in the second
column are fully customizable.<br>
The jumplists and search results show inside the main menu. The
programs can be inside the main menu or open as a cascading sub-menu.<br>
This style offers less customizing options than the classic styles, but
has look and feel more familiar to people used to Windows 7.<br>
<br>
<br>
<h1><a name="operation"></a> Operation</h1>
If you have used the start menu in older versions of Windows you&#8217;ll
feel right at home:<br>
<p>
Press the Windows key or click on the orb in the corner of the
screen to open the start menu.</p>
<p>
Hold down Shift while clicking on the orb to access the operating
system's own
start menu.
</p>
<p>
Click on an item to execute it.
</p>
<p>
Drag a program to change the order of the programs in a menu, or to
move it to another folder.
</p>
<p>
Right-click on an item to rename it, delete it, explore it, sort the
menu, or perform other tasks.</p>
<p>
Right-click on the orb to edit the settings for the start menu, to view this help file, or to
stop the start menu.<br>
</p>
<p><br>
</p>
<h1><a name="settings"></a>
Settings</h1>Right-click on the start button to access the settings:<br>
<img src="images/settings1.png" style="width: 688px; height: 472px;" alt=""><br>
<br>
You can choose from seeing only the basic settings, or all available
settings. Hover over each setting to see a description of what it's for. Type in the search box to find a setting by name.<br>
Every setting has a default value. The default value can be constant,
or it may depend on the current system settings. Once you edit a
setting it becomes "modified" and is shown in bold. To revert to the
default value, right-click on the setting.<br>
<br>
You can save the settings to an XML file, and later load them back.
Press the Backup button to access these functions. From there you can
also reset all settings to their default value.<br>
<br>
Most settings will be changed immediately as you edit them. For example
you can edit the start menu, then while the Settings dialog is open,
access the start menu to see the changes. Small number of settings will
require you to exit the start menu before you can see the change.<br>
<br>
<span style="font-weight: bold;">Note:</span> All Settings windows are resizable. Resize them and place them where you want them to be. They will remember the new position.<br>
<br>
Click on the <span style="font-weight: bold;">Customize Start Menu</span> tab to customize the menu items. Depending on the style you will see different UI.<br>
<br>
For classic styles you can customize both columns of the start menu and
create sub-menus. The left column shows the current items in the menu
and the right column shows the available menu items. Drag from the
right to the left to add items to the menu.<br>
<img src="images/settings3.png" style="width: 688px; height: 472px;" alt=""><br>
<br>
For the Windows 7 style you can only edit the items for the second column and there are no sub-menus.<br>
<img src="images/settings2.png" style="width: 688px; height: 472px;" alt=""><br>
<br><br>
Double-click on the icon to edit the item properties:<br>
<img src="images/settings4.png" style="width: 452px; height: 482px;" alt=""><br>
Here you can select a command for the item, its text, icon and other attributes. Press the <span style="font-weight: bold;">Restore Defaults</span> button to get the default text and icon for the chosen command.<br>
<br>
The command can be:<br>
<ul>
<li><span style="font-weight: bold;">one of the predefined commands</span> - from the dropdown</li><li><span style="font-weight: bold;">custom executable string</span>
- this can be a name of a program and its arguments, or even a URL
(like http://www.google.com). Environment variables like %SystemRoot% are supported</li><li><span style="font-weight: bold;">left blank</span> - then if the link attribute is used, it will act as a command<br>
</li>
</ul>
The link can be a path to a file or a folder. If it is a file, that
file will be executed. If it is a folder, that folder will be opened as
a sub-menu. Some menu items (like Programs and Favorites) have an implicit
link attribute, so for them the Link box will be disabled.<br>
<br>
The icon can be:<br style="font-weight: bold;">
<ul>
<li><span style="font-weight: bold;">left blank</span> - then if the link attribute points to a file or a folder, the icon of that file or folder will be used<br>
<span style="font-weight: bold;"></span></li><li><span style="font-weight: bold;">resource file,icon ID</span> - for example <span style="font-weight: bold;">%windir%\notepad.exe,2</span>. Do not leave space between the file name and the comma. <span style="font-weight: bold;">Make sure you are using the icon's resource ID, and not the icon's index.</span> For best results use the <span style="font-weight: bold;">[...]</span> button next to the icon box<br>
</li><li><span style="font-weight: bold;">,icon ID</span> - same as above, but the resource file is the <span style="font-weight: bold;">MenuDLL.dll</span> itself. This is useful when referring to the start menu's own icons<br>
</li><li><span style="font-weight: bold;">icon file</span> -&nbsp; for example <span style="font-weight: bold;">C:\Program Files\Mozilla Thunderbird\Email.ico</span></li><li><span style="font-weight: bold;">none</span> - this will use a blank icon</li>
</ul>
If the label or the tip attribute start with <span style="font-weight: bold;">$</span> (dollar sign), then the system will treat it as a name of a string in the <span style="font-weight: bold;">StartMenuL10N.ini</span>
file. The actual text will depend on the current language setting. This
is useful when creating a menu that can be used by multiple languages.<br>
<br>
If you check "Insert Sub-items as Buttons", instead of showing the menu
item itself, the start menu will show the sub-items as a row of
buttons. By default the buttons are centered. You can align them to the
left by adding a separator as the last item, or align them to the right
by adding a separator as the first item. One possible use is to replace
the shutdown menu item with
separate buttons for shutdown, restart, log off, etc.<br>
<br>
<h1><a name="admin"></a>Administrative Settings</h1>
The settings are
per user and are stored in the registry. By default every user can edit
all of their settings. An administrator can lock specific settings, so
no user can edit them:<br>
<img src="images/settings5.png" style="width: 688px; height: 472px;" alt=""><br>
In this example the setting "Enable right-click menu" is locked to always
be unchecked and can't be changed by any user. This is achieved
by adding the setting to the <span style="font-weight: bold;">HKEY_LOCAL_MACHINE\SOFTWARE\OpenShell\Menu</span> registry key. Create a DWORD value called "EnableContextMenu" and set it to 0.<br>
<br>
In some cases you may not want to lock the value for all users, but
simply modify the initial value of the setting. In such case add
"_Default" to the name of the value. For example if you want to context
menu to be disabled by default but still allow the users to enable it
if they wish, create a DWORD value named "EnableContextMenu_Default"
and set it to 0.<br>
<br>
The easiest way to know the registry name of a setting and its value is to modify it, and then look it up in <span style="font-weight: bold;">HKEY_CURRENT_USER\Software\OpenShell\StartMenu\Settings</span>.<br>
Sometimes you may want to lock a setting to its default value, but you
don't know what the default value is. Then create a DWORD value and set
it to 0xDEFA.<br>
<br>
There is also a global setting "EnableSettings". Set it to 0 in the
registry to prevent the users from even opening the Settings dialog:<br>
<img style="width: 656px; height: 292px;" alt="" src="images/settings_disable_sm.png"><br>
<br>
The start menu also checks most of the group policies set by the administrator. Run <strong style="color: rgb(0, 112, 192);">gpedit.msc</strong> and go to <strong style="color: rgb(0, 112, 192);">User Configuration -&gt; Administrative Templates -&gt; Start Menu and Taskbar</strong>. From there you can disable Run, Shutdown, Help, and other features. <span style="font-style: italic;">(Not available on Home versions of Windows)</span>.<br>
<br>
Editing the settings through group policies is also supported. Extract the file <b>PolicyDefinitions.zip</b> found in the installation folder and read the document <b>PolicyDefinitions.rtf</b> for more details.<br>
<br>
<br>
<h1><a name="skins"></a>More About Skins</h1>
You can pick from the many pre-installed skins:<br>
<br>
<img src="images/skins.gif" style="width: 250px; height: 470px;" alt="Skins for Open-Shell Menu" title="Skins for Open-Shell Menu"><br>
<br>Or you can download and install additional 3rd party skins (from
the main website or from another place). After you download a new skin
you
must copy the <span style="font-weight: bold;">.skin</span> file to the Skins directory &#8211; usually <span style="font-weight: bold; color: rgb(79, 129, 189);">C:\Program
Files\Open-Shell\Skins</span>. After that it will be available in the settings.<br>
<br>
<strong>Note:</strong> Some skins may be specifically designed for
Classic, Basic, or Aero mode. For example an Aero skin may require
glass support any will look weird if the Classic or Basic theme is
selected. Some Aero skins may also require specific glass color to be
selected.<br>
<br>
You can create your own skin. You will need an image editor that
supports alpha channel (like Gimp or Photoshop) and a tool to edit
resource files (like Resource Hacker or Visual Studio). And of course
some talent for graphical design :). Read the <a target="_blank" href="http://www.classicshell.net/tutorials/skintutorial.html">Skinning Tutorial</a> before you begin.<br>
<br>
<br><br>
<h1><a name="search"></a>Search</h1><img src="images/search1.png" style="width: 403px; height: 452px;" alt=""><br>
<br>
The search box lets you search the contents of the start menu, the
programs in the PATH environment variable and the indexed files. You can have the search box
appear as a normal menu item and then you can get to it using the
up/down arrow keys. You can choose to have the search box selected by
default when you open the start menu. Or you can choose to activate the
search box only with the Tab key, so until you press Tab you can use
the keyboard for navigation as if the search box is not there.<br>
<br>
The search results show in the main menu if you are using the Windows 7 style or in a sub-menu for the classic styles.<br>
Click on each category to expand it and see more results. Click on the icon at the end to view all results in Explorer.<br>
<br>
The classic styles allow you to register additional "search providers", which you can use to
search for the text from the search box. You run the search program
either by selecting it from the menu, or by
pressing Alt+key. In this example use Alt+A for Agent Ransack.<br>
<img src="images/search2.png" style="width: 412px; height: 345px;" alt=""><br>
<br>
This is done by adding sub-items of the SearchBoxItem in the <span style="font-weight: bold;">Customize Start Menu</span> tab:<br>
<img src="images/search3.png" style="width: 347px; height: 197px;" alt=""><br>
<br>
Open each of the sub-items and enter a command to start the search program. If you use <span style="font-weight: bold;">%1</span> in the command, it will be replaced by the contents of the search box. If you use <span style="font-weight: bold;">%2</span>
it will be replaced by the url-style encoded search text. Enter a
label, tip, and icon to complete your menu entry. In the label text you
can use <span style="font-weight: bold;">&amp;</span> to mark the accelerator character (for example <span style="font-weight: bold;">&amp;Agent Ransack</span>).<br>
<br>
Here are a few possible commands:<br>
Search with Agent Ransack: <span style="font-weight: bold;">"C:\Program Files\Agent Ransack\AgentRansack.exe" -r -f "%1"</span><br>
Search with Everything: <span style="font-weight: bold;">"C:\Program Files\Everything\Everything.exe" -search "%1"</span><br>
Search with Google: <span style="font-weight: bold;">http://www.google.com/#q=%2</span><br>
Search with Bing: <span style="font-weight: bold;">http://www.bing.com/search?q=%2</span><br>
<br>
<br>
<h1><a name="button"></a>Custom Start Button<br>
</h1>Open-Shell can add its own start button to the taskbar. It can
even replace the default start button in Windows 7. You can choose from
an Aero-style orb, a rectangular classic button, or
you can make your own. For a custom start button you need an image that
contain the 3 states of the button - normal, hot and pressed:<br>
<img src="images%5Cbutton_images.png" style="width: 64px; height: 192px;" alt="Start button images" title="Start button images"><br>
The image must be a 32-bit PNG or BMP. By default the width of the
image determines the size of the button. You can override that by
entering a custom width.<br>
Read the <a href="http://www.classicshell.net/tutorials/buttontutorial.html">Button Tutorial</a> for more information about creating custom buttons.<br>
You can find many custom start button images online. Here are few examples:<br>
<a href="http://www.classicshell.net/forum/viewforum.php?f=18">http://www.classicshell.net/forum/viewforum.php?f=18</a><br>
<a target="_blank" href="http://www.sevenforums.com/themes-styles/34951-custom-start-menu-button-collection.html">http://www.sevenforums.com/themes-styles/34951-custom-start-menu-button-collection.html<br>
</a><a target="_blank" href="http://www.sevenforums.com/customization/78291-big-group-custom-start-orbs.html">http://www.sevenforums.com/customization/78291-big-group-custom-start-orbs.html</a><br>
<a target="_blank" href="http://tutoriales13.deviantart.com/art/Orbs-153450418">http://tutoriales13.deviantart.com/art/Orbs-153450418</a><br>
<br>
<br>
<h1><a name="localization"></a>Localization</h1>
The user interface (except the Settings dialog box) is localized in 35
languages.<br>
The Settings dialog box is translated in a smaller number of languages.
The default installation contains only English. More languages can be
downloaded from the <a href="http://www.classicshell.net/translations/">translations page</a>. Make sure you download the translation package for the exact version of Open-Shell.<br>
<br>
<br><h1><a name="command_line"></a>Command Line</h1>
The <span style="font-weight: bold; color: rgb(0, 112, 192);">StartMenu.exe</span> supports 5 command line parameters: <span style="font-weight: bold; color: rgb(0, 112, 192);">-open</span>, <span style="font-weight: bold; color: rgb(0, 112, 192);">-toggle</span>, <span style="font-weight: bold; color: rgb(0, 112, 192);">-togglenew</span>, <span style="font-weight: bold; color: rgb(0, 112, 192);">-exit </span>and <span style="font-weight: bold; color: rgb(0, 112, 192);">-settings</span>.<br>
<br>
The first two do what the name suggests. One opens the classic start menu, the other
toggles it. You can use the parameters to create a shortcut in your
QuickLaunch bar that opens the start menu. Or to set a hotkey in
programs such as <a target="_blank" href="http://www.softpedia.com/get/System/OS-Enhancements/WinKey.shtml">WinKey</a>.<br>
<br>
The third one "-togglenew" toggles the default Windows start menu (or start screen). It is useful if
you want to create a shortcut or a hotkey to open the default menu and use the Win
key for the classic menu.<br>
<br>
Use "-exit" to exit the start menu. This command will only work if the start menu is not currently busy.<br>
<br>
Use "-settings" to open the start menu settings. This is useful for creating a shortcut for editing the settings.<br>
<br>
<br>
<h1><a name="accessibility"></a>Accessibility</h1>The start menu supports screen readers like JAWS,
or Microsoft's Narrator. If the accessibility support causes problems it can be disabled from the <span style="font-weight: bold;">General Behavior</span> tab of the Settings.<br>
<br>
</body></html>

View File

@@ -1,192 +0,0 @@
; DON'T TRANSLATE =============================================================
; disabled
CrashDump.supportedOn = never
LogLevel.supportedOn = never
OldProgramsAge.supportedOn = never
DefaultMenuStyle.supportedOn = never
MenuItems.supportedOn = never
Skin1.supportedOn = never
SkinOptions1.supportedOn = never
SkinVariation1.supportedOn = never
Skin2.supportedOn = never
SkinVariation2.supportedOn = never
SkinOptions2.supportedOn = never
SkipMetroCount.supportedOn = never
CompatibilityFixes.supportedOn = never
; skins
SkinC1.supportedOn = classic1
SkinVariationC1.supportedOn = classic1
SkinOptionsC1.supportedOn = classic1
MenuItems1.supportedOn = classic1
SkinC2.supportedOn = classic2
SkinVariationC2.supportedOn = classic2
SkinOptionsC2.supportedOn = classic2
MenuItems2.supportedOn = classic2
SkinW7.supportedOn = win7_style
SkinVariationW7.supportedOn = win7_style
SkinOptionsW7.supportedOn = win7_style
MenuItems7.supportedOn = win7_style
; style-specific
Computer.supportedOn = classic
Favorites.supportedOn = classic
Documents.supportedOn = classic
UserFiles.supportedOn = classic
UserDocuments.supportedOn = classic
UserPictures.supportedOn = classic
ControlPanel.supportedOn = classic
Network.supportedOn = classic
Printers.supportedOn = classic
Shutdown.supportedOn = classic
LogOff.supportedOn = classic
Undock.supportedOn = classic
Search.supportedOn = classic
Help.supportedOn = classic
Run.supportedOn = classic
SearchFilesCommand.supportedOn = classic
SearchResults.supportedOn = classic
SearchResultsMax.supportedOn = classic
MaxMainMenuWidth.supportedOn = classic
MainMenuAnimation.supportedOn = classic
MainMenuAnimationSpeed.supportedOn = classic
MainMenuScrollSpeed.supportedOn = classic
MenuCaption.supportedOn = classic
MenuUsername.supportedOn = classic
ShutdownCommand.supportedOn = win7_style
MinMainHeight.supportedOn = win7_style
ProgramsStyle.supportedOn = win7_style
FoldersFirst.supportedOn = win7_style
OpenPrograms.supportedOn = win7_style
ProgramsMenuDelay.supportedOn = win7_style
ShutdownW7.supportedOn = win7_style
ProgramsWidth.supportedOn = win7_style
JumplistWidth.supportedOn = win7_style
; windows 7
CascadeAll.supportedOn = win7
AllProgramsDelay.supportedOn = win7
InitiallySelect.supportedOn = win7
HideUserPic.supportedOn = win7
SkinA.supportedOn = win7
SkinVariationA.supportedOn = win7
SkinOptionsA.supportedOn = win7
; metro settings
AllTaskbars.supportedOn = win881
AllProgramsMetro.supportedOn = win881
HideProgramsMetro.supportedOn = win881
RecentMetroApps.supportedOn = win881
StartScreenShortcut.supportedOn = win881
SearchMetroApps.supportedOn = win881
DisableHotCorner.supportedOn = win881
OpenMouseMonitor.supportedOn = win881
SkipMetro.supportedOn = win8
; TRANSLATE ===================================================================
Title.text = Open-Shell settings
State.text = State:
State1.text = Locked to this value
State2.text = Locked to default
State3.text = Unlocked
State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users.
State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored.
State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting.
MenuCat.text = Open-Shell Menu
MenuCatHelp.text = Open-Shell Menu group policy settings
SUPPORTED_CS404.text = Requires Open-Shell 4.0.4 or later.
SUPPORTED_CS404_WIN7.text = Requires Windows 7.
SUPPORTED_CS404_WIN78.text = Requires Windows 7 or Windows 8.
SUPPORTED_CS404_WIN781.text = Requires Windows 7 or Windows 8.1.
SUPPORTED_CS404_WIN8.text = Requires Windows 8.
SUPPORTED_CS404_WIN881.text = Requires Windows 8 or Windows 8.1.
SUPPORTED_CS404_WIN81.text = Requires Windows 8.1.
SUPPORTED_CS404_CLASSIC1_STYLE.text = Requires Classic menu style with one column.
SUPPORTED_CS404_CLASSIC2_STYLE.text = Requires Classic menu style with two columns.
SUPPORTED_CS404_CLASSIC_STYLE.text = Requires Classic menu style.
SUPPORTED_CS404_WIN7_STYLE.text = Requires Windows 7 menu style.
EnableSettings.nameOverride = Enable settings
EnableSettings.tipOverride = Enables the users to edit their own settings
MenuStyle.nameOverride = Menu style
MenuStyle.tipOverride = Select the style for the start menu.\nThe style determines the overall look and functionality of the menu.
MenuStyle_Classic1.nameOverride = Classic with one column
MenuStyle_Classic2.nameOverride = Classic with two columns
MenuStyle_Win7.nameOverride = Windows 7
MouseClick.nameOverride = Left Click opens
ShiftClick.nameOverride = Shift+Click opens
WinKey.nameOverride = Windows Key opens
ShiftWin.nameOverride = Shift+Win opens
MiddleClick.nameOverride = Middle Click opens
Hover.nameOverride = Hover opens
; skins
SkinC1.nameOverride = Skin for classic menu with one column
SkinC1.tipOverride = Select the skin to be used by the classic style with one column
SkinVariationC1.nameOverride = Skin variation for classic menu with one column
SkinVariationC1.tipOverride = Select the skin variation to be used by the classic style with one column (for skins that support multiple variations)
SkinOptionsC1.nameOverride = Skin options for classic menu with one column
SkinOptionsC1.tipOverride = Select the skin options to be used by the classic style with one column.\nThe options are a list of hex numbers. The best way to get them is to adjust the options in the Open-Shell Menu settings dialog and then look up the value named SkinOptionsC1 in HKCU\Software\OpenShell\StartMenu\Settings
MenuItems1.nameOverride = Menu items for classic menu with one column
MenuItems1.tipOverride = Select the menu items to be used by the classic style with one column.\nThe best way to get the right string is to configure the items in the Open-Shell Menu settings dialog and then look up the value named MenuItems1 in HKCU\Software\OpenShell\StartMenu\Settings
SkinC2.nameOverride = Skin for classic menu with two columns
SkinC2.tipOverride = Select the skin to be used by the classic style with two columns
SkinVariationC2.nameOverride = Skin variation for classic menu with two columns
SkinVariationC2.tipOverride = Select the skin variation to be used by the classic style with two columns (for skins that support multiple variations)
SkinOptionsC2.nameOverride = Skin options for classic menu with two columns
SkinOptionsC2.tipOverride = Select the skin options to be used by the classic style with two columns.\nThe options are a list of hex numbers. The best way to get them is to adjust the options in the Open-Shell Menu settings dialog and then look up the value named SkinOptionsC2 in HKCU\Software\OpenShell\StartMenu\Settings
MenuItems2.nameOverride = Menu items for classic menu with two columns
MenuItems2.tipOverride = Select the menu items to be used by the classic style with two columns.\nThe best way to get the right string is to configure the items in the Open-Shell Menu settings dialog and then look up the value named MenuItems2 in HKCU\Software\OpenShell\StartMenu\Settings
SkinW7.nameOverride = Skin for the Windows 7 style
SkinW7.tipOverride = Select the skin to be used by the Windows 7 style
SkinVariationW7.nameOverride = Skin variation for the Windows 7 style
SkinVariationW7.tipOverride = Select the skin variation to be used by the Windows 7 style (for skins that support multiple variations)
SkinOptionsW7.nameOverride = Skin options for the Windows 7 style
SkinOptionsW7.tipOverride = Select the skin options to be used by the Windows 7 style.\nThe options are a list of hex numbers. The best way to get them is to adjust the options in the Open-Shell Menu settings dialog and then look up the value named SkinOptionsW7 in HKCU\Software\OpenShell\StartMenu\Settings
MenuItems7.nameOverride = Menu items for the Windows 7 style
MenuItems7.tipOverride = Select the menu items to be used by the Windows 7 style.\nThe best way to get the right string is to configure the items in the Open-Shell Menu settings dialog and then look up the value named MenuItems7 in HKCU\Software\OpenShell\StartMenu\Settings
; windows 7
SkinA.nameOverride = Skin for the All Programs sub-menu for the Windows 7 start menu
SkinA.tipOverride = Select the skin to be used by the All Programs sub-menu for the Windows 7 start menu
SkinVariationA.nameOverride = Skin variation for the All Programs sub-menu for the Windows 7 start menu
SkinVariationA.tipOverride = Select the skin variation to be used by the All Programs sub-menu for the Windows 7 start menu (for skins that support multiple variations)
SkinOptionsA.nameOverride = Skin options for the All Programs sub-menu for the Windows 7 start menu
SkinOptionsA.tipOverride = Select the skin options to be used by the All Programs sub-menu for the Windows 7 start menu.\nThe options are a list of hex numbers. The best way to get them is to adjust the options in the Open-Shell Menu settings dialog and then look up the value named SkinOptionsA in HKCU\Software\OpenShell\StartMenu\Settings
; metro settings
SkipMetro.tipAddition = This setting doesn't work for Windows 8.1. You need to use the built-in Windows setting for booting to Desktop
; hidden
FolderStartMenu.nameOverride = Start Menu folder
FolderStartMenu.tipOverride = Enter an override for the per-user start menu folder (also overrides the per-user Programs folder).\nThe path can contain environment variables.\nNote: This setting is not editable from the Settings dialog
FolderPrograms.nameOverride = Programs folder
FolderPrograms.tipOverride = Enter an override for the per-user Programs folder.\nThe path can contain environment variables.\nNote: This setting is not editable from the Settings dialog
FolderCommonStartMenu.nameOverride = Common Start Menu folder
FolderCommonStartMenu.tipOverride = Enter an override for the common start menu folder (also overrides the common Programs folder).\nThe path can contain environment variables.\nNote: This setting is not editable from the Settings dialog
FolderCommonPrograms.nameOverride = Common Programs folder
FolderCommonPrograms.tipOverride = Enter an override for the common Programs folder.\nThe path can contain environment variables.\nNote: This setting is not editable from the Settings dialog
AutoStartDelay.nameOverride = Auto-start delay
AutoStartDelay.tipOverride = Enter a delay in ms when launching the start menu automatically during login (does not apply when starting the menu manually by running StartMenu.exe).\nNote: This setting is not editable from the Settings dialog
; other
StartButtonIcon.tipAddition = The value can be a path to an ICO file or a path to an EXE/DLL and an the ID of the icon
StartButtonPath.tipAddition = The value is a full path to the BMP or PNG file
SoundMain.tipAddition = The value can be a name of a system event or a path to a WAV file
SoundPopup.tipAddition = The value can be a name of a system event or a path to a WAV file
SoundCommand.tipAddition = The value can be a name of a system event or a path to a WAV file
SoundDrop.tipAddition = The value can be a name of a system event or a path to a WAV file
ExpandFolderLinks.tipAddition = Only works for symbolic links (like junctions) and not for plain shortcuts
StartHoverDelay.nameOverride = Hover delay (for Start button)
AllProgramsDelay.nameOverride = Hover delay (for All Programs in Windows 7)
CSMHotkey.tipAddition = .\n\nThe base value is the main key's virtual code. Add 256 for Shift, 512 for Control and 1024 for Alt.\nThe best way to get the value is to select the hotkey in the Open-Shell Menu settings dialog and then look up the value named CSMHotkey in HKCU\Software\OpenShell\StartMenu\Settings
WSMHotkey.tipAddition = .\n\nThe base value is the main key's virtual code. Add 256 for Shift, 512 for Control and 1024 for Alt.\nThe best way to get the value is to select the hotkey in the Open-Shell Menu settings dialog and then look up the value named WSMHotkey in HKCU\Software\OpenShell\StartMenu\Settings

View File

@@ -1,16 +0,0 @@
[OPTIONS]
Compatibility=1.1 or later
Compiled file=OpenShell.chm
Contents file=OpenShellTOC.hhc
Default topic=Main.html
Display compile progress=Yes
Language=0x409 English (United States)
[FILES]
ClassicExplorer.html
Menu.html
ClassicIE.html
[INFOTYPES]

View File

@@ -1,19 +0,0 @@
; TRANSLATE ===================================================================
Title.text = Open-Shell settings
State.text = State:
State1.text = Locked to this value
State2.text = Locked to default
State3.text = Unlocked
State1Help.text = If you set the state to 'Locked to this value', the setting will be locked to the specified value for all users.
State2Help.text = If you set the state to 'Locked to default', the setting will be locked to the default value for all users. The specified value is ignored.
State3Help.text = If you set the state to 'Unlocked', the default value for the setting will be changed to the specified value. Individual users can override the setting.
OpenShellCat.text = Open-Shell
OpenShellCatHelp.text = Open-Shell group policy settings
SUPPORTED_CS404.text = Requires Open-Shell 4.0.4 or later.
Language.nameOverride = Language for Open-Shell components
Language.tipOverride = Select the language to be used by Open-Shell (for example en-US or de-DE). The language will affect the text in the start menu, toolbars, etc. If the appropriate language DLL is installed, the settings UI may also be translated
Update.nameOverride = Enable automatic checks for new versions
Update.tipOverride = When this is checked, Open-Shell will check for new releases every week. You will be notified if there is a new version of the Open-Shell software or a new update for your current language

View File

@@ -1,106 +0,0 @@
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fprq2\fcharset0 Cambria;}{\f1\fswiss\fprq2\fcharset0 Calibri;}{\f2\fnil\fcharset2 Symbol;}}
{\colortbl ;\red23\green54\blue93;\red79\green129\blue189;\red0\green112\blue192;\red0\green0\blue255;\red54\green95\blue145;}
{\stylesheet{ Normal;}{\s1 heading 1;}}
{\*\generator Riched20 10.0.17134}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
\pard\brdrb\brdrs\brdrw20\brsp80 \widctlpar\sa300\qc\cf1\expndtw5\kerning28\f0\fs52 Open-Shell\par
\pard\widctlpar\cf0\expndtw0\b0\i0\f1\fs22\par
Thank you for installing \cf3\b Open-Shell\'99\cf0\b0 . It adds some missing features to Windows 7, Windows 8, Windows 8.1 and Windows 10 - like a classic start menu, start button, a toolbar for Windows Explorer and others.\par
\par
The latest version can be found on the Open-Shell website:\par
{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/ }}{\fldrslt{http://www.classicshell.net/\ul0\cf0}}}}\f1\fs22\par
\par
For answers to frequently asked questions look here:\par
{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/faq/ }}{\fldrslt{http://www.classicshell.net/faq/\ul0\cf0}}}}\f1\fs22\par
\par
Or use the discussion forums to get help:\par
{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/forum/viewforum.php?f=6 }}{\fldrslt{http://www.classicshell.net/forum/viewforum.php?f=6\ul0\cf0}}}}\f1\fs22\par
\par
Report problems in the Open-Shell development forums:\par
{{\field{\*\fldinst{HYPERLINK http://www.classicshell.net/forum/viewforum.php?f=11 }}{\fldrslt{http://www.classicshell.net/forum/viewforum.php?f=11\ul0\cf0}}}}\f1\fs22\par
\par
\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Open-Shell Menu\par
\pard\widctlpar\cf0\b0\f1\fs22\par
\cf3\b Open-Shell Menu\cf0 \b0 is a flexible start menu that can mimic the menu behavior of Windows 2000, XP and Windows 7. It has a variety of advanced features:\par
\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Choose between \ldblquote Classic\rdblquote and \ldblquote Windows 7\rdblquote styles\par
{\pntext\f2\'B7\tab}Drag and drop to let you organize your applications\par
{\pntext\f2\'B7\tab}Options to show Favorites, expand Control Panel, etc\par
{\pntext\f2\'B7\tab}Shows recently used documents. The number of documents to display is customizable\par
{\pntext\f2\'B7\tab}Translated in 35 languages, including Right-to-left support for Arabic and Hebrew\par
{\pntext\f2\'B7\tab}Does not disable the original start menu in Windows. You can access it by Shift+Click on the start button\par
{\pntext\f2\'B7\tab}Right-click on an item in the menu to delete, rename, sort, or perform other tasks\par
{\pntext\f2\'B7\tab}The search box helps you find your programs and files without getting in the way of your keyboard shortcuts\par
{\pntext\f2\'B7\tab}Supports jumplists for easy access to recent documents and common tasks\par
{\pntext\f2\'B7\tab}Available for 32 and 64-bit operating systems\par
{\pntext\f2\'B7\tab}Has support for skins, including additional 3rd party skins. Make your own!\par
{\pntext\f2\'B7\tab}Fully customizable in both looks and functionality\par
{\pntext\f2\'B7\tab}Support for Microsoft\rquote s Active Accessibility\par
{\pntext\f2\'B7\tab}Converts the \ldblquote All Programs\rdblquote button in the Windows menu into a cascading menu\par
{\pntext\f2\'B7\tab}Implements a customizable start button\par
{\pntext\f2\'B7\tab}Can show, search and launch Windows Store apps (Windows 8)\par
\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Classic Explorer\par
\pard\widctlpar\cf0\b0\f1\fs22\par
\cf3\b Classic Explorer\cf0 \b0 is a plugin for Windows Explorer that:\par
\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Adds a toolbar to Explorer for some common operations (Go to parent folder, Cut, Copy, Paste, Delete, Properties, Email). The toolbar is fully customizable\par
{\pntext\f2\'B7\tab}Replaces the copy UI in Windows 7 with the more user-friendly \ldblquote classic\rdblquote version similar to Windows XP\par
{\pntext\f2\'B7\tab}Handles Alt+Enter in the folder panel of Windows Explorer and shows the properties of the selected folder\par
{\pntext\f2\'B7\tab}Has options for customizing the folder panel to look more like the Windows XP version or to not fade the expand buttons\par
{\pntext\f2\'B7\tab}Can show the free disk space and the total size of the selected files in the status bar\par
{\pntext\f2\'B7\tab}Can disable the breadcrumbs in the address bar\par
{\pntext\f2\'B7\tab}Fixes a long list of features that are broken in Windows 7 \endash missing icon overlay for shared folders, the jumping folders in the navigation pane, missing sorting headers in list view, and more\par
\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Classic IE\par
\pard\widctlpar\cf0\b0\f1\fs22\par
\cf3\b Classic IE is a plugin for Internet Explorer 9 and later versions that:\par
\cf0\b0\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\widctlpar\fi-360\li720 Adds a caption to the title bar so you can see the full title of the page\par
{\pntext\f2\'B7\tab}Shows the security zone in the status bar\par
{\pntext\f2\'B7\tab}Shows the loading progress in the status bar\par
\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Installation instructions\par
\pard\widctlpar\cf0\b0\f1\fs22\par
The toolbar for Windows Explorer may not show up automatically after installation. You have to do a few things before you can use it.\par
\par
\cf3\b Windows 7:\cf0\b0 Press Alt+V to open the View menu. Open the \ldblquote Toolbars\rdblquote sub-menu and select \ldblquote Classic Exlporer Bar\rdblquote . Keep in mind that the menu will always be displayed as long as the toolbar is visible.\par
\par
\cf3\b Windows 8:\cf0\b0 Press Alt+V to open the View ribbon. Click on the down arrow in the \ldblquote Options\rdblquote section. Select \ldblquote Classic Explorer Bar\rdblquote\par
\par
If these steps don\rquote t work, it may be possible that the Explorer extensions have been disabled. Check the following, then try to show the toolbar again:\par
\pard
{\pntext\f1 1)\tab}{\*\pn\pnlvlbody\pnf1\pnindent0\pnstart1\pndec{\pntxta)}}
\widctlpar\fi-360\li720 Open Internet Explorer and go to Tools -> Manage add-ons. Locate the add-ons \ldblquote Classic Explorer Bar\rdblquote and \ldblquote ExplorerBHO Class\rdblquote and make sure they are enabled.\par
{\pntext\f1 2)\tab}Maybe the browser extensions are disabled on your system. This is usually the default for Windows Server. Open the "Internet Options", go to the "Advanced" tab, and check the option "Enable third-party browser extensions".\par
\pard\widctlpar\par
On Windows 7 you have to turn on the status bar from the View menu if you want to see the file sizes.\par
On Windows 8 the Classic Explorer status bar is different from the one in Explorer. You can show/hide the first one from the Classic Explorer settings dialog and show/hide the second one from Explorer\rquote s folder options dialog.\par
\par
The caption in Internet Explorer may not show up automatically after installation. You may get a prompt to enable the ClassicIEBHO plugin. If you get the prompt, select \ldblquote Enable\rdblquote . If you don\rquote t get a prompt, go to Tools -> Manage add-ons and make sure the add-on \ldblquote ClassicIEBHO\rdblquote is enabled. After that restart Internet Explorer.\par
\pard\keep\keepn\widctlpar\s1\sb480\sl276\slmult1\cf5\b\f0\fs28 Uninstallation\par
\pard\widctlpar\cf0\b0\f1\fs22\par
To uninstall \cf3\b Open-Shell\cf0\b0 follow these steps:\par
\pard
{\pntext\f1 1)\tab}{\*\pn\pnlvlbody\pnf1\pnindent0\pnstart1\pndec{\pntxta)}}
\widctlpar\fi-360\li720 Open \b Control Panel -> Programs and Features\b0 and double-click on \b Open-Shell\b0 . Then follow the instructions. You may have to restart Windows to complete the process.\par
{\pntext\f1 2)\tab}If you installed any additional skins for the start menu you will have to delete them manually\par
\pard\widctlpar\par
\pard\widctlpar\sa200\sl276\slmult1\par
}

View File

@@ -1,138 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<OBJECT type="text/site properties">
<param name="ImageType" value="Folder">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Open-Shell">
<param name="Local" value="Main.html">
<param name="ImageNumber" value="11">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Open-Shell Menu">
<param name="Local" value="Menu.html">
<param name="ImageNumber" value="1">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Styles">
<param name="Local" value="Menu.html#styles">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Operation">
<param name="Local" value="Menu.html#operation">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Settings">
<param name="Local" value="Menu.html#settings">
<param name="URL" value="Menu.html#settings">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Administrative Settings">
<param name="Local" value="Menu.html#admin">
<param name="URL" value="Menu.html#admin">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="More About Skins">
<param name="Local" value="Menu.html#skins">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Search">
<param name="Local" value="Menu.html#search">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Custom Start Button">
<param name="Local" value="Menu.html#button">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Localization">
<param name="Local" value="Menu.html#localization">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Command Line">
<param name="Local" value="Menu.html#command_line">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Accessibility">
<param name="Local" value="Menu.html#accessibility">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Classic Explorer">
<param name="Local" value="ClassicExplorer.html">
<param name="ImageNumber" value="1">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="New Copy UI">
<param name="Local" value="ClassicExplorer.html#copy">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Alt+Enter in the folder panel">
<param name="Local" value="ClassicExplorer.html#alt_enter">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Toolbar for Windows Explorer">
<param name="Local" value="ClassicExplorer.html#toolbar">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Status bar">
<param name="Local" value="ClassicExplorer.html#statusbar">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Settings">
<param name="Local" value="ClassicExplorer.html#settings">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Examples for Custom Commands">
<param name="Local" value="ClassicExplorer.html#examples">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Administrative Settings">
<param name="Local" value="ClassicExplorer.html#admin">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Dependencies on Windows settings">
<param name="Local" value="ClassicExplorer.html#dependencies">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Localization">
<param name="Local" value="ClassicExplorer.html#localization">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Classic IE">
<param name="Local" value="ClassicIE.html">
<param name="ImageNumber" value="1">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Installation">
<param name="Local" value="ClassicIE.html#install">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Settings">
<param name="Local" value="ClassicIE.html#settings">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Administrative Settings">
<param name="Local" value="ClassicIE.html#admin">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="License Agreement">
<param name="Local" value="License.html">
<param name="ImageNumber" value="11">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Useful Links">
<param name="Local" value="Links.html">
<param name="ImageNumber" value="13">
</OBJECT>
</UL>
</BODY></HTML>

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-US" Codepage="1252" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="Error32bit" Overridable="yes">This installer is only for 32-bit version of Windows. For 64-bit Windows you need to run Setup64.</String>
<String Id="ErrorWin7" Overridable="yes">Open-Shell requires Windows 7 or above.</String>
<String Id="ErrorNewVersion" Overridable="yes">A newer version of [ProductName] is already installed. The setup will now exit.</String>
<String Id="ExplorerTitle" Overridable="yes">Classic Explorer</String>
<String Id="ExplorerDesc" Overridable="yes">Classic Explorer adds a toolbar to Windows Explorer, replaces the copy UI and fixes some usability problems</String>
<String Id="StartMenuTitle" Overridable="yes">Open-Shell Menu</String>
<String Id="StartMenuDesc" Overridable="yes">Open-Shell Menu is a highly customizable replacement for the Windows start menu</String>
<String Id="IETitle" Overridable="yes">Classic IE</String>
<String Id="IEDesc" Overridable="yes">Classic IE lets you customize the title bar and the status bar of Internet Explorer</String>
<String Id="UpdateTitle" Overridable="yes">Open-Shell Update</String>
<String Id="UpdateDesc" Overridable="yes">Open-Shell Update checks periodically for new versions</String>
<String Id="HelpDesc" Overridable="yes">View the Open-Shell documentation</String>
<String Id="ReadmeDesc" Overridable="yes">View the Open-Shell introduction</String>
<String Id="ExplorerSettingsDesc" Overridable="yes">Edit the settings of Classic Explorer</String>
<String Id="StartSettingsDesc" Overridable="yes">Edit the settings of the classic start menu</String>
<String Id="IESettingsDesc" Overridable="yes">Edit the settings of the Internet Explorer title bar and status bar</String>
<String Id="UpdateSettingsDesc" Overridable="yes">Edit the settings for Open-Shell's new version check</String>
<String Id="StartMenuFolder" Overridable="yes">Create a start menu folder</String>
<String Id="WebLink" Overridable="yes">Open-Shell website</String>
<String Id="DonateLink" Overridable="yes">Donate to Open-Shell</String>
<String Id="FacebookLink" Overridable="yes">Visit us on Facebook</String>
<String Id="ViewReadme" Overridable="yes">View Readme file</String>
<String Id="HelpItem" Overridable="yes">Open-Shell Help</String>
<String Id="ReadmeItem" Overridable="yes">Open-Shell Readme</String>
<String Id="UpdateItem" Overridable="yes">Open-Shell Update</String>
<String Id="ExplorerItem" Overridable="yes">Classic Explorer Settings</String>
<String Id="StartMenuItem" Overridable="yes">Open-Shell Menu Settings</String>
<String Id="IEItem" Overridable="yes">Classic IE Settings</String>
<String Id="StartScreenDesc" Overridable="yes">Open the Start screen</String>
<String Id="OpenShellDesc" Overridable="yes">Open-Shell is a collection of usability enhancements for Windows</String>
</WixLocalization>

Binary file not shown.
Can't render this file because it contains an unexpected character in line 45 and column 45.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +0,0 @@
## Open-Shell ![Open-Shell](/Src/Setup/OpenShell.ico)
*Originally* **[Classic Shell](http://www.classicshell.net)** *by [Ivo Beltchev](https://sourceforge.net/u/ibeltchev/profile/)*
[![GitHub Release](https://img.shields.io/github/release/Open-Shell/Open-Shell-Menu.svg)](https://github.com/Open-Shell/Open-Shell-Menu/releases) [![GitHub Pre-Release](https://img.shields.io/github/release/Open-Shell/Open-Shell-Menu/all.svg)](https://github.com/Open-Shell/Open-Shell-Menu/releases) [![Build status](https://ci.appveyor.com/api/projects/status/2wj5x5qoypfjj0tr/branch/master?svg=true)](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master) [![GitQ](https://gitq.com/badge.svg)](https://gitq.com/passionate-coder/Classic-Start) [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/open-shell/Lobby)
[Home Page](https://open-shell.github.io/Open-Shell-Menu)
[Discussion room](https://gitter.im/Open-Shell)
[Latest nightly build](https://ci.appveyor.com/project/passionate-coder/open-shell-menu/branch/master/artifacts)
### Features
- Classic style Start Menu for Windows 7, 8, 8.1, 10
- Toolbar for Windows Explorer
- Classic copy UI (Windows 7 only)
- Show file size in Explorer status bar
- Title bar and status bar for Internet Explorer
---
*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)
[Classic Shell - Custom Start Buttons](https://coddec.github.io/Classic-Shell/www.classicshell.net/tutorials/buttontutorial.html)
[Report a bug/issue or submit a feature request](https://github.com/Open-Shell/Open-Shell-Menu/issues)

View File

@@ -1,19 +0,0 @@
To build Open-Shell, navigate to the Setup folder and run __MakeFinal.bat.
It will compile the binaries, produce installer for English, and create the final archives.
Then you can run the individual language files like _BuildFrench.bat to create the installers
for other languages.
The final files (installers, archives) are saved to the Setup\Final folder.
You need the following tools:
Visual Studio 2017 (Community Edition is enough)
- Desktop development with C++ workload
- Windows 10 SDK (10.0.17134.0) for Desktop C++
- Visual C++ ATL support
HTML Help Workshop
WiX 3.7
7-Zip
It is possible to convert the projects to newer versions of Visual Studio and newer SDKs.
Newer versions of WiX will probably work fine.
Note: Unlike the official release, the source code does not contain digital certificate and
produces unsigned binaries.

View File

@@ -1,776 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
#include "stdafx.h"
#include <commctrl.h>
#include <oleacc.h>
#include <atlcomcli.h>
#include <dwmapi.h>
#include <utility>
#include "Translations.h"
#include "Settings.h"
#include "ResourceHelper.h"
#include "ComHelper.h"
#include "dllmain.h"
static wchar_t g_TitleMove[256];
static wchar_t g_TitleCopy[256];
static wchar_t g_TitleFolder[256];
static wchar_t g_ButtonMove[256];
static wchar_t g_ButtonDontMove[256];
static wchar_t g_ButtonCopy[256];
static wchar_t g_ButtonDontCopy[256];
static wchar_t g_ButtonCancel[256];
static wchar_t g_ButtonMore[256];
static HMODULE g_hShell32;
static void LogPrint( CString *pLog, const wchar_t *format, ... )
{
wchar_t buf[256];
va_list args;
va_start(args,format);
int len=Vsprintf(buf,_countof(buf),format,args);
va_end(args);
*pLog+=buf;
}
// CClassicCopyFile - this is the implementation of the Copy UI dialog box for files
class CClassicCopyFile
{
public:
CClassicCopyFile( void );
~CClassicCopyFile( void );
bool Run( HWND hWnd, IAccessible *pAcc, CString *pLog );
private:
void EnumAccChildren( IAccessible *pAcc, CString *pLog );
void AddAccChild( IAccessible *pAcc, const VARIANT &id, CString *pLog );
void GetFileInfo( IAccessible *pAcc, bool bSrc );
CString m_FileName;
bool m_bSystem;
bool m_bReadOnly;
HICON m_Icon;
CString m_SrcSize;
CString m_SrcTime;
HICON m_SrcIcon;
CString m_DstSize;
CString m_DstTime;
HICON m_DstIcon;
typedef std::pair<CComPtr<IAccessible>,int> CControl;
CControl m_YesButton;
CControl m_NoButton;
CControl m_CheckBox;
CControl m_Cancel;
bool m_bCopyMultiLast; // the last of a series of multi-file boxes
static INT_PTR CALLBACK DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
static void PumpMessages( void );
};
CClassicCopyFile::CClassicCopyFile( void )
{
m_Icon=m_SrcIcon=m_DstIcon=NULL;
m_bCopyMultiLast=false;
m_bSystem=m_bReadOnly=false;
}
CClassicCopyFile::~CClassicCopyFile( void )
{
if (m_Icon) DestroyIcon(m_Icon);
if (m_SrcIcon) DestroyIcon(m_SrcIcon);
if (m_DstIcon) DestroyIcon(m_DstIcon);
}
// Show the dialog box. Returns true to suppress the original task dialog box
bool CClassicCopyFile::Run( HWND hWnd, IAccessible *pAcc, CString *pLog )
{
// find all interesting controls
EnumAccChildren(pAcc,pLog);
if (!m_YesButton.first || m_YesButton.second!=CHILDID_SELF || !m_NoButton.first || m_NoButton.second!=CHILDID_SELF || !m_Cancel.first)
return false; // something is wrong, do nothing
if (pLog) pLog->Empty(); // success - no need to log anything
// get the info for the source and the destination file (file name, icon, properties)
m_bReadOnly=false;
m_bSystem=false;
GetFileInfo(m_YesButton.first,true);
GetFileInfo(m_NoButton.first,false);
TlsData *pTlsData=GetTlsData();
if (m_CheckBox.first)
pTlsData->bCopyMultiFile=true;
else if (pTlsData->bCopyMultiFile)
m_bCopyMultiLast=true;
// pick the correct dialog template (for single and multiple files, for LTR and RTL)
int dlg=pTlsData->bCopyMultiFile?(IsLanguageRTL()?IDD_FILEMULTIR:IDD_FILEMULTI):(IsLanguageRTL()?IDD_FILER:IDD_FILE);
HWND parent=GetWindow(GetAncestor(hWnd,GA_ROOT),GW_OWNER);
int res=(int)DialogBoxParam(g_Instance,MAKEINTRESOURCE(dlg),parent,DialogProc,(LPARAM)this);
if (res==IDOK || (res==IDYES && m_bCopyMultiLast))
{
// Yes was pressed, proceed with the operation
m_YesButton.first->accDoDefaultAction(CComVariant(CHILDID_SELF));
}
else if (res==IDNO)
{
// No
if (m_CheckBox.first && GetKeyState(VK_SHIFT)<0)
m_CheckBox.first->accDoDefaultAction(CComVariant(CHILDID_SELF)); // Shift+No = No to All
PumpMessages(); // messages need to be pumped after every accessibility action. otherwise the next action doesn't work
m_NoButton.first->accDoDefaultAction(CComVariant(CHILDID_SELF));
}
else if (res==IDYES)
{
// Yes to All
m_CheckBox.first->accDoDefaultAction(CComVariant(CHILDID_SELF));
PumpMessages(); // messages need to be pumped after every accessibility action. otherwise the next action doesn't work
m_YesButton.first->accDoDefaultAction(CComVariant(CHILDID_SELF));
}
if (res==IDCANCEL)
{
// Cancel
if (GetKeyState(VK_SHIFT)<0 || GetKeyState(VK_CONTROL)<0)
return false; // // Shift+Cancel or Ctrl+Cancel was clicked - show the original dialog box
m_Cancel.first->accDoDefaultAction(CComVariant(CHILDID_SELF));
}
if (res==IDC_LINKMORE)
{
// More... was clicked - show the original dialog box
return false;
}
return true;
}
void CClassicCopyFile::PumpMessages( void )
{
MSG msg;
while (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
void CClassicCopyFile::AddAccChild( IAccessible *pAcc, const VARIANT &id, CString *pLog )
{
CComVariant state;
pAcc->get_accState(id,&state);
if (state.intVal&(STATE_SYSTEM_UNAVAILABLE|STATE_SYSTEM_INVISIBLE)) return;
CComVariant role;
pAcc->get_accRole(id,&role);
if (role.intVal==ROLE_SYSTEM_PUSHBUTTON)
{
CComBSTR name;
if (SUCCEEDED(pAcc->get_accName(id,&name)) && name)
{
if (pLog)
LogPrint(pLog,L"button found: '%s', %d\r\n",name,id.intVal);
if (_wcsicmp(name,g_ButtonCopy)==0 || _wcsicmp(name,g_ButtonMove)==0)
{
m_YesButton.first=pAcc;
m_YesButton.second=id.intVal;
if (pLog)
LogPrint(pLog,L"YES button: %p, %d\r\n",pAcc,id.intVal);
}
else if (_wcsicmp(name,g_ButtonDontCopy)==0 || _wcsicmp(name,g_ButtonDontMove)==0)
{
m_NoButton.first=pAcc;
m_NoButton.second=id.intVal;
if (pLog)
LogPrint(pLog,L"NO button: %p, %d\r\n",pAcc,id.intVal);
}
else if (_wcsicmp(name,g_ButtonCancel)==0)
{
m_Cancel.first=pAcc;
m_Cancel.second=id.intVal;
if (pLog)
LogPrint(pLog,L"CANCEL button: %p, %d\r\n",pAcc,id.intVal);
}
}
}
if (role.intVal==ROLE_SYSTEM_CHECKBUTTON)
{
// hopefully there is only one checkbox
m_CheckBox.first=pAcc;
m_CheckBox.second=id.intVal;
}
}
void CClassicCopyFile::EnumAccChildren( IAccessible *pAcc, CString *pLog )
{
AddAccChild(pAcc,CComVariant(CHILDID_SELF),pLog);
long count;
pAcc->get_accChildCount(&count);
CComVariant children[20];
AccessibleChildren(pAcc,0,count,children,&count);
for (int i=0;i<count;i++)
{
if (children[i].vt==VT_DISPATCH)
{
CComQIPtr<IAccessible> pChild=children[i].pdispVal;
if (pChild)
EnumAccChildren(pChild,pLog);
}
else
AddAccChild(pAcc,children[i],pLog);
}
}
void CClassicCopyFile::GetFileInfo( IAccessible *pAcc, bool bSrc )
{
long count;
pAcc->get_accChildCount(&count);
CComVariant children[20];
AccessibleChildren(pAcc,0,count,children,&count);
wchar_t fname[_MAX_PATH]=L"";
wchar_t dir[_MAX_PATH]=L"";
CString size;
CString date;
// get the file name, directory, size and date
for (int i=0;i<count;i++)
{
CComBSTR name;
if (children[i].vt==VT_DISPATCH)
{
CComQIPtr<IAccessible> pChild=children[i].pdispVal;
if (pChild)
pChild->get_accName(CComVariant(CHILDID_SELF),&name);
}
else
{
pAcc->get_accName(children[i],&name);
}
switch (i)
{
case 2: if (wcslen(name)<_countof(fname)) wcscpy_s(fname,name); break;
case 3: if (wcslen(name)<_countof(dir)) wcscpy_s(dir,name); break;
case 4: size=name; break;
case 5: date=name; break;
}
}
if (bSrc)
{
m_FileName=fname;
m_SrcSize=size;
m_SrcTime=date;
}
else
{
m_DstSize=size;
m_DstTime=date;
}
if (!fname[0] || !dir[0]) return;
wchar_t fname2[_MAX_PATH];
memcpy(fname2,fname,sizeof(fname2));
*PathFindExtension(fname2)=0;
int len1=Strlen(fname2);
// the directory text is something like "filename (directory)". we need to parse out the real directory name
int len2=Strlen(dir);
if (dir[0]==0x202A) len1++; // for Arabic the first character is some RTL marker. needs to be skipped
if (dir[len1]==0x1E) len1++; // for Hebrew there is an extra control character after the file name
if (len1+1>=len2 || dir[len1]!=L' ' || dir[len1+1]!=L'(' || dir[len2-1]!=L')') return;
if (dir[len1+2]==0x202A) len1++; // for Hebrew the first character is some RTL marker. needs to be skipped
if (dir[len2-2]==0x202C) len2--; // for Hebrew the last character is some RTL marker. needs to be skipped
dir[len2-1]=0;
// construct the full file name
wchar_t path[_MAX_PATH];
_wmakepath_s(path,NULL,dir+len1+2,fname,NULL);
if (!bSrc)
{
DWORD attrib=GetFileAttributes(path);
if (attrib!=INVALID_FILE_ATTRIBUTES)
{
if (attrib&FILE_ATTRIBUTE_READONLY) m_bReadOnly=true;
if (attrib&FILE_ATTRIBUTE_SYSTEM) m_bSystem=true;
}
}
// get file icon
HICON hIcon=NULL;
CAbsolutePidl pidl;
if (SUCCEEDED(SHParseDisplayName(path,NULL,&pidl,0,NULL)) && pidl)
{
int iconSize=GetSystemMetrics(SM_CXICON);
HBITMAP hBitmap=NULL;
CComPtr<IShellItemImageFactory> pFactory;
if (SUCCEEDED(SHCreateItemFromIDList(pidl,IID_IShellItemImageFactory,(void**)&pFactory)) && pFactory)
{
SIZE size={iconSize,iconSize};
if (FAILED(pFactory->GetImage(size,SIIGBF_ICONONLY,&hBitmap)))
hBitmap=NULL;
}
if (hBitmap)
{
HBITMAP hMonoBitmap=CreateBitmap(iconSize,iconSize,1,1,NULL);
ICONINFO info={TRUE,0,0,hMonoBitmap,hBitmap};
hIcon=CreateIconIndirect(&info);
DeleteObject(hMonoBitmap);
DeleteObject(hBitmap);
}
}
if (!hIcon) return;
if (bSrc)
m_SrcIcon=hIcon;
else
m_DstIcon=hIcon;
}
const int WM_BRINGFOREGROUND=WM_USER+11;
INT_PTR CALLBACK CClassicCopyFile::DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
if (uMsg==WM_INITDIALOG)
{
SetWindowText(hwndDlg,FindTranslation(L"Copy.Title",L"Confirm File Replace"));
CClassicCopyFile *pThis=(CClassicCopyFile*)lParam;
wchar_t text[_MAX_PATH*2];
if (pThis->m_bSystem)
{
Sprintf(text,_countof(text),FindTranslation(L"Copy.SubtitleSys",L"This folder already contains a system file named '%s'."),pThis->m_FileName);
if (GetSettingInt(L"OverwriteAlertLevel")>=1)
PlaySound(L".Default",NULL,SND_APPLICATION|SND_ALIAS|SND_ASYNC|SND_NODEFAULT|SND_SYSTEM);
}
else if (pThis->m_bReadOnly)
{
Sprintf(text,_countof(text),FindTranslation(L"Copy.SubtitleRO",L"This folder already contains a read-only file named '%s'."),pThis->m_FileName);
if (GetSettingInt(L"OverwriteAlertLevel")>=2)
PlaySound(L".Default",NULL,SND_APPLICATION|SND_ALIAS|SND_ASYNC|SND_NODEFAULT|SND_SYSTEM);
}
else
Sprintf(text,_countof(text),FindTranslation(L"Copy.Subtitle",L"This folder already contains a file named '%s'."),pThis->m_FileName);
SetDlgItemText(hwndDlg,IDC_STATICFNAME,text);
// load icon for file conflict (146) from Shell32.dll
HMODULE hShell32=GetModuleHandle(L"Shell32.dll");
pThis->m_Icon=LoadIcon(hShell32,MAKEINTRESOURCE(146));
if (pThis->m_Icon)
SendDlgItemMessage(hwndDlg,IDC_STATICICON1,STM_SETICON,(LPARAM)pThis->m_Icon,0);
// set the localized text
SetDlgItemText(hwndDlg,IDC_STATICPROMPT1,FindTranslation(L"Copy.Prompt1",L"Do you want to replace the existing file:"));
SetDlgItemText(hwndDlg,IDC_STATICDSTSIZE,pThis->m_DstSize);
SetDlgItemText(hwndDlg,IDC_STATICDSTTIME,pThis->m_DstTime);
SetDlgItemText(hwndDlg,IDC_STATICPROMPT2,FindTranslation(L"Copy.Prompt2",L"with this one?"));
SendDlgItemMessage(hwndDlg,IDC_STATICDSTICON,STM_SETICON,(LPARAM)pThis->m_DstIcon,0);
SetDlgItemText(hwndDlg,IDC_STATICSRCSIZE,pThis->m_SrcSize);
SetDlgItemText(hwndDlg,IDC_STATICSRCTIME,pThis->m_SrcTime);
SendDlgItemMessage(hwndDlg,IDC_STATICSRCICON,STM_SETICON,(LPARAM)pThis->m_SrcIcon,0);
SetDlgItemText(hwndDlg,IDOK,FindTranslation(L"Copy.Yes",L"&Yes"));
SetDlgItemText(hwndDlg,IDNO,FindTranslation(L"Copy.No",L"&No"));
if (GetDlgItem(hwndDlg,IDYES))
SetDlgItemText(hwndDlg,IDYES,FindTranslation(L"Copy.YesAll",L"Yes to &All"));
if (GetDlgItem(hwndDlg,IDCANCEL))
SetDlgItemText(hwndDlg,IDCANCEL,FindTranslation(L"Copy.Cancel",L"Cancel"));
Sprintf(text,_countof(text),L"<a>%s</a>",FindTranslation(L"Copy.More",L"&More..."));
SetDlgItemText(hwndDlg,IDC_LINKMORE,text);
PostMessage(hwndDlg,WM_BRINGFOREGROUND,0,0);
return TRUE;
}
if (uMsg==WM_BRINGFOREGROUND)
{
// bring window to front (sometimes on Windows7 it shows up behind Explorer)
SetForegroundWindow(hwndDlg);
return TRUE;
}
if (uMsg==WM_COMMAND && (wParam==IDOK || wParam==IDYES || wParam==IDNO || wParam==IDCANCEL))
{
EndDialog(hwndDlg,wParam);
return TRUE;
}
if (uMsg==WM_NOTIFY)
{
NMHDR *pHdr=(NMHDR*)lParam;
if (pHdr->idFrom==IDC_LINKMORE && (pHdr->code==NM_CLICK || pHdr->code==NM_RETURN))
{
EndDialog(hwndDlg,IDC_LINKMORE);
return TRUE;
}
}
return FALSE;
}
///////////////////////////////////////////////////////////////////////////////
// CClassicCopyFolder - this is the implementation of the Copy UI dialog box for folders
class CClassicCopyFolder
{
public:
CClassicCopyFolder( void ) { m_Icon=NULL; m_Original=NULL; }
~CClassicCopyFolder( void );
bool Run( HWND hWnd );
private:
HICON m_Icon;
HWND m_Original;
static INT_PTR CALLBACK DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
};
CClassicCopyFolder::~CClassicCopyFolder( void )
{
if (m_Icon) DestroyIcon(m_Icon);
}
// Show the dialog box. Returns true to suppress the original task dialog box
bool CClassicCopyFolder::Run( HWND hWnd )
{
m_Original=hWnd;
const int ID_ALLCHECK=16663;
HWND check=GetDlgItem(hWnd,ID_ALLCHECK);
bool bMulti=(check && (GetWindowLong(check,GWL_STYLE)&WS_VISIBLE));
// pick the correct dialog template (for single and multiple files, for LTR and RTL)
int dlg=bMulti?(IsLanguageRTL()?IDD_FOLDERMULTIR:IDD_FOLDERMULTI):(IsLanguageRTL()?IDD_FOLDERR:IDD_FOLDER);
HWND parent=GetWindow(GetAncestor(hWnd,GA_ROOT),GW_OWNER);
int res=(int)DialogBoxParam(g_Instance,MAKEINTRESOURCE(dlg),parent,DialogProc,(LPARAM)this);
if (res==IDOK) // Yes button for single folder
{
// Yes was pressed, proceed with the operation
PostMessage(hWnd,WM_COMMAND,IDYES,(LPARAM)GetDlgItem(hWnd,IDYES));
}
else if (res==IDNO)
{
// No
if (bMulti)
{
if (GetKeyState(VK_SHIFT)<0)
{
CheckDlgButton(hWnd,ID_ALLCHECK,BST_CHECKED);
SendMessage(hWnd,WM_COMMAND,ID_ALLCHECK,(LPARAM)check);
}
PostMessage(hWnd,WM_COMMAND,IDNO,(LPARAM)GetDlgItem(hWnd,IDNO)); // Skip
}
else
PostMessage(hWnd,WM_COMMAND,IDCANCEL,(LPARAM)GetDlgItem(hWnd,IDCANCEL)); // No
}
else if (res==IDYES)
{
// Yes to All
CheckDlgButton(hWnd,ID_ALLCHECK,BST_CHECKED);
SendMessage(hWnd,WM_COMMAND,ID_ALLCHECK,(LPARAM)check);
PostMessage(hWnd,WM_COMMAND,IDYES,(LPARAM)GetDlgItem(hWnd,IDYES));
}
if (res==IDCANCEL)
{
// Cancel
if (GetKeyState(VK_SHIFT)<0 || GetKeyState(VK_CONTROL)<0)
return false; // // Shift+Cancel or Ctrl+Cancel was clicked - show the original dialog box
PostMessage(hWnd,WM_COMMAND,IDCANCEL,(LPARAM)GetDlgItem(hWnd,IDCANCEL)); // No
}
if (res==IDC_LINKMORE)
{
// More... was clicked - show the original dialog box
return false;
}
return true;
}
INT_PTR CALLBACK CClassicCopyFolder::DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
if (uMsg==WM_INITDIALOG)
{
SetWindowText(hwndDlg,FindTranslation(L"Folder.Title",L"Confirm Folder Replace"));
CClassicCopyFolder *pThis=(CClassicCopyFolder*)lParam;
wchar_t text[2048];
// find the link control and get its text
HWND link=FindWindowEx(pThis->m_Original,NULL,WC_LINK,NULL);
if (link)
GetWindowText(link,text,_countof(text));
else
text[0]=0;
Strcat(text,_countof(text),L"\r\n\r\n");
Strcat(text,_countof(text),FindTranslation(L"Folder.Prompt",L"Do you still want to move or copy the folder?"));
SetDlgItemText(hwndDlg,IDC_STATICFNAME,text);
// load icon for file conflict (146) from Shell32.dll
HMODULE hShell32=GetModuleHandle(L"Shell32.dll");
pThis->m_Icon=LoadIcon(hShell32,MAKEINTRESOURCE(146));
if (pThis->m_Icon)
SendDlgItemMessage(hwndDlg,IDC_STATICICON1,STM_SETICON,(LPARAM)pThis->m_Icon,0);
// set the localized text
SetDlgItemText(hwndDlg,IDOK,FindTranslation(L"Copy.Yes",L"&Yes"));
SetDlgItemText(hwndDlg,IDNO,FindTranslation(L"Copy.No",L"&No"));
if (GetDlgItem(hwndDlg,IDYES))
SetDlgItemText(hwndDlg,IDYES,FindTranslation(L"Copy.YesAll",L"Yes to &All"));
if (GetDlgItem(hwndDlg,IDCANCEL))
SetDlgItemText(hwndDlg,IDCANCEL,FindTranslation(L"Copy.Cancel",L"Cancel"));
Sprintf(text,_countof(text),L"<a>%s</a>",FindTranslation(L"Copy.More",L"&More..."));
SetDlgItemText(hwndDlg,IDC_LINKMORE,text);
PostMessage(hwndDlg,WM_BRINGFOREGROUND,0,0);
return TRUE;
}
if (uMsg==WM_BRINGFOREGROUND)
{
// bring window to front (sometimes on Windows7 it shows up behind Explorer)
SetForegroundWindow(hwndDlg);
return TRUE;
}
if (uMsg==WM_COMMAND && (wParam==IDOK || wParam==IDYES || wParam==IDNO || wParam==IDCANCEL))
{
EndDialog(hwndDlg,wParam);
return TRUE;
}
if (uMsg==WM_NOTIFY)
{
NMHDR *pHdr=(NMHDR*)lParam;
if (pHdr->idFrom==IDC_LINKMORE && (pHdr->code==NM_CLICK || pHdr->code==NM_RETURN))
{
EndDialog(hwndDlg,IDC_LINKMORE);
return TRUE;
}
}
return FALSE;
}
///////////////////////////////////////////////////////////////////////////////
static CComPtr<IAccessible> FindMoreButton( IAccessible *pAcc )
{
CComVariant state;
CComVariant self(CHILDID_SELF);
pAcc->get_accState(self,&state);
if (!(state.intVal&(STATE_SYSTEM_UNAVAILABLE|STATE_SYSTEM_INVISIBLE)))
{
CComVariant role;
pAcc->get_accRole(self,&role);
if (role.intVal==ROLE_SYSTEM_PUSHBUTTON)
{
CComBSTR name;
if (SUCCEEDED(pAcc->get_accName(self,&name)) && name && _wcsicmp(name,g_ButtonMore)==0)
return pAcc;
}
}
CComVariant children[30];
long count;
AccessibleChildren(pAcc,0,_countof(children),children,&count);
for (int i=0;i<count;i++)
{
if (children[i].vt==VT_DISPATCH)
{
CComQIPtr<IAccessible> pChild=children[i].pdispVal;
if (pChild)
{
CComPtr<IAccessible> pRes=FindMoreButton(pChild);
if (pRes) return pRes;
}
}
}
return NULL;
}
///////////////////////////////////////////////////////////////////////////////
static LRESULT CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData )
{
if (uMsg==WM_WINDOWPOSCHANGING)
{
WINDOWPOS *pos=(WINDOWPOS*)lParam;
if (pos->flags&SWP_SHOWWINDOW)
{
wchar_t title[256];
GetWindowText(hWnd,title,_countof(title));
if (_wcsicmp(title,g_TitleMove)==0 || _wcsicmp(title,g_TitleCopy)==0)
{
// file UI
if (GetSettingBool(L"ReplaceFileUI"))
{
CString log;
CComPtr<IAccessible> pAcc;
HRESULT h=AccessibleObjectFromWindow(hWnd,OBJID_WINDOW,IID_IAccessible,(void**)&pAcc);
if (SUCCEEDED(h) && pAcc)
{
CClassicCopyFile copy;
if (copy.Run(hWnd,pAcc,g_bLogLevel?&log:NULL))
{
pos->x=pos->y=-20000;
pos->flags&=~(SWP_SHOWWINDOW|SWP_NOMOVE);
}
}
else if (g_bLogLevel)
LogPrint(&log,L"AccessibleObjectFromWindow: error=0x%X, hWnd=0x%p",h,hWnd);
if (g_bLogLevel)
{
wchar_t fname[_MAX_PATH]=L"%LOCALAPPDATA%\\OpenShell";
DoEnvironmentSubst(fname,_MAX_PATH);
SHCreateDirectory(NULL,fname);
Strcat(fname,_countof(fname),L"\\ExplorerLog.txt");
if (!log.IsEmpty())
{
FILE *f;
if (_wfopen_s(&f,fname,L"wb")==0)
{
fwprintf(f,L"\xFEFF");
OSVERSIONINFOEX ver={sizeof(ver)};
#pragma warning(suppress:4996)
GetVersionEx((OSVERSIONINFO*)&ver);
fwprintf(f,L"version = %d.%d.%d - %d.%d\r\n\r\n",ver.dwMajorVersion,ver.dwMinorVersion,ver.dwBuildNumber,ver.wServicePackMajor,ver.wServicePackMinor);
wchar_t languages[100]={0};
ULONG size=4; // up to 4 languages
ULONG len=_countof(languages);
GetUserPreferredUILanguages(MUI_LANGUAGE_NAME,&size,languages,&len);
for (const wchar_t *lang=languages;*lang;lang+=wcslen(lang)+1)
fwprintf(f,L"language = %s\r\n",lang);
fwprintf(f,L"\r\n");
fwprintf(f,L"g_ButtonMove = '%s'\r\n",g_ButtonMove);
fwprintf(f,L"g_ButtonDontMove = '%s'\r\n",g_ButtonDontMove);
fwprintf(f,L"g_ButtonCopy = '%s'\r\n",g_ButtonCopy);
fwprintf(f,L"g_ButtonDontCopy = '%s'\r\n",g_ButtonDontCopy);
fwprintf(f,L"g_ButtonCancel = '%s'\r\n",g_ButtonCancel);
fwprintf(f,L"\r\n");
fwrite((const wchar_t*)log,log.GetLength(),2,f);
fclose(f);
}
}
else
DeleteFile(fname);
}
}
}
else if (_wcsicmp(title,g_TitleFolder)==0)
{
// folder UI
if (GetSettingBool(L"ReplaceFolderUI"))
{
CClassicCopyFolder copy;
if (copy.Run(hWnd))
{
pos->x=pos->y=-20000;
pos->flags&=~(SWP_SHOWWINDOW|SWP_NOMOVE);
}
}
}
else
{
// look for progress bar
if (GetSettingBool(L"EnableMore"))
{
HWND progress=FindChildWindow(hWnd,PROGRESS_CLASS);
if (progress)
{
bool bDef;
int delay=GetSettingInt(L"MoreProgressDelay",bDef);
if (bDef)
{
delay=0;
if (GetWinVersion()>=WIN_VER_WIN7)
{
BOOL comp;
if (SUCCEEDED(DwmIsCompositionEnabled(&comp)) && comp)
delay=500;
}
}
SetTimer(hWnd,'CLEX',delay,NULL);
return DefSubclassProc(hWnd,uMsg,wParam,lParam);
}
}
}
LRESULT res=DefSubclassProc(hWnd,uMsg,wParam,lParam);
RemoveWindowSubclass(hWnd,WindowProc,uIdSubclass);
return res;
}
}
if (uMsg==WM_TIMER && wParam=='CLEX')
{
KillTimer(hWnd,wParam);
CComPtr<IAccessible> pAcc;
HRESULT h=AccessibleObjectFromWindow(hWnd,OBJID_WINDOW,IID_IAccessible,(void**)&pAcc);
if (SUCCEEDED(h) && pAcc)
{
CComPtr<IAccessible> pMore=FindMoreButton(pAcc);
if (pMore) pMore->accDoDefaultAction(CComVariant(CHILDID_SELF));
}
LRESULT res=DefSubclassProc(hWnd,uMsg,wParam,lParam);
RemoveWindowSubclass(hWnd,WindowProc,uIdSubclass);
return res;
}
return DefSubclassProc(hWnd,uMsg,wParam,lParam);
}
LRESULT CALLBACK ClassicCopyHook( int nCode, WPARAM wParam, LPARAM lParam )
{
if (nCode==HCBT_CREATEWND)
{
HWND hWnd=(HWND)wParam;
CBT_CREATEWND *create=(CBT_CREATEWND*)lParam;
HINSTANCE hInst=(HINSTANCE)GetWindowLongPtr(hWnd,GWLP_HINSTANCE);
if (create->lpcs->lpszName && (intptr_t)create->lpcs->lpszClass==32770 && hInst==g_hShell32)
{
WaitDllInitThread();
static LONG id;
int i=InterlockedIncrement(&id);
SetWindowSubclass(hWnd,WindowProc,i,0);
}
}
TlsData *pTlsData=GetTlsData();
return CallNextHookEx(pTlsData->copyHook,nCode,wParam,lParam);
}
void InitClassicCopyProcess( void )
{
// load UI text from shell32.dll
// the text is used to locate controls in the copy dialog by name
g_hShell32=GetModuleHandle(L"shell32.dll");
LoadString(g_hShell32,17027,g_TitleMove,256);
LoadString(g_hShell32,17024,g_TitleCopy,256);
LoadString(g_hShell32,16705,g_TitleFolder,256);
LoadString(g_hShell32,13610,g_ButtonMove,256);
LoadString(g_hShell32,13623,g_ButtonDontMove,256);
LoadString(g_hShell32,13604,g_ButtonCopy,256);
LoadString(g_hShell32,13606,g_ButtonDontCopy,256);
LoadString(g_hShell32,13588,g_ButtonCancel,256);
LoadString(g_hShell32,32992,g_ButtonMore,256);
}
void InitClassicCopyThread( void )
{
TlsData *pTlsData=GetTlsData();
if (!pTlsData->copyHook)
pTlsData->copyHook=SetWindowsHookEx(WH_CBT,ClassicCopyHook,g_Instance,GetCurrentThreadId());
}
void FreeClassicCopyThread( void )
{
TlsData *pTlsData=GetTlsData();
if (pTlsData->copyHook)
{
UnhookWindowsHookEx(pTlsData->copyHook);
pTlsData->copyHook=NULL;
}
}

View File

@@ -1,44 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
// ClassicCopyExt.cpp : Implementation of CClassicCopyExt
#include "stdafx.h"
#include "ClassicCopyExt.h"
#include "ResourceHelper.h"
#include "dllmain.h"
// CClassicCopyExt - this is a dummy drag and drop handler. Its purpose is to get Explorer to load the DLL when
// a file is being copied or moved.
void InitClassicCopyThread( void );
STDMETHODIMP CClassicCopyExt::Initialize( PCIDLIST_ABSOLUTE pidlFolder, LPDATAOBJECT pDataObj, HKEY hProgID )
{
InitClassicCopyThread();
return S_OK;
}
STDMETHODIMP CClassicCopyExt::QueryContextMenu( HMENU hmenu, UINT uMenuIndex, UINT uidFirstCmd, UINT uidLastCmd, UINT uFlags )
{
return MAKE_HRESULT(SEVERITY_SUCCESS,FACILITY_NULL,0);
}
STDMETHODIMP CClassicCopyExt::GetCommandString( UINT_PTR idCmd, UINT uFlags, UINT* pwReserved, LPSTR pszName, UINT cchMax )
{
return E_INVALIDARG;
}
STDMETHODIMP CClassicCopyExt::InvokeCommand( LPCMINVOKECOMMANDINFO pCmdInfo )
{
return E_INVALIDARG;
}
HRESULT WINAPI CClassicCopyExt::UpdateRegistry( BOOL bRegister )
{
if (GetWinVersion()>=WIN_VER_WIN8)
return S_OK;
return _AtlModule.UpdateRegistryFromResource(IDR_CLASSICCOPYEXT,bRegister);
}

View File

@@ -1,59 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
// ClassicCopyExt.h : Declaration of the CClassicCopyExt
#pragma once
#include "resource.h" // main symbols
#include "ClassicExplorer_i.h"
#include <vector>
// CClassicCopyExt
class ATL_NO_VTABLE CClassicCopyExt :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CClassicCopyExt, &CLSID_ClassicCopyExt>,
public IShellExtInit,
public IContextMenu
{
public:
CClassicCopyExt()
{
}
static HRESULT WINAPI UpdateRegistry( BOOL bRegister );
DECLARE_NOT_AGGREGATABLE(CClassicCopyExt)
BEGIN_COM_MAP(CClassicCopyExt)
COM_INTERFACE_ENTRY(IShellExtInit)
COM_INTERFACE_ENTRY(IContextMenu)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
// IShellExtInit
STDMETHODIMP Initialize(PCIDLIST_ABSOLUTE, LPDATAOBJECT, HKEY);
// IContextMenu
STDMETHODIMP GetCommandString(UINT_PTR, UINT, UINT*, LPSTR, UINT);
STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO);
STDMETHODIMP QueryContextMenu(HMENU, UINT, UINT, UINT, UINT);
};
OBJECT_ENTRY_AUTO(__uuidof(ClassicCopyExt), CClassicCopyExt)

View File

@@ -1,58 +0,0 @@
HKCR
{
ClassicExplorer.ClassicCopyExt.1 = s 'ClassicCopyExt Class'
{
CLSID = s '{8C83ACB1-75C3-45D2-882C-EFA32333491C}'
}
ClassicExplorer.ClassicCopyExt = s 'ClassicCopyExt Class'
{
CLSID = s '{8C83ACB1-75C3-45D2-882C-EFA32333491C}'
CurVer = s 'ClassicExplorer.ClassicCopyExt.1'
}
NoRemove CLSID
{
ForceRemove {8C83ACB1-75C3-45D2-882C-EFA32333491C} = s 'ClassicCopyExt Class'
{
ProgID = s 'ClassicExplorer.ClassicCopyExt.1'
VersionIndependentProgID = s 'ClassicExplorer.ClassicCopyExt'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{BF8D124A-A4E0-402F-8152-4EF377E62586}'
}
}
NoRemove Directory
{
NoRemove shellex
{
NoRemove DragDropHandlers
{
ForceRemove ClassicCopyExt = s '{8C83ACB1-75C3-45D2-882C-EFA32333491C}'
}
}
}
NoRemove Drive
{
NoRemove shellex
{
NoRemove DragDropHandlers
{
ForceRemove ClassicCopyExt = s '{8C83ACB1-75C3-45D2-882C-EFA32333491C}'
}
}
}
NoRemove Folder
{
NoRemove shellex
{
NoRemove DragDropHandlers
{
ForceRemove ClassicCopyExt = s '{8C83ACB1-75C3-45D2-882C-EFA32333491C}'
}
}
}
}

View File

@@ -1,91 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
// ClassicExplorer.cpp : Implementation of DLL Exports.
#include "stdafx.h"
#include "resource.h"
#include "ClassicExplorer_i.h"
#include "dllmain.h"
// Used to determine whether the DLL can be unloaded by OLE
STDAPI DllCanUnloadNow(void)
{
return _AtlModule.DllCanUnloadNow();
}
extern bool g_bExplorerExe;
// Returns a class factory to create an object of the requested type
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
WaitDllInitThread();
if (!g_bExplorerExe && rclsid!=CLSID_ShareOverlay)
return CLASS_E_CLASSNOTAVAILABLE;
return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
}
// DllRegisterServer - Adds entries to the system registry
STDAPI DllRegisterServer(void)
{
WaitDllInitThread();
// registers object, typelib and all interfaces in typelib
HRESULT res=_AtlModule.DllRegisterServer();
if (SUCCEEDED(res))
{
// mark the extensions as compatible with the enhanced protected mode of IE10
// they are not technically IE extensions, but it complains about them as
// being incompatible
CComPtr<ICatRegister> catRegister;
catRegister.CoCreateInstance(CLSID_StdComponentCategoriesMgr);
if (catRegister)
{
CATID CATID_AppContainerCompatible={0x59fb2056,0xd625,0x48d0,{0xa9,0x44,0x1a,0x85,0xb5,0xab,0x26,0x40}};
catRegister->RegisterClassImplCategories(CLSID_ExplorerBHO,1,&CATID_AppContainerCompatible);
catRegister->RegisterClassImplCategories(CLSID_ExplorerBand,1,&CATID_AppContainerCompatible);
}
}
return res;
}
// DllUnregisterServer - Removes entries from the system registry
STDAPI DllUnregisterServer(void)
{
WaitDllInitThread();
return _AtlModule.DllUnregisterServer();
}
// DllInstall - Adds/Removes entries to the system registry per user
// per machine.
STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
{
WaitDllInitThread();
HRESULT hr = E_FAIL;
static const wchar_t szUserSwitch[] = L"user";
if (pszCmdLine != NULL)
{
if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
{
AtlSetPerUserRegistration(true);
}
}
if (bInstall)
{
hr = DllRegisterServer();
if (FAILED(hr))
{
DllUnregisterServer();
}
}
else
{
hr = DllUnregisterServer();
}
return hr;
}

View File

@@ -1,90 +0,0 @@
// ClassicExplorer.idl : IDL source for ClassicExplorer
//
// This file will be processed by the MIDL tool to
// produce the type library (ClassicExplorer.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(BC4C1B8F-0BDE-4E42-9583-E072B2A28E0D),
dual,
nonextensible,
helpstring("IExplorerBand Interface"),
pointer_default(unique)
]
interface IExplorerBand : IDispatch{
};
[
object,
uuid(6E00B97F-A4D4-4062-98E4-4F66FC96F32F),
dual,
nonextensible,
helpstring("IClassicCopyExt Interface"),
pointer_default(unique)
]
interface IClassicCopyExt : IDispatch{
};
[
object,
uuid(A1678625-A011-4B7C-A1FA-D691E4CDDB79),
dual,
nonextensible,
helpstring("IExplorerBHO Interface"),
pointer_default(unique)
]
interface IExplorerBHO : IDispatch{
};
[
object,
uuid(2576496C-B58A-4995-8878-8B68F9E8D1FC),
dual,
nonextensible,
helpstring("IShareOverlay Interface"),
pointer_default(unique)
]
interface IShareOverlay : IDispatch{
};
[
uuid(BF8D124A-A4E0-402F-8152-4EF377E62586),
version(1.0),
helpstring("ClassicExplorer 1.0 Type Library")
]
library ClassicExplorerLib
{
importlib("stdole2.tlb");
[
uuid(553891B7-A0D5-4526-BE18-D3CE461D6310),
helpstring("ExplorerBand Class")
]
coclass ExplorerBand
{
[default] interface IExplorerBand;
};
[
uuid(8C83ACB1-75C3-45D2-882C-EFA32333491C),
helpstring("ClassicCopyExt Class")
]
coclass ClassicCopyExt
{
[default] interface IClassicCopyExt;
};
[
uuid(449D0D6E-2412-4E61-B68F-1CB625CD9E52),
helpstring("ExplorerBHO Class")
]
coclass ExplorerBHO
{
[default] interface IExplorerBHO;
};
[
uuid(594D4122-1F87-41E2-96C7-825FB4796516),
helpstring("ShareOverlay Class")
]
coclass ShareOverlay
{
[default] interface IShareOverlay;
};
};

View File

@@ -1,676 +0,0 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "windows.h"
#include "winres.h"
#include "..\Lib\resource.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"#include ""..\\Lib\\resource.h""\0"
END
3 TEXTINCLUDE
BEGIN
"#include ""..\\Lib\\resource.h""\r\n"
"#include ""..\\Lib\\Lib.rc""\r\n"
"1 TYPELIB ""ClassicExplorer.tlb""\r\0"
END
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"#include ""..\\Lib\\resource.h""\r\n"
"#include ""..\\Lib\\Lib.rc""\r\0"
END
3 TEXTINCLUDE
BEGIN
"\r\0"
END
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#ifndef APSTUDIO_INVOKED\r\n"
"#include ""targetver.h""\r\n"
"#endif\r\n"
"#include ""winres.h""\r\n"
"#include ""..\\Lib\\resource.h""\r\n"
"#include ""..\\Lib\\Lib.rc""\r\0"
END
3 TEXTINCLUDE
BEGIN
"1 TYPELIB ""ClassicExplorer.tlb""\r\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_FILE DIALOGEX 0, 0, 266, 136
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Confirm File Replace"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "&Yes",IDOK,149,115,53,14
PUSHBUTTON "&No",IDNO,206,115,53,14
ICON "",IDC_STATICICON1,7,7,20,20
LTEXT "This folder already contains a file called 'blah.txt'.",IDC_STATICFNAME,35,7,224,23,SS_NOPREFIX
LTEXT "Do you want to replace the existing file:",IDC_STATICPROMPT1,35,34,224,8,SS_NOPREFIX
ICON "",IDC_STATICDSTICON,43,46,20,20
LTEXT "Static",IDC_STATICDSTSIZE,69,47,190,8,SS_NOPREFIX
LTEXT "Static",IDC_STATICDSTTIME,69,57,190,8,SS_NOPREFIX
LTEXT "with this one?",IDC_STATICPROMPT2,35,74,224,8,SS_NOPREFIX
ICON "",IDC_STATICSRCICON,43,86,20,20
LTEXT "Static",IDC_STATICSRCSIZE,69,87,190,8,SS_NOPREFIX
LTEXT "Static",IDC_STATICSRCTIME,69,97,190,8,SS_NOPREFIX
CONTROL "<a>&More...</a>",IDC_LINKMORE,"SysLink",WS_TABSTOP,7,120,57,10
END
IDD_FILEMULTI DIALOGEX 0, 0, 285, 136
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Confirm File Replace"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "&Yes",IDOK,55,115,53,14
PUSHBUTTON "Yes to &All",IDYES,112,115,53,14
PUSHBUTTON "&No",IDNO,169,115,53,14
PUSHBUTTON "Cancel",IDCANCEL,226,115,53,14
ICON "",IDC_STATICICON1,7,7,20,20
LTEXT "This folder already contains a file called 'blah.txt'.",IDC_STATICFNAME,35,7,243,23,SS_NOPREFIX
LTEXT "Do you want to replace the existing file:",IDC_STATICPROMPT1,35,34,243,8,SS_NOPREFIX
ICON "",IDC_STATICDSTICON,43,46,20,20
LTEXT "Static",IDC_STATICDSTSIZE,69,47,209,8,SS_NOPREFIX
LTEXT "Static",IDC_STATICDSTTIME,69,57,209,8,SS_NOPREFIX
LTEXT "with this one?",IDC_STATICPROMPT2,35,74,243,8,SS_NOPREFIX
ICON "",IDC_STATICSRCICON,43,86,20,20
LTEXT "Static",IDC_STATICSRCSIZE,69,87,209,8,SS_NOPREFIX
LTEXT "Static",IDC_STATICSRCTIME,69,97,209,8,SS_NOPREFIX
CONTROL "<a>&More...</a>",IDC_LINKMORE,"SysLink",WS_TABSTOP,7,120,45,10
END
IDD_FILEMULTIR DIALOGEX 0, 0, 285, 136
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_LAYOUTRTL
CAPTION "Confirm File Replace"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "&Yes",IDOK,55,115,53,14
PUSHBUTTON "Yes to &All",IDYES,112,115,53,14
PUSHBUTTON "&No",IDNO,169,115,53,14
PUSHBUTTON "Cancel",IDCANCEL,226,115,53,14
ICON "",IDC_STATICICON1,7,7,20,20
LTEXT "This folder already contains a file called 'blah.txt'.",IDC_STATICFNAME,35,7,243,23,SS_NOPREFIX
LTEXT "Do you want to replace the existing file:",IDC_STATICPROMPT1,35,34,243,8,SS_NOPREFIX
ICON "",IDC_STATICDSTICON,43,46,20,20
LTEXT "Static",IDC_STATICDSTSIZE,69,47,209,8,SS_NOPREFIX
LTEXT "Static",IDC_STATICDSTTIME,69,57,209,8,SS_NOPREFIX
LTEXT "with this one?",IDC_STATICPROMPT2,35,74,243,8,SS_NOPREFIX
ICON "",IDC_STATICSRCICON,43,86,20,20
LTEXT "Static",IDC_STATICSRCSIZE,69,87,209,8,SS_NOPREFIX
LTEXT "Static",IDC_STATICSRCTIME,69,97,209,8,SS_NOPREFIX
CONTROL "<a>&More...</a>",IDC_LINKMORE,"SysLink",WS_TABSTOP,7,120,45,10
END
IDD_FILER DIALOGEX 0, 0, 266, 136
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_LAYOUTRTL
CAPTION "Confirm File Replace"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "&Yes",IDOK,149,115,53,14
PUSHBUTTON "&No",IDNO,206,115,53,14
ICON "",IDC_STATICICON1,7,7,20,20
LTEXT "This folder already contains a file called 'blah.txt'.",IDC_STATICFNAME,35,7,224,23,SS_NOPREFIX
LTEXT "Do you want to replace the existing file:",IDC_STATICPROMPT1,35,34,224,8,SS_NOPREFIX
ICON "",IDC_STATICDSTICON,43,46,20,20
LTEXT "Static",IDC_STATICDSTSIZE,69,47,190,8,SS_NOPREFIX
LTEXT "Static",IDC_STATICDSTTIME,69,57,190,8,SS_NOPREFIX
LTEXT "with this one?",IDC_STATICPROMPT2,35,74,224,8,SS_NOPREFIX
ICON "",IDC_STATICSRCICON,43,86,20,20
LTEXT "Static",IDC_STATICSRCSIZE,69,87,190,8,SS_NOPREFIX
LTEXT "Static",IDC_STATICSRCTIME,69,97,190,8,SS_NOPREFIX
CONTROL "<a>&More...</a>",IDC_LINKMORE,"SysLink",WS_TABSTOP,7,120,57,10
END
IDD_FOLDERMULTI DIALOGEX 0, 0, 285, 100
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Confirm Folder Replace"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "&Yes",IDOK,55,79,53,14
PUSHBUTTON "Yes to &All",IDYES,112,79,53,14
PUSHBUTTON "&No",IDNO,169,79,53,14
PUSHBUTTON "Cancel",IDCANCEL,226,79,53,14
ICON "",IDC_STATICICON1,7,7,20,20
LTEXT "This folder already contains a folder called 'blah'.",IDC_STATICFNAME,35,7,243,65,SS_NOPREFIX
CONTROL "<a>&More...</a>",IDC_LINKMORE,"SysLink",WS_TABSTOP,7,84,45,10
END
IDD_FOLDER DIALOGEX 0, 0, 266, 100
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Confirm Folder Replace"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "&Yes",IDOK,149,79,53,14
PUSHBUTTON "&No",IDNO,206,79,53,14
ICON "",IDC_STATICICON1,7,7,20,20
LTEXT "This folder already contains a folder called 'blah'.",IDC_STATICFNAME,35,7,224,65,SS_NOPREFIX
CONTROL "<a>&More...</a>",IDC_LINKMORE,"SysLink",WS_TABSTOP,7,84,57,10
END
IDD_FOLDERR DIALOGEX 0, 0, 266, 99
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_LAYOUTRTL
CAPTION "Confirm Folder Replace"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "&Yes",IDOK,149,78,53,14
PUSHBUTTON "&No",IDNO,206,78,53,14
ICON "",IDC_STATICICON1,7,7,20,20
LTEXT "This folder already contains a folder called 'blah'.",IDC_STATICFNAME,35,7,224,65,SS_NOPREFIX
CONTROL "<a>&More...</a>",IDC_LINKMORE,"SysLink",WS_TABSTOP,7,83,57,10
END
IDD_FOLDERMULTIR DIALOGEX 0, 0, 285, 100
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_LAYOUTRTL
CAPTION "Confirm Folder Replace"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "&Yes",IDOK,55,79,53,14
PUSHBUTTON "Yes to &All",IDYES,112,79,53,14
PUSHBUTTON "&No",IDNO,169,79,53,14
PUSHBUTTON "Cancel",IDCANCEL,226,79,53,14
ICON "",IDC_STATICICON1,7,7,20,20
LTEXT "This folder already contains a folder called 'blah'.",IDC_STATICFNAME,35,7,243,65,SS_NOPREFIX
CONTROL "<a>&More...</a>",IDC_LINKMORE,"SysLink",WS_TABSTOP,7,84,45,10
END
IDD_CUSTOMTOOLBAR DIALOGEX 0, 0, 249, 183
STYLE DS_SETFONT | DS_CENTER | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "Edit Toolbar Button (%s)"
FONT 9, "Segoe UI", 400, 0, 0x0
BEGIN
LTEXT "Command:",IDC_STATICCOMMAND,7,7,35,12,SS_CENTERIMAGE
COMBOBOX IDC_COMBOCOMMAND,47,7,180,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "...",IDC_BUTTONCOMMAND,228,7,14,12
LTEXT "Link:",IDC_STATICLINK,7,23,16,12,SS_CENTERIMAGE
COMBOBOX IDC_COMBOLINK,47,23,180,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "...",IDC_BUTTONLINK,228,23,14,12
LTEXT "Label:",IDC_STATICTEXT,7,41,22,12,SS_CENTERIMAGE
EDITTEXT IDC_EDITLABEL,47,41,195,12,ES_AUTOHSCROLL
LTEXT "Tip:",IDC_STATICINFOTIP,7,58,13,12,SS_CENTERIMAGE
EDITTEXT IDC_EDITTIP,47,58,195,12,ES_AUTOHSCROLL
LTEXT "Icon:",IDC_STATICICON,7,74,18,12,SS_CENTERIMAGE
EDITTEXT IDC_EDITICON,47,74,180,12,ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_BUTTONICON,228,74,14,12
ICON "",IDC_ICONN,9,89,20,20
LTEXT "Disabled:",IDC_STATICICOND,7,113,35,12,SS_CENTERIMAGE
EDITTEXT IDC_EDITICOND,47,113,180,12,ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_BUTTONICOND,228,113,14,12
ICON "",IDC_ICOND,9,127,20,20
PUSHBUTTON "Restore defaults",IDC_BUTTONRESET,7,162,90,14
DEFPUSHBUTTON "OK",IDOK,135,162,50,14
PUSHBUTTON "Cancel",IDCANCEL,192,162,50,14
END
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION _PRODUCT_VERSION
PRODUCTVERSION _PRODUCT_VERSION
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "Open-Shell"
VALUE "FileDescription", "Adds classic Windows Explorer features"
VALUE "FileVersion", _PRODUCT_VERSION_STR
VALUE "InternalName", "ClassicExplorer.dll"
VALUE "LegalCopyright", "Copyright (C) 2017-2018, The Open-Shell Team"
VALUE "OriginalFilename", "ClassicExplorer.dll"
VALUE "ProductName", "Open-Shell"
VALUE "ProductVersion", _PRODUCT_VERSION_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
/////////////////////////////////////////////////////////////////////////////
//
// REGISTRY
//
IDR_CLASSICEXPLORER REGISTRY "ClassicExplorer.rgs"
IDR_EXPLORERBAND REGISTRY "ExplorerBand.rgs"
IDR_EXPLORERBHO REGISTRY "ExplorerBHO.rgs"
IDR_CLASSICCOPYEXT REGISTRY "ClassicCopyExt.rgs"
IDR_SHAREOVERLAY REGISTRY "ShareOverlay.rgs"
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_APPICON ICON "..\\Setup\\OpenShell.ico"
IDI_UP2DISABLED ICON "up2Disabled.ico"
IDI_UP2HOT ICON "up2Hot.ico"
IDI_UP2NORMAL ICON "up2Normal.ico"
IDI_UP2PRESSED ICON "up2Pressed.ico"
IDI_UP ICON "up.ico"
IDI_UPDISABLED ICON "upDisabled.ico"
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_CUSTOMTOOLBAR, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 242
TOPMARGIN, 7
BOTTOMMARGIN, 176
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_APP_TITLE "Classic Explorer"
IDS_NEW_SETTINGS1 "The new settings will take effect the next time you open an Explorer window."
IDS_NEW_SETTINGS2 "You need to log off and back on for the new settings to take effect."
IDS_SETTINGS_TITLE "Settings for Classic Explorer"
IDS_SETTINGS_TITLE_VER "Settings for Classic Explorer %d.%d.%d"
IDS_LANGUAGE_SETTINGS "Language"
IDS_TOOLBAR_SETTINGS "Toolbar Settings"
IDS_BIG_BUTTONS "Big buttons"
IDS_BIG_BUTTONS_TIP "Use big buttons in the toolbar"
IDS_SMALL_SIZE "Small icon size"
IDS_SMALL_SIZE_TIP "Set the icon size when 'Big buttons' is unchecked. By default it is 16 for DPI<120 and 24 for DPI>=120"
END
STRINGTABLE
BEGIN
IDS_LARGE_SIZE "Large icon size"
IDS_LARGE_SIZE_TIP "Set the icon size when 'Big buttons' is checked. By default it is 24 for DPI<120 and 32 for DPI>=120"
IDS_MENU_SIZE "Menu icon size"
IDS_MENU_SIZE_TIP "Set the size of the icons in the dropdown menus"
IDS_SAME_SIZE "Same size buttons"
IDS_SAME_SIZE_TIP "When this is checked, all toolbar buttons are the same size, determined by the widest button. Cannot be combined with 'Text is on the side'"
IDS_LIST_MODE "Text is on the side"
IDS_LIST_MODE_TIP "When this is checked, the toolbar is in list mode. The button text shows next to the icon instead of under the icon"
IDS_RESIZEABLE "Resizeable toolbar"
IDS_RESIZEABLE_TIP "When this is checked, the toolbar can be resized to be smaller than its full size. The buttons that don't fit on screen can be accessed by clicking on the small chevron button"
IDS_BUTTONS_SETTINGS "Toolbar Buttons"
IDS_NAVIGATION_SETTINGS "Navigation Pane"
IDS_TREE_STYLE "Navigation pane style"
IDS_TREE_STYLE_TIP "Pick the style for the folder tree in the navigation pane"
IDS_XPCLASSIC "Windows XP Classic"
IDS_XPCLASSIC_TIP "The navigation pane has lines connecting the folders"
END
STRINGTABLE
BEGIN
IDS_XPSIMPLE "Windows XP Simple"
IDS_XPSIMPLE_TIP "The navigation pane has no lines"
IDS_VISTA "Windows Vista"
IDS_VISTA_TIP "The navigation pane shows little triangles to expand the folders"
IDS_TREE_SPACING "Tree item spacing"
IDS_TREE_SPACING_TIP "This is a number for controlling the spacing between the items in the folder tree. Use positive numbers to increase the spacing, and negative numbers to reduce the spacing"
IDS_NO_FADE "Don't fade buttons"
IDS_NO_FADE_TIP "When this is checked, the small triangle buttons for expanding the folder will not fade out when the mouse moves away"
IDS_FULL_INDENT "Full-size offset for sub-folders"
IDS_FULL_INDENT_TIP "When this is checked, the sub-folders will be offset by the full size of the icon, instead of the half of the size"
IDS_NAVIGATE "Auto-navigate to the selected folder"
IDS_NAVIGATE_TIP "Select if the files on the right should update to show the current folder on the left"
IDS_NAV_DELAY "Auto-navigation delay"
IDS_NAV_DELAY_TIP "Enter the delay (in ms) for updating the files after selecting a new folder"
IDS_ALT_ENTER "Enable Alt+Enter in the navigation pane"
IDS_ALT_ENTER_TIP "When this is checked, pressing Alt+Enter will show the properties of the selected folder"
END
STRINGTABLE
BEGIN
IDS_VIEWCONTENT_TIP "Shows the Content view"
IDS_VIEWICONS1_TIP "Shows the Small Icons view"
IDS_VIEWICONS2_TIP "Shows the Medium Icons view"
IDS_VIEWICONS3_TIP "Shows the Large Icons view"
IDS_VIEWICONS4_TIP "Shows the Extra Large Icons view"
IDS_OPEN_TIP "Opens a given folder in the current window"
IDS_CUSTOM_TIP "This is a custom button. Use the command property to launch a program, or the link property to show a folder as a drop-down menu"
IDS_NEWFOLDER_TIP "Creates a new folder"
IDS_SCROLLTIP "Hide scroll tooltips"
IDS_SCROLLTIP_TIP "When this is checked, there won't be a tooltip when you are dragging the vertical scrollbar"
IDS_NAV_DEFAULT "Default behavior"
IDS_NAV_DEFAULT_TIP "Don't change the default behavior of Explorer"
IDS_NAV_KBD "When using the keyboard"
IDS_NAV_KBD_TIP "The files will update only if you select a new folder with the keyboard"
IDS_NAV_ALWAYS "Always"
IDS_NAV_ALWAYS_TIP "The files will update every time the selected folder changes for any reason"
END
STRINGTABLE
BEGIN
IDS_FIX_SCROLL "Fix folder scrolling"
IDS_FIX_SCROLL_TIP "This option fixes a bug in Windows 7 that moves a folder to the bottom of the screen after it is expanded"
IDS_TITLE_SETTINGS "Title Bar"
IDS_SHOW_CAPTION "Show caption in the title bar"
IDS_SHOW_CAPTION_TIP "Show the caption (the current path) in the title bar"
IDS_SHOW_ICON "Show icon in the title bar"
IDS_SHOW_ICON_TIP "Show the icon of the current folder in the title bar"
IDS_NO_BREADCRUMBS "Disable breadcrumbs"
IDS_NO_BREADCRUMBS_TIP "Disable breadcrumbs and show the full path in the address bar"
IDS_ADDRESS_HISTORY "Address bar history"
IDS_ADDRESS_HISTORY_TIP "Control the contents of the history dropdown"
IDS_NORMAL_HISTORY "Normal history"
IDS_NORMAL_HISTORY_TIP "Show the default contents as provided by Explorer (recently visited folders and websites)"
IDS_SIMPLE_PATH "Simple path"
IDS_SIMPLE_PATH_TIP "Show the parents of the current folder all the way to the Desktop"
IDS_EXTENDED_PATH "Extended path"
END
STRINGTABLE
BEGIN
IDS_EXTENDED_PATH_TIP "Besides the parents, shows all immediate folders of the Desktop and Computer. This is how it works in Windows XP"
IDS_HIDE_SEARCH "Hide Search box"
IDS_HIDE_SEARCH_TIP "Hide the search box from the address bar"
IDS_UP_SETTINGS "Up Button"
IDS_SHOW_UP "Show Up button"
IDS_SHOW_UP_TIP "Controls how the Up button is displayed"
IDS_DONT_SHOW "Don't show"
IDS_DONT_SHOW_TIP "The Up button is not shown"
IDS_BEFORE_BACK "Before Back/Forward"
IDS_BEFORE_BACK_TIP "The Up button appears before the Back/Forward buttons"
IDS_AFTER_BACK "After Back/Forward"
IDS_AFTER_BACK_TIP "The Up button appears after the Back/Forward buttons"
IDS_UP_NORMAL "Normal Up button icon"
IDS_UP_NORMAL_TIP "Pick the icon to use for the normal Up button"
IDS_UP_HOT "Hot Up button icon"
IDS_UP_HOT_TIP "Pick the icon to use for the hot Up button (when the mouse is over the button)"
END
STRINGTABLE
BEGIN
IDS_UP_PRESSED "Pressed Up button icon"
IDS_UP_PRESSED_TIP "Pick the icon to use for the pressed Up button"
IDS_UP_DISABLED "Disabled Up button icon"
IDS_UP_DISABLED_TIP "Pick the icon to use for the disabled Up button"
IDS_UP_SIZE "Up button size"
IDS_UP_SIZE_TIP "Set the size for the Up button. By default it is 30 for DPI<120 and 36 for DPI>=120"
IDS_STATUS_SETTINGS "Status Bar"
IDS_FREE_SPACE "Show free space and file size"
IDS_FREE_SPACE_TIP "The status bar will show the free space on the current drive and the total size of all selected files. If no files are selected, the total size of all files will be shown"
IDS_INFO_TIP "Show detailed info for single selection"
IDS_INFO_TIP_TIP "When a single file is selected, the status bar will show the detailed information for that file"
IDS_FORCE_REFRESH "Force status refresh"
IDS_FORCE_REFRESH_TIP "This is a workaround for a bug in Explorer for Windows 7. Sometimes when a new Explorer window is opened the status bar is blank. Check this option to enable the workaround"
IDS_FILE_SETTINGS "File Operation"
IDS_FILE_UI "Replace file conflict dialog"
IDS_FILE_UI_TIP "When this is checked, the dialog showing file conflicts during a copy or move operation will be replaced with the old-style dialog from Windows XP"
END
STRINGTABLE
BEGIN
IDS_FOLDER_UI "Replace folder conflict dialog"
IDS_FOLDER_UI_TIP "When this is checked, the dialog showing folder conflicts during a copy or move operation will be replaced with the old-style dialog from Windows XP"
IDS_ALERT_LEVEL "Sound alert for file conflicts"
IDS_ALERT_LEVEL_TIP "This setting adds a sound alert to the copy confirmation dialog when a system or read-only file is about to be overwritten"
IDS_NO_ALERT "No alert"
IDS_NO_ALERT_TIP "No sound is played"
IDS_SYS_FILES "For system files"
IDS_SYS_FILES_TIP "A sound is played when a system file is about to be overwritten"
IDS_RO_FILES "For system and read-only files"
IDS_RO_FILES_TIP "A sound is played when a system or a read-only file is about to be overwritten"
IDS_MORE "Always show more details"
IDS_MORE_TIP "When this is checked, Explorer dialogs like Copy, Move or Delete will expand to show all details by default"
IDS_MORE_DELAY "Delay for more details"
IDS_MORE_DELAY_TIP "Delay (in ms) for showing more details in the progress dialog. On Windows 7 with Aero if the details are shown too soon the progress dialog flickers badly. Use a delay of at least 250 ms to avoid the flicker. The delay is also useful if you want to see the details only for longer operations"
IDS_FILE_EXPLORER "Enable only in Explorer (improves performance)"
IDS_FILE_EXPLORER_TIP "When this is checked, the file and folder conflict dialogs will be replaced only in Explorer. Otherwise they will be replaced for all processes"
END
STRINGTABLE
BEGIN
IDS_FILEPANE_SETTINGS "File Pane"
IDS_SHARE "Add icon overlay for shared folders"
IDS_SHARE_TIP "When this is checked, the shared folders will get a small overlay icon"
IDS_SHARE_ICON "Share overlay icon"
IDS_SHARE_ICON_TIP "Set the icon to be used for the overlay"
IDS_SHARE_EXPLORER "Show overlay only in Explorer (improves performance)"
IDS_SHARE_EXPLORER_TIP "When this is checked, the overlay icon will be shown only in Explorer. Otherwise they will be shown in all processes"
IDS_HEADERS "Show sort headers in all views"
IDS_HEADERS_TIP "When this is checked, the sort headers will show in all views, not just Details"
IDS_SCROLLBAR "Show horizontal scrollbar"
IDS_SCROLLBAR_TIP "Select if the horizontal scrollbar will be enabled"
IDS_SCROLLBAR_DEFAULT "Default"
IDS_SCROLLBAR_DEFAULT_TIP
"The scrollbar will be disabled for the 'Windows Vista' navigation pane style, and enabled for the others"
IDS_SCROLLBAR_ON "Enabled"
IDS_SCROLLBAR_ON_TIP "The scrollbar will show up when it is needed"
IDS_SCROLLBAR_OFF "Disabled"
END
STRINGTABLE
BEGIN
IDS_SCROLLBAR_OFF_TIP "The scrollbar will be hidden at all times"
IDS_COMMAND_TIP "Pick a command for the button. The command determines what the button does when clicked"
IDS_LINK_TIP "Type a full path of a file or a folder. The folder will open like a dropdown menu. The file will be executed when the button is clicked"
IDS_TEXT_TIP "Enter the text for the button. If the text starts with $ (like $Toolbar.Settings) it will be looked up in the file ExplorerL10N.ini"
IDS_TIP_TIP "Enter the tooltip for the button. If the text starts with $ (like $Toolbar.Settings) it will be looked up in the file ExplorerL10N.ini"
IDS_ICON_TIP "Enter the icon for the button. If the icon is blank, the default icon of the link will be used instead. Use either a path to a .ico file, or a combination of a .dll file and a icon ID. Use 'none' to get no icon at all"
IDS_ICOND_TIP "Enter the disabled icon for the button. If the setting is blank, the disabled icon will be generated from the normal icon"
IDS_RESTORE_TIP "Restores all properties (text, icon and more) to the defaults for the selected command"
IDS_SEPARATOR_TIP "This item separates buttons in the toolbar"
IDS_UP_TIP "Goes up to the parent folder"
IDS_CUT_TIP "Cuts the selected files"
IDS_COPY_TIP "Copies the selected files"
IDS_PASTE_TIP "Pastes files from the clipboard"
IDS_DELETE_TIP "Deletes the selected files"
IDS_PROPERTIES_TIP "Shows properties for the selection"
IDS_EMAIL_TIP "Emails the selected files"
END
STRINGTABLE
BEGIN
IDS_SETTINGS_TIP "Shows the Classic Explorer settings"
IDS_REFRESH_TIP "Refreshes the Explorer view"
IDS_STOP_TIP "Stops the current operation"
IDS_RENAME_TIP "Renames the selected file"
IDS_MOVETO_TIP "Moves the selection to a new place"
IDS_COPYTO_TIP "Copies the selection to a new place"
IDS_UNDO_TIP "Undoes the last operation"
IDS_REDO_TIP "Redoes the last undo"
IDS_SELECTALL_TIP "Selects all files in the folder"
IDS_DESELECT_TIP "Deselects all"
IDS_INVERT_TIP "Inverts the selection"
IDS_BACK_TIP "Goes back to the previous location"
IDS_FORWARD_TIP "Goes to the next location"
IDS_VIEWTILES_TIP "Shows the Tiles view"
IDS_VIEWDEATAILS_TIP "Shows the Details view"
IDS_VIEWLIST_TIP "Shows the List view"
END
STRINGTABLE
BEGIN
IDS_ALT_D "Additional shortcut for the address bar: Alt +"
IDS_ALT_D_TIP "Enter a letter 'A' to 'Z' to be a shortcut for the address bar. In some languages the default shortcut conflicts with a menu item"
IDS_SORT_TIP "Sorts the folder by the given property (name, type, size or date). Use '-' before the property to sort in descending order. Read the help for more options."
IDS_GROUP_TIP "Groups the folder by the given property (name, type, size or date). Use '-' before the property to group in descending order. Read the help for more options."
IDS_PASTE_SHORTCUT_TIP "Creates shortcuts for the files in the clipboard"
IDS_UP_HOTKEY "Additional shortcut for the Up button"
IDS_UP_HOTKEY_TIP "Select a shortcut for navigating to the parent folder"
IDS_MAP_DRIVE_TIP "Connects to a network drive"
IDS_DISCONNECT_DRIVE_TIP "Disconnects from a network drive"
IDS_CUSTOMIZEFOLDER_TIP "Customize this folder"
IDS_SEPARATOR_ITEM "SEPARATOR"
IDS_UP_ITEM "Up"
IDS_CUT_ITEM "Cut"
IDS_COPY_ITEM "Copy"
IDS_PASTE_ITEM "Paste"
IDS_PASTE_LNK_ITEM "Paste shortcut"
END
STRINGTABLE
BEGIN
IDS_DELETE_ITEM "Delete"
IDS_PROPERTIES_ITEM "Properties"
IDS_EMAIL_ITEM "Email"
IDS_SETTINGS_ITEM "Settings"
IDS_REFRESH_ITEM "Refresh"
IDS_STOP_ITEM "Stop"
IDS_RENAME_ITEM "Rename"
IDS_NEWFOLDER_ITEM "New folder"
IDS_MOVETO_ITEM "Move to"
IDS_COPYTO_ITEM "Copy to"
IDS_UNDO_ITEM "Undo"
IDS_REDO_ITEM "Redo"
IDS_SELECTALL_ITEM "Select all"
IDS_DESELECT_ITEM "Deselect"
IDS_INVERT_ITEM "Invert selection"
IDS_BACK_ITEM "Back"
END
STRINGTABLE
BEGIN
IDS_FORWARD_ITEM "Forward"
IDS_MAP_DRIVE_ITEM "Map network drive"
IDS_DISCONNECT_ITEM "Disconnect network drive"
IDS_CUSTOMIZE_ITEM "Customize folder"
IDS_VIEWTILES_ITEM "View Tiles"
IDS_VIEWDETAILS_ITEM "View Details"
IDS_VIEWLIST_ITEM "View List"
IDS_VIEWCONTENT_ITEM "View Content"
IDS_VIEWICONS1_ITEM "View Small icons"
IDS_VIEWICONS2_ITEM "View Medium icons"
IDS_VIEWICONS3_ITEM "View Large icons"
IDS_VIEWICONS4_ITEM "View Extra large icons"
IDS_OPEN_ITEM "Open"
IDS_SORYBY_ITEM "Sort by"
IDS_GROUPBY_ITEM "Group by"
IDS_CUSTOM_ITEM "Custom"
END
STRINGTABLE
BEGIN
IDS_SHOWSTATUSBAR "Show status bar"
IDS_SHOWSTATUSBAR_TIP "When this is checked, Explorer will have a status bar that shows information about the total selection size, free disk space, and more"
IDS_SHOW_ZONE "Show zone"
IDS_SHOW_ZONE_TIP "When this is checked, the status bar will display the current security zone"
IDS_SHARE_HIDDEN "Show hidden shares"
IDS_SHARE_HIDDEN_TIP "When this is checked, the overlay will appear also for hidden shares ending with $"
IDS_NAVPANE_ITEM "Navigation pane"
IDS_NAVPANE_TIP "Toggles the navigation pane"
IDS_DETAILSPANE_ITEM "Details pane"
IDS_DETAILSPANE_TIP "Toggles the details pane"
IDS_PREVIEWPANE_ITEM "Preview pane"
IDS_PREVIEWPANE_TIP "Toggles the preview pane"
IDS_SHOW_EXTENSIONS "Show extensions"
IDS_SHOW_EXTENSIONS_TIP "Toggles the visibility of the file extensions"
IDS_HIDDEN_FILES "Hidden files"
IDS_HIDDEN_FILES_TIP "Toggles the visibility of the hidden files"
END
STRINGTABLE
BEGIN
IDS_SYSTEM_FILES "System files"
IDS_SYSTEM_FILES_TIP "Toggles the visibility of the system files"
IDS_ZIP_ITEM "Create zip file"
IDS_ZIP_TIP "Creates a zip file from the selected items"
IDS_STATUS_FONT "Status bar font"
IDS_STATUS_FONT_TIP "Select the font to use for the status bar"
IDS_FOLDEROPTIONS "Folder options"
IDS_FOLDEROPTIONS_TIP "Opens the folder options dialog"
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "..\Lib\resource.h"
#include "..\Lib\Lib.rc"
1 TYPELIB "ClassicExplorer.tlb"
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -1,11 +0,0 @@
HKCR
{
NoRemove AppID
{
'%APPID%' = s 'ClassicExplorer'
'ClassicExplorer.DLL'
{
val AppID = s '%APPID%'
}
}
}

View File

@@ -1,430 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Setup|Win32">
<Configuration>Setup</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Setup|x64">
<Configuration>Setup</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{9AF324B7-F786-4D85-B2E1-6E51720F874E}</ProjectGuid>
<RootNamespace>ClassicExplorer</RootNamespace>
<Keyword>AtlProj</Keyword>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\Version.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>true</LinkIncremental>
<TargetName>$(ProjectName)32</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(Configuration)64\</OutDir>
<IntDir>$(Configuration)64\</IntDir>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>true</LinkIncremental>
<TargetName>$(ProjectName)64</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)32</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(Configuration)64\</OutDir>
<IntDir>$(Configuration)64\</IntDir>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)64</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
<OutDir>$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)32</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'">
<OutDir>$(Configuration)64\</OutDir>
<IntDir>$(Configuration)64\</IntDir>
<IgnoreImportLibrary>true</IgnoreImportLibrary>
<LinkIncremental>false</LinkIncremental>
<TargetName>$(ProjectName)64</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>false</MkTypLibCompatible>
<GenerateStublessProxies>true</GenerateStublessProxies>
<HeaderFileName>ClassicExplorer_i.h</HeaderFileName>
<DllDataFileName />
<InterfaceIdentifierFileName>ClassicExplorer_i.c</InterfaceIdentifierFileName>
<ProxyFileName>ClassicExplorer_p.c</ProxyFileName>
<ValidateAllParameters>true</ValidateAllParameters>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<RegisterOutput>true</RegisterOutput>
<AdditionalDependencies>oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>false</MkTypLibCompatible>
<GenerateStublessProxies>true</GenerateStublessProxies>
<HeaderFileName>ClassicExplorer_i.h</HeaderFileName>
<DllDataFileName />
<InterfaceIdentifierFileName>ClassicExplorer_i.c</InterfaceIdentifierFileName>
<ProxyFileName>ClassicExplorer_p.c</ProxyFileName>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<RegisterOutput>true</RegisterOutput>
<AdditionalDependencies>oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>false</MkTypLibCompatible>
<GenerateStublessProxies>true</GenerateStublessProxies>
<HeaderFileName>ClassicExplorer_i.h</HeaderFileName>
<DllDataFileName />
<InterfaceIdentifierFileName>ClassicExplorer_i.c</InterfaceIdentifierFileName>
<ProxyFileName>ClassicExplorer_p.c</ProxyFileName>
<ValidateAllParameters>true</ValidateAllParameters>
</Midl>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<RegisterOutput>true</RegisterOutput>
<AdditionalDependencies>oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>false</MkTypLibCompatible>
<GenerateStublessProxies>true</GenerateStublessProxies>
<HeaderFileName>ClassicExplorer_i.h</HeaderFileName>
<DllDataFileName />
<InterfaceIdentifierFileName>ClassicExplorer_i.c</InterfaceIdentifierFileName>
<ProxyFileName>ClassicExplorer_p.c</ProxyFileName>
</Midl>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<RegisterOutput>true</RegisterOutput>
<AdditionalDependencies>oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>false</MkTypLibCompatible>
<GenerateStublessProxies>true</GenerateStublessProxies>
<HeaderFileName>ClassicExplorer_i.h</HeaderFileName>
<DllDataFileName />
<InterfaceIdentifierFileName>ClassicExplorer_i.c</InterfaceIdentifierFileName>
<ProxyFileName>ClassicExplorer_p.c</ProxyFileName>
<ValidateAllParameters>true</ValidateAllParameters>
</Midl>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_USRDLL;BUILD_SETUP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Setup|x64'">
<Midl>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MkTypLibCompatible>false</MkTypLibCompatible>
<GenerateStublessProxies>true</GenerateStublessProxies>
<HeaderFileName>ClassicExplorer_i.h</HeaderFileName>
<DllDataFileName />
<InterfaceIdentifierFileName>ClassicExplorer_i.c</InterfaceIdentifierFileName>
<ProxyFileName>ClassicExplorer_p.c</ProxyFileName>
</Midl>
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_USRDLL;BUILD_SETUP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(IntDir);..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>oleacc.lib;comctl32.lib;uxtheme.lib;dwmapi.lib;winmm.lib;htmlhelp.lib;wininet.lib;wintrust.lib;crypt32.lib;Netapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="ClassicCopy.cpp" />
<ClCompile Include="ClassicCopyExt.cpp" />
<ClCompile Include="ClassicExplorer.cpp" />
<ClCompile Include="ClassicExplorer_i.c">
<PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile>
<ClCompile Include="dllmain.cpp" />
<ClCompile Include="ExplorerBand.cpp" />
<ClCompile Include="ExplorerBHO.cpp" />
<ClCompile Include="SettingsUI.cpp" />
<ClCompile Include="ShareOverlay.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Midl Include="ClassicExplorer.idl" />
</ItemGroup>
<ItemGroup>
<None Include="ClassicCopyExt.rgs" />
<None Include="ClassicExplorer.rgs" />
<None Include="ClassicExplorer32.def" />
<None Include="ClassicExplorer64.def" />
<None Include="ExplorerBand.rgs" />
<None Include="ExplorerBHO.rgs" />
<None Include="ExplorerL10N.ini" />
<None Include="ShareOverlay.rgs" />
</ItemGroup>
<ItemGroup>
<Text Include="..\Localization\English\ClassicExplorerADMX.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="ClassicCopyExt.h" />
<ClInclude Include="ClassicExplorer_i.h" />
<ClInclude Include="dllmain.h" />
<ClInclude Include="ExplorerBand.h" />
<ClInclude Include="ExplorerBHO.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="SettingsUI.h" />
<ClInclude Include="ShareOverlay.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="ClassicExplorer.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="..\Setup\OpenShell.ico" />
<Image Include="up.ico" />
<Image Include="up2Disabled.ico" />
<Image Include="up2Hot.ico" />
<Image Include="up2Normal.ico" />
<Image Include="up2Pressed.ico" />
<Image Include="upDisabled.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Lib\Lib.vcxproj">
<Project>{d42fe717-485b-492d-884a-1999f6d51154}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -1,149 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
<Filter Include="Generated Files">
<UniqueIdentifier>{5fffcfa3-305b-4c53-b51b-b387b5702497}</UniqueIdentifier>
<SourceControlFiles>False</SourceControlFiles>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="ClassicCopy.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ClassicCopyExt.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ClassicExplorer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="dllmain.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ExplorerBand.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ExplorerBHO.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SettingsUI.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ShareOverlay.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ClassicExplorer_i.c">
<Filter>Generated Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Midl Include="ClassicExplorer.idl">
<Filter>Source Files</Filter>
</Midl>
</ItemGroup>
<ItemGroup>
<None Include="ClassicExplorer32.def">
<Filter>Source Files</Filter>
</None>
<None Include="ClassicExplorer64.def">
<Filter>Source Files</Filter>
</None>
<None Include="ClassicCopyExt.rgs">
<Filter>Resource Files</Filter>
</None>
<None Include="ClassicExplorer.rgs">
<Filter>Resource Files</Filter>
</None>
<None Include="ExplorerBand.rgs">
<Filter>Resource Files</Filter>
</None>
<None Include="ExplorerBHO.rgs">
<Filter>Resource Files</Filter>
</None>
<None Include="ExplorerL10N.ini">
<Filter>Resource Files</Filter>
</None>
<None Include="ShareOverlay.rgs">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<Text Include="..\Localization\English\ClassicExplorerADMX.txt">
<Filter>Source Files</Filter>
</Text>
</ItemGroup>
<ItemGroup>
<ClInclude Include="ClassicCopyExt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="dllmain.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ExplorerBand.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ExplorerBHO.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="SettingsUI.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ShareOverlay.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Resource.h">
<Filter>Resource Files</Filter>
</ClInclude>
<ClInclude Include="ClassicExplorer_i.h">
<Filter>Generated Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="ClassicExplorer.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Image Include="..\Setup\OpenShell.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="up.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="up2Disabled.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="up2Hot.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="up2Normal.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="up2Pressed.ico">
<Filter>Resource Files</Filter>
</Image>
<Image Include="upDisabled.ico">
<Filter>Resource Files</Filter>
</Image>
</ItemGroup>
</Project>

View File

@@ -1,14 +0,0 @@
; ClassicExplorer.def : Declares the module parameters.
LIBRARY "ClassicExplorer32.DLL"
EXPORTS
DllCanUnloadNow PRIVATE
DllGetClassObject PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
DllInstall PRIVATE
ShowExplorerSettings
DllImportSettingsXml
DllExportSettingsXml
DllSaveAdmx

View File

@@ -1,13 +0,0 @@
; ClassicExplorer.def : Declares the module parameters.
LIBRARY "ClassicExplorer64.DLL"
EXPORTS
DllCanUnloadNow PRIVATE
DllGetClassObject PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
DllInstall PRIVATE
ShowExplorerSettings
DllImportSettingsXml
DllExportSettingsXml

View File

@@ -1,140 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
#include <windows.h>
#include <commctrl.h>
#include <shlwapi.h>
#include <Psapi.h>
#include "StringUtils.h"
// Find and activate the Settings window
static BOOL CALLBACK FindSettingsEnum( HWND hwnd, LPARAM lParam )
{
wchar_t className[256];
if (!GetClassName(hwnd,className,_countof(className)) || _wcsicmp(className,L"#32770")!=0)
return TRUE;
DWORD process=0;
GetWindowThreadProcessId(hwnd,&process);
HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,process);
bool bFound=false;
if (hProcess!=INVALID_HANDLE_VALUE)
{
wchar_t path[_MAX_PATH];
if (GetModuleFileNameEx(hProcess,NULL,path,_countof(path)))
{
if (_wcsicmp(PathFindFileName(path),L"ClassicExplorerSettings.exe")==0)
{
SetForegroundWindow(hwnd);
bFound=true;
}
}
CloseHandle(hProcess);
}
return !bFound;
}
HMODULE LoadClassicExplorerDll( void )
{
wchar_t path[_MAX_PATH];
GetModuleFileName(NULL,path,_countof(path));
*PathFindFileName(path)=0;
PathAppend(path,L"ClassicExplorer32.dll");
return LoadLibrary(path);
}
// A simple program that loads ClassicExplorer32.dll and calls the ShowExplorerSettings function
// Why not use rundll32 instead? Because it doesn't include the correct manifest for comctl32.dll
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrCmdLine, int nCmdShow )
{
INITCOMMONCONTROLSEX init={sizeof(init),ICC_STANDARD_CLASSES};
InitCommonControlsEx(&init);
{
const wchar_t *pXml=wcsstr(lpstrCmdLine,L"-xml ");
if (pXml)
{
wchar_t xml[_MAX_PATH];
GetToken(pXml+5,xml,_countof(xml),L" ");
HMODULE dll=LoadClassicExplorerDll();
if (!dll) return 1;
typedef bool (*tImportSettingsXml)( const wchar_t *fname );
tImportSettingsXml DllImportSettingsXml=(tImportSettingsXml)GetProcAddress(dll,"DllImportSettingsXml");
if (!DllImportSettingsXml)
return 1;
CoInitialize(NULL);
bool res=DllImportSettingsXml(xml);
CoUninitialize();
return res?0:1;
}
}
{
const wchar_t *pBackup=wcsstr(lpstrCmdLine,L"-backup ");
if (pBackup)
{
wchar_t xml[_MAX_PATH];
GetToken(pBackup+8,xml,_countof(xml),L" ");
HMODULE dll=LoadClassicExplorerDll();
if (!dll) return 1;
typedef bool (*tExportSettingsXml)( const wchar_t *fname );
tExportSettingsXml DllExportSettingsXml=(tExportSettingsXml)GetProcAddress(dll,"DllExportSettingsXml");
if (!DllExportSettingsXml)
return 1;
CoInitialize(NULL);
bool res=DllExportSettingsXml(xml);
CoUninitialize();
return res?0:1;
}
}
#ifndef _WIN64
const wchar_t *pSaveAdmx=wcsstr(lpstrCmdLine,L"-saveadmx ");
if (pSaveAdmx)
{
wchar_t language[100];
GetToken(pSaveAdmx+10,language,_countof(language),L" ");
HMODULE dll=LoadClassicExplorerDll();
if (!dll) return 1;
typedef bool (*tSaveAdmx)( const char *admxFile, const char *admlFile, const char *docFile, const wchar_t *language );
tSaveAdmx SaveAdmx=(tSaveAdmx)GetProcAddress(dll,"DllSaveAdmx");
if (!SaveAdmx || !SaveAdmx("ClassicExplorer.admx","ClassicExplorer.adml","ClassicExplorerADMX.txt",language))
return 1;
return 0;
}
#endif
// prevent multiple instances from running on the same desktop
// the assumption is that multiple desktops for the same user will have different name (but may repeat across users)
wchar_t userName[256];
DWORD len=_countof(userName);
GetUserName(userName,&len);
len=0;
HANDLE desktop=GetThreadDesktop(GetCurrentThreadId());
GetUserObjectInformation(desktop,UOI_NAME,NULL,0,&len);
wchar_t *deskName=(wchar_t*)malloc(len);
GetUserObjectInformation(desktop,UOI_NAME,deskName,len,&len);
wchar_t mutexName[1024];
Sprintf(mutexName,_countof(mutexName),L"ClassicExplorerSettings.Mutex.%s.%s",userName,deskName);
free(deskName);
HANDLE hMutex=CreateMutex(NULL,TRUE,mutexName);
if (GetLastError()==ERROR_ALREADY_EXISTS || GetLastError()==ERROR_ACCESS_DENIED)
{
EnumWindows(FindSettingsEnum,0);
return 0;
}
HMODULE dll=LoadClassicExplorerDll();
if (!dll) return 1;
FARPROC proc=GetProcAddress(dll,"ShowExplorerSettings");
if (!proc) return 2;
proc();
return 0;
}

View File

@@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Open-Shell.Menu"
type="win32"
/>
<description>Classic Explorer Settings</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
</application>
</compatibility>
</assembly>

View File

@@ -1,111 +0,0 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "winres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_APPICON ICON "..\\..\\Setup\\OpenShell.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION _PRODUCT_VERSION
PRODUCTVERSION _PRODUCT_VERSION
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Open-Shell"
VALUE "FileDescription", "Classic Explorer Settings"
VALUE "FileVersion", _PRODUCT_VERSION_STR
VALUE "InternalName", "ClassicExplorerSettings"
VALUE "LegalCopyright", "Copyright (C) 2017-2018, The Open-Shell Team"
VALUE "OriginalFilename", "ClassicExplorerSettings.exe"
VALUE "ProductName", "Open-Shell"
VALUE "ProductVersion", _PRODUCT_VERSION_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -1,177 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Setup|Win32">
<Configuration>Setup</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E93271C8-0252-4A08-8227-1978C64C2D34}</ProjectGuid>
<RootNamespace>ClassicExplorerSettings</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<UseOfAtl>Static</UseOfAtl>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\Version.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>..\$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>..\$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
<OutDir>..\$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<AdditionalDependencies>shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<AdditionalDependencies>shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<AdditionalIncludeDirectories>..\..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;BUILD_SETUP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<ConformanceMode>true</ConformanceMode>
<LanguageStandard>stdcpp17</LanguageStandard>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<AdditionalDependencies>shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="ClassicExplorerSettings.cpp" />
</ItemGroup>
<ItemGroup>
<Manifest Include="ClassicExplorerSettings.manifest" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="ClassicExplorerSettings.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="..\..\Setup\OpenShell.ico" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Lib\Lib.vcxproj">
<Project>{d42fe717-485b-492d-884a-1999f6d51154}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
<ProjectReference Include="..\ClassicExplorer.vcxproj">
<Project>{9af324b7-f786-4d85-b2e1-6e51720f874e}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@@ -1,16 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by ClassicExplorerSettings.rc
//
#define IDI_APPICON 101
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,191 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
// ExplorerBHO.h : Declaration of the CExplorerBHO
#pragma once
#include "resource.h" // main symbols
#include <vector>
#include <map>
#include "ClassicExplorer_i.h"
#include "ComHelper.h"
#include <shdispid.h>
// CExplorerBHO
class ATL_NO_VTABLE CExplorerBHO :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CExplorerBHO, &CLSID_ExplorerBHO>,
public IObjectWithSiteImpl<CExplorerBHO>,
public IDispatchImpl<IExplorerBHO, &IID_IExplorerBHO, &LIBID_ClassicExplorerLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IDispEventImpl<1,CExplorerBHO,&DIID_DWebBrowserEvents2,&LIBID_SHDocVw,1,1>,
public IDispEventImpl<2,CExplorerBHO,&DIID_DShellFolderViewEvents,&LIBID_Shell32,1,0>
{
public:
typedef IDispEventImpl<1,CExplorerBHO,&DIID_DWebBrowserEvents2,&LIBID_SHDocVw,1,1> DispEvent1;
typedef IDispEventImpl<2,CExplorerBHO,&DIID_DShellFolderViewEvents,&LIBID_Shell32,1,0> DispEvent2;
CExplorerBHO()
{
m_bResetStatus=true;
m_bForceRefresh=false;
m_bRemapBands=false;
m_bNoBreadcrumbs=false;
m_TreeItemHeight=0;
m_CurIcon=NULL;
m_CurPath[0]=0;
m_Rebar=NULL;
m_TopWindow=NULL;
m_Breadcrumbs=NULL;
m_Progress=NULL;
m_Status=m_Status8=NULL;
m_DUIView=NULL;
m_Hook=m_HookKbd=NULL;
m_Balloon=NULL;
m_UpButtonIndex=0;
m_UpHotkey=0;
m_IconNormal=m_IconHot=m_IconPressed=m_IconDisabled=NULL;
m_NavigateMsg=0;
m_AltD=0;
m_FileSizeWidth=0;
m_ZoneWidth=0;
}
DECLARE_REGISTRY_RESOURCEID(IDR_EXPLORERBHO)
BEGIN_SINK_MAP( CExplorerBHO )
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete)
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_ONQUIT, OnQuit)
SINK_ENTRY_EX(2, DIID_DShellFolderViewEvents, DISPID_SELECTIONCHANGED, OnSelChanged)
END_SINK_MAP()
BEGIN_COM_MAP(CExplorerBHO)
COM_INTERFACE_ENTRY(IExplorerBHO)
COM_INTERFACE_ENTRY(IObjectWithSite)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
// Navigation pane styles
enum
{
STYLE_CLASSIC=0, // use classic XP style
STYLE_SIMPLE=1, // use simple XP style
STYLE_VISTA=2, // no change
};
enum
{
SHOW_INFOTIP=1,
SHOW_FREE_SPACE=2,
SHOW_ZONE=4,
};
enum
{
PART_TEXT,
PART_SIZE,
PART_ZONE,
};
public:
// IObjectWithSite
STDMETHOD(SetSite)(IUnknown *pUnkSite);
// DWebBrowserEvents2
STDMETHOD(OnDocumentComplete)( IDispatch *pDisp, VARIANT *URL );
STDMETHOD(OnQuit)( void );
// DShellFolderViewEvents
STDMETHOD(OnSelChanged)( void );
private:
// Super-class the toolbar, so it has a different class name. A program called Folder Menu 3 looks for specific controls in Explorer,
// and our extra toolbar throws it off
class CToolbar: public CWindowImpl<CToolbar>
{
public:
DECLARE_WND_SUPERCLASS(L"OpenShell.UpButton",TOOLBARCLASSNAME);
BEGIN_MSG_MAP( CToolbar )
END_MSG_MAP()
};
CComPtr<IShellBrowser> m_pBrowser;
CComPtr<IWebBrowser2> m_pWebBrowser;
CComPtr<IDispatch> m_pWebDoc;
CComPtr<IInternetZoneManager> m_pZoneManager;
CComPtr<IInternetSecurityManager> m_pSecurityManager;
std::map<unsigned int,HICON> m_ZoneIconCache;
bool m_bResetStatus;
bool m_bForceRefresh;
bool m_bNoBreadcrumbs;
bool m_bRemapBands;
int m_TreeItemHeight;
int m_UpButtonIndex;
int m_UpHotkey;
CToolbar m_Toolbar;
HWND m_TopWindow;
HWND m_Rebar;
HWND m_Balloon;
HICON m_IconNormal, m_IconHot, m_IconPressed, m_IconDisabled;
HICON m_CurIcon;
CAbsolutePidl m_CurPidl;
wchar_t m_CurPath[1024]; // the current path
CWindow m_ComboBox;
CAbsolutePidl m_NavigatePidl;
UINT m_NavigateMsg; // private message that is posted to the progress bar to navigate to m_NavigatePidl
HHOOK m_Hook;
HHOOK m_HookKbd;
HWND m_Breadcrumbs;
HWND m_Progress;
HWND m_Status, m_Status8;
HWND m_DUIView;
int m_FileSizeWidth;
int m_ZoneWidth;
char m_AltD;
struct ComboItem
{
PIDLIST_ABSOLUTE pidl;
int indent;
CString name;
CString sortName;
bool operator<( const ComboItem &item ) { return _wcsicmp(sortName,item.sortName)<0; }
};
std::vector<ComboItem> m_ComboItems;
void ClearComboItems( void );
bool GetStatusText( wchar_t *buf, int size, const wchar_t *oldText, bool bShowTip, bool bShowSpace );
void GetFileSize( wchar_t *buf, int size );
static int s_AutoNavDelay;
static LRESULT CALLBACK HookExplorer( int code, WPARAM wParam, LPARAM lParam );
static LRESULT CALLBACK HookKeyboard( int code, WPARAM wParam, LPARAM lParam );
static LRESULT CALLBACK SubclassTreeParentProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
static LRESULT CALLBACK SubclassTreeProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
static LRESULT CALLBACK SubclassStatusProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
static LRESULT CALLBACK SubclassStatusProc8( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
static LRESULT CALLBACK SubclassDUIViewProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
static LRESULT CALLBACK SubclassRebarProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
static LRESULT CALLBACK SubclassBreadcrumbProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
static LRESULT CALLBACK SubclassProgressProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
};
OBJECT_ENTRY_AUTO(__uuidof(ExplorerBHO), CExplorerBHO)
bool ShowTreeProperties( HWND hwndTree );

View File

@@ -1,59 +0,0 @@
HKCR
{
ClassicExplorer.ExplorerBHO.1 = s 'ExplorerBHO Class'
{
CLSID = s '{449D0D6E-2412-4E61-B68F-1CB625CD9E52}'
}
ClassicExplorer.ExplorerBHO = s 'ExplorerBHO Class'
{
CLSID = s '{449D0D6E-2412-4E61-B68F-1CB625CD9E52}'
CurVer = s 'ClassicExplorer.ExplorerBHO.1'
}
NoRemove CLSID
{
ForceRemove {449D0D6E-2412-4E61-B68F-1CB625CD9E52} = s 'ExplorerBHO Class'
{
ProgID = s 'ClassicExplorer.ExplorerBHO.1'
VersionIndependentProgID = s 'ClassicExplorer.ExplorerBHO'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{BF8D124A-A4E0-402F-8152-4EF377E62586}'
}
}
}
HKLM
{
NoRemove SOFTWARE
{
NoRemove Microsoft
{
NoRemove Windows
{
NoRemove CurrentVersion
{
NoRemove Explorer
{
NoRemove 'Browser Helper Objects'
{
ForceRemove '{449D0D6E-2412-4E61-B68F-1CB625CD9E52}'
}
}
NoRemove Policies
{
NoRemove Ext
{
NoRemove CLSID
{
ForceRemove val {449D0D6E-2412-4E61-B68F-1CB625CD9E52} = s '2'
}
}
}
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,246 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
// ExplorerBand.h : Declaration of the CExplorerBand
#pragma once
#include "resource.h"
#include "ClassicExplorer_i.h"
#include "SettingsParser.h"
#include <vector>
class CBandWindow: public CWindowImpl<CBandWindow>
{
public:
enum
{
ID_LAST=-1,
ID_SEPARATOR=0,
// standard toolbar commands
ID_SETTINGS=1,
ID_GOUP,
ID_CUT,
ID_COPY,
ID_PASTE,
ID_PASTE_SHORTCUT,
ID_DELETE,
ID_PROPERTIES,
ID_EMAIL,
ID_MOVETO,
ID_COPYTO,
ID_UNDO,
ID_REDO,
ID_SELECTALL,
ID_DESELECT,
ID_INVERT,
ID_GOBACK,
ID_GOFORWARD,
ID_REFRESH,
ID_STOP,
ID_RENAME,
ID_NEWFOLDER,
ID_ZIPFOLDER,
ID_NAVPANE,
ID_DETAILSPANE,
ID_PREVIEWPANE,
ID_MAP_DRIVE,
ID_DISCONNECT,
ID_CUSTOMIZEFOLDER,
ID_FOLDEROPTIONS,
ID_VIEW_TILES,
ID_VIEW_DETAILS,
ID_VIEW_LIST,
ID_VIEW_CONTENT,
ID_VIEW_ICONS1,
ID_VIEW_ICONS2,
ID_VIEW_ICONS3,
ID_VIEW_ICONS4,
ID_SHOW_EXTENSIONS,
ID_HIDDEN_FILES,
ID_SYSTEM_FILES,
ID_CUSTOM=100,
};
DECLARE_WND_CLASS(L"OpenShell.CBandWindow")
enum {
BWM_UPDATEBUTTONS=WM_USER,
BWM_UPDATETOOLBAR,
};
BEGIN_MSG_MAP( CBandWindow )
MESSAGE_HANDLER( WM_CREATE, OnCreate )
MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
MESSAGE_HANDLER( WM_CLEAR, OnUpdateUI )
MESSAGE_HANDLER( WM_COMMAND, OnCommand )
MESSAGE_HANDLER( BWM_UPDATEBUTTONS, OnUpdateButtons )
MESSAGE_HANDLER( BWM_UPDATETOOLBAR, OnUpdateToolbar )
NOTIFY_CODE_HANDLER( NM_RCLICK, OnRClick )
NOTIFY_CODE_HANDLER( TBN_GETINFOTIP, OnGetInfoTip )
NOTIFY_CODE_HANDLER( TBN_DROPDOWN, OnDropDown )
NOTIFY_CODE_HANDLER( RBN_CHEVRONPUSHED, OnChevron )
END_MSG_MAP()
CBandWindow( void ) { m_ImgEnabled=m_ImgDisabled=NULL; m_MenuIconSize=0; }
HWND GetToolbar( void ) { return m_Toolbar.m_hWnd; }
void SetBrowsers( IShellBrowser *pBrowser, IWebBrowser2 *pWebBrowser );
void Clear( void );
void UpdateToolbar( void );
void EnableButton( int cmd, bool bEnable );
void CheckButton( int cmd, bool bCheck );
bool HasPanes( void ) const;
bool HasFolderSettings( void ) const;
protected:
// Handler prototypes:
// LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
// LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
LRESULT OnCreate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
LRESULT OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
LRESULT OnUpdateUI( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
LRESULT OnCommand( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
LRESULT OnUpdateButtons( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
LRESULT OnUpdateToolbar( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
LRESULT OnRClick( int idCtrl, LPNMHDR pnmh, BOOL& bHandled );
LRESULT OnGetInfoTip( int idCtrl, LPNMHDR pnmh, BOOL& bHandled );
LRESULT OnDropDown( int idCtrl, LPNMHDR pnmh, BOOL& bHandled );
LRESULT OnChevron( int idCtrl, LPNMHDR pnmh, BOOL& bHandled );
private:
CWindow m_Toolbar;
CWindow m_TreeParent;
CComPtr<IShellBrowser> m_pBrowser;
CComPtr<IWebBrowser2> m_pWebBrowser;
CComPtr<IPropertyBag> m_pBrowserBag;
HIMAGELIST m_ImgEnabled;
HIMAGELIST m_ImgDisabled;
int m_MenuIconSize;
struct StdToolbarItem
{
int id;
const wchar_t *command;
const wchar_t *link;
const wchar_t *label; // text on the button
const wchar_t *tip; // default tooltip
const wchar_t *iconPath;
const wchar_t *iconPathD;
CString regName; // name of the registry value to check for enabled/checked state
CString labelString, tipString; // additional storage for the strings
const StdToolbarItem *submenu;
mutable HBITMAP menuIcon;
mutable HBITMAP menuIconD;
mutable CString menuText;
mutable bool bIconLoaded; // the menu icon is loaded
bool bDisabled;
bool bChecked;
};
std::vector<StdToolbarItem> m_Items;
std::vector<TBBUTTON> m_Buttons;
CSettingsParser m_Parser;
void ParseToolbar( void );
void ParseToolbarItem( const wchar_t *name, StdToolbarItem &item );
void SendShellTabCommand( int command );
HMENU CreateDropMenu( const StdToolbarItem *pItem );
HMENU CreateDropMenuRec( const StdToolbarItem *pItem, std::vector<HMODULE> &modules, HMODULE hShell32 );
void SendEmail( void );
void SendToZip( void );
void NewFolder( void );
void ExecuteCommandFile( const wchar_t *pText );
void ExecuteCustomCommand( const wchar_t *pCommand );
void ViewByProperty( IFolderView2 *pView, const wchar_t *pProperty, bool bGroup );
void UpdateBag( void );
void UpdateFolderSettings( void );
static LRESULT CALLBACK ToolbarSubclassProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
static HRESULT __stdcall BagWriteHook( IPropertyBag *pThis, LPCOLESTR pszPropName, VARIANT *pVar );
};
// CExplorerBand
class ATL_NO_VTABLE CExplorerBand :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CExplorerBand,&CLSID_ExplorerBand>,
public IObjectWithSiteImpl<CExplorerBand>,
public IDeskBand,
public IDispEventImpl<1,CExplorerBand,&DIID_DWebBrowserEvents2,&LIBID_SHDocVw,1,1>
{
public:
CExplorerBand( void );
DECLARE_REGISTRY_RESOURCEID(IDR_EXPLORERBAND)
BEGIN_SINK_MAP( CExplorerBand )
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_NAVIGATECOMPLETE2, OnNavigateComplete)
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_COMMANDSTATECHANGE, OnCommandStateChange)
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_ONQUIT, OnQuit)
END_SINK_MAP()
BEGIN_COM_MAP(CExplorerBand)
COM_INTERFACE_ENTRY( IOleWindow )
COM_INTERFACE_ENTRY( IObjectWithSite )
COM_INTERFACE_ENTRY_IID( IID_IDockingWindow, IDockingWindow )
COM_INTERFACE_ENTRY_IID( IID_IDeskBand, IDeskBand )
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
public:
// IDeskBand
STDMETHOD(GetBandInfo)( DWORD dwBandID, DWORD dwViewMode, DESKBANDINFO* pdbi );
// IObjectWithSite
STDMETHOD(SetSite)( IUnknown* pUnkSite );
// IOleWindow
STDMETHOD(GetWindow)( HWND* phwnd );
STDMETHOD(ContextSensitiveHelp)( BOOL fEnterMode );
// IDockingWindow
STDMETHOD(CloseDW)( unsigned long dwReserved );
STDMETHOD(ResizeBorderDW)( const RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved );
STDMETHOD(ShowDW)( BOOL fShow );
// DWebBrowserEvents2
STDMETHOD(OnNavigateComplete)( IDispatch *pDisp, VARIANT *URL );
STDMETHOD(OnCommandStateChange)( long Command, VARIANT_BOOL Enable );
STDMETHOD(OnQuit)( void );
protected:
bool m_bSubclassRebar; // the rebar needs subclassing
bool m_bSubclassedRebar; // the rebar is subclassed
bool m_bBandNewLine; // our band is on a new line (has RBBS_BREAK style)
bool m_bHandleSetInfo; // mess with the RB_SETBANDINFO message
CBandWindow m_BandWindow;
CComPtr<IWebBrowser2> m_pWebBrowser;
HWND m_TopWindow;
static LRESULT CALLBACK RebarSubclassProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
static LRESULT CALLBACK ParentSubclassProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );
friend class CBandWindow;
};
OBJECT_ENTRY_AUTO(__uuidof(ExplorerBand), CExplorerBand)

View File

@@ -1,59 +0,0 @@
HKCR
{
ClassicExplorer.ExplorerBand.1 = s 'ExplorerBand Class'
{
CLSID = s '{553891B7-A0D5-4526-BE18-D3CE461D6310}'
}
ClassicExplorer.ExplorerBand = s 'ExplorerBand Class'
{
CLSID = s '{553891B7-A0D5-4526-BE18-D3CE461D6310}'
CurVer = s 'ClassicExplorer.ExplorerBand.1'
}
NoRemove CLSID
{
ForceRemove {553891B7-A0D5-4526-BE18-D3CE461D6310} = s 'Classic Explorer Bar'
{
ProgID = s 'ClassicExplorer.ExplorerBand.1'
VersionIndependentProgID = s 'ClassicExplorer.ExplorerBand'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{BF8D124A-A4E0-402F-8152-4EF377E62586}'
}
}
}
HKLM
{
NoRemove Software
{
NoRemove Microsoft
{
NoRemove 'Internet Explorer'
{
NoRemove Toolbar
{
ForceRemove val {553891B7-A0D5-4526-BE18-D3CE461D6310} = b ''
}
}
NoRemove Windows
{
NoRemove CurrentVersion
{
NoRemove Policies
{
NoRemove Ext
{
NoRemove CLSID
{
ForceRemove val {553891B7-A0D5-4526-BE18-D3CE461D6310} = s '2'
}
}
}
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,765 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
#include "stdafx.h"
#include "ExplorerBand.h"
#include "ExplorerBHO.h"
#include "SettingsUI.h"
#include "Settings.h"
#include "SettingsUIHelper.h"
#include "LanguageSettingsHelper.h"
#include "ResourceHelper.h"
#include "Translations.h"
#include "resource.h"
#include "dllmain.h"
#include <dwmapi.h>
enum
{
SETTINGS_STYLE_WIN7=1,
SETTINGS_STYLE_WIN8=2,
SETTINGS_STYLE_MASK=SETTINGS_STYLE_WIN7|SETTINGS_STYLE_WIN8,
};
static const CStdCommand g_StdCommands[]={
{L"SEPARATOR",IDS_SEPARATOR_ITEM,IDS_SEPARATOR_TIP},
{L"up",IDS_UP_ITEM,IDS_UP_TIP,L"UpItem",NULL,L"$Toolbar.GoUp",L",2",NULL,0,L",3"},
{L"cut",IDS_CUT_ITEM,IDS_CUT_TIP,L"CutItem",NULL,L"$Toolbar.Cut",L"shell32.dll,16762"},
{L"copy",IDS_COPY_ITEM,IDS_COPY_TIP,L"CopyItem",NULL,L"$Toolbar.Copy",L"shell32.dll,243"},
{L"paste",IDS_PASTE_ITEM,IDS_PASTE_TIP,L"PasteItem",NULL,L"$Toolbar.Paste",L"shell32.dll,16763"},
{L"paste_shortcut",IDS_PASTE_LNK_ITEM,IDS_PASTE_SHORTCUT_TIP,L"PasteShortcutItem",NULL,L"$Toolbar.PasteShortcut",L"shell32.dll,16763",NULL,SETTINGS_STYLE_WIN7},
{L"paste_shortcut",IDS_PASTE_LNK_ITEM,IDS_PASTE_SHORTCUT_TIP,L"PasteShortcutItem",NULL,L"$Toolbar.PasteShortcut",L"imageres.dll,5301",NULL,SETTINGS_STYLE_WIN8},
{L"delete",IDS_DELETE_ITEM,IDS_DELETE_TIP,L"DeleteItem",NULL,L"$Toolbar.Delete",L"shell32.dll,240"},
{L"properties",IDS_PROPERTIES_ITEM,IDS_PROPERTIES_TIP,L"PropertiesItem",NULL,L"$Toolbar.Properties",L"shell32.dll,253"},
{L"email",IDS_EMAIL_ITEM,IDS_EMAIL_TIP,L"EmailItem",NULL,L"$Toolbar.Email",L"shell32.dll,265"},
{L"settings",IDS_SETTINGS_ITEM,IDS_SETTINGS_TIP,L"SettingsItem",NULL,L"$Toolbar.Settings",L",1"},
{L"refresh",IDS_REFRESH_ITEM,IDS_REFRESH_TIP,L"RefreshItem",NULL,L"$Toolbar.Refresh",L"shell32.dll,16739"},
{L"stop",IDS_STOP_ITEM,IDS_STOP_TIP,L"StopItem",NULL,L"$Toolbar.Stop",L"imageres.dll,98"},
{L"rename",IDS_RENAME_ITEM,IDS_RENAME_TIP,L"RenameItem",NULL,L"$Toolbar.Rename",L"shell32.dll,242"},
{L"customizefolder",IDS_CUSTOMIZE_ITEM,IDS_CUSTOMIZEFOLDER_TIP,L"CustomizeFolderItem",NULL,L"$Toolbar.CustomizeFolder",L"shell32.dll,274"},
{L"folderoptions",IDS_FOLDEROPTIONS,IDS_FOLDEROPTIONS_TIP,L"FolderOptionsItem",NULL,L"$Toolbar.FolderOptions",L"imageres.dll,166"},
{L"newfolder",IDS_NEWFOLDER_ITEM,IDS_NEWFOLDER_TIP,L"NewFolderItem",NULL,L"$Toolbar.NewFolder",L"shell32.dll,319"},
{L"zipfolder",IDS_ZIP_ITEM,IDS_ZIP_TIP,L"ZipItem",NULL,L"$Toolbar.ZipFolder",L"imageres.dll,174"},
{L"nav_pane",IDS_NAVPANE_ITEM,IDS_NAVPANE_TIP,L"NavPaneItem",NULL,L"$Toolbar.NavigationPane",L"shell32.dll,16755"},
{L"details_pane",IDS_DETAILSPANE_ITEM,IDS_DETAILSPANE_TIP,L"DetailsPaneItem",NULL,L"$Toolbar.DetailsPane",L"shell32.dll,16759",NULL,SETTINGS_STYLE_WIN7},
{L"details_pane",IDS_DETAILSPANE_ITEM,IDS_DETAILSPANE_TIP,L"DetailsPaneItem",NULL,L"$Toolbar.DetailsPane",L"shell32.dll,16814",NULL,SETTINGS_STYLE_WIN8},
{L"preview_pane",IDS_PREVIEWPANE_ITEM,IDS_PREVIEWPANE_TIP,L"PreviewPaneItem",NULL,L"$Toolbar.PreviewPane",L"shell32.dll,16757"},
{L"mapdrive",IDS_MAP_DRIVE_ITEM,IDS_MAP_DRIVE_TIP,L"MapDriveItem",NULL,L"$Toolbar.MapDrive",L"shell32.dll,16779"},
{L"disconnect",IDS_DISCONNECT_ITEM,IDS_DISCONNECT_DRIVE_TIP,L"DisconnectItem",NULL,L"$Toolbar.DisconnectDrive",L"shell32.dll,11"},
{L"viewtiles",IDS_VIEWTILES_ITEM,IDS_VIEWTILES_TIP,L"TilesItem",NULL,L"$Toolbar.Tiles",L"shell32.dll,62999"},
{L"viewdetails",IDS_VIEWDETAILS_ITEM,IDS_VIEWDEATAILS_TIP,L"DetailsItem",NULL,L"$Toolbar.Details",L"shell32.dll,62998"},
{L"viewlist",IDS_VIEWLIST_ITEM,IDS_VIEWLIST_TIP,L"ListItem",NULL,L"$Toolbar.List",L"shell32.dll,63000"},
{L"viewcontent",IDS_VIEWCONTENT_ITEM,IDS_VIEWCONTENT_TIP,L"ContentItem",NULL,L"$Toolbar.Content",L"shell32.dll,63011"},
{L"viewicons_small",IDS_VIEWICONS1_ITEM,IDS_VIEWICONS1_TIP,L"Icons1Item",NULL,L"$Toolbar.Small",L"shell32.dll,63010"},
{L"viewicons_medium",IDS_VIEWICONS2_ITEM,IDS_VIEWICONS2_TIP,L"Icons2Item",NULL,L"$Toolbar.Medium",L"shell32.dll,63009"},
{L"viewicons_large",IDS_VIEWICONS3_ITEM,IDS_VIEWICONS3_TIP,L"Icons3Item",NULL,L"$Toolbar.Large",L"shell32.dll,63008"},
{L"viewicons_extralarge",IDS_VIEWICONS4_ITEM,IDS_VIEWICONS4_TIP,L"Icons4Item",NULL,L"$Toolbar.ExtraLarge",L"shell32.dll,63001"},
{L"moveto",IDS_MOVETO_ITEM,IDS_MOVETO_TIP,L"MoveToItem",NULL,L"$Toolbar.MoveTo",L"",NULL,SETTINGS_STYLE_WIN7},
{L"moveto",IDS_MOVETO_ITEM,IDS_MOVETO_TIP,L"MoveToItem",NULL,L"$Toolbar.MoveTo",L"imageres.dll,5303",NULL,SETTINGS_STYLE_WIN8},
{L"copyto",IDS_COPYTO_ITEM,IDS_COPYTO_TIP,L"CopyToItem",NULL,L"$Toolbar.CopyTo",L"",NULL,SETTINGS_STYLE_WIN7},
{L"copyto",IDS_COPYTO_ITEM,IDS_COPYTO_TIP,L"CopyToItem",NULL,L"$Toolbar.CopyTo",L"imageres.dll,5304",NULL,SETTINGS_STYLE_WIN8},
{L"undo",IDS_UNDO_ITEM,IDS_UNDO_TIP,L"UndoItem",NULL,L"$Toolbar.Undo",L"",NULL,SETTINGS_STYLE_WIN7},
{L"undo",IDS_UNDO_ITEM,IDS_UNDO_TIP,L"UndoItem",NULL,L"$Toolbar.Undo",L"imageres.dll,5315",NULL,SETTINGS_STYLE_WIN8},
{L"redo",IDS_REDO_ITEM,IDS_REDO_TIP,L"RedoItem",NULL,L"$Toolbar.Redo",L"",NULL,SETTINGS_STYLE_WIN7},
{L"redo",IDS_REDO_ITEM,IDS_REDO_TIP,L"RedoItem",NULL,L"$Toolbar.Redo",L"imageres.dll,5311",NULL,SETTINGS_STYLE_WIN8},
{L"selectall",IDS_SELECTALL_ITEM,IDS_SELECTALL_TIP,L"SelectAllItem",NULL,L"$Toolbar.SelectAll",L"",NULL,SETTINGS_STYLE_WIN7},
{L"selectall",IDS_SELECTALL_ITEM,IDS_SELECTALL_TIP,L"SelectAllItem",NULL,L"$Toolbar.SelectAll",L"imageres.dll,5308",NULL,SETTINGS_STYLE_WIN8},
{L"deselect",IDS_DESELECT_ITEM,IDS_DESELECT_TIP,L"DeselectItem",NULL,L"$Toolbar.Deselect",L"",NULL,SETTINGS_STYLE_WIN7},
{L"deselect",IDS_DESELECT_ITEM,IDS_DESELECT_TIP,L"DeselectItem",NULL,L"$Toolbar.Deselect",L"imageres.dll,5309",NULL,SETTINGS_STYLE_WIN8},
{L"invertselection",IDS_INVERT_ITEM,IDS_INVERT_TIP,L"InvertItem",NULL,L"$Toolbar.InvertSelection",L"",NULL,SETTINGS_STYLE_WIN7},
{L"invertselection",IDS_INVERT_ITEM,IDS_INVERT_TIP,L"InvertItem",NULL,L"$Toolbar.InvertSelection",L"imageres.dll,5310",NULL,SETTINGS_STYLE_WIN8},
{L"back",IDS_BACK_ITEM,IDS_BACK_TIP,L"BackItem",NULL,L"$Toolbar.Back",L""},
{L"forward",IDS_FORWARD_ITEM,IDS_FORWARD_TIP,L"ForwardItem",NULL,L"$Toolbar.Forward",L""},
{L"show_extensions",IDS_SHOW_EXTENSIONS,IDS_SHOW_EXTENSIONS_TIP,L"ShowExtensionsItem",NULL,L"$Toolbar.ShowExtensions"},
{L"hidden_files",IDS_HIDDEN_FILES,IDS_HIDDEN_FILES_TIP,L"HiddenFilesItem",NULL,L"$Toolbar.ShowHiddenFiles"},
{L"system_files",IDS_SYSTEM_FILES,IDS_SYSTEM_FILES_TIP,L"SystemFilesItem",NULL,L"$Toolbar.ShowSystemFiles"},
{L"open <folder name>",IDS_OPEN_ITEM,IDS_OPEN_TIP,L"OpenFolderItem",NULL,NULL,L""},
{L"sortby <property>",IDS_SORYBY_ITEM,IDS_SORT_TIP,L"SortFolderItem",NULL,NULL,L""},
{L"groupby <property>",IDS_GROUPBY_ITEM,IDS_GROUP_TIP,L"GroupFolderItem",NULL,NULL,L""},
{L"",IDS_CUSTOM_ITEM,IDS_CUSTOM_TIP,L"CustomItem",NULL,NULL,L""},
{NULL},
};
static const KNOWNFOLDERID *g_CommonLinks[]=
{
&FOLDERID_ComputerFolder,
&FOLDERID_DesktopRoot,
&FOLDERID_Desktop,
&FOLDERID_Documents,
&FOLDERID_Downloads,
&FOLDERID_Favorites,
&FOLDERID_Games,
&FOLDERID_Links,
&FOLDERID_Music,
&FOLDERID_Pictures,
&FOLDERID_Videos,
&FOLDERID_Profile,
&FOLDERID_HomeGroup,
&FOLDERID_Libraries,
&FOLDERID_DocumentsLibrary,
&FOLDERID_MusicLibrary,
&FOLDERID_PicturesLibrary,
&FOLDERID_VideosLibrary,
&FOLDERID_NetworkFolder,
NULL,
};
const wchar_t *g_DefaultToolbar=
L"Items=UpItem, NavPaneItem, FolderOptionsItem, CutItem, CopyItem, PasteItem, DeleteItem, PropertiesItem, EmailItem, SEPARATOR, SettingsItem\n"
L"UpItem.Command=up\n"
L"UpItem.Tip=$Toolbar.GoUp\n"
L"UpItem.Icon=,2\n"
L"UpItem.IconDisabled=,3\n"
L"NavPaneItem.Command=nav_pane\n"
L"NavPaneItem.Tip=$Toolbar.NavigationPane\n"
L"NavPaneItem.Icon=shell32.dll,16755\n"
L"FolderOptionsItem.Command=folderoptions\n"
L"FolderOptionsItem.Tip=$Toolbar.FolderOptions\n"
L"FolderOptionsItem.Icon=imageres.dll,166\n"
L"FolderOptionsItem.Items=ShowExtensionsItem, HiddenFilesItem, SystemFilesItem\n"
L"ShowExtensionsItem.Command=show_extensions\n"
L"ShowExtensionsItem.Label=$Toolbar.ShowExtensions\n"
L"ShowExtensionsItem.Icon=none\n"
L"HiddenFilesItem.Command=hidden_files\n"
L"HiddenFilesItem.Label=$Toolbar.ShowHiddenFiles\n"
L"HiddenFilesItem.Icon=none\n"
L"SystemFilesItem.Command=system_files\n"
L"SystemFilesItem.Label=$Toolbar.ShowSystemFiles\n"
L"SystemFilesItem.Icon=none\n"
L"CutItem.Command=cut\n"
L"CutItem.Tip=$Toolbar.Cut\n"
L"CutItem.Icon=shell32.dll,16762\n"
L"CopyItem.Command=copy\n"
L"CopyItem.Tip=$Toolbar.Copy\n"
L"CopyItem.Icon=shell32.dll,243\n"
L"PasteItem.Command=paste\n"
L"PasteItem.Tip=$Toolbar.Paste\n"
L"PasteItem.Icon=shell32.dll,16763\n"
L"DeleteItem.Command=delete\n"
L"DeleteItem.Tip=$Toolbar.Delete\n"
L"DeleteItem.Icon=shell32.dll,240\n"
L"PropertiesItem.Command=properties\n"
L"PropertiesItem.Tip=$Toolbar.Properties\n"
L"PropertiesItem.Icon=shell32.dll,253\n"
L"EmailItem.Command=email\n"
L"EmailItem.Tip=$Toolbar.Email\n"
L"EmailItem.Icon=shell32.dll,265\n"
L"SettingsItem.Command=settings\n"
L"SettingsItem.Tip=$Toolbar.Settings\n"
L"SettingsItem.Icon=,1\n";
const wchar_t *g_DefaultToolbar2=
L"Items=NavPaneItem, FolderOptionsItem, CutItem, CopyItem, PasteItem, DeleteItem, PropertiesItem, EmailItem, SEPARATOR, SettingsItem\n"
L"NavPaneItem.Command=nav_pane\n"
L"NavPaneItem.Tip=$Toolbar.NavigationPane\n"
L"NavPaneItem.Icon=shell32.dll,16755\n"
L"FolderOptionsItem.Command=folderoptions\n"
L"FolderOptionsItem.Tip=$Toolbar.FolderOptions\n"
L"FolderOptionsItem.Icon=imageres.dll,166\n"
L"FolderOptionsItem.Items=ShowExtensionsItem, HiddenFilesItem, SystemFilesItem\n"
L"ShowExtensionsItem.Command=show_extensions\n"
L"ShowExtensionsItem.Label=$Toolbar.ShowExtensions\n"
L"ShowExtensionsItem.Icon=none\n"
L"HiddenFilesItem.Command=hidden_files\n"
L"HiddenFilesItem.Label=$Toolbar.ShowHiddenFiles\n"
L"HiddenFilesItem.Icon=none\n"
L"SystemFilesItem.Command=system_files\n"
L"SystemFilesItem.Label=$Toolbar.ShowSystemFiles\n"
L"SystemFilesItem.Icon=none\n"
L"CutItem.Command=cut\n"
L"CutItem.Tip=$Toolbar.Cut\n"
L"CutItem.Icon=shell32.dll,16762\n"
L"CopyItem.Command=copy\n"
L"CopyItem.Tip=$Toolbar.Copy\n"
L"CopyItem.Icon=shell32.dll,243\n"
L"PasteItem.Command=paste\n"
L"PasteItem.Tip=$Toolbar.Paste\n"
L"PasteItem.Icon=shell32.dll,16763\n"
L"DeleteItem.Command=delete\n"
L"DeleteItem.Tip=$Toolbar.Delete\n"
L"DeleteItem.Icon=shell32.dll,240\n"
L"PropertiesItem.Command=properties\n"
L"PropertiesItem.Tip=$Toolbar.Properties\n"
L"PropertiesItem.Icon=shell32.dll,253\n"
L"EmailItem.Command=email\n"
L"EmailItem.Tip=$Toolbar.Email\n"
L"EmailItem.Icon=shell32.dll,265\n"
L"SettingsItem.Command=settings\n"
L"SettingsItem.Tip=$Toolbar.Settings\n"
L"SettingsItem.Icon=,1\n";
///////////////////////////////////////////////////////////////////////////////
class CEditToolbarDlg: public CEditCustomItemDlg
{
public:
CEditToolbarDlg( CTreeItem *pItem, bool bNoLinks, std::vector<HMODULE> &modules ): CEditCustomItemDlg(pItem,modules) { m_bNoLinks=bNoLinks; }
BEGIN_MSG_MAP( CEditToolbarDlg )
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
COMMAND_ID_HANDLER( IDOK, OnOK )
COMMAND_ID_HANDLER( IDCANCEL, OnCancel )
COMMAND_HANDLER( IDC_COMBOCOMMAND, CBN_KILLFOCUS, OnCommandChanged )
COMMAND_HANDLER( IDC_COMBOCOMMAND, CBN_SELENDOK, OnCommandChanged )
COMMAND_HANDLER( IDC_BUTTONCOMMAND, BN_CLICKED, OnBrowseCommand )
COMMAND_HANDLER( IDC_BUTTONLINK, BN_CLICKED, OnBrowseLink )
COMMAND_HANDLER( IDC_BUTTONICON, BN_CLICKED, OnBrowseIcon )
COMMAND_HANDLER( IDC_BUTTONICOND, BN_CLICKED, OnBrowseIcon )
COMMAND_HANDLER( IDC_COMBOLINK, CBN_KILLFOCUS, OnLinkChanged )
COMMAND_HANDLER( IDC_COMBOLINK, CBN_SELENDOK, OnLinkChanged )
COMMAND_HANDLER( IDC_EDITICON, EN_KILLFOCUS, OnIconChanged )
COMMAND_HANDLER( IDC_EDITICOND, EN_KILLFOCUS, OnIconDChanged )
COMMAND_HANDLER( IDC_BUTTONRESET, BN_CLICKED, OnReset )
CHAIN_MSG_MAP( CEditCustomItemDlg )
END_MSG_MAP()
virtual BEGIN_RESIZE_MAP
RESIZE_CONTROL(IDC_COMBOCOMMAND,MOVE_SIZE_X)
RESIZE_CONTROL(IDC_COMBOLINK,MOVE_SIZE_X)
RESIZE_CONTROL(IDC_BUTTONCOMMAND,MOVE_MOVE_X)
RESIZE_CONTROL(IDC_BUTTONLINK,MOVE_MOVE_X)
RESIZE_CONTROL(IDC_EDITLABEL,MOVE_SIZE_X)
RESIZE_CONTROL(IDC_EDITTIP,MOVE_SIZE_X)
RESIZE_CONTROL(IDC_EDITICON,MOVE_SIZE_X)
RESIZE_CONTROL(IDC_BUTTONICON,MOVE_MOVE_X)
RESIZE_CONTROL(IDC_EDITICOND,MOVE_SIZE_X)
RESIZE_CONTROL(IDC_BUTTONICOND,MOVE_MOVE_X)
RESIZE_CONTROL(IDOK,MOVE_MOVE_X)
RESIZE_CONTROL(IDCANCEL,MOVE_MOVE_X)
END_RESIZE_MAP
protected:
// Handler prototypes:
// LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
// LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
LRESULT OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
LRESULT OnOK( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
LRESULT OnCommandChanged( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
LRESULT OnLinkChanged( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
LRESULT OnIconChanged( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
LRESULT OnIconDChanged( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
LRESULT OnBrowseCommand( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
LRESULT OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
LRESULT OnBrowseIcon( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
LRESULT OnReset( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
private:
bool m_bNoLinks;
int m_Style;
};
LRESULT CEditToolbarDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
{
m_Style=GetWinVersion()>=WIN_VER_WIN8?SETTINGS_STYLE_WIN8:SETTINGS_STYLE_WIN7;
CWindow commands=GetDlgItem(IDC_COMBOCOMMAND);
CWindow links=GetDlgItem(IDC_COMBOLINK);
InitDialog(commands,g_StdCommands,m_Style,SETTINGS_STYLE_MASK,links,g_CommonLinks);
SetDlgItemText(IDC_EDITLABEL,m_pItem->label);
SetDlgItemText(IDC_EDITTIP,m_pItem->tip);
SetDlgItemText(IDC_EDITICON,m_pItem->icon);
SetDlgItemText(IDC_EDITICOND,m_pItem->iconD);
GetDlgItem(IDC_BUTTONRESET).EnableWindow(m_pItem->pStdCommand && *m_pItem->pStdCommand->name);
UpdateIcons(IDC_ICONN,IDC_ICOND);
CWindow tooltip=CreateWindowEx(WS_EX_TOPMOST|WS_EX_TOOLWINDOW|WS_EX_TRANSPARENT,TOOLTIPS_CLASS,NULL,WS_POPUP|TTS_NOPREFIX|TTS_ALWAYSTIP,0,0,0,0,m_hWnd,NULL,g_Instance,NULL);
tooltip.SendMessage(TTM_SETMAXTIPWIDTH,0,GetSystemMetrics(SM_CXSCREEN)/2);
TOOLINFO tool={sizeof(tool),TTF_SUBCLASS|TTF_IDISHWND,m_hWnd,(UINT_PTR)(HWND)commands};
CString str=LoadStringEx(IDS_COMMAND_TIP);
tool.lpszText=(LPWSTR)(LPCWSTR)str;
tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
tool.uId=(UINT_PTR)(HWND)commands.GetWindow(GW_CHILD);
tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
str=LoadStringEx(IDS_LINK_TIP);
tool.lpszText=(LPWSTR)(LPCWSTR)str;
tool.uId=(UINT_PTR)(HWND)links;
tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
tool.uId=(UINT_PTR)(HWND)links.GetWindow(GW_CHILD);
tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
str=LoadStringEx(IDS_TEXT_TIP);
tool.lpszText=(LPWSTR)(LPCWSTR)str;
tool.uId=(UINT_PTR)(HWND)GetDlgItem(IDC_EDITLABEL);
tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
str=LoadStringEx(IDS_TIP_TIP);
tool.lpszText=(LPWSTR)(LPCWSTR)str;
tool.uId=(UINT_PTR)(HWND)GetDlgItem(IDC_EDITTIP);
tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
str=LoadStringEx(IDS_ICON_TIP);
tool.lpszText=(LPWSTR)(LPCWSTR)str;
tool.uId=(UINT_PTR)(HWND)GetDlgItem(IDC_EDITICON);
tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
str=LoadStringEx(IDS_ICOND_TIP);
tool.lpszText=(LPWSTR)(LPCWSTR)str;
tool.uId=(UINT_PTR)(HWND)GetDlgItem(IDC_EDITICOND);
tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
str=LoadStringEx(IDS_RESTORE_TIP);
tool.lpszText=(LPWSTR)(LPCWSTR)str;
tool.uId=(UINT_PTR)(HWND)GetDlgItem(IDC_BUTTONRESET);
tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
return TRUE;
}
LRESULT CEditToolbarDlg::OnOK( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
GetDlgItemText(IDC_EDITLABEL,m_pItem->label);
m_pItem->label.TrimLeft();
m_pItem->label.TrimRight();
GetDlgItemText(IDC_EDITTIP,m_pItem->tip);
m_pItem->tip.TrimLeft();
m_pItem->tip.TrimRight();
return CEditCustomItemDlg::OnOK(wNotifyCode,wID,hWndCtl,bHandled);
}
LRESULT CEditToolbarDlg::OnCommandChanged( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
CString text=GetComboText(wNotifyCode,wID);
if (text==m_pItem->command) return 0;
m_pItem->SetCommand(text,g_StdCommands,m_Style,SETTINGS_STYLE_MASK);
GetDlgItem(IDC_BUTTONRESET).EnableWindow(m_pItem->pStdCommand && *m_pItem->pStdCommand->name);
UpdateIcons(IDC_ICONN,IDC_ICOND);
return 0;
}
LRESULT CEditToolbarDlg::OnLinkChanged( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
CString text=GetComboText(wNotifyCode,wID);
if (text==m_pItem->link) return 0;
m_pItem->link=text;
UpdateIcons(IDC_ICONN,IDC_ICOND);
return 0;
}
LRESULT CEditToolbarDlg::OnIconChanged( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
CString text;
GetDlgItemText(IDC_EDITICON,text);
text.TrimLeft();
text.TrimRight();
if (text==m_pItem->icon) return 0;
m_pItem->icon=text;
UpdateIcons(IDC_ICONN,IDC_ICOND);
return 0;
}
LRESULT CEditToolbarDlg::OnIconDChanged( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
CString text;
GetDlgItemText(IDC_EDITICOND,text);
text.TrimLeft();
text.TrimRight();
if (text==m_pItem->iconD) return 0;
m_pItem->iconD=text;
UpdateIcons(IDC_ICONN,IDC_ICOND);
return 0;
}
LRESULT CEditToolbarDlg::OnBrowseCommand( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
wchar_t text[_MAX_PATH];
GetDlgItemText(IDC_COMBOCOMMAND,text,_countof(text));
if (BrowseCommandHelper(m_hWnd,text))
{
SetDlgItemText(IDC_COMBOCOMMAND,text);
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOCOMMAND,CBN_KILLFOCUS));
}
return 0;
}
LRESULT CEditToolbarDlg::OnBrowseLink( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
wchar_t text[_MAX_PATH];
GetDlgItemText(IDC_COMBOLINK,text,_countof(text));
if (BrowseLinkHelper(m_hWnd,text))
{
SetDlgItemText(IDC_COMBOLINK,text);
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_COMBOLINK,CBN_KILLFOCUS));
}
return 0;
}
LRESULT CEditToolbarDlg::OnBrowseIcon( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
wchar_t text[_MAX_PATH];
if (wID==IDC_BUTTONICON) wID=IDC_EDITICON;
if (wID==IDC_BUTTONICOND) wID=IDC_EDITICOND;
GetDlgItemText(wID,text,_countof(text));
if (wID==IDC_EDITICOND && !*text)
GetDlgItemText(IDC_EDITICON,text,_countof(text));
if (BrowseIconHelper(m_hWnd,text))
{
SetDlgItemText(wID,text);
SendMessage(WM_COMMAND,MAKEWPARAM(wID,EN_KILLFOCUS));
}
return 0;
}
LRESULT CEditToolbarDlg::OnReset( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
{
if (!m_pItem->pStdCommand || !*m_pItem->pStdCommand->name)
return 0;
m_pItem->link.Empty();
m_pItem->label=m_pItem->pStdCommand->label;
m_pItem->tip=m_pItem->pStdCommand->tip;
m_pItem->icon=m_pItem->pStdCommand->icon;
m_pItem->iconD=m_pItem->pStdCommand->iconD;
SendDlgItemMessage(IDC_COMBOLINK,CB_SETCURSEL,-1);
SetDlgItemText(IDC_EDITLABEL,m_pItem->label);
SetDlgItemText(IDC_EDITTIP,m_pItem->tip);
SetDlgItemText(IDC_EDITICON,m_pItem->icon);
SetDlgItemText(IDC_EDITICOND,m_pItem->iconD);
UpdateIcons(IDC_ICONN,IDC_ICOND);
return 0;
}
///////////////////////////////////////////////////////////////////////////////
class CCustomToolbarDlg: public CCustomTreeDlg
{
public:
CCustomToolbarDlg( void ): CCustomTreeDlg(false,g_StdCommands,GetWinVersion()>=WIN_VER_WIN8?SETTINGS_STYLE_WIN8:SETTINGS_STYLE_WIN7,SETTINGS_STYLE_MASK) {}
protected:
virtual void ParseTreeItemExtra( CTreeItem *pItem, CSettingsParser &parser );
virtual void SerializeItemExtra( CTreeItem *pItem, std::vector<wchar_t> &stringBuilder );
virtual bool EditItem( CTreeItem *pItem, HWND tree, HTREEITEM hItem, std::vector<HMODULE> &modules );
};
void CCustomToolbarDlg::ParseTreeItemExtra( CTreeItem *pItem, CSettingsParser &parser )
{
wchar_t text[256];
Sprintf(text,_countof(text),L"%s.IconDisabled",pItem->name);
pItem->iconD=parser.FindSetting(text,L"");
}
void CCustomToolbarDlg::SerializeItemExtra( CTreeItem *pItem, std::vector<wchar_t> &stringBuilder )
{
if (!pItem->iconD.IsEmpty())
{
wchar_t text[2048];
Sprintf(text,_countof(text),L"%s.IconDisabled=%s\n",pItem->name,pItem->iconD);
AppendString(stringBuilder,text);
}
}
bool CCustomToolbarDlg::EditItem( CTreeItem *pItem, HWND tree, HTREEITEM hItem, std::vector<HMODULE> &modules )
{
bool bNoLinks=(TreeView_GetParent(tree,hItem) || TreeView_GetChild(tree,hItem));
return CEditToolbarDlg(pItem,bNoLinks,modules).Run(m_hWnd,IDD_CUSTOMTOOLBAR);
}
class CCustomToolbarPanel: public ISettingsPanel
{
public:
virtual HWND Create( HWND parent );
virtual HWND Activate( CSetting *pGroup, const RECT &rect, bool bReset );
virtual bool Validate( HWND parent ) { return true; }
private:
static CCustomToolbarDlg s_Dialog;
};
CCustomToolbarDlg CCustomToolbarPanel::s_Dialog;
HWND CCustomToolbarPanel::Create( HWND parent )
{
if (!s_Dialog.m_hWnd)
s_Dialog.Create(parent,LoadDialogEx(IDD_CUSTOMTREE));
return s_Dialog.m_hWnd;
}
HWND CCustomToolbarPanel::Activate( CSetting *pGroup, const RECT &rect, bool bReset )
{
s_Dialog.SetGroup(pGroup,bReset);
s_Dialog.SetWindowPos(HWND_TOP,&rect,SWP_SHOWWINDOW);
return s_Dialog.m_hWnd;
}
static CCustomToolbarPanel g_CustomToolbarPanel;
///////////////////////////////////////////////////////////////////////////////
static CSetting g_Settings[]={
{L"Basic",CSetting::TYPE_GROUP,IDS_BASIC_SETTINGS},
{L"EnableSettings",CSetting::TYPE_BOOL,0,0,1,CSetting::FLAG_HIDDEN|CSetting::FLAG_NOSAVE},
{L"ProcessWhiteList",CSetting::TYPE_STRING,0,0,L"",CSetting::FLAG_HIDDEN|CSetting::FLAG_NOSAVE},
{L"ProcessBlackList",CSetting::TYPE_STRING,0,0,L"",CSetting::FLAG_HIDDEN|CSetting::FLAG_NOSAVE},
{L"NoInitialToolbar",CSetting::TYPE_BOOL,0,0,0,CSetting::FLAG_HIDDEN|CSetting::FLAG_NOSAVE},
{L"NavigationPane",CSetting::TYPE_GROUP,IDS_NAVIGATION_SETTINGS},
{L"TreeStyle",CSetting::TYPE_INT,IDS_TREE_STYLE,IDS_TREE_STYLE_TIP,2,CSetting::FLAG_WARM|CSetting::FLAG_BASIC},
{L"XPClassic",CSetting::TYPE_RADIO,IDS_XPCLASSIC,IDS_XPCLASSIC_TIP},
{L"XPSimple",CSetting::TYPE_RADIO,IDS_XPSIMPLE,IDS_XPSIMPLE_TIP},
{L"Vista",CSetting::TYPE_RADIO,IDS_VISTA,IDS_VISTA_TIP},
{L"HScrollbar",CSetting::TYPE_INT,IDS_SCROLLBAR,IDS_SCROLLBAR_TIP,0,CSetting::FLAG_WARM},
{L"Default",CSetting::TYPE_RADIO,IDS_SCROLLBAR_DEFAULT,IDS_SCROLLBAR_DEFAULT_TIP},
{L"Off",CSetting::TYPE_RADIO,IDS_SCROLLBAR_OFF,IDS_SCROLLBAR_OFF_TIP},
{L"On",CSetting::TYPE_RADIO,IDS_SCROLLBAR_ON,IDS_SCROLLBAR_ON_TIP},
{L"NoFadeButtons",CSetting::TYPE_BOOL,IDS_NO_FADE,IDS_NO_FADE_TIP,0,CSetting::FLAG_WARM,L"TreeStyle"},
{L"TreeItemSpacing",CSetting::TYPE_INT,IDS_TREE_SPACING,IDS_TREE_SPACING_TIP,0,CSetting::FLAG_WARM},
{L"FullIndent",CSetting::TYPE_BOOL,IDS_FULL_INDENT,IDS_FULL_INDENT_TIP,0,CSetting::FLAG_WARM,L"TreeStyle"},
{L"AutoNavigate",CSetting::TYPE_INT,IDS_NAVIGATE,IDS_NAVIGATE_TIP,0,CSetting::FLAG_WARM|CSetting::FLAG_BASIC},
{L"Default",CSetting::TYPE_RADIO,IDS_NAV_DEFAULT,IDS_NAV_DEFAULT_TIP},
{L"KeyboardOnly",CSetting::TYPE_RADIO,IDS_NAV_KBD,IDS_NAV_KBD_TIP},
{L"Always",CSetting::TYPE_RADIO,IDS_NAV_ALWAYS,IDS_NAV_ALWAYS_TIP},
{L"AutoNavDelay",CSetting::TYPE_INT,IDS_NAV_DELAY,IDS_NAV_DELAY_TIP,100,CSetting::FLAG_WARM,L"AutoNavigate"},
{L"AltEnter",CSetting::TYPE_BOOL,IDS_ALT_ENTER,IDS_ALT_ENTER_TIP,1,CSetting::FLAG_WARM|CSetting::FLAG_BASIC},
{L"FixFolderScroll",CSetting::TYPE_BOOL,IDS_FIX_SCROLL,IDS_FIX_SCROLL_TIP,1,CSetting::FLAG_WARM},
{L"TitleBar",CSetting::TYPE_GROUP,IDS_TITLE_SETTINGS},
{L"ShowCaption",CSetting::TYPE_BOOL,IDS_SHOW_CAPTION,IDS_SHOW_CAPTION_TIP,0,CSetting::FLAG_WARM},
{L"ShowIcon",CSetting::TYPE_BOOL,IDS_SHOW_ICON,IDS_SHOW_ICON_TIP,0,CSetting::FLAG_WARM},
{L"DisableBreadcrumbs",CSetting::TYPE_BOOL,IDS_NO_BREADCRUMBS,IDS_NO_BREADCRUMBS_TIP,0,CSetting::FLAG_WARM|CSetting::FLAG_BASIC},
{L"AddressBarHistory",CSetting::TYPE_INT,IDS_ADDRESS_HISTORY,IDS_ADDRESS_HISTORY_TIP,0,CSetting::FLAG_WARM},
{L"NormalHistory",CSetting::TYPE_RADIO,IDS_NORMAL_HISTORY,IDS_NORMAL_HISTORY_TIP},
{L"SimplePath",CSetting::TYPE_RADIO,IDS_SIMPLE_PATH,IDS_SIMPLE_PATH_TIP},
{L"ExtendedPath",CSetting::TYPE_RADIO,IDS_EXTENDED_PATH,IDS_EXTENDED_PATH_TIP},
{L"HideSearch",CSetting::TYPE_BOOL,IDS_HIDE_SEARCH,IDS_HIDE_SEARCH_TIP,0,CSetting::FLAG_WARM},
{L"AddressAltD",CSetting::TYPE_STRING,IDS_ALT_D,IDS_ALT_D_TIP,L"",CSetting::FLAG_WARM},
{L"UpHotkey2",CSetting::TYPE_HOTKEY_ANY,IDS_UP_HOTKEY,IDS_UP_HOTKEY_TIP,0,CSetting::FLAG_WARM},
{L"UpButton",CSetting::TYPE_GROUP,IDS_UP_SETTINGS},
{L"ShowUpButton",CSetting::TYPE_INT,IDS_SHOW_UP,IDS_SHOW_UP_TIP,2,CSetting::FLAG_WARM|CSetting::FLAG_BASIC},
{L"DontShow",CSetting::TYPE_RADIO,IDS_DONT_SHOW,IDS_DONT_SHOW_TIP},
{L"BeforeBack",CSetting::TYPE_RADIO,IDS_BEFORE_BACK,IDS_BEFORE_BACK_TIP},
{L"AfterBack",CSetting::TYPE_RADIO,IDS_AFTER_BACK,IDS_AFTER_BACK_TIP},
{L"UpIconNormal",CSetting::TYPE_ICON,IDS_UP_NORMAL,IDS_UP_NORMAL_TIP,L",4",CSetting::FLAG_WARM,L"ShowUpButton"},
{L"UpIconPressed",CSetting::TYPE_ICON,IDS_UP_PRESSED,IDS_UP_PRESSED_TIP,L",5",CSetting::FLAG_WARM,L"ShowUpButton"},
{L"UpIconHot",CSetting::TYPE_ICON,IDS_UP_HOT,IDS_UP_HOT_TIP,L",6",CSetting::FLAG_WARM,L"ShowUpButton"},
{L"UpIconDisabled",CSetting::TYPE_ICON,IDS_UP_DISABLED,IDS_UP_DISABLED_TIP,L",7",CSetting::FLAG_WARM,L"ShowUpButton"},
{L"UpIconSize",CSetting::TYPE_INT,IDS_UP_SIZE,IDS_UP_SIZE_TIP,0,CSetting::FLAG_WARM,L"ShowUpButton"}, // 30 for DPI<120 and 36 for DPI>=120
{L"UpHotkey",CSetting::TYPE_HOTKEY_ANY,IDS_UP_HOTKEY,IDS_UP_HOTKEY_TIP,0,CSetting::FLAG_WARM},
{L"Toolbar",CSetting::TYPE_GROUP,IDS_TOOLBAR_SETTINGS},
{L"UseBigButtons",CSetting::TYPE_BOOL,IDS_BIG_BUTTONS,IDS_BIG_BUTTONS_TIP,1,CSetting::FLAG_WARM},
{L"SmallIconSize",CSetting::TYPE_INT,IDS_SMALL_SIZE,IDS_SMALL_SIZE_TIP,-1,CSetting::FLAG_WARM}, // 16 for DPI<120 and 24 for DPI>=120
{L"LargeIconSize",CSetting::TYPE_INT,IDS_LARGE_SIZE,IDS_LARGE_SIZE_TIP,-1,CSetting::FLAG_WARM}, // 24 for DPI<120 and 32 for DPI>=120
{L"MenuIconSize",CSetting::TYPE_INT,IDS_MENU_SIZE,IDS_MENU_SIZE_TIP,16,CSetting::FLAG_WARM},
{L"ToolbarListMode",CSetting::TYPE_BOOL,IDS_LIST_MODE,IDS_LIST_MODE_TIP,0,CSetting::FLAG_WARM},
{L"SameSizeButtons",CSetting::TYPE_BOOL,IDS_SAME_SIZE,IDS_SAME_SIZE_TIP,0,CSetting::FLAG_WARM,L"ToolbarListMode=0"},
{L"ResizeableToolbar",CSetting::TYPE_BOOL,IDS_RESIZEABLE,IDS_RESIZEABLE_TIP,0,CSetting::FLAG_WARM},
{L"CustomToolbar",CSetting::TYPE_GROUP,IDS_BUTTONS_SETTINGS,0,0,0,NULL,NULL,&g_CustomToolbarPanel},
{L"ToolbarItems",CSetting::TYPE_MULTISTRING,0,0,g_DefaultToolbar,CSetting::FLAG_WARM},
{L"StatusBar",CSetting::TYPE_GROUP,IDS_STATUS_SETTINGS},
{L"ShowFreeSpace",CSetting::TYPE_BOOL,IDS_FREE_SPACE,IDS_FREE_SPACE_TIP,1,CSetting::FLAG_WARM|CSetting::FLAG_BASIC},
{L"ShowInfoTip",CSetting::TYPE_BOOL,IDS_INFO_TIP,IDS_INFO_TIP_TIP,1,CSetting::FLAG_WARM,L"ShowFreeSpace"},
{L"ForceRefreshWin7",CSetting::TYPE_BOOL,IDS_FORCE_REFRESH,IDS_FORCE_REFRESH_TIP,1,CSetting::FLAG_WARM,L"ShowFreeSpace"},
{L"StatusBar8",CSetting::TYPE_GROUP,IDS_STATUS_SETTINGS},
{L"ShowStatusBar",CSetting::TYPE_BOOL,IDS_SHOWSTATUSBAR,IDS_SHOWSTATUSBAR_TIP,1,CSetting::FLAG_WARM|CSetting::FLAG_BASIC},
{L"ShowFreeSpace2",CSetting::TYPE_BOOL,IDS_FREE_SPACE,IDS_FREE_SPACE_TIP,1,CSetting::FLAG_WARM,L"ShowStatusBar",L"ShowStatusBar"},
{L"ShowZone",CSetting::TYPE_BOOL,IDS_SHOW_ZONE,IDS_SHOW_ZONE_TIP,1,CSetting::FLAG_WARM,L"ShowStatusBar",L"ShowStatusBar"},
{L"ShowInfoTip2",CSetting::TYPE_BOOL,IDS_INFO_TIP,IDS_INFO_TIP_TIP,1,CSetting::FLAG_WARM,L"ShowStatusBar",L"ShowStatusBar"},
{L"StatusBarFont",CSetting::TYPE_FONT,IDS_STATUS_FONT,IDS_STATUS_FONT_TIP,L"Segoe UI, normal, 9",CSetting::FLAG_WARM,L"ShowStatusBar",L"ShowStatusBar"},
{L"FilePane",CSetting::TYPE_GROUP,IDS_FILEPANE_SETTINGS},
{L"ShareOverlay",CSetting::TYPE_BOOL,IDS_SHARE,IDS_SHARE_TIP,0,CSetting::FLAG_COLD|CSetting::FLAG_BASIC},
{L"ShareOverlayIcon",CSetting::TYPE_ICON,IDS_SHARE_ICON,IDS_SHARE_ICON_TIP,L"%windir%\\system32\\imageres.dll,164",CSetting::FLAG_COLD,L"ShareOverlay",L"ShareOverlay"},
{L"ShareOverlayHidden",CSetting::TYPE_BOOL,IDS_SHARE_HIDDEN,IDS_SHARE_HIDDEN_TIP,0,CSetting::FLAG_COLD,L"ShareOverlay",L"ShareOverlay"},
{L"ShareExplorer",CSetting::TYPE_BOOL,IDS_SHARE_EXPLORER,IDS_SHARE_EXPLORER_TIP,1,CSetting::FLAG_COLD,L"ShareOverlay",L"ShareOverlay"},
{L"ShowHeaders",CSetting::TYPE_BOOL,IDS_HEADERS,IDS_HEADERS_TIP,0,CSetting::FLAG_WARM},
{L"HideScrollTip",CSetting::TYPE_BOOL,IDS_SCROLLTIP,IDS_SCROLLTIP_TIP,0,CSetting::FLAG_WARM},
{L"FileOperation",CSetting::TYPE_GROUP,IDS_FILE_SETTINGS},
{L"ReplaceFileUI",CSetting::TYPE_BOOL,IDS_FILE_UI,IDS_FILE_UI_TIP,1,CSetting::FLAG_WARM|CSetting::FLAG_BASIC},
{L"ReplaceFolderUI",CSetting::TYPE_BOOL,IDS_FOLDER_UI,IDS_FOLDER_UI_TIP,1,CSetting::FLAG_WARM|CSetting::FLAG_BASIC},
{L"OverwriteAlertLevel",CSetting::TYPE_INT,IDS_ALERT_LEVEL,IDS_ALERT_LEVEL_TIP,0,CSetting::FLAG_WARM,L"ReplaceFileUI",L"ReplaceFileUI"},
{L"NoAlert",CSetting::TYPE_RADIO,IDS_NO_ALERT,IDS_NO_ALERT_TIP},
{L"SystemFiles",CSetting::TYPE_RADIO,IDS_SYS_FILES,IDS_SYS_FILES_TIP},
{L"ReadOnlyFiles",CSetting::TYPE_RADIO,IDS_RO_FILES,IDS_RO_FILES_TIP},
{L"EnableMore",CSetting::TYPE_BOOL,IDS_MORE,IDS_MORE_TIP,0,CSetting::FLAG_WARM},
{L"MoreProgressDelay",CSetting::TYPE_INT,IDS_MORE_DELAY,IDS_MORE_DELAY_TIP,-1,CSetting::FLAG_WARM,L"EnableMore",L"EnableMore"}, // 500 for Windows 7 Aero, and 0 otherwise
{L"FileExplorer",CSetting::TYPE_BOOL,IDS_FILE_EXPLORER,IDS_FILE_EXPLORER_TIP,1,CSetting::FLAG_COLD},
{L"Language",CSetting::TYPE_GROUP,IDS_LANGUAGE_SETTINGS,0,0,0,NULL,NULL,GetLanguageSettings(COMPONENT_EXPLORER)},
{L"Language",CSetting::TYPE_STRING,0,0,L"",CSetting::FLAG_COLD|CSetting::FLAG_SHARED},
{NULL}
};
void UpgradeSettings( bool bShared )
{
}
void UpdateSettings( void )
{
HDC hdc=GetDC(NULL);
int dpi=GetDeviceCaps(hdc,LOGPIXELSY);
ReleaseDC(NULL,hdc);
UpdateSetting(L"SmallIconSize",CComVariant((dpi>=120)?24:16),false);
UpdateSetting(L"LargeIconSize",CComVariant((dpi>=120)?32:24),false);
UpdateSetting(L"UpIconSize",CComVariant((dpi>=120)?36:30),false);
FindSetting(L"UpHotkey2")->pLinkTo=FindSetting(L"UpHotkey");
if (GetWinVersion()>=WIN_VER_WIN8)
{
// Windows 8
HideSettingGroup(L"StatusBar",true);
HideSetting(L"ShowFreeSpace",true);
FindSetting(L"ShowFreeSpace2")->pLinkTo=FindSetting(L"ShowFreeSpace");
FindSetting(L"ShowInfoTip2")->pLinkTo=FindSetting(L"ShowInfoTip");
HideSettingGroup(L"UpButton",true);
UpdateSetting(L"ShowUpButton",CComVariant(0),false); HideSetting(L"ShowUpButton",true);
HideSettingGroup(L"FileOperation",true);
UpdateSetting(L"ReplaceFileUI",CComVariant(0),false); HideSetting(L"ReplaceFileUI",true);
UpdateSetting(L"ReplaceFolderUI",CComVariant(0),false); HideSetting(L"ReplaceFolderUI",true);
UpdateSetting(L"ShowCaption",CComVariant(0),false); HideSetting(L"ShowCaption",true);
UpdateSetting(L"ShowIcon",CComVariant(0),false); HideSetting(L"ShowIcon",true);
UpdateSetting(L"FixFolderScroll",CComVariant(0),false); HideSetting(L"FixFolderScroll",true);
UpdateSetting(L"ToolbarItems",CComVariant(g_DefaultToolbar2),false);
if (GetWinVersion()>=WIN_VER_WIN10)
{
FindSetting(L"TreeStyle")[1].flags|=CSetting::FLAG_HIDDEN;
}
}
else
{
// Windows 7
int delay=0;
BOOL comp;
if (SUCCEEDED(DwmIsCompositionEnabled(&comp)) && comp)
delay=500;
UpdateSetting(L"MoreProgressDelay",CComVariant(delay),false);
HideSetting(L"UpHotkey2",true);
HideSettingGroup(L"StatusBar8",true);
}
CRegKey regKey;
wchar_t language[100]=L"";
if (regKey.Open(HKEY_LOCAL_MACHINE,L"Software\\OpenShell\\OpenShell",KEY_READ|KEY_WOW64_64KEY)==ERROR_SUCCESS)
{
ULONG size=_countof(language);
if (regKey.QueryStringValue(L"DefaultLanguage",language,&size)!=ERROR_SUCCESS)
language[0]=0;
}
UpdateSetting(L"Language",language,false);
}
static bool g_bCopyHook0; // initial state of the copy hook before the settings are edited
void InitSettings( void )
{
InitSettings(g_Settings,COMPONENT_EXPLORER,NULL);
g_bCopyHook0=GetWinVersion()<WIN_VER_WIN8 && (GetSettingBool(L"ReplaceFileUI") || GetSettingBool(L"ReplaceFolderUI") || GetSettingBool(L"EnableMore"));
}
void ClosingSettings( HWND hWnd, int flags, int command )
{
if (command==IDOK)
{
bool bCopyHook=GetWinVersion()<WIN_VER_WIN8 && (GetSettingBool(L"ReplaceFileUI") || GetSettingBool(L"ReplaceFolderUI") || GetSettingBool(L"EnableMore"));
if ((flags&CSetting::FLAG_COLD) || (bCopyHook && !g_bCopyHook0))
MessageBox(hWnd,LoadStringEx(IDS_NEW_SETTINGS2),LoadStringEx(IDS_APP_TITLE),MB_OK|MB_ICONWARNING);
else if (flags&CSetting::FLAG_WARM)
MessageBox(hWnd,LoadStringEx(IDS_NEW_SETTINGS1),LoadStringEx(IDS_APP_TITLE),MB_OK|MB_ICONINFORMATION);
}
}
void SettingChangedCallback( const CSetting *pSetting )
{
}
void EditSettings( void )
{
STARTUPINFO startupInfo={sizeof(startupInfo)};
PROCESS_INFORMATION processInfo;
memset(&processInfo,0,sizeof(processInfo));
wchar_t path[_MAX_PATH];
GetModuleFileName(g_Instance,path,_countof(path));
wchar_t *end=PathFindFileName(path);
*end=0;
Strcpy(end,(int)(path+_countof(path)-end),L"ClassicExplorerSettings.exe");
if (CreateProcess(NULL,path,NULL,NULL,TRUE,0,NULL,NULL,&startupInfo,&processInfo))
{
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}
}
void ShowSettingsMenu( HWND parent, int x, int y )
{
HMENU menu=CreatePopupMenu();
AppendMenu(menu,MF_STRING,CBandWindow::ID_SETTINGS,FindTranslation(L"Toolbar.Settings",L"Classic Explorer Settings"));
int size=16;
HBITMAP shellBmp=NULL;
HICON icon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(IDI_APPICON),IMAGE_ICON,size,size,LR_DEFAULTCOLOR);
if (icon)
{
shellBmp=BitmapFromIcon(icon,size,NULL,true);
MENUITEMINFO mii={sizeof(mii)};
mii.fMask=MIIM_BITMAP;
mii.hbmpItem=shellBmp;
SetMenuItemInfo(menu,CBandWindow::ID_SETTINGS,FALSE,&mii);
}
MENUINFO info={sizeof(info),MIM_STYLE,MNS_CHECKORBMP};
SetMenuInfo(menu,&info);
DWORD pos=GetMessagePos();
if (!GetSettingBool(L"EnableSettings"))
EnableMenuItem(menu,0,MF_BYPOSITION|MF_GRAYED);
int res=TrackPopupMenu(menu,TPM_RIGHTBUTTON|TPM_RETURNCMD,x,y,0,parent,NULL);
DestroyMenu(menu);
if (shellBmp) DeleteObject(shellBmp);
if (res==CBandWindow::ID_SETTINGS)
EditSettings();
}
void ShowExplorerSettings( void )
{
WaitDllInitThread();
if (!GetSettingBool(L"EnableSettings"))
return;
wchar_t title[100];
DWORD ver=GetVersionEx(g_Instance);
if (ver)
Sprintf(title,_countof(title),LoadStringEx(IDS_SETTINGS_TITLE_VER),ver>>24,(ver>>16)&0xFF,ver&0xFFFF);
else
Sprintf(title,_countof(title),LoadStringEx(IDS_SETTINGS_TITLE));
EditSettings(title,true,0);
}
bool DllImportSettingsXml( const wchar_t *fname )
{
return ImportSettingsXml(fname);
}
bool DllExportSettingsXml( const wchar_t *fname )
{
return ExportSettingsXml(fname);
}
#ifndef _WIN64
bool DllSaveAdmx( const char *admxFile, const char *admlFile, const char *docFile, const wchar_t *language )
{
WaitDllInitThread();
HMODULE dll=NULL;
if (language[0])
{
wchar_t path[_MAX_PATH];
GetCurrentDirectory(_countof(path),path);
PathAppend(path,language);
PathAddExtension(path,L".dll");
dll=LoadLibraryEx(path,NULL,LOAD_LIBRARY_AS_DATAFILE|LOAD_LIBRARY_AS_IMAGE_RESOURCE);
}
LoadTranslationResources(dll,NULL);
return SaveAdmx(COMPONENT_EXPLORER,admxFile,admlFile,docFile);
}
#endif

View File

@@ -1,9 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
#pragma once
void InitSettings( void );
void EditSettings( void );
void ShowSettingsMenu( HWND parent, int x, int y );

View File

@@ -1,134 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
// ShareOverlay.cpp : Implementation of CShareOverlay
#include "stdafx.h"
#include "ShareOverlay.h"
// CShareOverlay - adds an overlay icon to the shared folders
bool CShareOverlay::s_bEnabled=false;
bool CShareOverlay::s_bShowHidden=false;
int CShareOverlay::s_Index;
wchar_t CShareOverlay::s_IconPath[_MAX_PATH];
CShareOverlay::CShareOverlay( void )
{
SHGetDesktopFolder(&m_pDesktop);
m_pShareInfo=NULL;
m_ShareCount=0;
m_UpdateTime=0;
InitializeCriticalSection(&m_Section);
}
void CShareOverlay::FinalRelease( void )
{
DeleteCriticalSection(&m_Section);
if (m_pShareInfo)
NetApiBufferFree(m_pShareInfo);
m_pShareInfo=NULL;
}
void CShareOverlay::InitOverlay( const wchar_t *icon, bool showHidden )
{
s_bEnabled=true;
if (icon)
{
Strcpy(s_IconPath,_countof(s_IconPath),icon);
wchar_t *c=wcsrchr(s_IconPath,',');
if (c)
{
*c=0;
s_Index=-_wtol(c+1);
}
else
s_Index=0;
}
else
{
Strcpy(s_IconPath,_countof(s_IconPath),L"%windir%\\system32\\imageres.dll");
s_Index=-164;
}
DoEnvironmentSubst(s_IconPath,_countof(s_IconPath));
s_bShowHidden=showHidden;
}
HRESULT CShareOverlay::_InternalQueryInterface( REFIID iid, void** ppvObject )
{
if (iid==IID_IUnknown)
{
AddRef();
*ppvObject=static_cast<IUnknown*>(this);
return S_OK;
}
if (iid==IID_IShellIconOverlayIdentifier && s_bEnabled)
{
// only support IShellIconOverlayIdentifier if s_bEnabled is true
AddRef();
*ppvObject=static_cast<IShellIconOverlayIdentifier*>(this);
return S_OK;
}
*ppvObject=NULL;
return E_NOINTERFACE;
}
STDMETHODIMP CShareOverlay::IsMemberOf( LPCWSTR pwszPath, DWORD dwAttrib )
{
EnterCriticalSection(&m_Section);
UpdateShareInfo();
HRESULT res=S_FALSE;
if (m_pShareInfo)
{
for (DWORD i=0;i<m_ShareCount;i++)
{
if (!(m_pShareInfo[i].shi502_type&STYPE_SPECIAL) && _wcsicmp(pwszPath,m_pShareInfo[i].shi502_path)==0)
{
if (s_bShowHidden)
{
res=S_OK;
break;
}
int len=Strlen(m_pShareInfo[i].shi502_netname);
if (len==0 || m_pShareInfo[i].shi502_netname[len-1]!='$')
{
res=S_OK;
break;
}
}
}
}
LeaveCriticalSection(&m_Section);
return res;
}
STDMETHODIMP CShareOverlay::GetOverlayInfo( LPWSTR pwszIconFile, int cchMax, int * pIndex, DWORD * pdwFlags )
{
Strcpy(pwszIconFile,cchMax,s_IconPath);
*pIndex=s_Index;
*pdwFlags=ISIOI_ICONFILE;
if (s_Index)
*pdwFlags|=ISIOI_ICONINDEX;
return S_OK;
}
STDMETHODIMP CShareOverlay::GetPriority( int * pIPriority )
{
*pIPriority=0;
return S_OK;
}
void CShareOverlay::UpdateShareInfo( void )
{
int time=GetTickCount();
if (time-m_UpdateTime<5000)
return;
m_UpdateTime=time;
if (m_pShareInfo)
NetApiBufferFree(m_pShareInfo);
m_pShareInfo=NULL;
DWORD countAll;
if (NetShareEnum(NULL,502,(BYTE**)&m_pShareInfo,MAX_PREFERRED_LENGTH,&m_ShareCount,&countAll,NULL)!=NERR_Success)
m_ShareCount=0;
}

View File

@@ -1,60 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
// ShareOverlay.h : Declaration of the CShareOverlay
#pragma once
#include "resource.h" // main symbols
#include <lm.h>
#include "ClassicExplorer_i.h"
// CShareOverlay
class ATL_NO_VTABLE CShareOverlay :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CShareOverlay, &CLSID_ShareOverlay>,
public IShellIconOverlayIdentifier
{
public:
CShareOverlay( void );
DECLARE_REGISTRY_RESOURCEID(IDR_SHAREOVERLAY)
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct( void )
{
return S_OK;
}
void FinalRelease( void );
public:
HRESULT _InternalQueryInterface( REFIID iid, void** ppvObject );
// IShellIconOverlayIdentifier
STDMETHOD (IsMemberOf)( LPCWSTR pwszPath, DWORD dwAttrib );
STDMETHOD (GetOverlayInfo)( LPWSTR pwszIconFile, int cchMax, int * pIndex, DWORD * pdwFlags );
STDMETHOD (GetPriority)( int * pIPriority );
static void InitOverlay( const wchar_t *icon, bool showHidden );
private:
CComPtr<IShellFolder> m_pDesktop;
CRITICAL_SECTION m_Section;
SHARE_INFO_502 *m_pShareInfo;
DWORD m_ShareCount;
int m_UpdateTime;
void UpdateShareInfo( void );
static bool s_bEnabled;
static bool s_bShowHidden;
static int s_Index;
static wchar_t s_IconPath[_MAX_PATH];
};
OBJECT_ENTRY_AUTO(__uuidof(ShareOverlay), CShareOverlay)

View File

@@ -1,49 +0,0 @@
HKCR
{
ClassicExplorer.ShareOverlay.1 = s 'ShareOverlay Class'
{
CLSID = s '{594D4122-1F87-41E2-96C7-825FB4796516}'
}
ClassicExplorer.ShareOverlay = s 'ShareOverlay Class'
{
CLSID = s '{594D4122-1F87-41E2-96C7-825FB4796516}'
CurVer = s 'ClassicExplorer.ShareOverlay.1'
}
NoRemove CLSID
{
ForceRemove {594D4122-1F87-41E2-96C7-825FB4796516} = s 'ShareOverlay Class'
{
ProgID = s 'ClassicExplorer.ShareOverlay.1'
VersionIndependentProgID = s 'ClassicExplorer.ShareOverlay'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{BF8D124A-A4E0-402F-8152-4EF377E62586}'
}
}
}
HKLM
{
NoRemove SOFTWARE
{
NoRemove Microsoft
{
NoRemove Windows
{
NoRemove CurrentVersion
{
NoRemove Explorer
{
NoRemove ShellIconOverlayIdentifiers
{
ForceRemove ShareOverlay = s '{594D4122-1F87-41E2-96C7-825FB4796516}'
}
}
}
}
}
}
}

View File

@@ -1,283 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
// dllmain.cpp : Implementation of DllMain.
#include "stdafx.h"
#include "resource.h"
#include "..\Lib\resource.h"
#include "dllmain.h"
#include "ShareOverlay.h"
#include "SettingsUI.h"
#include "Settings.h"
#include "Translations.h"
#include "ResourceHelper.h"
#include "FNVHash.h"
#include <uxtheme.h>
#include <dwmapi.h>
#pragma comment(linker, \
"\"/manifestdependency:type='Win32' "\
"name='Microsoft.Windows.Common-Controls' "\
"version='6.0.0.0' "\
"processorArchitecture='*' "\
"publicKeyToken='6595b64144ccf1df' "\
"language='*'\"")
CClassicExplorerModule _AtlModule;
bool g_bLogLevel;
void InitClassicCopyProcess( void );
void InitClassicCopyThread( void );
void FreeClassicCopyThread( void );
bool g_bHookCopyThreads;
bool g_bExplorerExe;
LPCWSTR g_LoadedSettingsAtom;
static int g_LoadDialogs[]=
{
IDD_SETTINGS,0x04000000,
IDD_SETTINGSTREE,0x04000000,
IDD_BROWSEFORICON,0x04000000,
IDD_LANGUAGE,0x04000000,
IDD_CUSTOMTOOLBAR,0x04000000,
IDD_CUSTOMTREE,0x04000000,
IDD_PROGRESS,0x04000004,
0
};
const wchar_t *GetDocRelativePath( void )
{
return DOC_PATH;
}
struct FindChild
{
const wchar_t *className;
HWND hWnd;
};
static BOOL CALLBACK EnumChildProc( HWND hwnd, LPARAM lParam )
{
FindChild &find=*(FindChild*)lParam;
wchar_t name[256];
GetClassName(hwnd,name,_countof(name));
if (_wcsicmp(name,find.className)!=0) return TRUE;
find.hWnd=hwnd;
return FALSE;
}
HWND FindChildWindow( HWND hwnd, const wchar_t *className )
{
FindChild find={className};
EnumChildWindows(hwnd,EnumChildProc,(LPARAM)&find);
return find.hWnd;
}
static DWORD g_TlsIndex;
TlsData *GetTlsData( void )
{
void *pData=TlsGetValue(g_TlsIndex);
if (!pData)
{
pData=(void*)LocalAlloc(LPTR,sizeof(TlsData));
memset(pData,0,sizeof(TlsData));
TlsSetValue(g_TlsIndex,pData);
}
return (TlsData*)pData;
}
static HANDLE g_DllInitThread;
static DWORD CALLBACK DllInitThread( void* )
{
{
g_bLogLevel=false;
CRegKey regKey;
if (regKey.Open(HKEY_CURRENT_USER,L"Software\\OpenShell\\ClassicExplorer\\Settings",KEY_READ|KEY_WOW64_64KEY)==ERROR_SUCCESS)
{
DWORD log;
if (regKey.QueryDWORDValue(L"LogLevel",log)==ERROR_SUCCESS)
g_bLogLevel=log!=0;
}
}
InitSettings();
wchar_t path[_MAX_PATH];
GetModuleFileName(g_Instance,path,_countof(path));
*PathFindFileName(path)=0;
wchar_t fname[_MAX_PATH];
Sprintf(fname,_countof(fname),L"%s" INI_PATH L"ExplorerL10N.ini",path);
CString language=GetSettingString(L"Language");
ParseTranslations(fname,language);
HINSTANCE resInstance=LoadTranslationDll(language);
LoadTranslationResources(resInstance,g_LoadDialogs);
if (resInstance)
FreeLibrary(resInstance);
if (GetSettingBool(L"ShareOverlay") && (g_bExplorerExe || !GetSettingBool(L"ShareExplorer")))
CShareOverlay::InitOverlay(GetSettingString(L"ShareOverlayIcon"),GetSettingBool(L"ShareOverlayHidden"));
return 0;
}
void WaitDllInitThread( void )
{
ATLASSERT(g_DllInitThread);
WaitForSingleObject(g_DllInitThread,INFINITE);
}
// DLL Entry Point
extern "C" BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved )
{
if (dwReason==DLL_PROCESS_ATTACH)
{
g_Instance=hInstance;
g_TlsIndex=TlsAlloc();
if (g_TlsIndex==TLS_OUT_OF_INDEXES)
return FALSE; // TLS failure
CRegKey regSettings, regSettingsUser, regPolicy, regPolicyUser;
bool bUpgrade=OpenSettingsKeys(COMPONENT_EXPLORER,regSettings,regSettingsUser,regPolicy,regPolicyUser);
enum
{
SETTING_SHARE_OVERLAY,
SETTING_SHARE_EXPLORER,
SETTING_FILE_EXPLORER,
SETTING_REPLACE_FILE,
SETTING_REPLACE_FOLDER,
SETTING_MORE,
SETTING_WHITE_LIST,
SETTING_BLACK_LIST,
};
CSetting settings[]={
{L"ShareOverlay",CSetting::TYPE_BOOL,0,0,0},
{L"ShareExplorer",CSetting::TYPE_BOOL,0,0,1},
{L"FileExplorer",CSetting::TYPE_BOOL,0,0,1},
{L"ReplaceFileUI",CSetting::TYPE_BOOL,0,0,1},
{L"ReplaceFolderUI",CSetting::TYPE_BOOL,0,0,1},
{L"EnableMore",CSetting::TYPE_BOOL,0,0,0},
{L"ProcessWhiteList",CSetting::TYPE_STRING,0,0,L""},
{L"ProcessBlackList",CSetting::TYPE_STRING,0,0,L""},
{NULL}
};
wchar_t path[_MAX_PATH];
GetModuleFileName(NULL,path,_countof(path));
const wchar_t *exe=PathFindFileName(path);
g_bExplorerExe=(_wcsicmp(exe,L"explorer.exe")==0 || _wcsicmp(exe,L"verclsid.exe")==0);
bool bReplaceUI=false;
if (GetWinVersion()<=WIN_VER_WIN7)
{
settings[SETTING_REPLACE_FILE].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
settings[SETTING_REPLACE_FOLDER].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
settings[SETTING_MORE].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
bReplaceUI=(GetSettingBool(settings[SETTING_REPLACE_FILE]) || GetSettingBool(settings[SETTING_REPLACE_FOLDER]) || GetSettingBool(settings[SETTING_MORE]));
}
settings[SETTING_FILE_EXPLORER].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
if (_wcsicmp(exe,L"regsvr32.exe")!=0 && _wcsicmp(exe,L"msiexec.exe")!=0 && _wcsicmp(exe,L"ClassicExplorerSettings.exe")!=0 && !g_bExplorerExe)
{
// some arbitrary app
settings[SETTING_SHARE_OVERLAY].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
settings[SETTING_SHARE_EXPLORER].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
if ((!GetSettingBool(settings[SETTING_SHARE_OVERLAY]) || GetSettingBool(settings[SETTING_SHARE_EXPLORER])) && (!bReplaceUI || GetSettingBool(settings[SETTING_FILE_EXPLORER])))
return FALSE;
settings[SETTING_WHITE_LIST].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
CString whiteList=GetSettingString(settings[SETTING_WHITE_LIST]);
if (!whiteList.IsEmpty())
{
// check for whitelisted process names
const wchar_t *str=whiteList;
bool bFound=false;
while (*str)
{
wchar_t token[_MAX_PATH];
str=GetToken(str,token,_countof(token),L",;");
wchar_t *start=token;
while (*start==' ')
start++;
wchar_t *end=start+Strlen(start);
while (end>start && end[-1]==' ')
end--;
*end=0;
if (_wcsicmp(exe,start)==0)
{
bFound=true;
break;
}
}
if (!bFound)
return FALSE;
}
else
{
settings[SETTING_BLACK_LIST].LoadValue(regSettings,regSettingsUser,regPolicy,regPolicyUser);
// check for blacklisted process names
CString blackList=GetSettingString(settings[SETTING_BLACK_LIST]);
const wchar_t *str=blackList;
while (*str)
{
wchar_t token[_MAX_PATH];
str=GetToken(str,token,_countof(token),L",;");
wchar_t *start=token;
while (*start==' ')
start++;
wchar_t *end=start+Strlen(start);
while (end>start && end[-1]==' ')
end--;
*end=0;
if (_wcsicmp(exe,start)==0)
return FALSE;
}
}
}
g_LoadedSettingsAtom=(LPCWSTR)GlobalAddAtom(L"ClassicExplorer.LoadedSettings");
g_bHookCopyThreads=(bReplaceUI && (g_bExplorerExe || !GetSettingBool(settings[SETTING_FILE_EXPLORER])));
if (g_bHookCopyThreads)
{
InitClassicCopyProcess();
InitClassicCopyThread();
}
g_DllInitThread=CreateThread(NULL,0,DllInitThread,NULL,0,NULL);
}
if (dwReason==DLL_THREAD_ATTACH)
{
if (g_bHookCopyThreads)
InitClassicCopyThread();
}
if (dwReason==DLL_THREAD_DETACH)
{
void *pData=TlsGetValue(g_TlsIndex);
if (pData)
LocalFree((HLOCAL)pData);
TlsSetValue(g_TlsIndex,NULL);
if (g_bHookCopyThreads)
FreeClassicCopyThread();
}
if (dwReason==DLL_PROCESS_DETACH)
{
void *pData=TlsGetValue(g_TlsIndex);
if (pData)
LocalFree((HLOCAL)pData);
TlsSetValue(g_TlsIndex,NULL);
TlsFree(g_TlsIndex);
GlobalDeleteAtom((ATOM)(uintptr_t)g_LoadedSettingsAtom);
}
return _AtlModule.DllMain(dwReason, lpReserved);
}

View File

@@ -1,44 +0,0 @@
// Classic Shell (c) 2009-2017, Ivo Beltchev
// Open-Shell (c) 2017-2018, The Open-Shell Team
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
// dllmain.h : Declaration of module class.
#pragma once
#include "ClassicExplorer_i.h"
#include <vector>
class CClassicExplorerModule : public CAtlDllModuleT< CClassicExplorerModule >
{
public :
DECLARE_LIBID(LIBID_ClassicExplorerLib)
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_CLASSICEXPLORER, "{65843E27-A491-429F-84A0-30A947E20F92}")
};
extern class CClassicExplorerModule _AtlModule;
// Some utility functions used by various modules
HWND FindChildWindow( HWND hwnd, const wchar_t *className );
INT_PTR RunSettingsDialog( HWND hWndParent, DLGPROC lpDialogFunc );
struct TlsData
{
// the bho instance that runs on this thread
class CExplorerBHO *bho;
// the band instance that runs on this thread
class CExplorerBand *band;
// one hook for each copy thread
HHOOK copyHook;
// bCopyMultiFile is true if the first dialog in this thread is multi-file (IDD_FILEMULTI)
// if so, all the rest are multi-file. this makes the UI consistent (like the position of the Yes button doesn't change)
bool bCopyMultiFile;
};
TlsData *GetTlsData( void );
extern LPCWSTR g_LoadedSettingsAtom;
extern bool g_bLogLevel;
void WaitDllInitThread( void );

View File

@@ -1,336 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by ClassicExplorer.rc
//
#define IDI_APPICON 1
#define IDI_UP 2
#define IDI_UPDISABLED 3
#define IDI_UP2NORMAL 4
#define IDI_UP2PRESSED 5
#define IDI_UP2HOT 6
#define IDI_UP2DISABLED 7
#define IDR_CLASSICEXPLORER 101
#define IDR_EXPLORERBAND 102
#define IDR_EXPLORERBHO 104
#define IDR_SHAREOVERLAY 105
#define IDD_FILEMULTI 129
#define IDD_FILE 130
#define IDC_LINKMORE 204
#define IDC_CHECKBHO 205
#define IDC_CHECKCOPY 206
#define IDC_STATICPROMPT1 207
#define IDC_CHECKBIG 207
#define IDC_STATICPROMPT2 208
#define IDD_FILEMULTIR 208
#define IDD_FILER 209
#define IDC_STATICICON 209
#define IDC_CHECK1 210
#define IDD_FOLDERMULTI 210
#define IDC_CHECK2 211
#define IDD_FOLDER 211
#define IDC_CHECK3 212
#define IDD_FOLDERR 212
#define IDC_CHECK4 213
#define IDD_FOLDERMULTIR 213
#define IDC_CHECK5 214
#define IDC_CHECK6 215
#define IDR_CLASSICCOPYEXT 216
#define IDC_CHECKNOFADE 218
#define IDC_CHECKSIZE 219
#define IDC_CHECKAUTO 220
#define IDC_CHECKCOPYFOLDER 221
#define IDC_CHECK7 222
#define IDC_CHECK8 223
#define IDC_COMBOSTYLE 224
#define IDC_CHECKOFFSET 225
#define IDC_CHECKUP 226
#define IDC_CHECKTITLE 227
#define IDC_CHECKICON 228
#define IDC_CHECKCRUMBS 229
#define IDC_CHECKSHARED 230
#define IDC_CHECKSHAREDEXP 231
#define IDC_CHECKCOPYEXP 233
#define IDC_CHECKMORE 234
#define IDC_CHECKINFO 235
#define IDC_COMBOCOMMAND 239
#define IDC_EDITLABEL 240
#define IDC_EDITTIP 241
#define IDC_BUTTONLINK 242
#define IDC_BUTTONCOMMAND 243
#define IDC_EDITICON 245
#define IDC_BUTTONICON 246
#define IDC_EDITICOND 247
#define IDC_BUTTONICOND 248
#define IDC_STATICCOMMAND 251
#define IDC_STATICLINK 252
#define IDC_STATICTEXT 253
#define IDC_STATICINFOTIP 254
#define IDC_STATICICOND 255
#define IDC_ICONN 256
#define IDC_ICOND 257
#define IDC_COMBOLINK 258
#define IDC_STATICICON1 260
#define IDC_BUTTONRESET 261
#define IDC_STATICFNAME 1003
#define IDC_STATICSRCSIZE 1004
#define IDC_STATICSRCTIME 1005
#define IDC_STATICDSTSIZE 1006
#define IDC_STATICDSTTIME 1007
#define IDC_STATICSRCICON 1008
#define IDC_STATICDSTICON 1009
#define IDD_CUSTOMTOOLBAR 2001
#define IDS_APP_TITLE 2001
#define IDS_SETTINGS_BTN 2002
#define IDS_NEW_SETTINGS1 2003
#define IDS_NEW_SETTINGS2 2004
#define IDS_SETTINGS_TITLE 2005
#define IDS_SETTINGS_TITLE_VER 2006
#define IDS_LANGUAGE_SETTINGS 2010
#define IDS_TOOLBAR_SETTINGS 2011
#define IDS_BIG_BUTTONS 2012
#define IDS_BIG_BUTTONS_TIP 2013
#define IDS_SMALL_SIZE 2014
#define IDS_SMALL_SIZE_TIP 2015
#define IDS_LARGE_SIZE 2016
#define IDS_LARGE_SIZE_TIP 2017
#define IDS_MENU_SIZE 2018
#define IDS_MENU_SIZE_TIP 2019
#define IDS_SAME_SIZE 2020
#define IDS_SAME_SIZE_TIP 2021
#define IDS_LIST_MODE 2022
#define IDS_LIST_MODE_TIP 2023
#define IDS_RESIZEABLE 2024
#define IDS_RESIZEABLE_TIP 2025
#define IDS_BUTTONS_SETTINGS 2026
#define IDS_NAVIGATION_SETTINGS 2027
#define IDS_TREE_STYLE 2028
#define IDS_TREE_STYLE_TIP 2029
#define IDS_XPCLASSIC 2030
#define IDS_XPCLASSIC_TIP 2031
#define IDS_XPSIMPLE 2032
#define IDS_XPSIMPLE_TIP 2033
#define IDS_VISTA 2034
#define IDS_VISTA_TIP 2035
#define IDS_TREE_SPACING 2036
#define IDS_TREE_SPACING_TIP 2037
#define IDS_NO_FADE 2038
#define IDS_NO_FADE_TIP 2039
#define IDS_FULL_INDENT 2040
#define IDS_FULL_INDENT_TIP 2041
#define IDS_NAVIGATE 2042
#define IDS_NAVIGATE_TIP 2043
#define IDS_NAV_DELAY 2044
#define IDS_NAV_DELAY_TIP 2045
#define IDS_ALT_ENTER 2046
#define IDS_ALT_ENTER_TIP 2047
#define IDS_FIX_SCROLL 2048
#define IDS_FIX_SCROLL_TIP 2049
#define IDS_TITLE_SETTINGS 2050
#define IDS_SHOW_CAPTION 2051
#define IDS_SHOW_CAPTION_TIP 2052
#define IDS_SHOW_ICON 2053
#define IDS_SHOW_ICON_TIP 2054
#define IDS_NO_BREADCRUMBS 2055
#define IDS_NO_BREADCRUMBS_TIP 2056
#define IDS_ADDRESS_HISTORY 2057
#define IDS_ADDRESS_HISTORY_TIP 2058
#define IDS_NORMAL_HISTORY 2059
#define IDS_NORMAL_HISTORY_TIP 2060
#define IDS_SIMPLE_PATH 2061
#define IDS_SIMPLE_PATH_TIP 2062
#define IDS_EXTENDED_PATH 2063
#define IDS_EXTENDED_PATH_TIP 2064
#define IDS_HIDE_SEARCH 2065
#define IDS_HIDE_SEARCH_TIP 2066
#define IDS_UP_SETTINGS 2067
#define IDS_SHOW_UP 2068
#define IDS_SHOW_UP_TIP 2069
#define IDS_DONT_SHOW 2070
#define IDS_DONT_SHOW_TIP 2071
#define IDS_BEFORE_BACK 2072
#define IDS_BEFORE_BACK_TIP 2073
#define IDS_AFTER_BACK 2074
#define IDS_AFTER_BACK_TIP 2075
#define IDS_UP_NORMAL 2076
#define IDS_UP_NORMAL_TIP 2077
#define IDS_UP_HOT 2078
#define IDS_UP_HOT_TIP 2079
#define IDS_UP_PRESSED 2080
#define IDS_UP_PRESSED_TIP 2081
#define IDS_UP_DISABLED 2082
#define IDS_UP_DISABLED_TIP 2083
#define IDS_UP_SIZE 2084
#define IDS_UP_SIZE_TIP 2085
#define IDS_STATUS_SETTINGS 2086
#define IDS_FREE_SPACE 2087
#define IDS_FREE_SPACE_TIP 2088
#define IDS_INFO_TIP 2089
#define IDS_INFO_TIP_TIP 2090
#define IDS_FORCE_REFRESH 2091
#define IDS_FORCE_REFRESH_TIP 2092
#define IDS_FILE_SETTINGS 2093
#define IDS_FILE_UI 2094
#define IDS_FILE_UI_TIP 2095
#define IDS_FOLDER_UI 2096
#define IDS_FOLDER_UI_TIP 2097
#define IDS_ALERT_LEVEL 2098
#define IDS_ALERT_LEVEL_TIP 2099
#define IDS_NO_ALERT 2100
#define IDS_NO_ALERT_TIP 2101
#define IDS_SYS_FILES 2102
#define IDS_SYS_FILES_TIP 2103
#define IDS_RO_FILES 2104
#define IDS_RO_FILES_TIP 2105
#define IDS_MORE 2106
#define IDS_MORE_TIP 2107
#define IDS_MORE_DELAY 2108
#define IDS_MORE_DELAY_TIP 2109
#define IDS_FILE_EXPLORER 2110
#define IDS_FILE_EXPLORER_TIP 2111
#define IDS_FILEPANE_SETTINGS 2112
#define IDS_SHARE 2113
#define IDS_SHARE_TIP 2114
#define IDS_SHARE_ICON 2115
#define IDS_SHARE_ICON_TIP 2116
#define IDS_SHARE_EXPLORER 2117
#define IDS_SHARE_EXPLORER_TIP 2118
#define IDS_HEADERS 2119
#define IDS_HEADERS_TIP 2120
#define IDS_SCROLLBAR 2121
#define IDS_SCROLLBAR_TIP 2122
#define IDS_SCROLLBAR_DEFAULT 2123
#define IDS_SCROLLBAR_DEFAULT_TIP 2124
#define IDS_SCROLLBAR_ON 2125
#define IDS_SCROLLBAR_ON_TIP 2126
#define IDS_SCROLLBAR_OFF 2127
#define IDS_SCROLLBAR_OFF_TIP 2128
#define IDS_COMMAND_TIP 2129
#define IDS_LINK_TIP 2130
#define IDS_TEXT_TIP 2131
#define IDS_TIP_TIP 2132
#define IDS_ICON_TIP 2133
#define IDS_ICOND_TIP 2134
#define IDS_RESTORE_TIP 2135
#define IDS_SEPARATOR_TIP 2136
#define IDS_UP_TIP 2137
#define IDS_CUT_TIP 2138
#define IDS_COPY_TIP 2139
#define IDS_PASTE_TIP 2140
#define IDS_DELETE_TIP 2141
#define IDS_PROPERTIES_TIP 2142
#define IDS_EMAIL_TIP 2143
#define IDS_SETTINGS_TIP 2144
#define IDS_REFRESH_TIP 2145
#define IDS_STOP_TIP 2146
#define IDS_RENAME_TIP 2147
#define IDS_MOVETO_TIP 2148
#define IDS_COPYTO_TIP 2149
#define IDS_UNDO_TIP 2150
#define IDS_REDO_TIP 2151
#define IDS_SELECTALL_TIP 2152
#define IDS_DESELECT_TIP 2153
#define IDS_INVERT_TIP 2154
#define IDS_BACK_TIP 2155
#define IDS_FORWARD_TIP 2156
#define IDS_VIEWTILES_TIP 2157
#define IDS_VIEWDEATAILS_TIP 2158
#define IDS_VIEWLIST_TIP 2159
#define IDS_VIEWCONTENT_TIP 2160
#define IDS_VIEWICONS1_TIP 2161
#define IDS_VIEWICONS2_TIP 2162
#define IDS_VIEWICONS3_TIP 2163
#define IDS_VIEWICONS4_TIP 2164
#define IDS_OPEN_TIP 2165
#define IDS_CUSTOM_TIP 2166
#define IDS_NEWFOLDER_TIP 2167
#define IDS_SCROLLTIP 2168
#define IDS_SCROLLTIP_TIP 2169
#define IDS_NAV_DEFAULT 2170
#define IDS_NAV_DEFAULT_TIP 2171
#define IDS_NAV_KBD 2172
#define IDS_NAV_KBD_TIP 2173
#define IDS_NAV_ALWAYS 2174
#define IDS_NAV_ALWAYS_TIP 2175
#define IDS_ALT_D 2176
#define IDS_ALT_D_TIP 2177
#define IDS_SORT_TIP 2178
#define IDS_GROUP_TIP 2179
#define IDS_PASTE_SHORTCUT_TIP 2180
#define IDS_UP_HOTKEY 2181
#define IDS_UP_HOTKEY_TIP 2182
#define IDS_MAP_DRIVE_TIP 2183
#define IDS_DISCONNECT_DRIVE_TIP 2184
#define IDS_CUSTOMIZEFOLDER_TIP 2185
#define IDS_SEPARATOR_ITEM 2186
#define IDS_UP_ITEM 2187
#define IDS_CUT_ITEM 2188
#define IDS_COPY_ITEM 2189
#define IDS_PASTE_ITEM 2190
#define IDS_PASTE_LNK_ITEM 2191
#define IDS_DELETE_ITEM 2192
#define IDS_PROPERTIES_ITEM 2193
#define IDS_EMAIL_ITEM 2194
#define IDS_SETTINGS_ITEM 2195
#define IDS_REFRESH_ITEM 2196
#define IDS_STOP_ITEM 2197
#define IDS_RENAME_ITEM 2198
#define IDS_NEWFOLDER_ITEM 2199
#define IDS_MOVETO_ITEM 2200
#define IDS_COPYTO_ITEM 2201
#define IDS_UNDO_ITEM 2202
#define IDS_REDO_ITEM 2203
#define IDS_SELECTALL_ITEM 2204
#define IDS_DESELECT_ITEM 2205
#define IDS_INVERT_ITEM 2206
#define IDS_BACK_ITEM 2207
#define IDS_FORWARD_ITEM 2208
#define IDS_MAP_DRIVE_ITEM 2209
#define IDS_DISCONNECT_ITEM 2210
#define IDS_CUSTOMIZE_ITEM 2211
#define IDS_VIEWTILES_ITEM 2212
#define IDS_VIEWDETAILS_ITEM 2213
#define IDS_VIEWLIST_ITEM 2214
#define IDS_VIEWCONTENT_ITEM 2215
#define IDS_VIEWICONS1_ITEM 2216
#define IDS_VIEWICONS2_ITEM 2217
#define IDS_VIEWICONS3_ITEM 2218
#define IDS_VIEWICONS4_ITEM 2219
#define IDS_OPEN_ITEM 2220
#define IDS_SORYBY_ITEM 2221
#define IDS_GROUPBY_ITEM 2222
#define IDS_CUSTOM_ITEM 2223
#define IDS_SHOWSTATUSBAR 2224
#define IDS_SHOWSTATUSBAR_TIP 2225
#define IDS_SHOW_ZONE 2226
#define IDS_SHOW_ZONE_TIP 2227
#define IDS_SHARE_HIDDEN 2228
#define IDS_SHARE_HIDDEN_TIP 2229
#define IDS_NAVPANE_ITEM 2230
#define IDS_NAVPANE_TIP 2231
#define IDS_DETAILSPANE_ITEM 2232
#define IDS_DETAILSPANE_TIP 2233
#define IDS_PREVIEWPANE_ITEM 2234
#define IDS_PREVIEWPANE_TIP 2235
#define IDS_SHOW_EXTENSIONS 2236
#define IDS_SHOW_EXTENSIONS_TIP 2237
#define IDS_HIDDEN_FILES 2238
#define IDS_HIDDEN_FILES_TIP 2239
#define IDS_SYSTEM_FILES 2240
#define IDS_SYSTEM_FILES_TIP 2241
#define IDS_ZIP_ITEM 2242
#define IDS_ZIP_TIP 2243
#define IDS_STATUS_FONT 2244
#define IDS_STATUS_FONT_TIP 2245
#define IDS_FOLDEROPTIONS 2246
#define IDS_FOLDEROPTIONS_TIP 2247
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 227
#define _APS_NEXT_COMMAND_VALUE 32769
#define _APS_NEXT_CONTROL_VALUE 262
#define _APS_NEXT_SYMED_VALUE 106
#endif
#endif

View File

@@ -1,6 +0,0 @@
// stdafx.cpp : source file that includes just the standard includes
// ClassicExplorer.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@@ -1,37 +0,0 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently,
// but are changed infrequently
#pragma once
#include "targetver.h"
#define STRICT_TYPED_ITEMIDS
#define _ATL_APARTMENT_THREADED
#define _ATL_NO_AUTOMATIC_NAMESPACE
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
#include "resource.h"
#include <atlbase.h>
#include <atlcom.h>
#include <atlctl.h>
#include <atlstr.h>
using namespace ATL;
#include <shobjidl.h>
#include <exdispid.h>
#include <shlguid.h>
#include <shlobj.h>
#ifdef BUILD_SETUP
#define INI_PATH L""
#define DOC_PATH L""
#else
#define INI_PATH L"..\\"
#define DOC_PATH L"..\\..\\Docs\\Help\\"
#endif
#include "StringUtils.h"

View File

@@ -1,24 +0,0 @@
#pragma once
// The following macros define the minimum required platform. The minimum required platform
// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run
// your application. The macros work by enabling all features available on platform versions up to and
// including the version specified.
// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER // Specifies that the minimum required platform is Windows 7.
#define WINVER 0x0602 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows 7.
#define _WIN32_WINNT 0x0602 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98.
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
#endif
#ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0.
#define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE.
#endif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Some files were not shown because too many files have changed in this diff Show More