Showing preview only (4,489K chars total). Download the full file or copy to clipboard to get everything.
Repository: microsoft/winfile
Branch: master
Commit: 63ec2cc425c6
Files: 196
Total size: 4.3 MB
Directory structure:
gitextract_ydtylm4l/
├── .gitignore
├── CHANGES.md
├── GNUmakefile
├── LICENSE
├── Package/
│ ├── Package.appxmanifest
│ └── Package.wapproj
├── README.md
├── SECURITY.md
├── SignConfig.xml
├── Winfile.sln
├── build/
│ ├── README.md
│ ├── Winfile.default.props
│ └── Winfile.props
├── help/
│ ├── WINFILE.CHM
│ ├── ini/
│ │ └── index.html
│ └── winfile.hlp
├── nuget/
│ ├── LICENSE.txt
│ ├── VERIFICATION.txt
│ └── winfile.nuspec
├── samples/
│ └── addon/
│ ├── AddOnSample.vcxproj.filters
│ ├── AddonSample.vcxproj
│ ├── dllmain.cpp
│ ├── extproc.cpp
│ ├── resource.h
│ ├── resources.rc
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── targetver.h
│ └── wfext.h
├── src/
│ ├── BagOValues.h
│ ├── Resize.c
│ ├── Resize.h
│ ├── Winfile.vcxproj
│ ├── Winfile.vcxproj.filters
│ ├── dbg.c
│ ├── dbg.h
│ ├── fmifs.h
│ ├── lang/
│ │ ├── res_de-DE.rc
│ │ ├── res_en-US.rc
│ │ ├── res_he-IL.rc
│ │ ├── res_ja-JP.rc
│ │ ├── res_ko-KR.rc
│ │ ├── res_pl-PL.rc
│ │ ├── res_pt-PT.rc
│ │ ├── res_tr-TR.rc
│ │ ├── res_zh-CN.rc
│ │ ├── winfile_de-DE.dlg
│ │ ├── winfile_en-US.dlg
│ │ ├── winfile_he-IL.dlg
│ │ ├── winfile_ja-JP.dlg
│ │ ├── winfile_ko-KR.dlg
│ │ ├── winfile_pl-PL.dlg
│ │ ├── winfile_pt-PT.dlg
│ │ ├── winfile_tr-TR.dlg
│ │ └── winfile_zh-CN.dlg
│ ├── lfn.c
│ ├── lfn.h
│ ├── lfnmisc.c
│ ├── mcopy.cur
│ ├── mhard.cur
│ ├── mlink.cur
│ ├── mmove.cur
│ ├── mpr.h
│ ├── numfmt.c
│ ├── numfmt.h
│ ├── origrc/
│ │ ├── winfile.cs-CZ.rc
│ │ ├── winfile.da-DK.rc
│ │ ├── winfile.de-DE.rc
│ │ ├── winfile.en-US.rc
│ │ ├── winfile.es-ES.rc
│ │ ├── winfile.fi-FI.rc
│ │ ├── winfile.fr-FR.rc
│ │ ├── winfile.hu-HU.rc
│ │ ├── winfile.it-IT.rc
│ │ ├── winfile.ja-JP.rc
│ │ ├── winfile.ko-KR.rc
│ │ ├── winfile.nb-NO.rc
│ │ ├── winfile.nl-NL.rc
│ │ ├── winfile.pl-PL.rc
│ │ ├── winfile.pt-BR.rc
│ │ ├── winfile.ru-RU.rc
│ │ ├── winfile.sv-SE.rc
│ │ ├── winfile.zh-CN.rc
│ │ └── winfile.zh-TW.rc
│ ├── res.h
│ ├── res.rc
│ ├── scopy.cur
│ ├── shard.cur
│ ├── slink.cur
│ ├── smove.cur
│ ├── spinlock.h
│ ├── split.cur
│ ├── suggest.c
│ ├── suggest.h
│ ├── tbar.c
│ ├── treectl.c
│ ├── treectl.h
│ ├── w31rc/
│ │ ├── winfile.Brazil.rc
│ │ ├── winfile.Catalan.rc
│ │ ├── winfile.Czech.rc
│ │ ├── winfile.Danish.rc
│ │ ├── winfile.Dutch.rc
│ │ ├── winfile.Finnish.rc
│ │ ├── winfile.French.Int.rc
│ │ ├── winfile.French.rc
│ │ ├── winfile.German.rc
│ │ ├── winfile.Hungary.rc
│ │ ├── winfile.Italian.rc
│ │ ├── winfile.Japanese.rc
│ │ ├── winfile.Korean.rc
│ │ ├── winfile.Norway.rc
│ │ ├── winfile.Polish.rc
│ │ ├── winfile.Portuguese.rc
│ │ ├── winfile.SimChin.rc
│ │ ├── winfile.Spanish.rc
│ │ ├── winfile.Swedish.rc
│ │ ├── winfile.TradChin.rc
│ │ ├── winfile.Turkish.rc
│ │ └── winfile.USEnglish.rc
│ ├── wfassoc.c
│ ├── wfchgnot.c
│ ├── wfcomman.c
│ ├── wfcopy.c
│ ├── wfcopy.h
│ ├── wfdir.c
│ ├── wfdirrd.c
│ ├── wfdirsrc.c
│ ├── wfdlgs.c
│ ├── wfdlgs.h
│ ├── wfdlgs2.c
│ ├── wfdlgs3.c
│ ├── wfdoc.txt
│ ├── wfdocb.h
│ ├── wfdos.c
│ ├── wfdrives.c
│ ├── wfdrop.c
│ ├── wfdrop.h
│ ├── wfext.c
│ ├── wfext.h
│ ├── wfexti.h
│ ├── wffile.c
│ ├── wfgoto.cpp
│ ├── wfgwl.h
│ ├── wfhelp.h
│ ├── wfinfo.c
│ ├── wfinfo.h
│ ├── wfinit.c
│ ├── wfloc.c
│ ├── wfmem.c
│ ├── wfmem.h
│ ├── wfprint.c
│ ├── wfsearch.c
│ ├── wftree.c
│ ├── wfutil.c
│ ├── winexp.h
│ ├── winfile.c
│ ├── winfile.exe.manifest
│ ├── winfile.h
│ ├── wnetcaps.c
│ └── wnetcaps.h
└── tools/
├── ExeView/
│ ├── ExeView.vcxproj
│ ├── ExeView.vcxproj.filters
│ ├── abstract.txt
│ ├── bmp.cpp
│ ├── exehdr.cpp
│ ├── exehdr.h
│ ├── exeview.txt
│ ├── filllb.cpp
│ ├── global.h
│ ├── iconcur.cpp
│ ├── init.cpp
│ ├── main.cpp
│ ├── main.def
│ ├── main.rc
│ ├── makefile
│ ├── menudlg.cpp
│ ├── res.cpp
│ ├── res.h
│ ├── save.cpp
│ ├── stdafx.cpp
│ ├── stdafx.h
│ └── targetver.h
├── FileSignatureInfo/
│ ├── FileSignatureInfo.cpp
│ ├── FileSignatureInfo.vcxproj
│ ├── FileSignatureInfo.vcxproj.filters
│ ├── VerifySignature.cpp
│ ├── stdafx.cpp
│ ├── stdafx.h
│ └── targetver.h
└── VerifyResources/
├── Resources.h
├── VerifyResources.cpp
├── VerifyResources.vcxproj
├── VerifyResources.vcxproj.filters
├── stdafx.cpp
├── stdafx.h
└── targetver.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
## 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
[Aa][Rr][Mm]64/
x64/
x86/
[Ww]in32/
bld/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# 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
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.o
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# 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
# 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
# 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
# TODO: 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
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/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
# 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
# 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
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Typescript v1 declaration files
typings/
# 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
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
Makefile.depends
*.exe
tags
================================================
FILE: CHANGES.md
================================================
## Changes in v10.4 compared to v10.3 (February 2025)
1. New Korean translation
2. Resizable dialogs in pt-PT
3. Better preservation of display settings when opening a specified directory via command line
4. Relative paths when opening a specified directory via command line
5. Security related warnings and hardening
## Changes in v10.3 compared to v10.2 (March 2024)
1. Ability to launch Administrator command prompt or Explorer in a directory
2. More entries in the Goto dialog, and ability to Page Up/Page Down through the list
3. Resizable dialogs throughout
4. Symbolic links are visually distinguished using >SYMLINK<
5. Translation improvements
6. Can launch the Store version from the command line
7. Refresh is more thorough
8. Can specify an initial directory when opening Winfile
9. Source and tooling improvements, including an ability to target Windows XP
## Changes in v10.2 compared to v10.0 (December 2022)
1. Editor configurable via Winfile.ini[Settings]EditorPath
2. Change drives now via CTRL + ALT + letter
3. File.Goto paths can be configured. Default = C:\\. Configure via Winfile.ini[Settings]CachedPath
4. `ctrl+C` copies path text to clipboard
5. CTRL + ENTER executes associated files as administrator
6. Symbolic Link directories/files and can be created by pressing CTRL + SHIFT during drag and drop of directories/files
7. Hardlinks and Junctions and can be created by pressing CTRL + SHIFT + ALT during drag and drop of directories/files
8. The delimiters for splitting words for the GotoCache can be configured via Winfile.ini[Settings]GotoCachePunctuation. The default is - _.
9. The scroll behavior of the treeview on expand can be configured via Winfile.ini[Settings]ScrollOnExpand. The default is to scroll.
10. Can handle paths up to 1024 characters with Windows10 >= 1607. Set HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled=1 as admin.
11. Japanese localisation with full-width katakanas
12. Create files with suffix '- Copy', when copying with (`ctrl+C`) -> (`ctrl+V`) in the same dir, or drag-copy with mouse onto empty space in same dir.
13. AMD64 build available
## Changes in v10.0 compared to original_plus (April 2018)
Version v10.0 represents the entire set of changes from Nov. 2007 until this OSS project was created.
1. OLE drag/drop support
2. control characters (e.g., ctrl+C) map to current shortcut (e.g., `ctrl+C` -> `copy`)
instead of changing drives
3. cut (`ctrl+X`) followed by paste (`ctrl+V`) translates into a file move as one would expect
4. left and right arrows in the tree view expand and collapse folders like in the Explorer
5. added context menus in both panes
6. improved the means by which icons are displayed for files
7. F12 runs notepad or notepad++ on the selected file
8. moved the ini file location to `%AppData%\Roaming\Microsoft\WinFile`
9. File.Search can include a date which limits the files returned to those after the date provided;
the output is also sorted by the date instead of by the name
10. File.Search includes an option as to whether to include sub-directories
11. `ctrl+K` starts a command shell (ConEmu if installed) in the current directory; `shift+ctrl+K`
starts an elevated command shell (`cmd.exe` only)
12. File.Goto (`ctrl+G`) enables one to type a few words of a path and get a list of directories;
selecting one changes to that directory. Hardcoded to C:\\ .
13. UI shows reparse points (e.g., Junction Points and Symbolic Links) as such with little icons.
14. added simple forward / back navigation (probably needs to be improved)
15. View command has a new option to sort by date forward (oldest on top); normal date sorting is newest on top
## Changes in original_plus (April 2018)
The source code provided here (in the `src` directory) was copied from the Windows NT 4 source tree in November
2007. The tag named original_plus contains a very limited set of modifications
from the original sources to enable `WinFile.exe` to run on current Windows.
The most significant changes are:
1. converted to Visual Studio solution; works on VS 2015 and 2017
2. compiles and runs on 64-bit Windows (e.g., GetWindowLong -> GetWindowLongPtr, LONG -> LPARAM)
3. added a few header files which were stored elsewhere in the NT source tree (e.g., wfext.h)
4. deleted some unused files (e.g., winfile.def)
5. converted 64-bit arithmetic from internal libraries to C
6. converted internal shell APIs to public APIs (the primary reason the old version would not run)
The help directory contains both winfile.hlp and winfile.chm. Winfile.hlp was in the NT4
source tree, but does not work on Windows 10 any more. Winfile.chm was copied from
a regular installation of Windows 98 and works on Windows 10. As is, `WinFile.exe`
tries to launch winfile.hlp which fails.
To create your own local branch referring to this release, run `git checkout -b <your branch> original_plus`.
================================================
FILE: GNUmakefile
================================================
SRCS = \
src/dbg.c \
src/lfn.c \
src/lfnmisc.c \
src/numfmt.c \
src/Resize.c \
src/suggest.c \
src/tbar.c \
src/treectl.c \
src/wfassoc.c \
src/wfchgnot.c \
src/wfcomman.c \
src/wfcopy.c \
src/wfdir.c \
src/wfdirrd.c \
src/wfdirsrc.c \
src/wfdlgs.c \
src/wfdlgs2.c \
src/wfdlgs3.c \
src/wfdos.c \
src/wfdrives.c \
src/wfdrop.c \
src/wfext.c \
src/wffile.c \
src/wfinfo.c \
src/wfinit.c \
src/wfmem.c \
src/wfloc.c \
src/wfprint.c \
src/wfsearch.c \
src/wftree.c \
src/wfutil.c \
src/winfile.c \
src/wnetcaps.c
OBJS = $(subst .c,.o,$(SRCS)) src/wfgoto.o src/res.o
CFLAGS = -DUNICODE -DFASTMOVE -DSTRSAFE_NO_DEPRECATE -DWINVER=0x0600
LDLIBS = -mwindows -lkernel32 -lgdi32 -luser32 -ladvapi32 -lcomctl32 -lole32 -lshlwapi -lshell32 -loleaut32 -lversion
TARGET = winfile
ifeq ($(OS),Windows_NT)
TARGET := $(TARGET).exe
endif
CC ?= gcc
CXX ?= g++
WINDRES = windres
RM = rm -f
.PHONY: all depend clean
.SUFFIXES: .c .cpp .o .res
all : $(TARGET)
$(TARGET) : $(OBJS)
$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
.c.o :
$(CC) -c $(CFLAGS) -I. $< -o $@
.cpp.o :
$(CXX) -c $(CFLAGS) -I. $< -o $@
src/res.o : src/res.rc src/lang/*.rc src/lang/*.dlg
$(WINDRES) -DNOWINRES -I. -Isrc/ -i src/res.rc -o src/res.o
clean :
$(RM) $(OBJS) $(TARGET)
depend:
$(CC) -E -MM -w src/*.c > Makefile.depends
-include Makefile.depends
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) Microsoft Corporation. All rights reserved.
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
================================================
FILE: Package/Package.appxmanifest
================================================
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="desktop uap uap3 mp rescap">
<Identity Name="Microsoft.WindowsFileManager" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" Version="10.4.0.0" />
<Properties>
<DisplayName>Windows File Manager</DisplayName>
<PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
<Logo>Images\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.0" MaxVersionTested="10.0.14393.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$">
<uap:VisualElements DisplayName="Windows File Manager" Description="Windows File Manager reborn; cf. https://github.com/microsoft/winfile." BackgroundColor="transparent" Square150x150Logo="Images\Square150x150Logo.png" Square44x44Logo="Images\Square44x44Logo.png">
<uap:DefaultTile>
<uap:ShowNameOnTiles>
<uap:ShowOn Tile="square150x150Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
<uap:SplashScreen Image="Images\SplashScreen.png" />
</uap:VisualElements>
<Extensions>
<uap3:Extension
Category="windows.appExecutionAlias"
Executable="Winfile\Winfile.exe"
EntryPoint="Windows.FullTrustApplication">
<uap3:AppExecutionAlias>
<desktop:ExecutionAlias Alias="Winfile.exe" />
</uap3:AppExecutionAlias>
</uap3:Extension>
</Extensions>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
<rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>
================================================
FILE: Package/Package.wapproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '15.0'">
<VisualStudioVersion>15.0</VisualStudioVersion>
</PropertyGroup>
<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="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup>
<WapProjPath Condition="'$(WapProjPath)'==''">$(MSBuildExtensionsPath)\Microsoft\DesktopBridge\</WapProjPath>
<PlatformTarget Condition="'$(Platform)'=='Win32'">x86</PlatformTarget>
</PropertyGroup>
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.props" />
<PropertyGroup>
<ProjectGuid>ac921d51-18e2-4fbe-a444-059543458c00</ProjectGuid>
<TargetPlatformVersion>10.0.18362.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
<DefaultLanguage>en-US</DefaultLanguage>
<PackageCertificateKeyFile>Winfile.AppStore.UploadCert.pfx</PackageCertificateKeyFile>
<EntryPointProjectUniqueName>..\src\Winfile.vcxproj</EntryPointProjectUniqueName>
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
<AppxBundlePlatforms>x86|x64|arm64</AppxBundlePlatforms>
<AppInstallerUpdateFrequency>0</AppInstallerUpdateFrequency>
<AppInstallerCheckForUpdateFrequency>OnApplicationRun</AppInstallerCheckForUpdateFrequency>
<!-- cf. https://github.com/microsoft/winfile/issues/227 -->
<SkipUnionWinmd>true</SkipUnionWinmd>
<AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
<GenerateTestArtifacts>True</GenerateTestArtifacts>
<HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<AppxBundle>Always</AppxBundle>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<AppxBundle>Always</AppxBundle>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<AppxBundle>Always</AppxBundle>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<AppxBundle>Always</AppxBundle>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<AppxBundle>Always</AppxBundle>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<AppxBundle>Always</AppxBundle>
</PropertyGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
<None Include="Package_TemporaryKey.pfx" />
</ItemGroup>
<ItemGroup>
<Content Include="Images\SplashScreen.png" />
<Content Include="Images\Square150x150Logo.scale-100.png" />
<Content Include="Images\Square150x150Logo.scale-200.png" />
<Content Include="Images\Square150x150Logo.scale-400.png" />
<Content Include="Images\Square44x44Logo.altform-unplated_targetsize-16.png" />
<Content Include="Images\Square44x44Logo.altform-unplated_targetsize-256.png" />
<Content Include="Images\Square44x44Logo.altform-unplated_targetsize-48.png" />
<Content Include="Images\Square44x44Logo.scale-100.png" />
<Content Include="Images\Square44x44Logo.scale-200.png" />
<Content Include="Images\Square44x44Logo.scale-400.png" />
<Content Include="Images\Square44x44Logo.targetsize-16.png" />
<Content Include="Images\Square44x44Logo.targetsize-256.png" />
<Content Include="Images\Square44x44Logo.targetsize-48.png" />
<Content Include="Images\StoreLogo.scale-100.png" />
<Content Include="Images\StoreLogo.scale-200.png" />
<Content Include="Images\StoreLogo.scale-400.png" />
<None Include="Winfile.AppStore.UploadCert.pfx" />
<None Include="Package_StoreKey.pfx" />
<None Include="Package.StoreAssociation.xml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\src\Winfile.vcxproj" />
</ItemGroup>
<Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets" />
</Project>
================================================
FILE: README.md
================================================
# Announcement: Repository to be archived on March 1, 2025
We realize this may come as a shock and disappointment to our contributors but we simply do not have the expertise or resources within the organization to continue to maintain this project.
While you may continue to work on your own private fork, remember that use of archived repositories are more risky from a security standpoint and caution should be taken.
#  Windows File Manager (WinFile)
The Windows File Manager lives again and runs as a native x86, x64 and arm64 desktop app
on all currently supported version of Windows, including Windows 11. I welcome your thoughts, comments and suggestions.
There are two primary versions of the source code in the master branch:
1. original_plus tag: refers to the source for WinFile as of Windows NT4 with minimal changes
so that it compiles with Visual Studio and runs on current Windows.
2. current master: actively developed branch that consists of enhancements and additions to WinFile.
I will consider bugs fixes and suggestions for minor changes to the master branch. Feel free to create a pull request or post issues as you see fit.
I will not be changing the original_plus sources nor creating other branches for other purposes.
You are welcome to do that on your own.
## Download The App
If you are running Windows 10, you can download the app from the store
<a href="https://www.microsoft.com/store/apps/9p7vbbbc49rb?ocid=badge"><img src="https://developer.microsoft.com/store/badges/images/English_get-it-from-MS.png" alt="Get it from Microsoft" width="150px"></a>
If you just want to download the WinFile application without worrying about compiling from the source code, we have a number of pre-compiled versions available.
Please select the version which you would like to download.
- [Chocolatey release](https://chocolatey.org/packages/winfile)
- Winget release: `winget install "Windows File Manager"`
- [MSYS2 release](https://packages.msys2.org/base/mingw-w64-winfile)
- [Latest Release on Github (v10.3.0.0)](https://github.com/microsoft/winfile/releases/latest)
To see more release binaries, including of older versions, [see the releases page](https://github.com/Microsoft/winfile/releases).
## History
The Windows File manager was originally released with Windows 3.0 in the early 1990s. You
can read more about the history at https://en.wikipedia.org/wiki/Windows_File_Manager .
## Change history
Highlights of changes in each release are in [CHANGES.md](CHANGES.md).
## What it looks like
# 
## Contributing
### Contributor License Agreement
As mentioned above, this project welcomes contributions and suggestions. Most contributions require you to agree to a
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
### What Makes a Good Pull Request for WinFile?
If you are interested in contributing and/or suggesting changes to the actual application, you might find it helpful to [read this post first](https://github.com/Microsoft/winfile/issues/88).
## License
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the [MIT](LICENSE) License.
================================================
FILE: SECURITY.md
================================================
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.7 BLOCK -->
## Security
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.
## Reporting Security Issues
**Please do not report security vulnerabilities through public GitHub issues.**
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc).
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
* Full paths of source file(s) related to the manifestation of the issue
* The location of the affected source code (tag/branch/commit or direct URL)
* Any special configuration required to reproduce the issue
* Step-by-step instructions to reproduce the issue
* Proof-of-concept or exploit code (if possible)
* Impact of the issue, including how an attacker might exploit the issue
This information will help us triage your report more quickly.
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.
## Preferred Languages
We prefer all communications to be in English.
## Policy
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).
<!-- END MICROSOFT SECURITY.MD BLOCK -->
================================================
FILE: SignConfig.xml
================================================
<?xml version="1.0" encoding="utf-8" ?>
<SignConfigXML>
<job platform="Win32" certSubject="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" configuration="Release" dest="__OUTPATHROOT__\signed" jobname="Winfile x86" joburl="https://github.com/microsoft/winfile" approvers="">
<file src="__INPATHROOT__\Winfile.exe" signType="135020002" dest="__OUTPATHROOT__\signed\Winfile.exe" />
</job>
<job platform="x64" certSubject="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" configuration="Release" dest="__OUTPATHROOT__\signed" jobname="Winfile x64" joburl="https://github.com/microsoft/winfile" approvers="">
<file src="__INPATHROOT__\Winfile.exe" signType="135020002" dest="__OUTPATHROOT__\signed\Winfile.exe" />
</job>
<job platform="ARM" certSubject="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" configuration="Release" dest="__OUTPATHROOT__\signed" jobname="Winfile ARM" joburl="https://github.com/microsoft/winfile" approvers="">
<file src="__INPATHROOT__\Winfile.exe" signType="135020002" dest="__OUTPATHROOT__\signed\Winfile.exe" />
</job>
</SignConfigXML>
================================================
FILE: Winfile.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27428.2037
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Winfile", "src\Winfile.vcxproj", "{028400E7-500A-4FB9-877F-F6C7AE24F109}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VerifyResources", "tools\VerifyResources\VerifyResources.vcxproj", "{2A455495-7936-4F67-B957-6356E0141DAD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FileSignatureInfo", "tools\FileSignatureInfo\FileSignatureInfo.vcxproj", "{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AddonSample", "samples\addon\AddOnSample.vcxproj", "{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExeView", "tools\ExeView\ExeView.vcxproj", "{23717B8E-CA4A-412F-A4EA-5E6899143EC7}"
EndProject
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Package", "Package\Package.wapproj", "{AC921D51-18E2-4FBE-A444-059543458C00}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2C73F3F2-606A-4B7B-B473-3E5A8AC467FB}"
ProjectSection(SolutionItems) = preProject
README.md = README.md
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM64 = Debug|ARM64
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
DebugXPStatic|ARM64 = DebugXPStatic|ARM64
DebugXPStatic|Win32 = DebugXPStatic|Win32
DebugXPStatic|x64 = DebugXPStatic|x64
DebugXPStatic|x86 = DebugXPStatic|x86
Release|ARM64 = Release|ARM64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release|x86 = Release|x86
ReleaseXPStatic|ARM64 = ReleaseXPStatic|ARM64
ReleaseXPStatic|Win32 = ReleaseXPStatic|Win32
ReleaseXPStatic|x64 = ReleaseXPStatic|x64
ReleaseXPStatic|x86 = ReleaseXPStatic|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Debug|ARM64.ActiveCfg = Debug|ARM64
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Debug|ARM64.Build.0 = Debug|ARM64
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Debug|Win32.ActiveCfg = Debug|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Debug|Win32.Build.0 = Debug|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Debug|x64.ActiveCfg = Debug|x64
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Debug|x64.Build.0 = Debug|x64
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Debug|x86.ActiveCfg = Debug|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Debug|x86.Build.0 = Debug|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.DebugXPStatic|ARM64.ActiveCfg = DebugXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.DebugXPStatic|ARM64.Build.0 = DebugXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.DebugXPStatic|Win32.ActiveCfg = DebugXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.DebugXPStatic|Win32.Build.0 = DebugXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.DebugXPStatic|x64.ActiveCfg = DebugXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.DebugXPStatic|x64.Build.0 = DebugXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.DebugXPStatic|x86.ActiveCfg = DebugXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.DebugXPStatic|x86.Build.0 = DebugXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Release|ARM64.ActiveCfg = Release|ARM64
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Release|ARM64.Build.0 = Release|ARM64
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Release|Win32.ActiveCfg = Release|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Release|Win32.Build.0 = Release|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Release|x64.ActiveCfg = Release|x64
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Release|x64.Build.0 = Release|x64
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Release|x86.ActiveCfg = Release|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.Release|x86.Build.0 = Release|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.ReleaseXPStatic|ARM64.ActiveCfg = ReleaseXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.ReleaseXPStatic|ARM64.Build.0 = ReleaseXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.ReleaseXPStatic|Win32.ActiveCfg = ReleaseXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.ReleaseXPStatic|Win32.Build.0 = ReleaseXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.ReleaseXPStatic|x64.ActiveCfg = ReleaseXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.ReleaseXPStatic|x64.Build.0 = ReleaseXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.ReleaseXPStatic|x86.ActiveCfg = ReleaseXPStatic|Win32
{028400E7-500A-4FB9-877F-F6C7AE24F109}.ReleaseXPStatic|x86.Build.0 = ReleaseXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.Debug|ARM64.ActiveCfg = Debug|ARM64
{2A455495-7936-4F67-B957-6356E0141DAD}.Debug|ARM64.Build.0 = Debug|ARM64
{2A455495-7936-4F67-B957-6356E0141DAD}.Debug|Win32.ActiveCfg = Debug|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.Debug|Win32.Build.0 = Debug|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.Debug|x64.ActiveCfg = Debug|x64
{2A455495-7936-4F67-B957-6356E0141DAD}.Debug|x64.Build.0 = Debug|x64
{2A455495-7936-4F67-B957-6356E0141DAD}.Debug|x86.ActiveCfg = Debug|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.Debug|x86.Build.0 = Debug|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.DebugXPStatic|ARM64.ActiveCfg = DebugXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.DebugXPStatic|ARM64.Build.0 = DebugXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.DebugXPStatic|Win32.ActiveCfg = DebugXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.DebugXPStatic|Win32.Build.0 = DebugXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.DebugXPStatic|x64.ActiveCfg = DebugXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.DebugXPStatic|x64.Build.0 = DebugXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.DebugXPStatic|x86.ActiveCfg = DebugXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.DebugXPStatic|x86.Build.0 = DebugXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.Release|ARM64.ActiveCfg = Release|ARM64
{2A455495-7936-4F67-B957-6356E0141DAD}.Release|ARM64.Build.0 = Release|ARM64
{2A455495-7936-4F67-B957-6356E0141DAD}.Release|Win32.ActiveCfg = Release|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.Release|Win32.Build.0 = Release|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.Release|x64.ActiveCfg = Release|x64
{2A455495-7936-4F67-B957-6356E0141DAD}.Release|x64.Build.0 = Release|x64
{2A455495-7936-4F67-B957-6356E0141DAD}.Release|x86.ActiveCfg = Release|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.Release|x86.Build.0 = Release|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.ReleaseXPStatic|ARM64.ActiveCfg = ReleaseXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.ReleaseXPStatic|ARM64.Build.0 = ReleaseXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.ReleaseXPStatic|Win32.ActiveCfg = ReleaseXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.ReleaseXPStatic|Win32.Build.0 = ReleaseXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.ReleaseXPStatic|x64.ActiveCfg = ReleaseXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.ReleaseXPStatic|x64.Build.0 = ReleaseXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.ReleaseXPStatic|x86.ActiveCfg = ReleaseXPStatic|Win32
{2A455495-7936-4F67-B957-6356E0141DAD}.ReleaseXPStatic|x86.Build.0 = ReleaseXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Debug|ARM64.ActiveCfg = Debug|ARM64
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Debug|ARM64.Build.0 = Debug|ARM64
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Debug|Win32.ActiveCfg = Debug|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Debug|Win32.Build.0 = Debug|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Debug|x64.ActiveCfg = Debug|x64
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Debug|x64.Build.0 = Debug|x64
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Debug|x86.ActiveCfg = Debug|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Debug|x86.Build.0 = Debug|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.DebugXPStatic|ARM64.ActiveCfg = DebugXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.DebugXPStatic|ARM64.Build.0 = DebugXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.DebugXPStatic|Win32.ActiveCfg = DebugXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.DebugXPStatic|Win32.Build.0 = DebugXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.DebugXPStatic|x64.ActiveCfg = DebugXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.DebugXPStatic|x64.Build.0 = DebugXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.DebugXPStatic|x86.ActiveCfg = DebugXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.DebugXPStatic|x86.Build.0 = DebugXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Release|ARM64.ActiveCfg = Release|ARM64
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Release|ARM64.Build.0 = Release|ARM64
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Release|Win32.ActiveCfg = Release|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Release|Win32.Build.0 = Release|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Release|x64.ActiveCfg = Release|x64
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Release|x64.Build.0 = Release|x64
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Release|x86.ActiveCfg = Release|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.Release|x86.Build.0 = Release|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.ReleaseXPStatic|ARM64.ActiveCfg = ReleaseXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.ReleaseXPStatic|ARM64.Build.0 = ReleaseXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.ReleaseXPStatic|Win32.ActiveCfg = ReleaseXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.ReleaseXPStatic|Win32.Build.0 = ReleaseXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.ReleaseXPStatic|x64.ActiveCfg = ReleaseXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.ReleaseXPStatic|x64.Build.0 = ReleaseXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.ReleaseXPStatic|x86.ActiveCfg = ReleaseXPStatic|Win32
{24D8E2A7-CD5A-423B-AEB4-CAA277BD0A0F}.ReleaseXPStatic|x86.Build.0 = ReleaseXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Debug|ARM64.Build.0 = Debug|ARM64
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Debug|Win32.ActiveCfg = Debug|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Debug|Win32.Build.0 = Debug|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Debug|x64.ActiveCfg = Debug|x64
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Debug|x64.Build.0 = Debug|x64
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Debug|x86.ActiveCfg = Debug|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Debug|x86.Build.0 = Debug|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.DebugXPStatic|ARM64.ActiveCfg = DebugXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.DebugXPStatic|ARM64.Build.0 = DebugXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.DebugXPStatic|Win32.ActiveCfg = DebugXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.DebugXPStatic|Win32.Build.0 = DebugXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.DebugXPStatic|x64.ActiveCfg = DebugXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.DebugXPStatic|x64.Build.0 = DebugXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.DebugXPStatic|x86.ActiveCfg = DebugXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.DebugXPStatic|x86.Build.0 = DebugXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Release|ARM64.ActiveCfg = Release|ARM64
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Release|ARM64.Build.0 = Release|ARM64
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Release|Win32.ActiveCfg = Release|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Release|Win32.Build.0 = Release|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Release|x64.ActiveCfg = Release|x64
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Release|x64.Build.0 = Release|x64
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Release|x86.ActiveCfg = Release|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.Release|x86.Build.0 = Release|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.ReleaseXPStatic|ARM64.ActiveCfg = ReleaseXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.ReleaseXPStatic|ARM64.Build.0 = ReleaseXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.ReleaseXPStatic|Win32.ActiveCfg = ReleaseXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.ReleaseXPStatic|Win32.Build.0 = ReleaseXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.ReleaseXPStatic|x64.ActiveCfg = ReleaseXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.ReleaseXPStatic|x64.Build.0 = ReleaseXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.ReleaseXPStatic|x86.ActiveCfg = ReleaseXPStatic|Win32
{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}.ReleaseXPStatic|x86.Build.0 = ReleaseXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Debug|ARM64.ActiveCfg = Debug|ARM64
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Debug|ARM64.Build.0 = Debug|ARM64
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Debug|Win32.ActiveCfg = Debug|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Debug|Win32.Build.0 = Debug|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Debug|x64.ActiveCfg = Debug|x64
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Debug|x64.Build.0 = Debug|x64
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Debug|x86.ActiveCfg = Debug|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Debug|x86.Build.0 = Debug|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.DebugXPStatic|ARM64.ActiveCfg = DebugXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.DebugXPStatic|ARM64.Build.0 = DebugXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.DebugXPStatic|Win32.ActiveCfg = DebugXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.DebugXPStatic|Win32.Build.0 = DebugXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.DebugXPStatic|x64.ActiveCfg = DebugXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.DebugXPStatic|x64.Build.0 = DebugXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.DebugXPStatic|x86.ActiveCfg = DebugXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.DebugXPStatic|x86.Build.0 = DebugXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Release|ARM64.ActiveCfg = Release|ARM64
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Release|ARM64.Build.0 = Release|ARM64
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Release|Win32.ActiveCfg = Release|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Release|Win32.Build.0 = Release|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Release|x64.ActiveCfg = Release|x64
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Release|x64.Build.0 = Release|x64
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Release|x86.ActiveCfg = Release|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.Release|x86.Build.0 = Release|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.ReleaseXPStatic|ARM64.ActiveCfg = ReleaseXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.ReleaseXPStatic|ARM64.Build.0 = ReleaseXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.ReleaseXPStatic|Win32.ActiveCfg = ReleaseXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.ReleaseXPStatic|Win32.Build.0 = ReleaseXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.ReleaseXPStatic|x64.ActiveCfg = ReleaseXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.ReleaseXPStatic|x64.Build.0 = ReleaseXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.ReleaseXPStatic|x86.ActiveCfg = ReleaseXPStatic|Win32
{23717B8E-CA4A-412F-A4EA-5E6899143EC7}.ReleaseXPStatic|x86.Build.0 = ReleaseXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|ARM64.ActiveCfg = Debug|ARM64
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|ARM64.Build.0 = Debug|ARM64
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|ARM64.Deploy.0 = Debug|ARM64
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|Win32.ActiveCfg = Debug|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|Win32.Build.0 = Debug|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|Win32.Deploy.0 = Debug|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|x64.ActiveCfg = Debug|x64
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|x64.Build.0 = Debug|x64
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|x64.Deploy.0 = Debug|x64
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|x86.ActiveCfg = Debug|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|x86.Build.0 = Debug|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Debug|x86.Deploy.0 = Debug|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.DebugXPStatic|ARM64.ActiveCfg = DebugXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.DebugXPStatic|Win32.ActiveCfg = DebugXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.DebugXPStatic|Win32.Build.0 = DebugXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.DebugXPStatic|x64.ActiveCfg = DebugXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.DebugXPStatic|x86.ActiveCfg = DebugXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.DebugXPStatic|x86.Build.0 = DebugXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|ARM64.ActiveCfg = Release|ARM64
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|ARM64.Build.0 = Release|ARM64
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|ARM64.Deploy.0 = Release|ARM64
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|Win32.ActiveCfg = Release|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|Win32.Build.0 = Release|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|Win32.Deploy.0 = Release|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|x64.ActiveCfg = Release|x64
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|x64.Build.0 = Release|x64
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|x64.Deploy.0 = Release|x64
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|x86.ActiveCfg = Release|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|x86.Build.0 = Release|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.Release|x86.Deploy.0 = Release|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.ReleaseXPStatic|ARM64.ActiveCfg = ReleaseXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.ReleaseXPStatic|Win32.ActiveCfg = ReleaseXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.ReleaseXPStatic|Win32.Build.0 = ReleaseXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.ReleaseXPStatic|x64.ActiveCfg = ReleaseXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.ReleaseXPStatic|x86.ActiveCfg = ReleaseXPStatic|Win32
{AC921D51-18E2-4FBE-A444-059543458C00}.ReleaseXPStatic|x86.Build.0 = ReleaseXPStatic|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {56BB175E-5DE4-4CCB-B12D-67217C03BD15}
EndGlobalSection
EndGlobal
================================================
FILE: build/README.md
================================================
These two files control repo-wide build settings.
Msbuild projects work by including a "default" props file, then allowing
projects to override those defaults, then including a "props" file that
can apply high-level properties into lower level configuration. After that,
projects can once again override lower level values, then define which files
to compile, then include a "targets" file to perform execution.
In other words, the way to think of these two files is
`Winfile.default.props` executes before `Winfile.props`, and the two files
are split to allow individual projects to manipulate state in between.
Generally, anything affecting supported architectures, compilers, and basic
compilation options should be here. Anything specific to an executable
should be in the project files.
================================================
FILE: build/Winfile.default.props
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugXPStatic|Win32">
<Configuration>DebugXPStatic</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</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="ReleaseXPStatic|Win32">
<Configuration>ReleaseXPStatic</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug' or '$(Configuration)'=='DebugXPStatic'">
<UseDebugLibraries>true</UseDebugLibraries>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release' or '$(Configuration)'=='ReleaseXPStatic'">
<UseDebugLibraries>false</UseDebugLibraries>
<LinkIncremental>false</LinkIncremental>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='ReleaseXPStatic' or '$(Configuration)'=='DebugXPStatic'">
<PlatformToolset>v141_xp</PlatformToolset>
<XPDeprecationWarning>false</XPDeprecationWarning>
</PropertyGroup>
<PropertyGroup Label="Configuration" Condition="'$(Configuration)'=='Release' or '$(Configuration)'=='Debug'">
<PlatformToolset>v143</PlatformToolset>
</PropertyGroup>
</Project>
================================================
FILE: build/Winfile.props
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ItemDefinitionGroup Label="Globals">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile>
<Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SdlCheck>true</SdlCheck>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='DebugXPStatic'">
<ClCompile>
<Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<SdlCheck>true</SdlCheck>
</ClCompile>
<Link>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='ReleaseXPStatic'">
<ClCompile>
<Optimization>MinSpace</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
</ClCompile>
<Link>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
<ClCompile>
<CallingConvention>StdCall</CallingConvention>
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='ARM64'">
<ClCompile>
<CallingConvention>StdCall</CallingConvention>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
<ClCompile>
<CallingConvention>StdCall</CallingConvention>
</ClCompile>
<Link>
<TargetMachine>MachineX64</TargetMachine>
</Link>
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
</ItemDefinitionGroup>
<PropertyGroup>
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
</Project>
================================================
FILE: help/ini/index.html
================================================
<html>
<head>
<title>Building winfile.ini from scratch</title>
</head>
<body>
<p>OR: Building WINFILE.INI from scratch is a bad idea. Here's how to do it anyway.</p>
<h3>Preface:</h3>
<p>This is not an "issue" per se, and is more of an "I couldn't find this written down anywhere and perhaps somebody else might want to know this for some reason" thing. Feel free to mark it as "solved" or "complete" or whatever, this is purely informational. If you need an issue, somebody could find a way to work this information into the help documentation or whatever.</p>
<p>To be perfectly clear, there is very little practical reason you should ever edit WINFILE.INI directly - nearly everything that is stored in the INI can be directly changed using the user interface, and it's much easier to make these changes in the UI directly. I make this quick reference available simply to satisfy my own sensibilities. If this helps you, great.</p>
<p>At any rate, if you ever need or desire to modify the INI file for fun or profit, here is a list of all of the INI settings I've identified, with best-effort descriptions of what they do. Add them to the help files or whatever. Hopefully, google/bing/whatever will index this and the next person who searches for it will find this.</p>
<p>Also, for anybody following along at home, sprinkled throughout this document are example lines ripped directly from my INI file. You don't have to copy them directly if you don't want to - this is just how I like mine.</p>
<h3>[Settings]</h3>
<p>The INI file begins with the line <em>[Settings]</em>. It delimits the beginning of the settings portion of the INI file, which just so happens to be the entire file. This line is mandatory: File Manager is pretty lax about the order of each key/setting, however it outright ignores all parameters that are not beneath [Settings] - it has to be the first line of the file.</p>
<p><code>[Settings]</code></p>
<h3>Window metrics:</h3>
<p>The first entry of note is <strong>Window</strong>, which stores the last opened location of the MDI parent window. It features several parameters, not all of which are known to me - if you know what the missing ones are, feel free to share. In order, the parameters are the leftmost pixel location, the topmost pixel location, the width in pixels, the height in pixels, an unknown blank parameter, another unknown blank parameter, and visibility. Set visibility zero to make the program window not display at all even though winfile is running in the background, 1 for normal, 3 for maximized. Technically, I think 2 should have it start minimized, but it doesn't.</p>
<p><code>Window=123,123,800,600, , ,1</code></p>
<p>Similarly, Windows File Manager has many child windows, and it will save the location/metrics of these windows on close using entries <strong>dir1</strong>, <strong>dir2</strong>, etc. You <em>could</em> edit these entries to change the view options of each window. I do not recommend doing so, as any missing parameters cause file manager to close entirely, and I don't fully understand how each parameter is calculated. The known parameters are: leftmost pixel, topmost pixel, width, height, -1, -1, visible, ?, ?, ?,divider,path. Those three question marks? Those are used for the view options. How exactly those values are calculated are beyond the scope of this document because I don't know myself. As with the parent, so with the child - set visible to 0 for an invisible folder window, 1 for normal display, 2 for minimized, and 3 for maximized. Path must include the file mask you wish to show. For example, <code>C:\*.* </code>shows all files in the C:\ drive. <code>D:\folder\*.exe</code> shows all exe files in the location D:\folder, etc.</p>
<pre><code>dir1=80,52,776,486,-1,-1,1,30,201,135958,247,C:\*.*
dir2=0,0,636,348,-1,-1,1,32,201,24561,193,Z:\*.exe
dir3=120,44,500,300,-1,-1,2,30,201,24561,193,E:\*.*
</code></pre>
<h3>Options menu items</h3>
<p>Most of these are self explanatory. <strong>MinOnRun</strong> does exactly that, if set to true (1), File Manager minimized itself when a program or file is executed. <strong>IndexOnLaunch</strong>, when set to 1, causes the Goto Directory index to be created on launch. This is helpful because it means you don't have to remember exactly how things are spelled when using the goto feature.<strong>StatusBar</strong>, <strong>DriveBar</strong>, and <strong>Toolbar</strong> all control whether or not these bars are visible (1) or not (0). Finally, <strong>NewWinOnNetConnect</strong> determines if a new folder window is opened when you connect to a network drive.</p>
<p><a target="_blank" rel="noopener noreferrer nofollow" href="goto.png"><img src="goto.png" alt="GotoIndex" style="max-width: 100%;"></a><br>
[Figure 1: The Goto directory dialog (Ctrl+G) is shown with indexing disabled and again with it enabled.]</p>
<p><a target="_blank" rel="noopener noreferrer nofollow" href="toolbar.png"><img src="toolbar.png" alt="ToolbarsOnOff" style="max-width: 100%;"></a><br>
[Figure 2: The primary interface is shown with the toolbar/drivebar/status bar disabled, and again below with aforementioned bars enabled]</p>
<pre><code>MinOnRun=0
IndexOnLaunch=1
StatusBar=1
DriveBar=1
Toolbar=1
NewWinOnNetConnect=1
</code></pre>
<h3>Are you sure about that?</h3>
<p>All of these options are found in the Options > Confirmation dialog, and they are entirely self explanatory. Setting them to 0 unchecks the box and consequently means File Manager does not ask for confirmation. Setting them to 1 checks the box and makes it ask you to confirm. <strong>ConfirmDelete</strong> asks on file deletion, <strong>ConfirmSubDel</strong> asks on folder deletion, <strong>ConfirmReplace</strong> asks when you try to replace an existing file, <strong>ConfirmMouse</strong> asks when you drag-and-drop a file, <strong>ConfirmFormat</strong> is supposed to ask when you select to format a drive, but doesn't appear to do so. <strong>ConfirmReadOnly</strong> asks when you try to modify a System, Hidden, and/or Read-Only file.</p>
<pre><code>ConfirmDelete=1
ConfirmSubDel=1
ConfirmReplace=1
ConfirmMouse=0
ConfirmFormat=1
ConfirmReadOnly=1
</code></pre>
<p><a target="_blank" rel="noopener noreferrer nofollow" href="confirm.png"><img src="confirm.png" alt="image" style="max-width: 100%;"></a><br>
[Figure 3: File Manager is asking me to confirm I intended to delete a file. I am prone to accidents, so having it double check my work is always reassuring, especially when you consider that File Manager bypasses the Windows Recycle Bin and directly deletes the file.]</p>
<h3>Fun Visual Tricks</h3>
<p><strong>DisableVisualStyles</strong> determines if the toolbar uses visual styles (0), or does not (1). If you want that authentic 9x/nt4 feel, set it to 1 for raised buttons. Or leave it at 0 and get the boring, flat buttons.<br>
<strong>MirrorContent</strong> reverses the left-right order of individual items without reversing text. See attached picture below. I'm not sure if there's an actual practical use for it, or if it's just neat.<br>
<a target="_blank" rel="noopener noreferrer nofollow" href="styles.png"><img src="styles.png" alt="visualStyling" style="max-width: 100%;"></a><br>
[Figure 4: Visual styles are enabled (top) and disabled (bottom). It's altogether a minor change, but if you're using a classic theme on your computer it may tie things together.]</p>
<p><a target="_blank" rel="noopener noreferrer nofollow" href="rtl.png"><img src="rtl.png" alt="mirror_mode" style="max-width: 100%;"></a><br>
[Figure 5: The File Manager window has been mirrored! Text is still rendered in the correct left-to-right fashion, but menu items and buttons are right-to-left ordered.]</p>
<pre><code>DisableVisualStyles=1
MirrorContent=0
</code></pre>
<h3>Fun with Fonts</h3>
<p><strong>Face</strong> sets the font face used by File Manager. Note: it uses the name of the font as shown in the font picker, and not the filename of a font, so the font has to be installed in the system to use. <strong>Size</strong> sets the font size. These are probably the only two you should mess with.</p>
<p><strong>LowerCase</strong> controls whether or not Italic/Oblique fonts are used. Oh, and also makes every thing lowercase. It's pulling double duty. Default value is 0. Add 1 to the value to make FAT formatted drives display in lowercase. Add 8 to the value to make all drives display in lowercase. Add 4 to the value to make the font italic. So, for example, to make the font italic <em>and</em> have FAT drives display lowercase, set the value to 5. <strong>Weight</strong> sets the font weight used. What values are valid? Depends on the font. For example, in Segoe UI a value of 300 corresponds to light, 350 semilight, 400 regular, 700 semibold. Different fonts have different values. Frankly, I suggest just omitting this property entirely.</p>
<pre><code>Face=Segoe UI
Size=10
LowerCase=0
</code></pre>
<h3>Miscellaneous other tweaks</h3>
<p><strong>UILanguage</strong> sets the language used by File Manager. At, present, to my knowledge anyways, there are seven available language options currently: en-US, zh-CN, he-IL, ja-JP, pl-PL, de-DE, and ko-KR. English (US), Chinese (Simplified), Hebrew, Japanese, Polish, German, and Korean.</p>
<p><code>UILanguage=en-US</code></p>
<p><strong>EditorPath</strong> sets the editor that is executed when the edit command is selected. Contrary to what the name indicates, you might not necessarily need the entire path - if the editor itself is in your path somewhere, you can just put the editor command in alone.<br>
<code>EditorPath=nano</code></p>
<p><a target="_blank" rel="noopener noreferrer nofollow" href="edit.gif"><img src="edit.gif" alt="ezgif com-gif-maker" style="max-width: 100%;"></a><br>
[Figure 6: I have set the default editor to nano. Now, when File Manager is told to edit the the file NOSHARE, the file is automatically opened in the console based text editor nano.]</p>
<p><strong>ScrollOnExpand</strong> determines if the directory tree view scrolls automatically when you expand a folder in the tree. The default behavior (1) is that it does scroll automatically putting the directory you expanded at the top of the view. You can disable this behavior by setting the value to 0.<br>
Note: at the time of writing, this behavior is not available in the currently released version. I'm led to believe that the changes necessary have been implemented if you build from source, and it could turn up in a theoretical future release.</p>
<p><code>ScrollOnExpand = 0</code></p>
</body>
</html>
================================================
FILE: nuget/LICENSE.txt
================================================
From: https://github.com/Microsoft/winfile/raw/master/LICENSE
LICENSE
MIT License
Copyright (c) Microsoft Corporation. All rights reserved.
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
================================================
FILE: nuget/VERIFICATION.txt
================================================
VERIFICATION
Verification is intended to assist the Chocolatey moderators and community
in verifying that this package's contents are trustworthy.
Verify authenticode signature signed by :
CN = Microsoft 3rd Party Application Component
O = Microsoft Corporation
L = Redmond
S = Washington
C = US
================================================
FILE: nuget/winfile.nuspec
================================================
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>winfile</id>
<version>10.4.0.0</version>
<title>WinFile</title>
<authors>Microsoft, WinFile OSS Contributors</authors>
<owners>https://github.com/craigwi</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<bugTrackerUrl>https://github.com/Microsoft/winfile/issues</bugTrackerUrl>
<iconUrl>https://github.com/Microsoft/winfile/blob/master/winfile.png</iconUrl>
<licenseUrl>https://github.com/Microsoft/winfile/raw/master/LICENSE</licenseUrl>
<projectSourceUrl>https://github.com/Microsoft/winfile</projectSourceUrl>
<projectUrl>https://github.com/Microsoft/winfile</projectUrl>
<releaseNotes>https://github.com/Microsoft/winfile/releases</releaseNotes>
<description>Windows File Manager (WinFile) was originally released with Windows 3.0 in the early 1990s. You can read more about the history at https://en.wikipedia.org/wiki/Windows_File_Manager.</description>
<summary>WinFile is the predecessor to the Windows Explorer and now runs on modern Windows, including Windows 10.</summary>
<copyright>Copyright (c) Microsoft Corporation. All rights reserved.</copyright>
<tags>file manager utilities tools</tags>
<dependencies>
<dependency id='vcredist140' version='14.38.33135' />
</dependencies>
</metadata>
<files>
<file src="LICENSE.txt" target="legal\LICENSE.txt" />
<file src="VERIFICATION.txt" target="legal\VERIFICATION.txt" />
<file src="x86\Winfile.exe" target="tools\x86\Winfile.exe" />
<file src="x86\Winfile.pdb" target="tools\x86\Winfile.pdb" />
<file src="help\winfile.chm" target="tools\x86\winfile.chm" />
<file src="x64\Winfile.exe" target="tools\x64\Winfile.exe" />
<file src="x64\Winfile.pdb" target="tools\x64\Winfile.pdb" />
<file src="arm64\Winfile.exe" target="tools\arm64\Winfile.exe" />
<file src="arm64\Winfile.pdb" target="tools\arm64\Winfile.pdb" />
</files>
</package>
================================================
FILE: samples/addon/AddOnSample.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="dllmain.cpp" />
<ClCompile Include="extproc.cpp" />
<ClCompile Include="stdafx.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="wfext.h">
<Filter>Headers</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>Headers</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>Headers</Filter>
</ClInclude>
<ClInclude Include="resource.h">
<Filter>Resources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="Resources">
<UniqueIdentifier>{f6080eb3-5cce-4602-8507-30f028c8d840}</UniqueIdentifier>
</Filter>
<Filter Include="Headers">
<UniqueIdentifier>{4b7508bc-69b1-4a80-92cc-2937c9a43869}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="resources.rc">
<Filter>Resources</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Image Include="AddonSample.bmp">
<Filter>Resources</Filter>
</Image>
<Image Include="AddonSample.ico">
<Filter>Resources</Filter>
</Image>
</ItemGroup>
</Project>
================================================
FILE: samples/addon/AddonSample.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{B46F5F82-52A4-45CC-9AA3-ADF9EE8E51A3}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>AddonSample</RootNamespace>
<ProjectName>AddonSample</ProjectName>
</PropertyGroup>
<Import Project="..\..\build\Winfile.default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<ConformanceMode>true</ConformanceMode>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<Import Project="..\..\build\Winfile.props" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|arm64'">
<ClCompile>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|arm64'">
<ClCompile>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="resource.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="wfext.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp" />
<ClCompile Include="extproc.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="resources.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="AddonSample.bmp" />
<Image Include="AddonSample.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
================================================
FILE: samples/addon/dllmain.cpp
================================================
/********************************************************************
dllmain.cpp
Windows File Manager Sample Addon : Defines the entry point for the DLL application.
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
#include "stdafx.h"
HMODULE hInstance;
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
hInstance = hModule;
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
================================================
FILE: samples/addon/extproc.cpp
================================================
/********************************************************************
extproc.cpp
Windows File Manager Sample Addon : extension entry point (UNICODE)
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
#include "stdafx.h"
extern HMODULE hInstance;
WORD wMenuDelta;
BOOL fToggle = FALSE;
/*
LONG CALLBACK FMExtensionProc(HWND hwnd, WORD wMsg, LONG lParam) -- ANSI
LONG CALLBACK FMExtensionProcW(HWND hwnd, WORD wMsg, LONG lParam) -- UNICODE
Parameters:
hwnd Type: HWND
A window handle to File Manager.
An extension uses this handle to specify the parent window for any dialog box or
message box it must display, and to send query messages to File Manager.
wMsg Type: WORD
One of the following File Manager messages.
1 through 99
User selected an item from the extension-supplied menu. The value is the identifier of the selected menu item.
FMEVENT_HELPMENUITEM
User pressed F1 while selecting an extension menu or toolbar command item. Indicates that the extension should call WinHelp appropriately for the command item.
FMEVENT_HELPSTRING
User selected an extension menu or toolbar command item. Indicates that the extension should supply a Help string.
FMEVENT_INITMENU
User selected the extension's menu. The extension should initialize items in the menu.
FMEVENT_LOAD
File Manager is loading the extension DLL and prompts the DLL for information about the menu that the DLL supplies.
FMEVENT_SELCHANGE
Selection in the File Manager directory window or Search Results window has changed.
FMEVENT_TOOLBARLOAD
File Manager is creating the toolbar and prompts the extension DLL for information about any buttons the DLL adds to the toolbar.
FMEVENT_UNLOAD
File Manager is unloading the extension DLL.
FMEVENT_USER_REFRESH
User selected the Refresh command from the Window menu. The extension should update items in the menu, if necessary.
lParam Type: LONG
Message-specific value.
Return value Type: LONG
Returns a value dependent upon the wMsg parameter message.
Usage: in order for Windows File Manager to load this dll, add a section to winfile.ini (located in %USERPROFILE%\Roaming\Microsoft\Winfile):
[Addons]
ext1=<path to dll>
The key names ('ext1' in the example) don't matter, but must all be unique within the [Addons] section. Specifying anything but a full path
results in undefined behavior currently.
*/
LONG APIENTRY FMExtensionProcW(HWND hwnd, WPARAM wEvent, LPARAM lParam)
{
// this is to export the function name as plain 'C'
#pragma comment(linker, "/EXPORT:" __FUNCTION__ "=" __FUNCDNAME__) // my complain, but compiles well
LONG returnValue = 0L;
HMENU hMenu;
TCHAR szBuf[200];
switch (wEvent)
{
case FMEVENT_LOAD:
{
/* File Manager is loading the extension DLL and prompts the DLL for information about the menu that the DLL supplies. */
wMenuDelta = ((LPFMS_LOAD)lParam)->wMenuDelta;
/* Fill the FMS_LOAD structure. */
((LPFMS_LOAD) lParam)->dwSize = sizeof(FMS_LOAD);
lstrcpy(((LPFMS_LOAD)lParam)->szMenuName, L"AddonSampleMenu");
/* Return the handle to the menu. */
HMENU hm = GetSubMenu(LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU)), 0); // IDR_MENU from resource.h
((LPFMS_LOAD)lParam)->hMenu = hm;
returnValue = (LONG)TRUE;
}
break;
case FMEVENT_UNLOAD:
{
/* File Manager is unloading the extension DLL. */
}
break;
case FMEVENT_INITMENU:
{
/* User selected the extension's menu. The extension should initialize items in the menu. */
hMenu = (HMENU) lParam;
// Add check marks to menu items as appropriate.
// Add menu-item delta values to menu-item
// identifiers to specify the menu items to check.
CheckMenuItem(hMenu, wMenuDelta + IDM_TOGGLE, fToggle ? MF_BYCOMMAND | MF_CHECKED : MF_BYCOMMAND | MF_UNCHECKED);
}
break;
case FMEVENT_TOOLBARLOAD:
{
/* File Manager is creating the toolbar and prompts the extension DLL for information about any buttons the DLL adds to the toolbar. */
/* Gets called before winfile shows the toolbar. */
// EXT_BUTTON:
// Parameter 1: <id>
// Parameter 2: <help string id>
// Parameter 3: 0=normal, 1=invisible/separator, 2=pressed-not pressed
static EXT_BUTTON extbtn[ ] = { { IDM_FIRSTBUTTON, 0, 0} };
// Fill the FMS_TOOLBARLOAD structure.
((LPFMS_TOOLBARLOAD)lParam)->dwSize = sizeof(FMS_TOOLBARLOAD);
((LPFMS_TOOLBARLOAD)lParam)->lpButtons = (LPEXT_BUTTON) &extbtn;
((LPFMS_TOOLBARLOAD)lParam)->cButtons = 1; // Number of buttons in the list (incl. Seperator)
((LPFMS_TOOLBARLOAD)lParam)->cBitmaps = 1; // Number of Buttons, shown with the current image
((LPFMS_TOOLBARLOAD)lParam)->idBitmap = IDB_TEST; //IDB_TEST from resource.h
returnValue = (LONG)TRUE;
}
break;
case FMEVENT_USER_REFRESH:
{
/* User selected the Refresh command from the Window menu. The extension should update items in the menu, if necessary. */
}
break;
case FMEVENT_SELCHANGE:
{
/* Selection in the File Manager directory window or Search Results window has changed. */
/* reacts only on the right half of the window and only left click */
}
break;
case FMEVENT_HELPSTRING:
{
/* User selected an extension menu or toolbar command item. Indicates that the extension should supply a Help string. */
if ( ((LPFMS_HELPSTRING)lParam)->idCommand == -1 )
{
lstrcpy(((LPFMS_HELPSTRING)lParam)->szHelp, L"The mouse is over the menu item (Extension).");
}
else
{
wsprintf(((LPFMS_HELPSTRING)lParam)->szHelp, L"Tooltip for item %d", ((LPFMS_HELPSTRING)lParam)->idCommand);
}
}
break;
case FMEVENT_HELPMENUITEM:
{
/*
User pressed F1 while selecting an extension menu or toolbar command item.
Indicates that the extension should call WinHelp appropriately for the command item.
*/
wsprintf(szBuf, L"Help for %d", lParam);
MessageBox(hwnd, szBuf, L"WinHelp call", MB_OK);
/* Use: WinHelp(hwnd, "ExtHelp.hlp", HELP_CONTEXT, lParam); */
}
break;
// ***** Till here FMEVENT_... *****
// now the handling of the self defined actions
case IDM_FIRSTBUTTON: // (1)
{
INT focus = (INT)SendMessage(hwnd, FM_GETFOCUS, 0, 0);
switch( focus )
{
case FMFOCUS_DIR:
MessageBox(hwnd, L"Focus is on the right side.", L"Test-Plugin", MB_OK);
break;
case FMFOCUS_TREE:
MessageBox(hwnd, L"Focus is on the left side.", L"Test-Plugin", MB_OK);
break;
};
}
break;
case IDM_TESTMENU:
{
MessageBox(hwnd, L"Hi test!", L"IDM_TESTMENU", MB_OK);
}
break;
case IDM_TOGGLE:
{
MessageBox(hwnd, fToggle ? L"Hi On" : L"Hi Off", L"IDM_TOGGLE", MB_OK);
fToggle = !fToggle;
}
break;
default:
{
wsprintf(szBuf, L"Unrecognized idm: %d", (INT) wEvent);
MessageBox(hwnd, szBuf, L"Error", MB_OK);
}
break;
}
return returnValue;
}
================================================
FILE: samples/addon/resource.h
================================================
/********************************************************************
resource.h
Windows File Manager Sample Addon resource definitions
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
#define IDR_MENU 101
#define IDB_TEST 102
#define IDM_FIRSTBUTTON 1
#define IDM_TESTMENU 2
#define IDM_TOGGLE 8
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 103
#define _APS_NEXT_COMMAND_VALUE 40002
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
================================================
FILE: samples/addon/resources.rc
================================================
/********************************************************************
resources.rc
Windows File Manager Sample Addon resource definitions
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "windows.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
#pragma code_page(1252)
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDR_MENU MENU
BEGIN
POPUP "AddonSampleMenu"
BEGIN
MENUITEM "Test entry 1234", IDM_TESTMENU
MENUITEM "Toggle", IDM_TOGGLE
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_TEST BITMAP "AddonSample.bmp"
#endif // English resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
================================================
FILE: samples/addon/stdafx.cpp
================================================
// stdafx.cpp : source file that includes just the standard includes
// Dll1.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// NOTE: reference any additional headers you need in STDAFX.H
// and not in this file
================================================
FILE: samples/addon/stdafx.h
================================================
// 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 WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>
#include "wfext.h"
#include "resource.h"
================================================
FILE: samples/addon/targetver.h
================================================
#pragma once
// Including SDKDDKVer.h defines the highest available Windows platform.
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
#include <SDKDDKVer.h>
================================================
FILE: samples/addon/wfext.h
================================================
/********************************************************************
wfext.h
Windows File Manager Extensions definitions (Win32 variant)
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
#ifndef _INC_WFEXT
#define _INC_WFEXT /* #defined if wfext.h has been included */
#ifdef __cplusplus /* Assume C declaration for C++ */
extern "C" {
#endif /* __cplusplus */
#define MENU_TEXT_LEN 40
#define FMMENU_FIRST 1
#define FMMENU_LAST 99
#define FMEVENT_LOAD 100
#define FMEVENT_UNLOAD 101
#define FMEVENT_INITMENU 102
#define FMEVENT_USER_REFRESH 103
#define FMEVENT_SELCHANGE 104
#define FMEVENT_TOOLBARLOAD 105
#define FMEVENT_HELPSTRING 106
#define FMEVENT_HELPMENUITEM 107
#define FMFOCUS_DIR 1
#define FMFOCUS_TREE 2
#define FMFOCUS_DRIVES 3
#define FMFOCUS_SEARCH 4
#define FM_GETFOCUS (WM_USER + 0x0200)
#define FM_GETSELCOUNT (WM_USER + 0x0202)
#define FM_GETSELCOUNTLFN (WM_USER + 0x0203) /* LFN versions are odd */
#define FM_REFRESH_WINDOWS (WM_USER + 0x0206)
#define FM_RELOAD_EXTENSIONS (WM_USER + 0x0207)
#define FM_GETDRIVEINFOA (WM_USER + 0x0201)
#define FM_GETFILESELA (WM_USER + 0x0204)
#define FM_GETFILESELLFNA (WM_USER + 0x0205) /* LFN versions are odd */
#define FM_GETDRIVEINFOW (WM_USER + 0x0211)
#define FM_GETFILESELW (WM_USER + 0x0214)
#define FM_GETFILESELLFNW (WM_USER + 0x0215) /* LFN versions are odd */
#ifdef UNICODE
#define FM_GETDRIVEINFO FM_GETDRIVEINFOW
#define FM_GETFILESEL FM_GETFILESELW
#define FM_GETFILESELLFN FM_GETFILESELLFNW
#else
#define FM_GETDRIVEINFO FM_GETDRIVEINFOA
#define FM_GETFILESEL FM_GETFILESELA
#define FM_GETFILESELLFN FM_GETFILESELLFNA
#endif
typedef struct _FMS_GETFILESELA {
FILETIME ftTime;
DWORD dwSize;
BYTE bAttr;
CHAR szName[260]; // always fully qualified
} FMS_GETFILESELA, FAR *LPFMS_GETFILESELA;
typedef struct _FMS_GETFILESELW {
FILETIME ftTime ;
DWORD dwSize;
BYTE bAttr;
WCHAR szName[260]; // always fully qualified
} FMS_GETFILESELW, FAR *LPFMS_GETFILESELW;
#ifdef UNICODE
#define FMS_GETFILESEL FMS_GETFILESELW
#define LPFMS_GETFILESEL LPFMS_GETFILESELW
#else
#define FMS_GETFILESEL FMS_GETFILESELA
#define LPFMS_GETFILESEL LPFMS_GETFILESELA
#endif
typedef struct _FMS_GETDRIVEINFOA { // for drive
DWORD dwTotalSpace;
DWORD dwFreeSpace;
CHAR szPath[260]; // current directory
CHAR szVolume[14]; // volume label
CHAR szShare[128]; // if this is a net drive
} FMS_GETDRIVEINFOA, FAR *LPFMS_GETDRIVEINFOA;
typedef struct _FMS_GETDRIVEINFOW { // for drive
DWORD dwTotalSpace;
DWORD dwFreeSpace;
WCHAR szPath[260]; // current directory
WCHAR szVolume[14]; // volume label
WCHAR szShare[128]; // if this is a net drive
} FMS_GETDRIVEINFOW, FAR *LPFMS_GETDRIVEINFOW;
#ifdef UNICODE
#define FMS_GETDRIVEINFO FMS_GETDRIVEINFOW
#define LPFMS_GETDRIVEINFO LPFMS_GETDRIVEINFOW
#else
#define FMS_GETDRIVEINFO FMS_GETDRIVEINFOA
#define LPFMS_GETDRIVEINFO LPFMS_GETDRIVEINFOA
#endif
typedef struct _FMS_LOADA {
DWORD dwSize; // for version checks
CHAR szMenuName[MENU_TEXT_LEN]; // output
HMENU hMenu; // output
UINT wMenuDelta; // input
} FMS_LOADA, FAR *LPFMS_LOADA;
typedef struct _FMS_LOADW {
DWORD dwSize; // for version checks
WCHAR szMenuName[MENU_TEXT_LEN]; // output
HMENU hMenu; // output
UINT wMenuDelta; // input
} FMS_LOADW, FAR *LPFMS_LOADW;
#ifdef UNICODE
#define FMS_LOAD FMS_LOADW
#define LPFMS_LOAD LPFMS_LOADW
#else
#define FMS_LOAD FMS_LOADA
#define LPFMS_LOAD LPFMS_LOADA
#endif
// Toolbar definitions
typedef struct tagEXT_BUTTON {
WORD idCommand; /* menu command to trigger */
WORD idsHelp; /* help string ID */
WORD fsStyle; /* button style */
} EXT_BUTTON, FAR *LPEXT_BUTTON;
typedef struct tagFMS_TOOLBARLOAD {
DWORD dwSize; /* for version checks */
LPEXT_BUTTON lpButtons; /* output */
WORD cButtons; /* output, 0==>no buttons */
WORD cBitmaps; /* number of non-sep buttons */
WORD idBitmap; /* output */
HBITMAP hBitmap; /* output if idBitmap==0 */
} FMS_TOOLBARLOAD, FAR *LPFMS_TOOLBARLOAD;
typedef struct tagFMS_HELPSTRINGA {
INT idCommand; /* input, -1==>the menu was selected */
HMENU hMenu; /* input, the extensions menu */
CHAR szHelp[128]; /* output, the help string */
} FMS_HELPSTRINGA, FAR *LPFMS_HELPSTRINGA;
typedef struct tagFMS_HELPSTRINGW {
INT idCommand; /* input, -1==>the menu was selected */
HMENU hMenu; /* input, the extensions menu */
WCHAR szHelp[128]; /* output, the help string */
} FMS_HELPSTRINGW, FAR *LPFMS_HELPSTRINGW;
#ifdef UNICODE
#define FMS_HELPSTRING FMS_HELPSTRINGW
#define LPFMS_HELPSTRING LPFMS_HELPSTRINGW
#else
#define FMS_HELPSTRING FMS_HELPSTRINGA
#define LPFMS_HELPSTRING LPFMS_HELPSTRINGA
#endif
typedef DWORD (APIENTRY *FM_EXT_PROC)(HWND, WPARAM, LPARAM);
typedef DWORD (APIENTRY *FM_UNDELETE_PROC)(HWND, LPTSTR);
#ifdef UNICODE
LONG WINAPI FMExtensionProcW(HWND hwnd, WPARAM wEvent, LPARAM lParam);
#else
LONG WINAPI FMExtensionProc(HWND hwnd, WPARAM wEvent, LPARAM lParam);
#endif
#ifdef __cplusplus
} /* End of extern "C" { */
#endif /* __cplusplus */
#endif /* _INC_WFEXT */
================================================
FILE: src/BagOValues.h
================================================
/********************************************************************
BagOValues.h
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include "spinlock.h"
using namespace std;
template <class TValue>
class BagOValues
{
typedef pair<wstring, TValue> TPair;
typedef vector<TPair> TVector;
typedef typename TVector::const_iterator TItr;
SpinLock m_spinlock;
TVector m_Values;
wstring m_lastStr;
TItr m_LastItr;
public:
BagOValues()
{
}
// copies the value, but doesn't assume any memory management needs be done
void Add(wstring key, TValue value)
{
this->m_spinlock.Lock();
wstring lowered;
lowered.resize(key.size());
transform(std::begin(key), std::end(key), std::begin(lowered), ::tolower);
m_Values.emplace_back(make_pair(std::move(lowered), value));
m_lastStr.resize(0); // clear this after new data added
this->m_spinlock.Unlock();
}
void Sort()
{
this->m_spinlock.Lock();
sort(m_Values.begin(), m_Values.end());
this->m_spinlock.Unlock();
}
// Retrieve with fPrefix = true means return values for the tree at the point of the query matched;
// we must consume the whole query for anything to be returned
// fPrefix = false means that we only return values when an entire key matches and we match substrings of the query
//
// NOTE: returns a newly allocated vector; must delete it
vector<TValue> Retrieve(const wstring& query, bool fPrefix = true, unsigned maxResults = ULONG_MAX)
{
wstring lowered;
lowered.resize(query.size());
transform(std::cbegin(query), std::cend(query), std::begin(lowered), ::tolower);
vector<TValue> results;
TValue val = TValue();
TPair laspair = make_pair(lowered, val);
this->m_spinlock.Lock();
// if last saved string/iterator is a prefix of the new string, start there
TItr itr;
if (m_lastStr.size() != 0 && lowered.compare(0, m_lastStr.size(), m_lastStr) == 0)
itr = m_LastItr;
else
{
itr = lower_bound(m_Values.begin(), m_Values.end(), laspair, CompareFirst);
m_lastStr = lowered;
m_LastItr = itr;
}
for (; itr != m_Values.end(); itr++)
{
const wstring& key = itr->first;
int cmp = key.compare(0, lowered.size(), lowered);
if (cmp == 0)
{
if (!fPrefix && key.size() != lowered.size())
{
// need exact match (not just prefix); skip
continue;
}
if (results.size() >= maxResults)
break;
results.push_back(itr->second);
}
else if (cmp > 0)
{
// iterated past the strings which match on the prefix
break;
}
}
this->m_spinlock.Unlock();
return results;
}
private:
static bool CompareFirst(const TPair& a, const TPair& b)
{
return a.first < b.first;
}
};
================================================
FILE: src/Resize.c
================================================
//
// Demonstration code for a generic implementation of resizeable dialogs.
// This code implements a window class (DIALOGRESIZECONTROLCLASS) which
// can be added to dialog templates in order to define how controls
// should be moved or resized as the dialog is resized. An example
// statement looks like:
//
// DIALOGRESIZECONTROL { A, B, C, D }
//
// Where:
// A is the percentage of the new area to move the following control right;
// B is the percentage of the new area to move the following control down;
// C is the percentage of the new area to add to the following control's width;
// D is the percentage of the new area to add to the following control's height.
//
// Optionally, a second class is provided (DIALOGRESIZEDATACLASS) which
// allows the resource to specify the bounds that the dialog can be resized
// to. By default the dialog can be resized freely. An example statement
// looks like:
//
// DIALOGRESIZE { A, B }
//
// Where:
// A is the maximum percentage of the initial width allowable, or 0 if
// unbounded;
// B is the maximum percentage of the initial height allowable, or 0 if
// unbounded.
//
// Malcolm Smith, 11 Sep 2010
//
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <windowsx.h>
#include "Resize.h"
//
// For older 32-bit compilers, we won't have 64-bit support. Use the 32-bit
// variants; lack of 64-bit support doesn't matter when we're targeting
// 32-bit.
//
#ifndef SetWindowLongPtr
#define LONG_PTR LONG
#define DWLP_MSGRESULT DWL_MSGRESULT
#define DWLP_USER DWL_USER
#define SetWindowLongPtr( HWND, INDEX, DATA ) SetWindowLong( HWND, INDEX, DATA )
#define GetWindowLongPtr( HWND, INDEX ) GetWindowLong( HWND, INDEX )
#endif
#ifndef WS_EX_LAYOUTRTL
#define WS_EX_LAYOUTRTL 0x00400000L
#endif
//
// This is the only window message defined by our resize dialog control class,
// and it's fully internal. We send this to each resize control to take care
// of its buddy.
//
#define WM_RESIZEPARENT WM_USER
//
// This is the only window message defined by our resize dialog data class,
// and it's fully internal. We send this to locate the user data that was
// given to the control by the dialog manager.
//
#define WM_GETDIALOGMETADATA WM_USER
//
// The following structure is allocated and stored uniquely for each
// resizeable dialog that is currently active. It describes the state
// of the dialog when it was created.
//
#pragma pack(push, 2)
typedef struct _RESIZE_DIALOG_INFO {
RECT InitialClientRect;
RECT InitialWindowRect;
HDWP hDwp;
ULONG NumberResizeControlsPresent;
} RESIZE_DIALOG_INFO, *PRESIZE_DIALOG_INFO;
//
// This describes the data being passed into our resize metadata control
// from the dialog manager as part of its creation (only on Windows NT and
// successor systems.) On Windows 95 and its successors, we lose all the
// information we need to perform layout management, and this module is
// effectively useless.
//
typedef struct _RESIZE_DIALOG_DATA_CREATION_INFO {
USHORT SizeOfData;
USHORT MaximumWidthPercent;
USHORT MaximumHeightPercent;
} RESIZE_DIALOG_DATA_CREATION_INFO, *PRESIZE_DIALOG_DATA_CREATION_INFO;
//
// This structure is attached to each resize metadata control. It saves
// off the bounds of the size that the dialog can accept.
//
typedef struct _RESIZE_DIALOG_DATA_WINDOW_EXTRA {
USHORT MaximumWidthPercent;
USHORT MaximumHeightPercent;
} RESIZE_DIALOG_DATA_WINDOW_EXTRA, *PRESIZE_DIALOG_DATA_WINDOW_EXTRA;
//
// This structure is attached to each resize helper control. It saves off
// the initial size of its buddy and the amount of adjustment to apply to
// the buddy when a resize occurs.
//
typedef struct _RESIZE_DIALOG_CONTROL_WINDOW_EXTRA {
SMALL_RECT AdjustmentToBuddyRect;
RECT InitialBuddyRect;
BOOLEAN BuddyInitialized;
BOOLEAN AlignmentPadding;
} RESIZE_DIALOG_CONTROL_WINDOW_EXTRA, *PRESIZE_DIALOG_CONTROL_WINDOW_EXTRA;
#pragma pack(pop)
//
// This describes the data being passed into our resize helper control from
// the dialog manager as part of its creation (only on Windows NT and
// successor systems.) On Windows 95 and its successors, we lose all the
// information we need to perform layout management, and this module is
// effectively useless.
//
#pragma pack( push )
#pragma pack( 2 )
typedef struct _RESIZE_DIALOG_CONTROL_CREATION_INFO {
USHORT SizeOfData;
SMALL_RECT AdjustmentToBuddyRect;
} RESIZE_DIALOG_CONTROL_CREATION_INFO, *PRESIZE_DIALOG_CONTROL_CREATION_INFO;
#pragma pack( pop )
BOOL CALLBACK
ProcessResizeOnChildren( HWND hChildWnd, LPARAM lParam );
BOOL CALLBACK
FindMetadataFromChildren( HWND hChildWnd, LPARAM lParam );
#ifdef DFC_SCROLL
//
// This will display a sizing grip at the appropriate location on the dialog.
//
BOOL
RenderSizingGrip( HWND hDlg )
{
RECT SizeGripArea;
PAINTSTRUCT PaintStruct;
HDC hDC;
DWORD SizeBoxSize;
//
// If the dialog isn't resizable, don't render the grip.
//
if ((GetWindowLong( hDlg, GWL_STYLE ) & WS_THICKFRAME) == 0) {
return TRUE;
}
GetClientRect( hDlg, &SizeGripArea );
SizeBoxSize = GetSystemMetrics( SM_CXHSCROLL );
SizeGripArea.left = SizeGripArea.right - SizeBoxSize;
SizeGripArea.top = SizeGripArea.bottom - SizeBoxSize;
InvalidateRect( hDlg, &SizeGripArea, TRUE );
hDC = BeginPaint( hDlg, &PaintStruct );
DrawFrameControl( hDC, &SizeGripArea, DFC_SCROLL, DFCS_SCROLLSIZEGRIP );
EndPaint( hDlg, &PaintStruct );
return TRUE;
}
//
// This will force the sizing grip to be redisplayed on resize
//
BOOL
InvalidateSizingGrip( HWND hWnd, PRECT NewSize )
{
RECT SizeGripArea;
DWORD SizeBoxSize;
//
// First invalidate the old location of the grip.
//
GetClientRect( hWnd, &SizeGripArea );
SizeBoxSize = GetSystemMetrics( SM_CXHSCROLL );
SizeGripArea.left = SizeGripArea.right - SizeBoxSize;
SizeGripArea.top = SizeGripArea.bottom - SizeBoxSize;
InvalidateRect( hWnd, &SizeGripArea, FALSE );
//
// Now invalidate the new location of the grip.
//
SizeGripArea = *NewSize;
SizeGripArea.left = SizeGripArea.right - SizeBoxSize;
SizeGripArea.top = SizeGripArea.bottom - SizeBoxSize;
InvalidateRect( hWnd, &SizeGripArea, FALSE );
return TRUE;
}
//
// This will check if we're within the sizing grip, so that the
// resize action will be performed if the user attempts to drag
//
BOOL
IsWithinSizingGrip( HWND hWnd, DWORD OriginalPoint )
{
RECT SizeGripArea;
DWORD SizeBoxSize;
POINT MousePoint;
//
// If the dialog isn't resizable, we have no grip.
//
if ((GetWindowLong( hWnd, GWL_STYLE ) & WS_THICKFRAME) == 0) {
return FALSE;
}
MousePoint.x = GET_X_LPARAM( OriginalPoint );
MousePoint.y = GET_Y_LPARAM( OriginalPoint );
ScreenToClient( hWnd, &MousePoint );
GetClientRect( hWnd, &SizeGripArea );
SizeBoxSize = GetSystemMetrics( SM_CXHSCROLL );
SizeGripArea.left = SizeGripArea.right - SizeBoxSize;
SizeGripArea.top = SizeGripArea.bottom - SizeBoxSize;
//
// We're in the right spot if the mouse is over the lower-right half
// of the sizing grip rectangle. The first two checks place us in
// the rectangle, the final is to check if we're in the lower-right
// half.
//
if (MousePoint.x > SizeGripArea.left && MousePoint.x <= SizeGripArea.right &&
MousePoint.y > SizeGripArea.top && MousePoint.y <= SizeGripArea.bottom &&
(DWORD)(MousePoint.x + MousePoint.y - SizeGripArea.left - SizeGripArea.top) > SizeBoxSize) {
if (GetWindowLong( hWnd, GWL_EXSTYLE ) & WS_EX_LAYOUTRTL) {
SetWindowLongPtr( hWnd, DWLP_MSGRESULT, HTBOTTOMLEFT );
} else {
SetWindowLongPtr( hWnd, DWLP_MSGRESULT, HTBOTTOMRIGHT );
}
return TRUE;
}
return FALSE;
}
#else
#define IsWithinSizingGrip(a, b) (FALSE)
#define InvalidateSizingGrip(a, b) (FALSE)
#define RenderSizingGrip(a) (TRUE)
#endif
//
// This code is called by the dialog when processing its messages. It
// performs dialog-level operations. Returns TRUE to indicate that it
// has processed a message and the caller should not continue; FALSE
// indicates no processing or that the caller may continue
//
BOOL CALLBACK
ResizeDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
PRESIZE_DIALOG_INFO DialogInfo;
UNREFERENCED_PARAMETER(wParam);
switch( uMsg ) {
//
// We're done and need to clean up any state.
//
case WM_DESTROY:
DialogInfo = (PRESIZE_DIALOG_INFO)GetWindowLongPtr( hDlg, DWLP_USER );
if (DialogInfo != NULL) {
HeapFree( GetProcessHeap(), 0, DialogInfo );
}
SetWindowLongPtr( hDlg, DWLP_USER, 0 );
return FALSE;
//
// We have to make sure we don't resize smaller than the initial
// size. The layout management is concerned with how to allocate
// additional size - it won't work well if that additional size
// is less than zero.
//
case WM_GETMINMAXINFO:
{
LPMINMAXINFO MinMaxInfo = (LPMINMAXINFO)lParam;
PRESIZE_DIALOG_DATA_WINDOW_EXTRA ExtraData = NULL;
DialogInfo = (PRESIZE_DIALOG_INFO)GetWindowLongPtr( hDlg, DWLP_USER );
EnumChildWindows( hDlg, FindMetadataFromChildren, (LPARAM)&ExtraData );
if (ExtraData != NULL) {
if (ExtraData->MaximumWidthPercent != 0) {
MinMaxInfo->ptMaxTrackSize.x = (DialogInfo->InitialWindowRect.right - DialogInfo->InitialWindowRect.left) * ExtraData->MaximumWidthPercent / 100;
}
if (ExtraData->MaximumHeightPercent != 0) {
MinMaxInfo->ptMaxTrackSize.y = (DialogInfo->InitialWindowRect.bottom - DialogInfo->InitialWindowRect.top) * ExtraData->MaximumHeightPercent / 100;
}
}
MinMaxInfo->ptMinTrackSize.x = DialogInfo->InitialWindowRect.right - DialogInfo->InitialWindowRect.left;
MinMaxInfo->ptMinTrackSize.y = DialogInfo->InitialWindowRect.bottom - DialogInfo->InitialWindowRect.top;
return TRUE;
}
//
// Display and give effect to the sizing grip
//
case WM_PAINT:
if (GetUpdateRect( hDlg, NULL, FALSE )) {
RenderSizingGrip( hDlg );
}
return FALSE;
case WM_NCHITTEST:
return IsWithinSizingGrip( hDlg, (DWORD)lParam );
#ifdef WM_SIZING
case WM_SIZING:
InvalidateSizingGrip( hDlg, (PRECT)lParam );
return FALSE;
#endif
//
// Save off the initial window size and client area. We use the
// initial window size to ensure the window can't be shrunk
// smaller than it, and we use the initial client size to
// determine how much the window is growing.
//
case WM_INITDIALOG:
DialogInfo = (PRESIZE_DIALOG_INFO)HeapAlloc( GetProcessHeap(), 0, sizeof(*DialogInfo) );
if (DialogInfo == NULL) {
EndDialog( hDlg, -1 );
return TRUE;
}
GetClientRect( hDlg, &DialogInfo->InitialClientRect );
GetWindowRect( hDlg, &DialogInfo->InitialWindowRect );
DialogInfo->NumberResizeControlsPresent = 0;
SetWindowLongPtr( hDlg, DWLP_USER, (LONG_PTR)DialogInfo );
break;
//
// The user changed the size of the window. Walk through all
// the resize helper controls and tell them this happened, and
// how big we were when created. From there, the helper controls
// can resize their associated buddy controls appropriately.
//
case WM_SIZE:
DialogInfo = (PRESIZE_DIALOG_INFO)GetWindowLongPtr( hDlg, DWLP_USER );
RenderSizingGrip( hDlg );
//
// If we "know" how many controls are present, use that. If
// we don't know, start with a sensible default.
//
if (DialogInfo->NumberResizeControlsPresent != 0) {
DialogInfo->hDwp = BeginDeferWindowPos( DialogInfo->NumberResizeControlsPresent );
} else {
DialogInfo->hDwp = BeginDeferWindowPos( 20 );
}
//
// We're enumerating again, and recalculating the current
// number of resize controls.
//
DialogInfo->NumberResizeControlsPresent = 0;
EnumChildWindows( hDlg, ProcessResizeOnChildren, (LPARAM)DialogInfo );
//
// It's possible that controls have been added or our initial
// guess was wrong, and we couldn't dynamically add space to
// accommodate the new controls. In that case, start over
// and don't use the DeferWindowPos optimization.
//
if (DialogInfo->hDwp) {
EndDeferWindowPos( DialogInfo->hDwp );
DialogInfo->hDwp = NULL;
} else {
DialogInfo->NumberResizeControlsPresent = 0;
EnumChildWindows( hDlg, ProcessResizeOnChildren, (LPARAM)DialogInfo );
}
return FALSE;
}
return FALSE;
}
//
// We use this to walk through all the controls on the dialog and send the
// appropriate messages to our resize helper controls to fix things up.
//
BOOL CALLBACK
FindMetadataFromChildren( HWND hChildWnd, LPARAM lParam )
{
WCHAR szText[100];
int CharsCopied;
//
// GetClassName expects a count of characters, so we dance in case
// we're Unicode.
//
if (IsWindowUnicode( hChildWnd )) {
CharsCopied = GetClassNameW( hChildWnd, (PWCHAR)szText, sizeof( szText ) / sizeof( WCHAR ));
//
// If we couldn't get this into our buffer, assume it's not our
// class, but keep enumerating.
//
if (CharsCopied == 0 || CharsCopied >= (sizeof( szText ) / sizeof( WCHAR ))) {
return TRUE;
}
//
// We only need to find one per-dialog metadata class. If we
// find it, we're done.
//
if (wcscmp( (PWCHAR)szText, DIALOGRESIZEDATACLASSW ) == 0) {
SendMessage( hChildWnd, WM_GETDIALOGMETADATA, 0, lParam );
return FALSE;
}
} else {
CharsCopied = GetClassNameA( hChildWnd, (PCHAR)szText, sizeof( szText ) / sizeof( CHAR ));
//
// If we couldn't get this into our buffer, assume it's not our
// class, but keep enumerating.
//
if (CharsCopied == 0 || CharsCopied >= (sizeof( szText ) / sizeof( CHAR ))) {
return TRUE;
}
//
// We only need to find one per-dialog metadata class. If we
// find it, we're done.
//
if (strcmp( (PCHAR)szText, DIALOGRESIZEDATACLASSA ) == 0) {
SendMessage( hChildWnd, WM_GETDIALOGMETADATA, 0, lParam );
return FALSE;
}
}
return TRUE;
}
//
// This control exists once per resizeable dialog and specifies metadata
// about how the dialog can be resized.
//
LRESULT CALLBACK
ResizeDialogDataWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
PRESIZE_DIALOG_DATA_WINDOW_EXTRA ExtraData;
switch( uMsg ) {
case WM_CREATE:
{
LPCREATESTRUCT CreateStruct;
PRESIZE_DIALOG_DATA_CREATION_INFO CreationInfo;
//
// Allocate memory and save off the additional parameters
// defined for the resize metadata control. These define
// how much the dialog can be resized by.
//
CreateStruct = (LPCREATESTRUCT)lParam;
CreationInfo = (PRESIZE_DIALOG_DATA_CREATION_INFO)CreateStruct->lpCreateParams;
ExtraData = (PRESIZE_DIALOG_DATA_WINDOW_EXTRA)HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*ExtraData) );
if (ExtraData == NULL) {
return -1;
}
//
// A dialog metadata control takes two WORDs as arguments to
// define how much the dialog should be resized. Accordingly,
// if we have less than 2 * sizeof(WORD), we don't have enough
// data to operate. Windows 95 and successor systems won't pass
// us this information through the dialog template, so if we
// have nothing, we don't allow the dialog to be resized.
//
if (CreationInfo != NULL && CreationInfo->SizeOfData >= (sizeof(WORD) * 2)) {
//
// Record the amount to adjust the buddy control, and
// attach it to our window data.
//
ExtraData->MaximumWidthPercent = CreationInfo->MaximumWidthPercent;
ExtraData->MaximumHeightPercent = CreationInfo->MaximumHeightPercent;
//
// For sanity, don't allow a maximum size which is smaller
// than the minimum size.
//
if (ExtraData->MaximumWidthPercent != 0 && ExtraData->MaximumWidthPercent < 100) {
ExtraData->MaximumWidthPercent = 100;
}
if (ExtraData->MaximumHeightPercent != 0 && ExtraData->MaximumHeightPercent < 100) {
ExtraData->MaximumHeightPercent = 100;
}
} else {
//
// Don't resize anything.
//
ExtraData->MaximumWidthPercent = 100;
ExtraData->MaximumHeightPercent = 100;
}
SetWindowLongPtr( hWnd, 0, (LONG_PTR)ExtraData );
break;
}
case WM_DESTROY:
//
// Our resize helper control is being destroyed. Tear down
// any data we're keeping to assist with resize operations.
//
ExtraData = (PRESIZE_DIALOG_DATA_WINDOW_EXTRA)GetWindowLongPtr( hWnd, 0 );
if (ExtraData != NULL) {
SetWindowLongPtr( hWnd, 0, 0 );
HeapFree( GetProcessHeap(), 0, ExtraData );
}
break;
case WM_GETDIALOGMETADATA:
{
ExtraData = (PRESIZE_DIALOG_DATA_WINDOW_EXTRA)GetWindowLongPtr( hWnd, 0 );
*(PRESIZE_DIALOG_DATA_WINDOW_EXTRA *)lParam = ExtraData;
return TRUE;
}
}
return DefWindowProc( hWnd, uMsg, wParam, lParam );
}
//
// We use this to walk through all the controls on the dialog and send the
// appropriate messages to our resize helper controls to fix things up.
//
BOOL CALLBACK
ProcessResizeOnChildren( HWND hChildWnd, LPARAM lParam )
{
WCHAR szText[100];
int CharsCopied;
//
// GetClassName expects a count of characters, so we dance in case
// we're Unicode.
//
if (IsWindowUnicode( hChildWnd )) {
CharsCopied = GetClassNameW( hChildWnd, (PWCHAR)szText, sizeof( szText ) / sizeof( WCHAR ));
//
// If we couldn't get this into our buffer, assume it's not our
// class, but keep enumerating.
//
if (CharsCopied == 0 || CharsCopied >= (sizeof( szText ) / sizeof( WCHAR ))) {
return TRUE;
}
if (wcscmp( (PWCHAR)szText, DIALOGRESIZECONTROLCLASSW ) == 0) {
SendMessage( hChildWnd, WM_RESIZEPARENT, 0, lParam );
}
} else {
CharsCopied = GetClassNameA( hChildWnd, (PCHAR)szText, sizeof( szText ) / sizeof( CHAR ));
//
// If we couldn't get this into our buffer, assume it's not our
// class, but keep enumerating.
//
if (CharsCopied == 0 || CharsCopied >= (sizeof( szText ) / sizeof( CHAR ))) {
return TRUE;
}
if (strcmp( (PCHAR)szText, DIALOGRESIZECONTROLCLASSA ) == 0) {
SendMessage( hChildWnd, WM_RESIZEPARENT, 0, lParam );
}
}
return TRUE;
}
//
// The following code deals with how to process resize information for
// controls on a dialog.
//
LRESULT CALLBACK
ResizeDialogControlWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HWND hWndParent = GetParent( hWnd );
PRESIZE_DIALOG_CONTROL_WINDOW_EXTRA ExtraData;
switch( uMsg ) {
case WM_CREATE:
{
LPCREATESTRUCT CreateStruct;
PRESIZE_DIALOG_CONTROL_CREATION_INFO CreationInfo;
//
// Allocate memory and save off the additional parameters
// defined for the resize helper control. These define how
// much of the additional space to allocate to our buddy
// control.
//
CreateStruct = (LPCREATESTRUCT)lParam;
CreationInfo = (PRESIZE_DIALOG_CONTROL_CREATION_INFO)CreateStruct->lpCreateParams;
ExtraData = (PRESIZE_DIALOG_CONTROL_WINDOW_EXTRA)HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*ExtraData) );
if (ExtraData == NULL) {
return -1;
}
//
// A dialog resize helper takes four WORDs as arguments
// to define how the buddy control should be resized.
// Accordingly, if we have less than 4 * sizeof(WORD),
// we don't have enough data to operate. Windows 95 and
// successor systems won't pass us this information
// through the dialog template, so if we have nothing, we
// do nothing but allow the dialog to load.
//
if (CreationInfo != NULL && CreationInfo->SizeOfData >= sizeof(CreationInfo->AdjustmentToBuddyRect)) {
//
// Record the amount to adjust the buddy control, and
// attach it to our window data.
//
ExtraData->AdjustmentToBuddyRect = CreationInfo->AdjustmentToBuddyRect;
} else {
//
// Don't resize anything.
//
ExtraData->AdjustmentToBuddyRect.Left = 0;
ExtraData->AdjustmentToBuddyRect.Top = 0;
ExtraData->AdjustmentToBuddyRect.Right = 0;
ExtraData->AdjustmentToBuddyRect.Bottom = 0;
}
SetWindowLongPtr( hWnd, 0, (LONG_PTR)ExtraData );
break;
}
case WM_DESTROY:
//
// Our resize helper control is being destroyed. Tear down
// any data we're keeping to assist with resize operations.
//
ExtraData = (PRESIZE_DIALOG_CONTROL_WINDOW_EXTRA)GetWindowLongPtr( hWnd, 0 );
if (ExtraData != NULL) {
SetWindowLongPtr( hWnd, 0, 0 );
HeapFree( GetProcessHeap(), 0, ExtraData );
}
break;
case WM_RESIZEPARENT:
{
PRESIZE_DIALOG_INFO DialogInfo = (PRESIZE_DIALOG_INFO)lParam;
HWND hWndBuddy = GetNextWindow( hWnd, GW_HWNDNEXT );
PRECT InitialParentRect;
RECT CurrentParentRect;
DWORD IncreaseHorizontal;
DWORD IncreaseVertical;
DWORD NewLeft;
DWORD NewTop;
DWORD NewWidth;
DWORD NewHeight;
//
// Initialize our brains.
//
ExtraData = (PRESIZE_DIALOG_CONTROL_WINDOW_EXTRA)GetWindowLongPtr( hWnd, 0 );
InitialParentRect = &DialogInfo->InitialClientRect;
//
// Count that we were here so the resizer has a good idea of
// how many controls to expect next time.
//
DialogInfo->NumberResizeControlsPresent++;
//
// If this is the first time we've been sized, it must be for
// initial placement. In that case, save off the initial
// location and size of the buddy control so we can transform
// it later.
//
if (!ExtraData->BuddyInitialized) {
RECT buddyrect;
//
// GetWindowRect returns coordinates relative to the top
// left of the display. We need to transform this into
// coordinates relative to the top left of the dialog.
//
GetWindowRect( hWndBuddy, &buddyrect );
MapWindowPoints( NULL, hWndParent, (LPPOINT)&buddyrect, 2 );
ExtraData->InitialBuddyRect = buddyrect;
ExtraData->BuddyInitialized = TRUE;
}
//
// Find out how big the dialog now is.
//
GetClientRect( hWndParent, &CurrentParentRect );
//
// Now calculate how much the dialog has grown by since it
// was created.
//
IncreaseHorizontal = (CurrentParentRect.right - InitialParentRect->right);
IncreaseVertical = (CurrentParentRect.bottom - InitialParentRect->bottom);
//
// And from there, calculate where our buddy control belongs.
// We take the initial positions and add the adjustment as a percentage.
//
NewLeft = ExtraData->InitialBuddyRect.left + IncreaseHorizontal * ExtraData->AdjustmentToBuddyRect.Left / 100;
NewTop = ExtraData->InitialBuddyRect.top + IncreaseVertical * ExtraData->AdjustmentToBuddyRect.Top / 100;
NewWidth = (ExtraData->InitialBuddyRect.right - ExtraData->InitialBuddyRect.left) + IncreaseHorizontal * ExtraData->AdjustmentToBuddyRect.Right / 100;
NewHeight = (ExtraData->InitialBuddyRect.bottom - ExtraData->InitialBuddyRect.top) + IncreaseVertical * ExtraData->AdjustmentToBuddyRect.Bottom / 100;
//
// We're going to be moving and resizing our buddy, so make sure
// it repaints itself.
//
InvalidateRect( hWndBuddy, NULL, TRUE );
//
// Now position the buddy control. We will typically optimize this
// via DeferWindowPos, which will move all the controls when we're
// done; but if we can't do that, we'll move it here.
//
if (DialogInfo->hDwp != NULL) {
DialogInfo->hDwp = DeferWindowPos( DialogInfo->hDwp,
hWndBuddy,
NULL,
NewLeft,
NewTop,
NewWidth,
NewHeight,
SWP_NOZORDER | SWP_NOACTIVATE );
}
//
// If the DeferWindowPos structure was not set up, or if we just
// tore it down above by adding more controls than it could deal
// with, move manually here.
//
if (DialogInfo->hDwp == NULL) {
MoveWindow( hWndBuddy,
NewLeft,
NewTop,
NewWidth,
NewHeight,
TRUE );
}
break;
}
}
return DefWindowProc( hWnd, uMsg, wParam, lParam );
}
BOOL
ResizeDialogInitialize( HINSTANCE hInst )
{
WNDCLASSW ResizeDialogClassW;
WNDCLASSA ResizeDialogClassA;
//
// Here we register our resize helper control class - twice.
// Once for unicode, once for non-unicode systems.
// This control is used to define how buddy controls should
// be manipulated when resizes occur.
//
ZeroMemory( &ResizeDialogClassW, sizeof( ResizeDialogClassW ));
ResizeDialogClassW.style = 0;
ResizeDialogClassW.lpfnWndProc = ResizeDialogControlWindowProc;
ResizeDialogClassW.cbClsExtra = 0;
ResizeDialogClassW.cbWndExtra = sizeof(PVOID);
ResizeDialogClassW.hInstance = hInst;
ResizeDialogClassW.hIcon = NULL;
ResizeDialogClassW.hCursor = NULL;
ResizeDialogClassW.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
ResizeDialogClassW.lpszMenuName = NULL;
ResizeDialogClassW.lpszClassName = DIALOGRESIZECONTROLCLASSW;
RegisterClassW( &ResizeDialogClassW );
ZeroMemory( &ResizeDialogClassA, sizeof( ResizeDialogClassA ));
ResizeDialogClassA.style = 0;
ResizeDialogClassA.lpfnWndProc = ResizeDialogControlWindowProc;
ResizeDialogClassA.cbClsExtra = 0;
ResizeDialogClassA.cbWndExtra = sizeof(PVOID);
ResizeDialogClassA.hInstance = hInst;
ResizeDialogClassA.hIcon = NULL;
ResizeDialogClassA.hCursor = NULL;
ResizeDialogClassA.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
ResizeDialogClassA.lpszMenuName = NULL;
ResizeDialogClassA.lpszClassName = DIALOGRESIZECONTROLCLASSA;
RegisterClassA( &ResizeDialogClassA );
ZeroMemory( &ResizeDialogClassW, sizeof( ResizeDialogClassW ));
ResizeDialogClassW.style = 0;
ResizeDialogClassW.lpfnWndProc = ResizeDialogDataWindowProc;
ResizeDialogClassW.cbClsExtra = 0;
ResizeDialogClassW.cbWndExtra = sizeof(PVOID);
ResizeDialogClassW.hInstance = hInst;
ResizeDialogClassW.hIcon = NULL;
ResizeDialogClassW.hCursor = NULL;
ResizeDialogClassW.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
ResizeDialogClassW.lpszMenuName = NULL;
ResizeDialogClassW.lpszClassName = DIALOGRESIZEDATACLASSW;
RegisterClassW( &ResizeDialogClassW );
ZeroMemory( &ResizeDialogClassA, sizeof( ResizeDialogClassA ));
ResizeDialogClassA.style = 0;
ResizeDialogClassA.lpfnWndProc = ResizeDialogDataWindowProc;
ResizeDialogClassA.cbClsExtra = 0;
ResizeDialogClassA.cbWndExtra = sizeof(PVOID);
ResizeDialogClassA.hInstance = hInst;
ResizeDialogClassA.hIcon = NULL;
ResizeDialogClassA.hCursor = NULL;
ResizeDialogClassA.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
ResizeDialogClassA.lpszMenuName = NULL;
ResizeDialogClassA.lpszClassName = DIALOGRESIZEDATACLASSA;
RegisterClassA( &ResizeDialogClassA );
return TRUE;
}
================================================
FILE: src/Resize.h
================================================
#define DIALOGRESIZECONTROLCLASSW L"DialogResizeControlClassW"
#define DIALOGRESIZECONTROLCLASSA "DialogResizeControlClassA"
#if defined(UNICODE) || defined(_UNICODE)
#define DIALOGRESIZECONTROLCLASS DIALOGRESIZECONTROLCLASSW
#else
#define DIALOGRESIZECONTROLCLASS DIALOGRESIZECONTROLCLASSA
#endif
#define DIALOGRESIZEDATACLASSW L"DialogResizeDataClassW"
#define DIALOGRESIZEDATACLASSA "DialogResizeDataClassA"
#if defined(UNICODE) || defined(_UNICODE)
#define DIALOGRESIZEDATACLASS DIALOGRESIZEDATACLASSW
#else
#define DIALOGRESIZEDATACLASS DIALOGRESIZEDATACLASSA
#endif
#ifndef RC_INVOKED
BOOL CALLBACK
ResizeDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL
ResizeDialogInitialize(HINSTANCE hInst);
#else
#define DIALOGRESIZE CONTROL "", -1, DIALOGRESIZEDATACLASS, NOT WS_VISIBLE, 0, 0, 0, 0, 0
#define DIALOGRESIZECONTROL CONTROL "", -1, DIALOGRESIZECONTROLCLASS, NOT WS_VISIBLE, 0, 0, 0, 0, 0
#endif
================================================
FILE: src/Winfile.vcxproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{028400E7-500A-4FB9-877F-F6C7AE24F109}</ProjectGuid>
<RootNamespace>Winfile</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="..\build\Winfile.default.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
</PropertyGroup>
<Import Project="..\build\Winfile.props" />
<ItemDefinitionGroup Label="Globals">
<ClCompile>
<ControlFlowGuard>Guard</ControlFlowGuard>
<DisableSpecificWarnings>4706;4152;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>LFN;FASTMOVE;UNICODE;_UNICODE;USELASTDOT;MEMDOUBLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>LFN;FASTMOVE;UNICODE;_UNICODE;USELASTDOT;MEMDOUBLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<AdditionalDependencies>kernel32.lib;gdi32.lib;user32.lib;advapi32.lib;oleaut32.lib;ole32.lib;shell32.lib;shlwapi.lib;comctl32.lib;version.lib</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
<StackReserveSize>15000000</StackReserveSize>
</Link>
</ItemDefinitionGroup>
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PreprocessorDefinitions>DBG=1;DEBUG=1;WINVER=0x0601;_WIN32_WINNT=0x601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>DBG=1;DEBUG=1;WINVER=0x0601;_WIN32_WINNT=0x601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<ImageHasSafeExceptionHandlers>true</ImageHasSafeExceptionHandlers>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugXPStatic|Win32'">
<ClCompile>
<PreprocessorDefinitions>DBG=1;DEBUG=1;STRSAFE_NO_DEPRECATE=1;WINVER=0x0501;_WIN32_WINNT=0x501;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>DBG=1;DEBUG=1;STRSAFE_NO_DEPRECATE=1;WINVER=0x0501;_WIN32_WINNT=0x501;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<ImageHasSafeExceptionHandlers>true</ImageHasSafeExceptionHandlers>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<ClCompile>
<PreprocessorDefinitions>DBG=1;DEBUG=1;WINVER=0x0A00;_WIN32_WINNT=0xA00;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>DBG=1;DEBUG=1;WINVER=0x0A00;_WIN32_WINNT=0xA00;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<ImageHasSafeExceptionHandlers>true</ImageHasSafeExceptionHandlers>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseXPStatic|Win32'">
<ClCompile>
<PreprocessorDefinitions>STRSAFE_NO_DEPRECATE=1;WINVER=0x0501;_WIN32_WINNT=0x501;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>STRSAFE_NO_DEPRECATE=1;WINVER=0x0501;_WIN32_WINNT=0x501;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<ImageHasSafeExceptionHandlers>true</ImageHasSafeExceptionHandlers>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<ClCompile>
<PreprocessorDefinitions>WINVER=0x0A00;_WIN32_WINNT=0xA00;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WINVER=0x0A00;_WIN32_WINNT=0xA00;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PreprocessorDefinitions>DBG=1;DEBUG=1;WINVER=0x0601;_WIN32_WINNT=0x601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>DBG=1;DEBUG=1;WINVER=0x0601;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="dbg.h" />
<ClInclude Include="fmifs.h" />
<ClInclude Include="lfn.h" />
<ClInclude Include="BagOValues.h" />
<ClInclude Include="mpr.h" />
<ClInclude Include="numfmt.h" />
<ClInclude Include="res.h" />
<ClInclude Include="resize.h" />
<ClInclude Include="spinlock.h" />
<ClInclude Include="suggest.h" />
<ClInclude Include="treectl.h" />
<ClInclude Include="wfcopy.h" />
<ClInclude Include="wfdlgs.h" />
<ClInclude Include="wfdocb.h" />
<ClInclude Include="wfdrop.h" />
<ClInclude Include="wfext.h" />
<ClInclude Include="wfexti.h" />
<ClInclude Include="wfgwl.h" />
<ClInclude Include="wfhelp.h" />
<ClInclude Include="wfinfo.h" />
<ClInclude Include="wfmem.h" />
<ClInclude Include="winexp.h" />
<ClInclude Include="winfile.h" />
<ClInclude Include="wnetcaps.h" />
</ItemGroup>
<ItemGroup>
<None Include="lang\res_pl-PL.rc" />
<None Include="lang\res_de-DE.rc" />
<None Include="lang\res_tr-TR.rc" />
<ResourceCompile Include="res.rc">
<Culture>0x0409</Culture>
<ShowProgress Condition="'$(Configuration)'=='Debug'">true</ShowProgress>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32_LEAN_AND_MEAN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">WIN32_LEAN_AND_MEAN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN32_LEAN_AND_MEAN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32_LEAN_AND_MEAN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">WIN32_LEAN_AND_MEAN=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">WIN32_LEAN_AND_MEAN=1;;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<None Include="lang\res_en-US.rc" />
<None Include="lang\res_zh-CN.rc" />
<None Include="lang\res_ja-JP.rc" />
<None Include="lang\res_he-IL.rc" />
<None Include="lang\res_pt-PT.rc" />
<None Include="lang\res_ko-KR.rc" />
<None Include="lang\suggest_de-DE.db" />
<None Include="lang\suggest_en-US.db" />
<None Include="lang\suggest_pl-PL.db" />
<None Include="lang\suggest_pt-PT.db" />
<None Include="lang\suggest_tr-TR.db" />
<None Include="lang\suggest_zh-CN.db" />
<None Include="lang\suggest_ja-JP.db" />
<None Include="lang\suggest_he-IL.db" />
<None Include="lang\suggest_ko-KR.db" />
<None Include="lang\winfile_de-DE.dlg" />
<None Include="lang\winfile_en-US.dlg" />
<None Include="lang\winfile_pl-PL.dlg" />
<None Include="lang\winfile_pt-PT.dlg" />
<None Include="lang\winfile_tr-TR.dlg" />
<None Include="lang\winfile_zh-CN.dlg" />
<None Include="lang\winfile_ja-JP.dlg" />
<None Include="lang\winfile_he-IL.dlg" />
<None Include="lang\winfile_ko-KR.dlg" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="dbg.c" />
<ClCompile Include="lfn.c" />
<ClCompile Include="lfnmisc.c" />
<ClCompile Include="numfmt.c" />
<ClCompile Include="resize.c" />
<ClCompile Include="suggest.c" />
<ClCompile Include="tbar.c" />
<ClCompile Include="treectl.c" />
<ClCompile Include="wfassoc.c" />
<ClCompile Include="wfchgnot.c" />
<ClCompile Include="wfcomman.c" />
<ClCompile Include="wfcopy.c" />
<ClCompile Include="wfdir.c" />
<ClCompile Include="wfdirrd.c" />
<ClCompile Include="wfdirsrc.c" />
<ClCompile Include="wfdlgs.c" />
<ClCompile Include="wfdlgs2.c" />
<ClCompile Include="wfdlgs3.c" />
<ClCompile Include="wfdos.c" />
<ClCompile Include="wfdrives.c" />
<ClCompile Include="wfdrop.c" />
<ClCompile Include="wfext.c" />
<ClCompile Include="wffile.c" />
<ClCompile Include="wfgoto.cpp" />
<ClCompile Include="wfinfo.c" />
<ClCompile Include="wfinit.c" />
<ClCompile Include="wfloc.c" />
<ClCompile Include="wfmem.c" />
<ClCompile Include="wfprint.c" />
<ClCompile Include="wfsearch.c" />
<ClCompile Include="wftree.c" />
<ClCompile Include="wfutil.c" />
<ClCompile Include="winfile.c" />
<ClCompile Include="wnetcaps.c" />
</ItemGroup>
<ItemGroup>
<Manifest Include="winfile.exe.manifest" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
</Project>
================================================
FILE: src/Winfile.vcxproj.filters
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Manifest Include="winfile.exe.manifest" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="dbg.c" />
<ClCompile Include="lfn.c" />
<ClCompile Include="lfnmisc.c" />
<ClCompile Include="numfmt.c" />
<ClCompile Include="suggest.c" />
<ClCompile Include="tbar.c" />
<ClCompile Include="treectl.c" />
<ClCompile Include="wfassoc.c" />
<ClCompile Include="wfchgnot.c" />
<ClCompile Include="wfcomman.c" />
<ClCompile Include="wfcopy.c" />
<ClCompile Include="wfdir.c" />
<ClCompile Include="wfdirrd.c" />
<ClCompile Include="wfdirsrc.c" />
<ClCompile Include="wfdlgs.c" />
<ClCompile Include="wfdlgs2.c" />
<ClCompile Include="wfdlgs3.c" />
<ClCompile Include="wfdos.c" />
<ClCompile Include="wfdrives.c" />
<ClCompile Include="wfdrop.c" />
<ClCompile Include="wfext.c" />
<ClCompile Include="wffile.c" />
<ClCompile Include="wfgoto.cpp" />
<ClCompile Include="wfinfo.c" />
<ClCompile Include="wfinit.c" />
<ClCompile Include="wfmem.c" />
<ClCompile Include="wfprint.c" />
<ClCompile Include="wfsearch.c" />
<ClCompile Include="wftree.c" />
<ClCompile Include="wfutil.c" />
<ClCompile Include="winfile.c" />
<ClCompile Include="wnetcaps.c" />
<ClCompile Include="wfloc.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="dbg.h" />
<ClInclude Include="fmifs.h" />
<ClInclude Include="lfn.h" />
<ClInclude Include="BagOValues.h" />
<ClInclude Include="mpr.h" />
<ClInclude Include="numfmt.h" />
<ClInclude Include="spinlock.h" />
<ClInclude Include="suggest.h" />
<ClInclude Include="treectl.h" />
<ClInclude Include="wfcopy.h" />
<ClInclude Include="wfdlgs.h" />
<ClInclude Include="wfdocb.h" />
<ClInclude Include="wfdrop.h" />
<ClInclude Include="wfext.h" />
<ClInclude Include="wfexti.h" />
<ClInclude Include="wfgwl.h" />
<ClInclude Include="wfhelp.h" />
<ClInclude Include="wfinfo.h" />
<ClInclude Include="wfmem.h" />
<ClInclude Include="winexp.h" />
<ClInclude Include="winfile.h" />
<ClInclude Include="wnetcaps.h" />
<ClInclude Include="res.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="res.rc" />
</ItemGroup>
<ItemGroup>
<None Include="lang\res_en-US.rc">
<Filter>lang</Filter>
</None>
<None Include="lang\res_zh-CN.rc">
<Filter>lang</Filter>
</None>
<None Include="lang\suggest_en-US.db">
<Filter>lang</Filter>
</None>
<None Include="lang\suggest_zh-CN.db">
<Filter>lang</Filter>
</None>
<None Include="lang\winfile_en-US.dlg">
<Filter>lang</Filter>
</None>
<None Include="lang\winfile_zh-CN.dlg">
<Filter>lang</Filter>
</None>
<None Include="lang\suggest_ja-JP.db">
<Filter>lang</Filter>
</None>
<None Include="lang\winfile_ja-JP.dlg">
<Filter>lang</Filter>
</None>
<None Include="lang\res_ja-JP.rc">
<Filter>lang</Filter>
</None>
<None Include="lang\suggest_pl-PL.db">
<Filter>lang</Filter>
</None>
<None Include="lang\winfile_pl-PL.dlg">
<Filter>lang</Filter>
</None>
<None Include="lang\res_pl-PL.rc">
<Filter>lang</Filter>
</None>
<None Include="lang\suggest_he-IL.db">
<Filter>lang</Filter>
</None>
<None Include="lang\winfile_he-IL.dlg">
<Filter>lang</Filter>
</None>
<None Include="lang\res_he-IL.rc">
<Filter>lang</Filter>
</None>
<None Include="lang\suggest_de-DE.db">
<Filter>lang</Filter>
</None>
<None Include="lang\res_de-DE.rc">
<Filter>lang</Filter>
</None>
<None Include="lang\winfile_de-DE.dlg">
<Filter>lang</Filter>
</None>
<None Include="lang\res_tr-TR.rc">
<Filter>lang</Filter>
</None>
<None Include="lang\suggest_tr-TR.db">
<Filter>lang</Filter>
</None>
<None Include="lang\winfile_tr-TR.dlg">
<Filter>lang</Filter>
</None>
<None Include="lang\res_pt-PT.rc">
<Filter>lang</Filter>
</None>
<None Include="lang\suggest_pt-PT.db">
<Filter>lang</Filter>
</None>
<None Include="lang\winfile_pt-PT.dlg">
<Filter>lang</Filter>
</None>
<None Include="lang\suggest_ko-KR.db">
<Filter>lang</Filter>
</None>
<None Include="lang\winfile_ko-KR.dlg">
<Filter>lang</Filter>
</None>
<None Include="lang\res_ko-KR.rc">
<Filter>lang</Filter>
</None>
</ItemGroup>
<ItemGroup>
<Filter Include="lang">
<UniqueIdentifier>{a74d83f3-58ec-46d3-bb3d-fadca6ac5743}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
================================================
FILE: src/dbg.c
================================================
/********************************************************************
dbg.c
Debugging utilities
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
#include "winfile.h"
#include "dbg.h"
#if DBG
TCHAR szAsrtFmt[] = TEXT("Assertion Failure in %s at %d\n");
TCHAR szFmt[300];
unsigned long TraceFlags =
BF_START
// | BF_PROCTRACE
// | BF_PARMTRACE
// | BF_MSGTRACE
// | BF_DEFMSGTRACE
; // set these to print on TRACEs
unsigned long BreakFlags = 0
// | BF_START
; // set these to break on TRACEs
VOID DbgAssert(
LPTSTR file,
int line)
{
wsprintf(szFmt,szAsrtFmt,file,line);
OutputDebugString(szFmt);
// DbgPrint(szAsrtFmt, file, line);
DebugBreak();
}
VOID DbgTrace(
DWORD tf,
LPTSTR lpstr)
{
if (tf & TraceFlags) {
wsprintf(szFmt,TEXT("%s\n"),lpstr);
OutputDebugString(szFmt);
// DbgPrint("%s\n", lpstr);
if (tf & BreakFlags) {
DebugBreak();
}
}
}
VOID DbgBreak(
DWORD bf,
LPTSTR file,
int line)
{
if (bf & BreakFlags) {
wsprintf(szFmt,TEXT("BREAK at %s:%d\n"), file, line);
OutputDebugString(szFmt);
// DbgPrint("BREAK at %s:%d\n", file, line);
DebugBreak();
}
}
VOID DbgPrint1(
DWORD tf,
LPTSTR fmt,
LPTSTR p1)
{
if (tf & TraceFlags) {
wsprintf(szFmt,fmt, p1);
OutputDebugString(szFmt);
// DbgPrint("%d",GetTickCount());
OutputDebugString(TEXT("\n"));
// DbgPrint(fmt, p1);
// DbgPrint("\n");
}
if (tf & BreakFlags) {
DebugBreak();
}
}
VOID DbgEnter(
LPTSTR funName)
{
DbgPrint1(BF_PROCTRACE, TEXT("> %s "), funName);
}
VOID DbgLeave(
LPTSTR funName)
{
DbgPrint1(BF_PROCTRACE, TEXT(" <%s "), funName);
}
VOID DbgTraceMessage(
LPTSTR funName,
LPTSTR msgName)
{
if (BF_MSGTRACE & TraceFlags) {
wsprintf(szFmt,TEXT("MSG: %s - %s\n"), funName, msgName);
OutputDebugString(szFmt);
// DbgPrint("MSG: %s - %s\n", funName, msgName);
}
if (BF_MSGTRACE & BreakFlags) {
DebugBreak();
}
}
VOID DbgTraceDefMessage(
LPTSTR funName,
WORD msgId)
{
if (BF_DEFMSGTRACE & TraceFlags) {
wsprintf(szFmt,TEXT("MSG: %s - default(0x%x)\n"), funName, msgId);
OutputDebugString(szFmt);
// DbgPrint("MSG: %s - default(0x%x)\n", funName, msgId);
}
if (BF_DEFMSGTRACE & BreakFlags) {
DebugBreak();
}
}
#endif // DBG
================================================
FILE: src/dbg.h
================================================
/********************************************************************
dbg.h
Debugging utilities header
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
#if DBG
extern TCHAR szAsrtFmt[];
extern unsigned long BreakFlags;
extern unsigned long TraceFlags;
DWORD DbgPrint( LPTSTR Format, ...);
VOID DbgAssert(LPTSTR file, int line);
VOID DbgTrace(DWORD tf, LPTSTR lpstr);
VOID DbgBreak(DWORD bf, LPTSTR file, int line);
VOID DbgPrint1(DWORD tf, LPTSTR fmt, LPTSTR p1);
VOID DbgEnter(LPTSTR funName);
VOID DbgLeave(LPTSTR funName);
VOID DbgTraceMessage(LPTSTR funName, LPTSTR msgName);
VOID DbgTraceDefMessage(LPTSTR funName, WORD msgId);
// BreakFlags flags
#define BF_SPECIAL 0x00800000
#define BF_WM_CREATE 0x02000000
#define BF_DEFMSGTRACE 0x04000000
#define BF_MSGTRACE 0x08000000
#define BF_PARMTRACE 0x20000000
#define BF_PROCTRACE 0x40000000
#define BF_START 0x80000000
#define ASSERT(fOk) if (!(fOk)) DbgAssert(TEXT(__FILE__), __LINE__)
#define FBREAK(bf) DbgBreak(bf, TEXT(__FILE__), __LINE__)
#define TRACE(tf, lpstr) DbgTrace(tf, lpstr)
#define PRINT(tf, fmt, p1) DbgPrint1(tf, fmt, (LPTSTR)(p1))
#define MSG(funName, msgName) DbgTraceMessage(funName, msgName)
#define DEFMSG(funName, wMsgId) DbgTraceDefMessage(funName, wMsgId)
#define ENTER(funName) DbgEnter(funName)
#define LEAVE(funName) DbgLeave(funName)
#else // !DBG
#define ASSERT(fOk)
#define FBREAK(bf)
#define TRACE(tf, lpstr)
#define PRINT(tf, fmt, p1)
#define MSG(funName, msgName)
#define DEFMSG(funName, wMsgId)
#define ENTER(funName)
#define LEAVE(funName)
#endif // DBG
================================================
FILE: src/fmifs.h
================================================
/********************************************************************
fmifs.h
This header file contains the specification of the interface
between the file manager and fmifs.dll for the purposes of
accomplishing IFS functions.
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
#if !defined( _FMIFS_DEFN_ )
#define _FMIFS_DEFN_
//
// These are the defines for 'PacketType'.
//
typedef enum _FMIFS_PACKET_TYPE {
FmIfsPercentCompleted,
FmIfsFormatReport,
FmIfsInsertDisk,
FmIfsIncompatibleFileSystem,
FmIfsFormattingDestination,
FmIfsIncompatibleMedia,
FmIfsAccessDenied,
FmIfsMediaWriteProtected,
FmIfsCantLock,
FmIfsCantQuickFormat,
FmIfsIoError,
FmIfsFinished,
FmIfsBadLabel,
#if defined( DBLSPACE_ENABLED )
FmIfsDblspaceCreateFailed,
FmIfsDblspaceMountFailed,
FmIfsDblspaceDriveLetterFailed,
FmIfsDblspaceCreated,
FmIfsDblspaceMounted,
#endif // DBLSPACE_ENABLED
FmIfsCheckOnReboot,
FmIfsTextMessage,
FmIfsHiddenStatus
} FMIFS_PACKET_TYPE, *PFMIFS_PACKET_TYPE;
typedef struct _FMIFS_PERCENT_COMPLETE_INFORMATION {
ULONG PercentCompleted;
} FMIFS_PERCENT_COMPLETE_INFORMATION, *PFMIFS_PERCENT_COMPLETE_INFORMATION;
typedef struct _FMIFS_FORMAT_REPORT_INFORMATION {
ULONG KiloBytesTotalDiskSpace;
ULONG KiloBytesAvailable;
} FMIFS_FORMAT_REPORT_INFORMATION, *PFMIFS_FORMAT_REPORT_INFORMATION;
// The packet for FmIfsDblspaceCreated is a Unicode string
// giving the name of the Compressed Volume File; it is not
// necessarily zero-terminated.
//
#define DISK_TYPE_GENERIC 0
#define DISK_TYPE_SOURCE 1
#define DISK_TYPE_TARGET 2
#define DISK_TYPE_SOURCE_AND_TARGET 3
typedef struct _FMIFS_INSERT_DISK_INFORMATION {
ULONG DiskType;
} FMIFS_INSERT_DISK_INFORMATION, *PFMIFS_INSERT_DISK_INFORMATION;
typedef struct _FMIFS_IO_ERROR_INFORMATION {
ULONG DiskType;
ULONG Head;
ULONG Track;
} FMIFS_IO_ERROR_INFORMATION, *PFMIFS_IO_ERROR_INFORMATION;
typedef struct _FMIFS_FINISHED_INFORMATION {
BOOLEAN Success;
} FMIFS_FINISHED_INFORMATION, *PFMIFS_FINISHED_INFORMATION;
typedef struct _FMIFS_CHECKONREBOOT_INFORMATION {
OUT BOOLEAN QueryResult; // TRUE for "yes", FALSE for "no"
} FMIFS_CHECKONREBOOT_INFORMATION, *PFMIFS_CHECKONREBOOT_INFORMATION;
typedef enum _TEXT_MESSAGE_TYPE {
MESSAGE_TYPE_PROGRESS,
MESSAGE_TYPE_RESULTS,
MESSAGE_TYPE_FINAL
} TEXT_MESSAGE_TYPE, *PTEXT_MESSAGE_TYPE;
typedef struct _FMIFS_TEXT_MESSAGE {
IN TEXT_MESSAGE_TYPE MessageType;
IN PSTR Message;
} FMIFS_TEXT_MESSAGE, *PFMIFS_TEXT_MESSAGE;
//
// This is a list of supported floppy media types for format.
//
typedef enum _FMIFS_MEDIA_TYPE {
FmMediaUnknown,
FmMediaF5_160_512, // 5.25", 160KB, 512 bytes/sector
FmMediaF5_180_512, // 5.25", 180KB, 512 bytes/sector
FmMediaF5_320_512, // 5.25", 320KB, 512 bytes/sector
FmMediaF5_320_1024, // 5.25", 320KB, 1024 bytes/sector
FmMediaF5_360_512, // 5.25", 360KB, 512 bytes/sector
FmMediaF3_720_512, // 3.5", 720KB, 512 bytes/sector
FmMediaF5_1Pt2_512, // 5.25", 1.2MB, 512 bytes/sector
FmMediaF3_1Pt44_512, // 3.5", 1.44MB, 512 bytes/sector
FmMediaF3_2Pt88_512, // 3.5", 2.88MB, 512 bytes/sector
FmMediaF3_20Pt8_512, // 3.5", 20.8MB, 512 bytes/sector
FmMediaRemovable, // Removable media other than floppy
FmMediaFixed,
FmMediaF3_120M_512 // 3.5", 120M Floppy
} FMIFS_MEDIA_TYPE, *PFMIFS_MEDIA_TYPE;
//
// The structure below defines information to be passed into ChkdskEx.
// When new fields are added, the version number will have to be upgraded
// so that only new code will reference those new fields.
//
typedef struct {
UCHAR Major; // initial version is 1.0
UCHAR Minor;
ULONG Flags;
PWSTR PathToCheck;
} FMIFS_CHKDSKEX_PARAM, *PFMIFS_CHKDSKEX_PARAM;
//
// Internal definitions for Flags field in FMIFS_CHKDSKEX_PARAM
//
#define FMIFS_CHKDSK_RECOVER_FREE_SPACE 0x00000002UL
#define FMIFS_CHKDSK_RECOVER_ALLOC_SPACE 0x00000004UL
//
// External definitions for Flags field in FMIFS_CHKDSKEX_PARAM
//
// FMIFS_CHKDSK_VERBOSE
// - For FAT, chkdsk will print every filename being processed
// - For NTFS, chkdsk will print clean up messages
// FMIFS_CHKDSK_RECOVER
// - Perform sector checking on free and allocated space
// FMIFS_CHKDSK_EXTEND
// - For NTFS, chkdsk will extend a volume
// FMIFS_CHKDSK_DOWNGRADE (for NT 5 or later but obsolete anyway)
// - For NTFS, this downgrade a volume from most recent NTFS version
// FMIFS_CHKDSK_ENABLE_UPGRADE (for NT 5 or later but obsolete anyway)
// - For NTFS, this upgrades a volume to most recent NTFS version
// FMIFS_CHKDSK_CHECK_IF_DIRTY
// - Perform consistency check only if the volume is dirty
// FMIFS_CHKDSK_FORCE (for NT 5 or later)
// - Forces the volume to dismount first if necessary
// FMIFS_CHKDSK_SKIP_INDEX_SCAN
// - Skip the scanning of each index entry
// FMIFS_CHKDSK_SKIP_CYCLE_SCAN
// - Skip the checking of cycles within the directory tree
#define FMIFS_CHKDSK_VERBOSE 0x00000001UL
#define FMIFS_CHKDSK_RECOVER (FMIFS_CHKDSK_RECOVER_FREE_SPACE | \
FMIFS_CHKDSK_RECOVER_ALLOC_SPACE)
#define FMIFS_CHKDSK_EXTEND 0x00000008UL
#define FMIFS_CHKDSK_DOWNGRADE 0x00000010UL
#define FMIFS_CHKDSK_ENABLE_UPGRADE 0x00000020UL
#define FMIFS_CHKDSK_CHECK_IF_DIRTY 0x00000080UL
#define FMIFS_CHKDSK_FORCE 0x00000100UL
#define FMIFS_CHKDSK_SKIP_INDEX_SCAN 0x00000200UL
#define FMIFS_CHKDSK_SKIP_CYCLE_SCAN 0x00000400UL
//
// Function types/interfaces.
//
typedef BOOLEAN
(*FMIFS_CALLBACK)(
IN FMIFS_PACKET_TYPE PacketType,
IN ULONG PacketLength,
IN PVOID PacketData
);
typedef
VOID
(*PFMIFS_FORMAT_ROUTINE)(
IN PWSTR DriveName,
IN FMIFS_MEDIA_TYPE MediaType,
IN PWSTR FileSystemName,
IN PWSTR Label,
IN BOOLEAN Quick,
IN FMIFS_CALLBACK Callback
);
typedef
VOID
(*PFMIFS_FORMATEX_ROUTINE)(
IN PWSTR DriveName,
IN FMIFS_MEDIA_TYPE MediaType,
IN PWSTR FileSystemName,
IN PWSTR Label,
IN BOOLEAN Quick,
IN ULONG ClusterSize,
IN FMIFS_CALLBACK Callback
);
typedef
BOOLEAN
(*PFMIFS_ENABLECOMP_ROUTINE)(
IN PWSTR DriveName,
IN USHORT CompressionFormat
);
typedef
VOID
(*PFMIFS_CHKDSK_ROUTINE)(
IN PWSTR DriveName,
IN PWSTR FileSystemName,
IN BOOLEAN Fix,
IN BOOLEAN Verbose,
IN BOOLEAN OnlyIfDirty,
IN BOOLEAN Recover,
IN PWSTR PathToCheck,
IN BOOLEAN Extend,
IN FMIFS_CALLBACK Callback
);
typedef
VOID
(*PFMIFS_CHKDSKEX_ROUTINE)(
IN PWSTR DriveName,
IN PWSTR FileSystemName,
IN BOOLEAN Fix,
IN PFMIFS_CHKDSKEX_PARAM Param,
IN FMIFS_CALLBACK Callback
);
typedef
VOID
(*PFMIFS_EXTEND_ROUTINE)(
IN PWSTR DriveName,
IN BOOLEAN Verify,
IN FMIFS_CALLBACK Callback
);
typedef
VOID
(*PFMIFS_DISKCOPY_ROUTINE)(
IN PWSTR SourceDrive,
IN PWSTR DestDrive,
IN BOOLEAN Verify,
IN FMIFS_CALLBACK Callback
);
typedef
BOOLEAN
(*PFMIFS_SETLABEL_ROUTINE)(
IN PWSTR DriveName,
IN PWSTR Label
);
typedef
BOOLEAN
(*PFMIFS_QSUPMEDIA_ROUTINE)(
IN PWSTR DriveName,
OUT PFMIFS_MEDIA_TYPE MediaTypeArray OPTIONAL,
IN ULONG NumberOfArrayEntries,
OUT PULONG NumberOfMediaTypes
);
typedef
VOID
(*PFMIFS_DOUBLESPACE_CREATE_ROUTINE)(
IN PWSTR HostDriveName,
IN ULONG Size,
IN PWSTR Label,
IN PWSTR NewDriveName,
IN FMIFS_CALLBACK Callback
);
#if defined( DBLSPACE_ENABLED )
typedef
VOID
(*PFMIFS_DOUBLESPACE_DELETE_ROUTINE)(
IN PWSTR DblspaceDriveName,
IN FMIFS_CALLBACK Callback
);
typedef
VOID
(*PFMIFS_DOUBLESPACE_MOUNT_ROUTINE)(
IN PWSTR HostDriveName,
IN PWSTR CvfName,
IN PWSTR NewDriveName,
IN FMIFS_CALLBACK Callback
);
typedef
VOID
(*PFMIFS_DOUBLESPACE_DISMOUNT_ROUTINE)(
IN PWSTR DblspaceDriveName,
IN FMIFS_CALLBACK Callback
);
typedef
BOOLEAN
(*PFMIFS_DOUBLESPACE_QUERY_INFO_ROUTINE)(
IN PWSTR DosDriveName,
OUT PBOOLEAN IsRemovable,
OUT PBOOLEAN IsFloppy,
OUT PBOOLEAN IsCompressed,
OUT PBOOLEAN Error,
OUT PWSTR NtDriveName,
IN ULONG MaxNtDriveNameLength,
OUT PWSTR CvfFileName,
IN ULONG MaxCvfFileNameLength,
OUT PWSTR HostDriveName,
IN ULONG MaxHostDriveNameLength
);
typedef
BOOLEAN
(*PFMIFS_DOUBLESPACE_SET_AUTMOUNT_ROUTINE)(
IN BOOLEAN EnableAutomount
);
#endif // DBLSPACE_ENABLED
VOID
Format(
IN PWSTR DriveName,
IN FMIFS_MEDIA_TYPE MediaType,
IN PWSTR FileSystemName,
IN PWSTR Label,
IN BOOLEAN Quick,
IN FMIFS_CALLBACK Callback
);
VOID
FormatEx(
IN PWSTR DriveName,
IN FMIFS_MEDIA_TYPE MediaType,
IN PWSTR FileSystemName,
IN PWSTR Label,
IN BOOLEAN Quick,
IN ULONG ClusterSize,
IN FMIFS_CALLBACK Callback
);
BOOLEAN
EnableVolumeCompression(
IN PWSTR DriveName,
IN USHORT CompressionFormat
);
VOID
Chkdsk(
IN PWSTR DriveName,
IN PWSTR FileSystemName,
IN BOOLEAN Fix,
IN BOOLEAN Verbose,
IN BOOLEAN OnlyIfDirty,
IN BOOLEAN Recover,
IN PWSTR PathToCheck,
IN BOOLEAN Extend,
IN FMIFS_CALLBACK Callback
);
VOID
ChkdskEx(
IN PWSTR DriveName,
IN PWSTR FileSystemName,
IN BOOLEAN Fix,
IN PFMIFS_CHKDSKEX_PARAM Param,
IN FMIFS_CALLBACK Callback
);
VOID
Extend(
IN PWSTR DriveName,
IN BOOLEAN Verify,
IN FMIFS_CALLBACK Callback
);
VOID
DiskCopy(
IN PWSTR SourceDrive,
IN PWSTR DestDrive,
IN BOOLEAN Verify,
IN FMIFS_CALLBACK Callback
);
BOOLEAN
SetLabel(
IN PWSTR DriveName,
IN PWSTR Label
);
BOOLEAN
QuerySupportedMedia(
IN PWSTR DriveName,
OUT PFMIFS_MEDIA_TYPE MediaTypeArray OPTIONAL,
IN ULONG NumberOfArrayEntries,
OUT PULONG NumberOfMediaTypes
);
VOID
DoubleSpaceCreate(
IN PWSTR HostDriveName,
IN ULONG Size,
IN PWSTR Label,
IN PWSTR NewDriveName,
IN FMIFS_CALLBACK Callback
);
#if defined( DBLSPACE_ENABLED )
VOID
DoubleSpaceDelete(
IN PWSTR DblspaceDriveName,
IN FMIFS_CALLBACK Callback
);
VOID
DoubleSpaceMount(
IN PWSTR HostDriveName,
IN PWSTR CvfName,
IN PWSTR NewDriveName,
IN FMIFS_CALLBACK Callback
);
VOID
DoubleSpaceDismount(
IN PWSTR DblspaceDriveName,
IN FMIFS_CALLBACK Callback
);
// Miscellaneous prototypes:
//
BOOLEAN
FmifsQueryDriveInformation(
IN PWSTR DosDriveName,
OUT PBOOLEAN IsRemovable,
OUT PBOOLEAN IsFloppy,
OUT PBOOLEAN IsCompressed,
OUT PBOOLEAN Error,
OUT PWSTR NtDriveName,
IN ULONG MaxNtDriveNameLength,
OUT PWSTR CvfFileName,
IN ULONG MaxCvfFileNameLength,
OUT PWSTR HostDriveName,
IN ULONG MaxHostDriveNameLength
);
BOOLEAN
FmifsSetAutomount(
IN BOOLEAN EnableAutomount
);
#endif
#endif // _FMIFS_DEFN_
================================================
FILE: src/lang/res_de-DE.rc
================================================
/********************************************************************
res_de-DE.rc
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License.
********************************************************************/
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
FRAMEMENU MENU
BEGIN
POPUP "&Datei"
BEGIN
MENUITEM "Ö&ffnen\tEingabetaste", IDM_OPEN
MENUITEM "Bearbeiten\tF12", IDM_EDIT
MENUITEM "&Verschieben...\tF7", IDM_MOVE
MENUITEM "&Kopieren...\tF8", IDM_COPY
MENUITEM "S&ymlink...\tF11", IDM_SYMLINK
MENUITEM "H&ardlink...\tUmschalt+F11", IDM_HARDLINK
MENUITEM "&In Zwischenablage...\tStrg+C", IDM_COPYTOCLIPBOARD
MENUITEM "Ausschneiden in Zwischenablage...\tStrg+X", IDM_CUTTOCLIPBOARD
MENUITEM "&Einfügen\tStrg+V", IDM_PASTE
MENUITEM "&Löschen...\tEntf", IDM_DELETE
MENUITEM "&Umbenennen...\tF2", IDM_RENAME
MENUITEM "Ei&genschaften...\tAlt+Eingabetaste", IDM_ATTRIBS
MENUITEM SEPARATOR
MENUITEM "K&omprimieren...", IDM_COMPRESS
MENUITEM "Deko&mprimieren...", IDM_UNCOMPRESS
MENUITEM SEPARATOR
MENUITEM "&Ausführen...", IDM_RUN
MENUITEM "&Drucken...", IDM_PRINT
MENUITEM "Zuord&nen...", IDM_ASSOCIATE
MENUITEM SEPARATOR
MENUITEM "Ver&zeichnis erstellen...\tUmschalt+Strg+N", IDM_MAKEDIR
MENUITEM "&Suchen...\tStrg+F", IDM_SEARCH
MENUITEM "Dateien aus&wählen...", IDM_SELECT
POPUP "Starte (&.)"
BEGIN
MENUITEM "&Bash Shell...\tStrg+B", IDM_STARTBASHSHELL
MENUITEM "&Cmd Shell...\tStrg+K", IDM_STARTCMDSHELL
MENUITEM "&PowerShell...\tStrg+P", IDM_STARTPOWERSHELL
MENUITEM "&Explorer...\tStrg+E", IDM_STARTEXPLORER
END
MENUITEM "&Gehe ins Verzeichnis...\tStrg+G", IDM_GOTODIR
MENUITEM SEPARATOR
MENUITEM "&Beenden", IDM_EXIT
END
POPUP "Da&tenträger"
BEGIN
MENUITEM "Datenträger &kopieren...", IDM_DISKCOPY
MENUITEM "Datenträger &benennen...", IDM_LABEL
MENUITEM SEPARATOR
MENUITEM "Datenträger &formatieren...", IDM_FORMAT
MENUITEM SEPARATOR
MENUITEM "Laufwerk aus&wählen...", IDM_DRIVESMORE
END
POPUP "&Verzeichnisse"
BEGIN
MENUITEM "&Nächste Ebene einblenden\t+", IDM_EXPONE
MENUITEM "&Zweig einblenden\t*", IDM_EXPSUB
MENUITEM "Alle &Ebenen einblenden\tStrg+*", IDM_EXPALL
MENUITEM "Zweig &ausblenden\t-", IDM_COLLAPSE
MENUITEM SEPARATOR
MENUITEM "&Verzweigungen kennzeichnen", IDM_ADDPLUSES
END
POPUP "&Ansicht"
BEGIN
MENUITEM "Struktur &und Verzeichnis", IDM_BOTH
MENUITEM "Nur &Struktur", IDM_TREEONLY
MENUITEM "Nur &Verzeichnis", IDM_DIRONLY
MENUITEM SEPARATOR
MENUITEM "Tei&len", IDM_SPLIT
MENUITEM SEPARATOR
MENUITEM "&Name", IDM_VNAME
MENUITEM "Alle &Dateiangaben", IDM_VDETAILS, CHECKED
MENUITEM "&Bestimmte Dateiangaben...", IDM_VOTHER
MENUITEM SEPARATOR
MENUITEM "Nach N&ame", IDM_BYNAME
MENUITEM "Nach &Typ", IDM_BYTYPE
MENUITEM "Nach &Größe", IDM_BYSIZE
MENUITEM "Nach Datu&m", IDM_BYDATE
MENUITEM "Nach Datum v&orwärts", IDM_BYFDATE
MENUITEM SEPARATOR
MENUITEM "Angaben aus&wählen...", IDM_VINCLUDE
END
POPUP "&Optionen"
BEGIN
MENUITEM "&Bestätigen...", IDM_CONFIRM
MENUITEM "Schrift&art...", IDM_FONT
MENUITEM "Symbolleiste &definieren...", IDM_TOOLBARCUST
MENUITEM "Zusätzliche E&instellungen...", IDM_PREF
MENUITEM SEPARATOR
MENUITEM "Sy&mbolleiste", IDM_TOOLBAR
MENUITEM "Lauf&werkleiste", IDM_DRIVEBAR
MENUITEM "Status&leiste", IDM_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "&Symbol nach Programmstart", IDM_MINONRUN
MENUITEM "Beim Starten &Goto-Index erstellen", IDM_INDEXONLAUNCH
MENUITEM "&Einstellungen beim Beenden speichern", IDM_SAVESETTINGS
MENUITEM SEPARATOR
MENUITEM "Einstellungen jetzt speicher&n", IDM_SAVENOW
END
POPUP "&Sicherheit"
BEGIN
MENUITEM "&Berechtigungen...", IDM_PERMISSIONS
MENUITEM "Über&wachen...", IDM_AUDITING
MENUITEM "Besi&tzer...", IDM_OWNER
END
POPUP "&Fenster"
BEGIN
MENUITEM "Neues &Fenster\tStrg+Umschalt Enter", IDM_NEWWINDOW
MENUITEM "Über&lappend\tUmschalt+F5", IDM_CASCADE
MENUITEM "&Untereinander", IDM_TILEHORIZONTALLY
MENUITEM "&Nebeneinander\tUmschalt+F4", IDM_TILE
MENUITEM "&Symbole anordnen", IDM_ARRANGE
MENUITEM "&Aktualisieren\tF5", IDM_REFRESH
END
POPUP "&Hilfe"
BEGIN
MENUITEM "&Hilfethemen", IDM_HELPINDEX
MENUITEM "&Suchen...", IDM_HELPKEYS
MENUITEM "&Hilfe &verwenden", IDM_HELPHELP
MENUITEM SEPARATOR
MENUITEM "&Über Datei-Manager", IDM_ABOUT
END
END
CTXMENU MENU
BEGIN
POPUP "Dummy Popup"
BEGIN
MENUITEM "&Neues Fenster\tStrg+Umschalt Eingabetaste", IDM_NEWWINDOW
MENUITEM "Öffnen\tEnter", IDM_OPEN
MENUITEM "Bearbeiten\tF12", IDM_EDIT
MENUITEM "&Verschieben...\tF7", IDM_MOVE
MENUITEM "&Kopieren...\tF8", IDM_COPY
MENUITEM "S&ymlinken...\tF11", IDM_SYMLINK
MENUITEM "H&ardlinken...\tUmschalt+F11", IDM_HARDLINK
MENUITEM "&In Zwischenablage...\tStrg+C", IDM_COPYTOCLIPBOARD
MENUITEM "Ausschneiden in Zwischenablage...\tStrg+X", IDM_CUTTOCLIPBOARD
MENUITEM "&Einfügen\tStrg+V", IDM_PASTE
MENUITEM "&Löschen...\tEntf", IDM_DELETE
MENUITEM "&Umbenennen...\tF2", IDM_RENAME
MENUITEM "&Eigenschaften...\tAlt+Eingabetaste", IDM_ATTRIBS
MENUITEM "&Ausführen...", IDM_RUN
MENUITEM "Starte Bash Shell...", IDM_STARTBASHSHELL
MENUITEM "Starte Cmd She&ll...", IDM_STARTCMDSHELL
MENUITEM "Starte Po&werShell...", IDM_STARTPOWERSHELL
MENUITEM "Starte E&xplorer...", IDM_STARTEXPLORER
MENUITEM "&Gehe ins Verzeichnis...", IDM_GOTODIR
END
END
#define SUGGEST(id,err,flags,str) id+IDS_SUGGESTBEGIN str
/* 0....5....1....56...2....5....3.2..5....4....5....5....6....5....7....5....8....5....9....5....0....5....1....5....2....5..8 */
STRINGTABLE
BEGIN
// IDS_ENDSESSION "Exit Windows" /* 32 */
// IDS_ENDSESSIONMSG "This will end your Windows session." /* 128 */
IDS_COPYDISK "Datenträger kopieren" /* 32 */
IDS_INSERTDEST "Legen Sie den Zieldatenträger ein." /* 128 */
IDS_INSERTSRC "Legen Sie den Quelldatenträger ein." /* 128 */
IDS_INSERTSRCDEST "Legen Sie den Quell- und den Zieldatenträger ein." /* 128 */
IDS_FORMATTINGDEST "Formatiert den Zieldatenträger." /* 128 */
IDS_COPYDISKERR "Fehler beim Kopieren" /* 32 */
IDS_COPYDISKERRMSG "Das Kopieren des Datenträgers ist nicht möglich." /* 128 */
IDS_COPYSRCDESTINCOMPAT "Das Quell- und das Ziellaufwerk sind zueinander inkompatibel." /* 128 */
IDS_PERCENTCOMP "%d %% bearbeitet" /* 32 */
IDS_CREATEROOT "Das Stammverzeichnis wird angelegt..." /* 32 */
IDS_COPYSYSFILES "Die Systemdateien werden kopiert..." /* 32 */
IDS_FORMATERR "Fehler beim Formatieren" /* 32 */
IDS_FORMATQUICKFAILURE "Datei-Manager kann keinen Quick-Format durchführen.\n\nMit normaler Formatierung weitermachen?"
// IDS_FORMATERRMSG "Kann den Datenträger nicht formatieren." /* 128 */
// IDS_FORMATCURERR "Sie können den aktuellen Datenträger nicht formatieren." /* 128 */
IDS_FORMATCOMPLETE "Formatieren abgeschlossen" /* 32 */
IDS_FORMATANOTHER "%ld Bytes Speicherplatz insgesamt\n%ld Bytes Speicherplatz frei\n\nMöchten Sie eine weitere Diskette formatieren?" /* 128 */
// IDS_SYSDISK "Erstelle Systemdatenträger"
// IDS_SYSDISKRUSURE "Sind Sie sicher, dass Sie Systemdateien auf die Festplatte im Laufwerk %c kopieren wollen?"
// IDS_SYSDISKERR "Fehler auf dem Systemdatenträger"
// IDS_SYSDISKNOFILES "Das MS-DOS-Startlaufwerk enthält keine Systemdateien oder ist nicht verfügbar."
// IDS_SYSDISKSAMEDRIVE "Systemdateien können nicht auf das MS-DOS-Startlaufwerk kopiert werden."
// IDS_SYSDISKADDERR "Kann keine Systemdateien zu dieser Platte hinzufügen.\n\nStellen Sie sicher, dass eine formatierte Platte im Laufwerk vorhanden ist und dass die Laufwerksklappe geschlossen ist."
IDS_NETERR "Netzwerkfehler" /* 32 */
IDS_NETDISCONWINERR "Dieses Laufwerk enthält die Windows-Systemdateien und kann nicht getrennt werden." /* 128 */
IDS_NETDISCONOPEN "Datei-Manager kann das Netzlaufwerk nicht trennen.\n\nEs sind noch Dateien auf dem Laufwerk geöffnet."
IDS_ATTRIBERR "Attribute können nicht geändert werden. "
IDS_MAKEDIRERR "Verzeichnis kann nicht erstellt werden. "
IDS_LABELDISKERR "Datenträger kann nicht benannt werden.\n\nStellen Sie sicher, daß der Datenträger nicht schreibgeschützt, kein Netzlaufwerk und die Bezeichnung gültig ist.\
Bezeichnungen dürfen die folgenden Zeichen nicht enthalten:\n[Leerzeichen] * ? / \\ | . , ; : + = [ ] ( ) & ^ < > "" "
IDS_SEARCHNOMATCHES "Es wurden keine entsprechenden Dateien gefunden."
IDS_SEARCHREFRESH "Der Inhalt des Laufwerks wurde geändert. Möchten Sie eine Aktualisierung des Suchergebnisses?"
IDS_LABELACCESSDENIED "Sie müssen als Administrator an die Arbeitsstation angemeldet sein, um diesen Vorgang auszuführen."
IDS_DRIVETEMP "Laufwerk %c:%c"
IDS_EXECERRTITLE, "Programmausführungsfehler"
IDS_PRINTERRTITLE, "Kann Datei nicht drucken"
IDS_UNKNOWNMSG, "Unerwarteter Fehler: %d."
IDS_NOMEMORYMSG, "Nicht genügend Arbeitsspeicher, um die ausgewählte Anwendung zu starten.\n\nSchließen Sie eine oder mehrere Anwendungen, und versuchen Sie es dann erneut." /* 128 */
IDS_FILENOTFOUNDMSG, "Datei bzw. Komponente nicht gefunden.\n\nÜberprüfen Sie, ob Pfad- und Dateiname richtig und alle Bibliotheken verfügbar sind."
IDS_BADPATHMSG, "Der angegebene Pfad ist ungültig." /* 128 */
// IDS_MANYOPENFILESMSG, "Zu viele Dateien werden derzeit verwendet.\n\nBeenden Sie eine oder mehrere Anwendungen oder erhöhen Sie den Wert des Wertes FILES in der CONFIG.SYS, und versuchen Sie es dann erneut." /* 128 */
IDS_NOASSOCMSG, "Dieser Datendatei ist keine Anwendung zugeordnet.\n\nKlicken Sie im Menü 'Datei' auf den Befehl 'Zuordnen', um eine Zuordnung zu erstellen." /* 128 */
IDS_ASSOCINCOMPLETE, "Die Datei kann nicht geöffnet oder gedruckt werden.\n\nVerwenden Sie die Anwendung, mit der die Datei erstellt wurde."
// IDS_MULTIPLEDSMSG, "Kann nicht mehr als eine Instanz der angegebenen Anwendung starten." /* 128 */
// IDS_OS2APPMSG "Die angegebene Anwendung ist kein Windows- or MS-DOS-Program." /* 128 */
// IDS_NEWWINDOWSMSG "Diese Anwendung benötigt eine neuere Version von Microsoft Windows." /* 128 */
// IDS_PMODEONLYMSG "Diese Anwendung benötigt Windows." /* 128 */
IDS_DDEFAIL "Ein Fehler ist während des Senden des Befehls zur Anwendung aufgetreten." /* 128 */
// IDS_COMPRESSEDEXE "Dies Anwendung oder einer ihrer Komponenten ist komprimiert.\n\nBenutzen sie das MS-DOS expand tool um die Datei vom Setup-Datenträger zu kopieren."
IDS_INVALIDDLL "Eine Bibliotheksdatei, die zum Betrieb der gewählten Anwendung benötigt wird ist defekt. Bitte installieren Sie die Anwendung erneut."
IDS_SHAREERROR "Diese Datei wird von einer anderen Anwendung verwendet."
IDS_CREATELONGDIR "Datei-Manager kann auf die Datei im Verzeichnis '%s' nicht zugreifen.\n\nMöchten Sie weitermachen?"
IDS_CREATELONGDIRTITLE "Erstelle Verzeichnis"
IDS_MOUSECONFIRM, "Mausaktion bestätigen" /* 32 */
IDS_COPYMOUSECONFIRM, "Sind Sie sicher, daß Sie die ausgewählten Dateien oder Verzeichnisse nach %s kopieren möchten?"
IDS_MOVEMOUSECONFIRM, "Sind Sie sicher, daß Sie die ausgewählten Dateien oder Verzeichnisse nach %s verschieben möchten?"
IDS_LINKMOUSECONFIRM, "Sind Sie sicher, daß Sie die ausgewählten Dateien oder Verzeichnisse nach %s verlinken möchten?"
IDS_EXECMOUSECONFIRM, "Sind Sie sicher, daß Sie %s mit %s als Dokument ausführen möchten?" /* 128 */
IDS_WINFILE, "Datei-Manager" /* 32 */
IDS_TREETITLE, "Verzeichnisstruktur" /* 32 */
IDS_SEARCHTITLE, "Suchergebnis: " /* 32 */
IDS_READING "Lese Verzeichnis, bitte warten..."
IDS_TOOMANYTITLE, "Zu viele Dateien" /* 32 */
IDS_OOMTITLE, "Datei-Manager - Zu wenig freier Speicherplatz" /* 32 */
IDS_OOMREADINGDIRMSG, "Kann nicht das genze Verzeichnis lesen. Nur ein Teil wird angezeigt." /* 128 */
// IDS_PRINTFNF "Die zu druckende Datei kan nicht gefunden werden. Stellen Sie sicher, dass sie den richtigen Pfad und Dateinamen angegeben haben." /* 128 */
IDS_PRINTMEMORY "Nicht genug Speicher zum Drucken.\n\nSchließen Sie eine oder mehrere Anwendungen und versuchen Sie es erneut." /* 128 */
IDS_PRINTDISK "Nicht genug freier Speicherplatz zum Drucken.\n\nLöschen Sie eine oder mehrere Dateien um Speicherplatz frei zu machen und versuchen Sie es erneut." /* 128 */
IDS_PRINTERROR "Während des Druckens ist ein Fehler aufgetreten.\n\nStellen Sie sicher, dass der Drucker richtig konfiguriert und der richtige ausgewählt ist." /* 128 */
IDS_PRINTONLYONE "Datei-Manager kann nicht mehrere Dateien drucken.\n\nWählen Sie eine Datei aus und versuchen Sie es erneut." /* 128 */
IDS_CURDIRIS, "Aktuelles Verzeichnis: %s" /* 128 */
IDS_CURDIRSARE, "Other: "
IDS_COPY, "Kopieren" /* 32 */
IDS_RENAME, "Umbenennen" /* 32 */
IDS_FORMAT, "Datenträger formatieren" /* 32 */
IDS_FORMATSELDISK, "Wählen Sie den Datenträger aus, den Sie formatieren möchten." /* 128 */
IDS_SYMLINK, "Symlinken" /* 32 */
IDS_HARDLINK, "Hardlinken" /* 32 */
IDS_KK_COPYFROMSTR, "&Von:"
IDS_KK_COPYTOSTR, "&Nach:"
IDS_KK_RENAMEFROMSTR, "&Von:"
IDS_KK_RENAMETOSTR, "&Nach:"
IDS_KK_HARDLINKFROMSTR, "&Von:"
IDS_KK_HARDLINKTOSTR, "&Nach:"
IDS_KK_SYMLINKFROMSTR, "&Von:"
IDS_KK_SYMLINKTOSTR, "&Nach:"
// IDS_MAKESYSDISK, "Erstelle Systemdatenträger" /* 32 */
IDS_CREATINGMSG, "Legt an:" /* 32 */
IDS_REMOVINGDIRMSG, "Löscht:" /* 32 */
IDS_REMOVINGMSG, "Löscht..." /* 32 */
IDS_COPYINGMSG, "Kopiert:" /* 32 */
IDS_OPENINGMSG, "Öffnet..." /* 32 */
IDS_CLOSINGMSG, "Schließt..." /* 32 */
IDS_RENAMINGMSG, "Benennt um..." /* 32 */
IDS_MOVINGMSG, "Verschiebt..." /* 32 */
IDS_DELETINGMSG, "Löscht..." /* 32 */
IDS_PRINTINGMSG, "Druckt: %s" /* 32 */
// IDS_NOSUCHDRIVE, "Datenträger %c existiert nicht." /* 128 */
IDS_DRIVENOTREADY, "In Laufwerk %c: ist kein Datenträger eingelegt.\n\nLegen Sie einen Datenträger ein, und versuchen Sie es erneut."
IDS_UNFORMATTED, "Der Datenträger in Laufwerk %c: ist nicht formatiert.\n\nMöchten Sie ihn jetzt formatieren?"
IDS_STATUSMSG, "%d Datei(en) (%s)" /* 128 */
IDS_STATUSMSG2, "%d Datei(en) (%s) ausgewählt" /* 128 */
IDS_DRIVEFREE, "%c: %s von %s frei" /* 128 */
IDS_TREEABORT, "Unvollständiger Verzeichnisbaum wird angezeigt" /* 128 */
IDS_DIRSREAD, "%d Verzeichnisse gelesen" /* 32 */
IDS_SEARCHMSG, "%d Datei(en) gefunden"
IDS_BYTES, "%ld bytes"
IDS_SBYTES, "%s bytes"
IDS_SELECTEDFILES, "die ausgewählten Dateien" /* 32 */
/* These strings are used for generating error messages
* from the Copy, Move, and Delete code. */
IDS_COPYERROR + FUNC_COPY "Fehler beim Kopieren einer Datei"
IDS_COPYERROR + FUNC_MOVE "Fehler beim Verschieben einer Datei"
IDS_COPYERROR + FUNC_DELETE "Fehler beim Löschen einer Datei"
IDS_COPYERROR + FUNC_RENAME "Fehler beim Umbenennen einer Datei"
IDS_COPYERROR + FUNC_SETDRIVE "Fehler beim Auswählen des Laufwerks"
IDS_COPYERROR + FUNC_EXPAND "Fehler beim Lesen eines Verzeichnisses"
IDS_COPYERROR + FUNC_LABEL "Fehler beim Benennen des Datenträgers"
IDS_COPYERROR + FUNC_LINK "Fehler beim Erstellen eines Symbolischen Links"
IDS_COPYERROR + FUNC_HARD "Fehler beim Erstellen eines Hardlinks"
IDS_COPYERROR + FUNC_JUNC "Fehler beim Erstellen einer Junction"
/* The first %s is replaced by a file name. The second %s is replaced
* by one of the "reasons" below. */
IDS_VERBS + FUNC_COPY "%s kann nicht kopiert werden.\n%s"
IDS_VERBS + FUNC_MOVE "%s kann nicht verschoben werden.\n%s"
IDS_VERBS + FUNC_DELETE "%s kann nicht gelöscht werden.\n%s"
IDS_VERBS + FUNC_RENAME "%s kann nicht umbenannt werden.\n%s"
IDS_VERBS + FUNC_LINK "%s kann nicht symbolisch verlinkt werden.\n%s"
IDS_VERBS + FUNC_HARD "%s kann nicht verlinkt werden.\n%s"
IDS_VERBS + FUNC_JUNC "%s kann als Junction nicht erstellt werden.\n%s"
IDS_ACTIONS + 1 "Verzeichnis %s kann nicht erzeugt werden.\n%s"
IDS_ACTIONS + 2 "Verzeichnis %s kann nicht gelöscht werden.\n%s"
IDS_REPLACING "%s kann nicht erstellt oder ersetzt werden.\n%s"
// IDS_CREATING "Datei-Manager kann %s nicht erstellen: %s"
// include reason strings
#include "suggest_de-DE.db"
IDS_DESTFULL "Die Speicherkapazität des Ziellaufwerks ist erschöpft. Legen Sie einen neuen Datenträger ein, um fortzusetzen."
IDS_WRITEPROTECTFILE "Dies ist eine System-, eine versteckte oder eine schreibgeschützte Datei."
IDS_COPYINGTITLE "Kopiere..."
IDS_QUICKFORMATTINGTITLE "Schnell-Formatierung..."
IDS_BUSYFORMATQUITVERIFY "Momentan wird ein Datenträger vom Datei-Manager formatiert. Wenn Sie den Datei-Manager beenden, wird dieser Vorgang abgebrochen."
IDS_BUSYCOPYQUITVERIFY "Momentan wird ein Datenträger vom Datei-Manager kopiert. Wenn Sie den Datei-Manager beenden, wird dieser Vorgang abgebrochen."
IDS_PERCENTCOMPLETE "Prozent bearbeitet"
IDS_12MB "1%s2 MB"
IDS_360KB "360K"
IDS_144MB "1%s44 MB"
IDS_720KB "720K"
IDS_288MB "2%s88 MB"
IDS_2080MB "20%s8 MB"
#if defined(JAPAN) && defined(i386)
/* ADD KBNES. NEC MEDIATYPE START */
JAPANBEGIN
IDS_125MB "1%s25 MB"
IDS_256KB "256K"
IDS_128MB "128 MB"
JAPANEND
/* ADD KBNES. NEC MEDIATYPE END */
//
// FMR jul.21.1994 JY
// We added 640KB/1.23MB media types.
//
JAPANBEGIN
IDS_640KB "640K"
IDS_123MB "1%s23 MB"
JAPANEND
#endif
IDS_DEVICECAP "Laufwerkkapazität"
IDS_QSUPMEDIA "Datenträgerinformationen sind nicht lesbar.\n\nVergewissern Sie sich, daß eine Diskette im Laufwerk ist."
IDS_REMOVEMED "Unbekannter Datenträgertyp"
IDS_CANTFORMATTITLE "Unbekannter Datenträgertyp"
IDS_CANTFORMAT "Die Art von Datenträgern in Laufwerk %s: kann mit Datei-Manager nicht formatiert werden. Verwenden Sie den Festplatten-Manager."
IDS_FFERR_INCFS "Inkompatibles Dateisystem."
IDS_FFERR_ACCESSDENIED "Der Zugriff wird verweigert."
IDS_FFERR_DISKWP "Der Datenträger ist schreibgeschützt."
IDS_FFERR_CANTLOCK "Datenträger kann nicht gesperrt werden."
IDS_FFERR_CANTQUICKF "Quick-Format kann nicht durchgeführt werden.\n\nStellen Sie sicher, daß die richtige Speicherkapazität angegeben ist."
IDS_FFERR_SRCIOERR "Ein-/Ausgabefehler auf der Quelldiskette"
IDS_FFERR_DSTIOERR "Ein-/Ausgabefehler auf der Zieldiskette"
IDS_FFERR_SRCDSTIOERR "Ein-/Ausgabefehler sowohl auf der Quell- als auch auf der Zieldiskette"
IDS_FFERR_GENIOERR "Eingabe/Ausgabe (E/A)-Fehler"
// IDS_FFERR_MEDIASENSE "Diese Platte kann mit einer Kapazität von %s formatiert werden. Mit dieser Kapazität weiter formatieren?"
IDS_FFERR "Der Datenträger kann nicht formatiert werden.\n\nVergewissern Sie sich, daß der Datenträger eingelegt und nicht schreibgeschützt oder beschädigt ist, und nicht die falsche Speicherdichte angegeben wurde."
IDS_FFERR_BADLABEL "Der Datenträger kann nicht benannt werden.\n\nDie angegebene Bezeichnung ist ungültig. Stellen Sie sicher, daß die Bezeichnung keine der folgenden Zeichen enthält\n\
[Leerzeichen] * ? / \\ | . , ; : + = [ ] ( ) & ^ < > "" "
IDS_FORMATCONFIRM "Beim Formatieren werden ALLE Daten von der Festplatte gelöscht. Sind Sie sicher, dass Sie die Festplatte im Laufwerk %c formatieren wollen?"
IDS_FORMATCONFIRMTITLE "Datenträgerformatierung bestätigen"
IDS_DISKCOPYCONFIRM "Dieser Vorgang löscht ALLE Daten auf der Zieldiskette.\nSind Sie sicher, daß Sie fortsetzen möchten?"
IDS_DISKCOPYCONFIRMTITLE "Datenträgerkopieren bestätigen"
IDS_ANDCLOSE "&Schließen" // goes on Selection dialog
IDS_CLOSE "Schließen" // braindead "&Change"
IDS_PATHNOTTHERE "Verzeichnis %s existiert nicht.\n\nMöchten Sie es erzeugen?"
IDS_PROGRAMS "Programme#*.exe;*.pif;*.com;*.bat#Alle Dateien (*.*)#*.*#"
IDS_MENUANDITEM "%s - %s"
IDS_DRIVELABEL "Laufwerk:"
IDS_STATUSMSGSINGLE "%s, "
IDS_CONNECTHELP "Netzlaufwerk verbinden"
IDS_DISCONHELP "Netzlaufwerk trennen"
IDS_CONNECTIONHELP "Netzwerkverbindungen"
IDS_SHAREASHELP "Verzeichnis freigeben"
IDS_STOPSHAREHELP "Verzeichnisfreigabe beenden"
IDS_VDETAILSHELP "Alle Dateiangaben anzeigen"
IDS_VNAMEHELP "Nur den Dateinamen anzeigen"
IDS_BYNAMEHELP "Nach Name"
IDS_BYTYPEHELP "Nach Typ"
IDS_BYSIZEHELP "Nach Größe"
IDS_BYDATEHELP "Nach Datum"
IDS_NEWWINHELP "Neues Fenster"
IDS_COPYHELP "Dateien kopieren"
IDS_MOVEHELP "Dateien verschieben"
IDS_DELHELP "Dateien löschen"
IDS_DIRNAMELABEL "Ver&zeichnisname:"
IDS_DRIVENOTAVAILABLE "Netzwerklaufwerk ist nicht verfügbar."
IDS_SHAREDAS "Freigegeben als %s"
IDS_NOTSHARED "Nicht freigegeben"
IDS_DRIVE_COMPRESSED " - KOMPRIMIERT"
IDS_DRAG_COPYING "Datei(en) kopieren nach %s"
IDS_DRAG_MOVING "Datei(en) verschieben nach %s"
IDS_DRAG_LINKING "Datei(en) verlinken nach %s"
IDS_DRAG_EXECUTING "Starten von Datei(en) mit %s"
IDS_ORDERB "%s Bytes"
IDS_ORDERKB "%s KB"
IDS_ORDERMB "%s MB"
IDS_ORDERGB "%s GB"
IDS_ORDERTB "%s TB"
IDS_VN_COMMENTS "Kommentare"
IDS_VN_COMPANYNAME "Firmenname"
IDS_VN_FILEDESCRIPTION "Dateibeschreibung"
IDS_VN_INTERNALNAME "Interner Name"
IDS_VN_LEGALTRADEMARKS "Geschützte Marken"
IDS_VN_ORIGINALFILENAME "Originaler Dateiname"
IDS_VN_PRIVATEBUILD "Beschreibung"
IDS_VN_PRODUCTNAME "Produktname"
IDS_VN_PRODUCTVERSION "Produktversion"
IDS_VN_SPECIALBUILD "Spezielle Beschreibung"
IDS_VN_LANGUAGE "Sprache"
IDS_VN_LANGUAGES "Sprachen"
IDS_ASSOCIATE "Durchsuchen"
IDS_RUN "Ausführen"
IDS_WINHELPERR "Die Hilfeinformation kann nicht angezeigt werden."
IDS_NOEXEASSOC "Dateien mit der Dateinamenerweiterung %s sind Programme und können nicht einer anderen Anwendung zugeordnet werden."
IDS_ASSOCNOTEXE "%s ist kein Programm und kann nicht einer Dateinamenerweiterung zugeordnet werden."
IDS_ASSOCNONE "(Keine)"
IDS_NOFILES "Keine Dateien gefunden."
IDS_NOACCESSDIR "Sie haben keine Berechtigung auf dieses Verzeichnis zuzugreifen."
IDS_NOACCESSFILE "Sie haben keine Berechtigung auf diese Datei zuzugreifen."
IDS_DRIVEBUSY_COPY "Auf Laufwerk %c: kann nicht zugegriffen werden, da es beschäftigt ist.\nEs wird eine Diskette kopiert."
IDS_DRIVEBUSY_FORMAT "Auf Laufwerk %c: kann nicht zugegriffen werden, da es beschäftigt ist.\nEs wird eine Diskette formatiert."
IDS_COPYMOVENOTCOMPLETED "Funktion nicht vollständig ausgeführt"
IDS_DIRREMAINS "Vorgang kann nicht für alle Dateien und Verzeichnisse ausgeführt werden."
IDS_TOOMANYWINDOWS "Es sind zu viele Verzeichnisfenster geöffnet.\n\nSchließen Sie ein oder mehrere Fenster, und versuchen Sie es erneut."
IDS_FMIFSLOADERR "Eine für diese Funktion benötigte Bibliothek ist nicht verfügbar."
IDS_NOSUCHDIRTITLE "Verzeichnis kann nicht gelesen werden"
IDS_NOSUCHDIR "Verzeichnis existiert nicht."
IDS_BADNETNAMETITLE "Netzlaufwerk kann nicht verbunden werden."
IDS_BADNETNAME "Netzwerkname kann nicht gefunden werden."
IDS_ALLFILES "'Alle...' betrifft auch System-, versteckte und schreibgeschützte Dateien."
IDS_ASSOC_OPEN "Öffnen"
IDS_ASSOC_PRINT "Drucken"
IDS_ADDEXTTITLE "Erweiterung hinzufügen"
IDS_ADDEXTTEXT "Die Erweiterung '%s' ist momentan '%s.' zugeordnet. Fortsetzen und diese Zuordnung überschreiben?"
IDS_EXTTITLE "Dateizuordnungs-Editor"
IDS_EXTADDERROR "Erweiterung kann nicht zugeordnet werden."
IDS_EXTDELERROR "Erweiterung konnte nicht gelöscht werden."
IDS_FILETYPEADDERROR "Dateityp kann nicht hinzugefügt werden."
IDS_FILETYPEDELERROR "Dateityp kann nicht gelöscht werden."
IDS_FILETYPEREADERROR "Dateityp kann nicht gelesen werden."
IDS_FILETYPENULLDESCERROR "Die Beschreibung darf nicht leer sein. Bitte geben Sie eine Beschreibung ein."
IDS_FILETYPEDUPDESCERROR "Es konnte keine einmalige ID unter Verwendung Ihrer Beschreibung erzeugt werden. Bitte geben Sie eine neue Beschreibung ein."
IDS_FILETYPEDELCONFIRMTITLE "Dateityp löschen"
IDS_FILETYPEDELCONFIRMTEXT "Hiermit löschen Sie den Dateityp und alle zugeordneten Erweiterungen. Sind Sie sicher, daß Sie '%s' löschen möchten?"
#ifdef ASSOC
IDS_FILETYPEDELCONFIRMUSERTEXT "Sie löschen einen persönlichen Dateityp. Es wird auf den gemeinsamen Dateityp zurückgesetzt, und alle seine Erweiterungen bleiben erhalten. Sind Sie sicher, dass Sie'%s' rückgängig machen wollen?"
IDS_FILETYPEUSERIZETEXT "Sie passen einen gemeinsamen Dateityp an. Datei-Manager speichert Ihre Änderungen in einem personalisierten Dateityp. Weitermachen?"
#endif
IDS_FILETYPECOMMANDNULLTEXT "Für einen Dateityp muß mindestens ein Befehl für einen Vorgang angegeben sein. Bitte geben Sie den Namen einer Anwendung ein."
IDS_NEWFILETYPETITLE "Dateitypeditor"
IDS_COPYINGDISKTITLE "Datenträger wird kopiert"
IDS_SEARCHING "Suche..."
JAPANBEGIN
IDS_WRNNOSHIFTJIS "このフォントを使用すると漢字の表示が\nできなくなります。"
JAPANEND
IDS_INITUPDATEFAIL "Hintergrundaktualisierung konnte nicht initialisiert werden. Der Datei-Manager wird beendet."
IDS_INITUPDATEFAILTITLE "Initialisierung des Datei-Managers"
IDS_COMPRESSDIR "Möchten Sie alle Dateien und Unterverzeichnisse in %s auch komprimieren?"
IDS_UNCOMPRESSDIR "Möchten Sie alle Dateien und Unterverzeichnisse in %s auch dekomprimieren?"
IDS_COMPRESS_ATTRIB_ERR "Komprimierungsattribut von '%s' kann nicht geändert werden."
IDS_NTLDRCOMPRESSERR "Die Datei '%s' wird nicht komprimiert. Komprimieren dieser Datei könnte Ihr System unstartbar machen."
IDS_MULTICOMPRESSERR "Der Datei-Manager komprimiert bzw. dekomprimiert momentan Dateien.\nWarten Sie bitte, bis dieser Vorgang beendet ist, bevor Sie weitere Dateien komprimieren bzw. dekomprimieren."
IDS_EDITFILTER "Programme (*.exe)\0*.exe\0"
END
#undef SUGGEST
/* Help strings for the popup menus.
*/
STRINGTABLE
BEGIN
MH_POPUP+IDM_FILE, "Befehle zum Arbeiten mit Dateien"
MH_POPUP+IDM_DISK, "Befehle zum Arbeiten mit Datenträgern"
MH_POPUP+IDM_TREE, "Befehle zum Arbeiten in dem Strukturfenster"
MH_POPUP+IDM_VIEW, "Befehle zum Bestimmen der Informationsanzeige"
MH_POPUP+IDM_OPTIONS, "Befehle zum Einstellen von Optionen"
MH_POPUP+IDM_SECURITY, "Befehle zum Einstellen der Datei- und Verzeichnissicherheit"
MH_POPUP+IDM_WINDOW, "Befehle zum Anordnen der Fenster"
MH_POPUP+IDM_HELP, "Befehle zum Anzeigen der Hilfe zu Datei-Manager"
END
// Help strings for the "standard" toolbar items.
STRINGTABLE
BEGIN
MH_MYITEMS+IDM_OPEN, "Ausgewähltes Objekt öffnen"
MH_MYITEMS+IDM_EDIT, "Bearbeiten des ausgewählten Elements mit Notepad.exe"
MH_MYITEMS+IDM_MOVE, "Verschieben des ausgewählten Objekts"
MH_MYITEMS+IDM_COPY, "Kopieren von Dateien und Verzeichnissen"
MH_MYITEMS+IDM_COPYTOCLIPBOARD, "Kopieren einer Datei in die Zwischenablage"
MH_MYITEMS+IDM_CUTTOCLIPBOARD, "Schneidet eine oder mehrere Dateien in die Zwischenablage aus"
MH_MYITEMS+IDM_PASTE, "Datei aus der Zwischenablage in das aktuelle Verzeichnis einfügen"
MH_MYITEMS+IDM_COMPRESS, "Komprimieren einer Datei oder eines Verzeichnisses"
MH_MYITEMS+IDM_UNCOMPRESS, "Dekomprimieren einer Datei oder eines Verzeichnisses"
MH_MYITEMS+IDM_DELETE, "Löschen von Dateien und Verzeichnissen"
MH_MYITEMS+IDM_RENAME, "Umbenennen von Dateien und Verzeichnissen"
MH_MYITEMS+IDM_ATTRIBS, "Anzeige der Eigenschaften und Setzen von Dateiattributen"
MH_MYITEMS+IDM_RUN, "Startet oder öffnet eine Anwendung oder ein Dokument"
MH_MYITEMS+IDM_PRINT, "Drucken eines Dokuments"
MH_MYITEMS+IDM_ASSOCIATE, "Zuordnen einer Datei zu einer Anwendung"
MH_MYITEMS+IDM_MAKEDIR, "Erstellen eines Verzeichnisses"
MH_MYITEMS+IDM_SEARCH, "Suchen nach Dateien und Verzeichnissen"
MH_MYITEMS+IDM_SELECT, "Auswählen einer Datei oder eines Verzeichnisses"
MH_MYITEMS+IDM_EXIT, "Beenden von Datei-Manager"
MH_MYITEMS+IDM_DISKCOPY, "Inhalt eines Datenträgers kopieren"
MH_MYITEMS+IDM_LABEL, "Zuweisen oder Ändern der Datenträgerbezeichnung"
MH_MYITEMS+IDM_FORMAT, "Formatieren einer Diskette/eines Laufwerks"
// MH_MYITEMS+IDM_SYSDISK, "Kopiere MS-DOS-Dateien auf eine Diskette"
MH_MYITEMS+IDM_CONNECT, "Verbinden zu einem Netzlaufwerk"
MH_MYITEMS+IDM_DISCONNECT, "Netzlaufwerk trennen"
// MH_MYITEMS+IDM_CONNECTIONS, "Netzwerk-Verbindungen..."
// MH_MYITEMS+IDM_SHARES, "Freigegebene Verzeichnisse &anzeigen..."
MH_MYITEMS+IDM_SHAREAS, "Freigeben eines Verzeichnisses"
MH_MYITEMS+IDM_STOPSHARE, "Freigabe eines Verzeichnisses beenden"
MH_MYITEMS+IDM_DRIVESMORE, "Auswählen eines Laufwerks"
MH_MYITEMS+IDM_EXPONE, "Zeigt eine andere Ebene eines Verzeichnisses an"
MH_MYITEMS+IDM_EXPSUB, "Zeigt alle Ebenen eines Verzeichnisses an"
MH_MYITEMS+IDM_EXPALL, "Zeigt alle Ebenen aller Verzeichnisse an"
MH_MYITEMS+IDM_COLLAPSE, "Klappt alle Verzeichnisse eines ausgewählten Verzeichnisses zusammen"
MH_MYITEMS+IDM_ADDPLUSES, "Zeigt Verzeichnisse an, die Unterverzeichnisse haben"
MH_MYITEMS+IDM_BOTH, "Verzeichnisstruktur und Inhalt des aktuellen Verzeichnisses anzeigen"
MH_MYITEMS+IDM_TREEONLY, "Nur S
gitextract_ydtylm4l/
├── .gitignore
├── CHANGES.md
├── GNUmakefile
├── LICENSE
├── Package/
│ ├── Package.appxmanifest
│ └── Package.wapproj
├── README.md
├── SECURITY.md
├── SignConfig.xml
├── Winfile.sln
├── build/
│ ├── README.md
│ ├── Winfile.default.props
│ └── Winfile.props
├── help/
│ ├── WINFILE.CHM
│ ├── ini/
│ │ └── index.html
│ └── winfile.hlp
├── nuget/
│ ├── LICENSE.txt
│ ├── VERIFICATION.txt
│ └── winfile.nuspec
├── samples/
│ └── addon/
│ ├── AddOnSample.vcxproj.filters
│ ├── AddonSample.vcxproj
│ ├── dllmain.cpp
│ ├── extproc.cpp
│ ├── resource.h
│ ├── resources.rc
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── targetver.h
│ └── wfext.h
├── src/
│ ├── BagOValues.h
│ ├── Resize.c
│ ├── Resize.h
│ ├── Winfile.vcxproj
│ ├── Winfile.vcxproj.filters
│ ├── dbg.c
│ ├── dbg.h
│ ├── fmifs.h
│ ├── lang/
│ │ ├── res_de-DE.rc
│ │ ├── res_en-US.rc
│ │ ├── res_he-IL.rc
│ │ ├── res_ja-JP.rc
│ │ ├── res_ko-KR.rc
│ │ ├── res_pl-PL.rc
│ │ ├── res_pt-PT.rc
│ │ ├── res_tr-TR.rc
│ │ ├── res_zh-CN.rc
│ │ ├── winfile_de-DE.dlg
│ │ ├── winfile_en-US.dlg
│ │ ├── winfile_he-IL.dlg
│ │ ├── winfile_ja-JP.dlg
│ │ ├── winfile_ko-KR.dlg
│ │ ├── winfile_pl-PL.dlg
│ │ ├── winfile_pt-PT.dlg
│ │ ├── winfile_tr-TR.dlg
│ │ └── winfile_zh-CN.dlg
│ ├── lfn.c
│ ├── lfn.h
│ ├── lfnmisc.c
│ ├── mcopy.cur
│ ├── mhard.cur
│ ├── mlink.cur
│ ├── mmove.cur
│ ├── mpr.h
│ ├── numfmt.c
│ ├── numfmt.h
│ ├── origrc/
│ │ ├── winfile.cs-CZ.rc
│ │ ├── winfile.da-DK.rc
│ │ ├── winfile.de-DE.rc
│ │ ├── winfile.en-US.rc
│ │ ├── winfile.es-ES.rc
│ │ ├── winfile.fi-FI.rc
│ │ ├── winfile.fr-FR.rc
│ │ ├── winfile.hu-HU.rc
│ │ ├── winfile.it-IT.rc
│ │ ├── winfile.ja-JP.rc
│ │ ├── winfile.ko-KR.rc
│ │ ├── winfile.nb-NO.rc
│ │ ├── winfile.nl-NL.rc
│ │ ├── winfile.pl-PL.rc
│ │ ├── winfile.pt-BR.rc
│ │ ├── winfile.ru-RU.rc
│ │ ├── winfile.sv-SE.rc
│ │ ├── winfile.zh-CN.rc
│ │ └── winfile.zh-TW.rc
│ ├── res.h
│ ├── res.rc
│ ├── scopy.cur
│ ├── shard.cur
│ ├── slink.cur
│ ├── smove.cur
│ ├── spinlock.h
│ ├── split.cur
│ ├── suggest.c
│ ├── suggest.h
│ ├── tbar.c
│ ├── treectl.c
│ ├── treectl.h
│ ├── w31rc/
│ │ ├── winfile.Brazil.rc
│ │ ├── winfile.Catalan.rc
│ │ ├── winfile.Czech.rc
│ │ ├── winfile.Danish.rc
│ │ ├── winfile.Dutch.rc
│ │ ├── winfile.Finnish.rc
│ │ ├── winfile.French.Int.rc
│ │ ├── winfile.French.rc
│ │ ├── winfile.German.rc
│ │ ├── winfile.Hungary.rc
│ │ ├── winfile.Italian.rc
│ │ ├── winfile.Japanese.rc
│ │ ├── winfile.Korean.rc
│ │ ├── winfile.Norway.rc
│ │ ├── winfile.Polish.rc
│ │ ├── winfile.Portuguese.rc
│ │ ├── winfile.SimChin.rc
│ │ ├── winfile.Spanish.rc
│ │ ├── winfile.Swedish.rc
│ │ ├── winfile.TradChin.rc
│ │ ├── winfile.Turkish.rc
│ │ └── winfile.USEnglish.rc
│ ├── wfassoc.c
│ ├── wfchgnot.c
│ ├── wfcomman.c
│ ├── wfcopy.c
│ ├── wfcopy.h
│ ├── wfdir.c
│ ├── wfdirrd.c
│ ├── wfdirsrc.c
│ ├── wfdlgs.c
│ ├── wfdlgs.h
│ ├── wfdlgs2.c
│ ├── wfdlgs3.c
│ ├── wfdoc.txt
│ ├── wfdocb.h
│ ├── wfdos.c
│ ├── wfdrives.c
│ ├── wfdrop.c
│ ├── wfdrop.h
│ ├── wfext.c
│ ├── wfext.h
│ ├── wfexti.h
│ ├── wffile.c
│ ├── wfgoto.cpp
│ ├── wfgwl.h
│ ├── wfhelp.h
│ ├── wfinfo.c
│ ├── wfinfo.h
│ ├── wfinit.c
│ ├── wfloc.c
│ ├── wfmem.c
│ ├── wfmem.h
│ ├── wfprint.c
│ ├── wfsearch.c
│ ├── wftree.c
│ ├── wfutil.c
│ ├── winexp.h
│ ├── winfile.c
│ ├── winfile.exe.manifest
│ ├── winfile.h
│ ├── wnetcaps.c
│ └── wnetcaps.h
└── tools/
├── ExeView/
│ ├── ExeView.vcxproj
│ ├── ExeView.vcxproj.filters
│ ├── abstract.txt
│ ├── bmp.cpp
│ ├── exehdr.cpp
│ ├── exehdr.h
│ ├── exeview.txt
│ ├── filllb.cpp
│ ├── global.h
│ ├── iconcur.cpp
│ ├── init.cpp
│ ├── main.cpp
│ ├── main.def
│ ├── main.rc
│ ├── makefile
│ ├── menudlg.cpp
│ ├── res.cpp
│ ├── res.h
│ ├── save.cpp
│ ├── stdafx.cpp
│ ├── stdafx.h
│ └── targetver.h
├── FileSignatureInfo/
│ ├── FileSignatureInfo.cpp
│ ├── FileSignatureInfo.vcxproj
│ ├── FileSignatureInfo.vcxproj.filters
│ ├── VerifySignature.cpp
│ ├── stdafx.cpp
│ ├── stdafx.h
│ └── targetver.h
└── VerifyResources/
├── Resources.h
├── VerifyResources.cpp
├── VerifyResources.vcxproj
├── VerifyResources.vcxproj.filters
├── stdafx.cpp
├── stdafx.h
└── targetver.h
SYMBOL INDEX (765 symbols across 68 files)
FILE: samples/addon/dllmain.cpp
function BOOL (line 16) | BOOL APIENTRY DllMain( HMODULE hModule,
FILE: samples/addon/extproc.cpp
function LONG (line 74) | LONG APIENTRY FMExtensionProcW(HWND hwnd, WPARAM wEvent, LPARAM lParam)
FILE: samples/addon/wfext.h
type FMS_GETFILESELA (line 63) | typedef struct _FMS_GETFILESELA {
type FMS_GETFILESELW (line 70) | typedef struct _FMS_GETFILESELW {
type FMS_GETDRIVEINFOA (line 86) | typedef struct _FMS_GETDRIVEINFOA { // for drive
type FMS_GETDRIVEINFOW (line 94) | typedef struct _FMS_GETDRIVEINFOW { // for drive
type FMS_LOADA (line 111) | typedef struct _FMS_LOADA {
type FMS_LOADW (line 118) | typedef struct _FMS_LOADW {
type EXT_BUTTON (line 136) | typedef struct tagEXT_BUTTON {
type FMS_TOOLBARLOAD (line 142) | typedef struct tagFMS_TOOLBARLOAD {
type FMS_HELPSTRINGA (line 151) | typedef struct tagFMS_HELPSTRINGA {
type FMS_HELPSTRINGW (line 157) | typedef struct tagFMS_HELPSTRINGW {
type WPARAM (line 172) | typedef DWORD (APIENTRY *FM_EXT_PROC)(HWND, WPARAM, LPARAM);
FILE: src/BagOValues.h
type pair (line 22) | typedef pair<wstring, TValue> TPair;
type vector (line 23) | typedef vector<TPair> TVector;
type typename (line 24) | typedef typename TVector::const_iterator TItr;
function Add (line 37) | void Add(wstring key, TValue value)
function Sort (line 49) | void Sort()
FILE: src/Resize.c
type RESIZE_DIALOG_INFO (line 79) | typedef struct _RESIZE_DIALOG_INFO {
type RESIZE_DIALOG_DATA_CREATION_INFO (line 94) | typedef struct _RESIZE_DIALOG_DATA_CREATION_INFO {
type RESIZE_DIALOG_DATA_WINDOW_EXTRA (line 105) | typedef struct _RESIZE_DIALOG_DATA_WINDOW_EXTRA {
type RESIZE_DIALOG_CONTROL_WINDOW_EXTRA (line 116) | typedef struct _RESIZE_DIALOG_CONTROL_WINDOW_EXTRA {
type RESIZE_DIALOG_CONTROL_CREATION_INFO (line 134) | typedef struct _RESIZE_DIALOG_CONTROL_CREATION_INFO {
function BOOL (line 151) | BOOL
function BOOL (line 188) | BOOL
function BOOL (line 225) | BOOL
function BOOL (line 289) | BOOL CALLBACK
function BOOL (line 448) | BOOL CALLBACK
function LRESULT (line 514) | LRESULT CALLBACK
function BOOL (line 614) | BOOL CALLBACK
function LRESULT (line 668) | LRESULT CALLBACK
function BOOL (line 871) | BOOL
FILE: src/dbg.c
function VOID (line 31) | VOID DbgAssert(
function VOID (line 42) | VOID DbgTrace(
function VOID (line 57) | VOID DbgBreak(
function VOID (line 71) | VOID DbgPrint1(
function VOID (line 90) | VOID DbgEnter(
function VOID (line 96) | VOID DbgLeave(
function VOID (line 103) | VOID DbgTraceMessage(
function VOID (line 117) | VOID DbgTraceDefMessage(
FILE: src/fmifs.h
type FMIFS_PACKET_TYPE (line 23) | typedef enum _FMIFS_PACKET_TYPE {
type FMIFS_PERCENT_COMPLETE_INFORMATION (line 49) | typedef struct _FMIFS_PERCENT_COMPLETE_INFORMATION {
type FMIFS_FORMAT_REPORT_INFORMATION (line 53) | typedef struct _FMIFS_FORMAT_REPORT_INFORMATION {
type FMIFS_INSERT_DISK_INFORMATION (line 68) | typedef struct _FMIFS_INSERT_DISK_INFORMATION {
type FMIFS_IO_ERROR_INFORMATION (line 72) | typedef struct _FMIFS_IO_ERROR_INFORMATION {
type FMIFS_FINISHED_INFORMATION (line 78) | typedef struct _FMIFS_FINISHED_INFORMATION {
type FMIFS_CHECKONREBOOT_INFORMATION (line 82) | typedef struct _FMIFS_CHECKONREBOOT_INFORMATION {
type TEXT_MESSAGE_TYPE (line 86) | typedef enum _TEXT_MESSAGE_TYPE {
type FMIFS_TEXT_MESSAGE (line 92) | typedef struct _FMIFS_TEXT_MESSAGE {
type FMIFS_MEDIA_TYPE (line 104) | typedef enum _FMIFS_MEDIA_TYPE {
type FMIFS_CHKDSKEX_PARAM (line 126) | typedef struct {
type BOOLEAN (line 179) | typedef BOOLEAN
type VOID (line 186) | typedef
type VOID (line 197) | typedef
type BOOLEAN (line 209) | typedef
type VOID (line 217) | typedef
type VOID (line 231) | typedef
type VOID (line 241) | typedef
type VOID (line 250) | typedef
type BOOLEAN (line 259) | typedef
type BOOLEAN (line 266) | typedef
type VOID (line 276) | typedef
type VOID (line 287) | typedef
type VOID (line 294) | typedef
type VOID (line 303) | typedef
type BOOLEAN (line 310) | typedef
type BOOLEAN (line 326) | typedef
FILE: src/lfn.c
function BOOL (line 30) | BOOL
function BOOL (line 122) | BOOL
function BOOL (line 189) | BOOL
function BOOL (line 225) | BOOL
function DWORD (line 246) | DWORD
function BOOL (line 259) | BOOL
function BOOL (line 343) | BOOL
function BOOL (line 435) | BOOL
function BOOL (line 456) | BOOL
function DWORD (line 504) | DWORD
function DWORD (line 540) | DWORD
function DWORD (line 590) | DWORD
function DWORD (line 611) | DWORD
type REPARSE_DATA_BUFFER (line 634) | typedef struct _REPARSE_DATA_BUFFER {
function BOOL (line 664) | BOOL IsVeryLongPath(LPCWSTR pszPathName)
function DWORD (line 674) | DWORD WFJunction(LPCWSTR pszLinkDirectory, LPCWSTR pszLinkTarget)
function DWORD (line 781) | DWORD DecodeReparsePoint(LPCWSTR szFullPath, LPWSTR szDest, DWORD cwcDest)
function DWORD (line 850) | DWORD
function DWORD (line 866) | DWORD
FILE: src/lfn.h
type LFNDTA (line 25) | typedef struct {
FILE: src/lfnmisc.c
function DWORD (line 41) | DWORD
function WORD (line 193) | WORD I_LFNEditName( LPTSTR lpSrc, LPTSTR lpEd, LPTSTR lpRes, INT iResBuf...
FILE: src/mpr.h
type _CONNECTION_INFO (line 24) | struct _CONNECTION_INFO
type PARAMETERS (line 29) | typedef struct _PARAMETERS {
type WNET_CONNECTIONINFOA (line 223) | typedef struct _WNET_CONNECTINFOA
type WNET_CONNECTIONINFOW (line 229) | typedef struct _WNET_CONNECTINFOW
type BOOL (line 294) | typedef BOOL (*PFUNC_VALIDATION_CALLBACK)( LPWSTR pszName );
type DWORD (line 430) | typedef DWORD (*PF_NPGetReconnectFlags) (
FILE: src/numfmt.c
function LPTSTR (line 25) | LPTSTR
FILE: src/spinlock.h
type SpinLock (line 21) | struct SpinLock
function HasThresholdReached (line 40) | inline bool HasThresholdReached() { return (m_iterations >= YIELD_ITERAT...
function Lock (line 44) | void SpinLock::Lock()
function Unlock (line 87) | void SpinLock::Unlock()
FILE: src/suggest.c
function DWORD (line 52) | DWORD
function PDWORD (line 199) | PDWORD
FILE: src/tbar.c
type TBSAVEHDR (line 144) | typedef struct
type TBSAVEITEM (line 152) | typedef struct
function Static (line 163) | Static VOID
function VOID (line 178) | VOID
function Static (line 188) | Static VOID
function VOID (line 206) | VOID
function VOID (line 237) | VOID
function VOID (line 317) | VOID
function VOID (line 387) | VOID
function VOID (line 419) | VOID
function VOID (line 443) | VOID
function Static (line 476) | Static VOID
function Static (line 577) | Static VOID
function Static (line 635) | Static VOID
function Static (line 685) | Static BOOL
function VOID (line 750) | VOID
function BOOL (line 793) | BOOL
function DWORD (line 853) | DWORD
function VOID (line 1179) | VOID
function DWORD (line 1282) | DWORD
function VOID (line 1291) | VOID
function BOOL (line 1344) | BOOL LastButtonIsSeparator(HWND hwndTB)
function BOOL (line 1354) | BOOL
function VOID (line 1466) | VOID
function VOID (line 1514) | VOID
function VOID (line 1523) | VOID
FILE: src/treectl.c
function GetDragStatusText (line 113) | int GetDragStatusText(int iOperation)
function VOID (line 138) | VOID
function VOID (line 163) | VOID
function VOID (line 182) | VOID
function VOID (line 215) | VOID
function INT (line 262) | INT
function INT (line 295) | INT
function INT (line 341) | INT
function VOID (line 527) | VOID
function BOOL (line 555) | BOOL
function BOOL (line 607) | BOOL
function PDNODE (line 1004) | PDNODE
function BOOL (line 1028) | BOOL
function VOID (line 1123) | VOID
function VOID (line 1150) | VOID
function VOID (line 1254) | VOID
function BOOL (line 1331) | BOOL
function BOOL (line 1452) | BOOL
function INT (line 1547) | INT
function BOOL (line 1572) | BOOL
function VOID (line 1613) | VOID
function VOID (line 1804) | VOID
function VOID (line 1878) | VOID
function VOID (line 1904) | VOID
function VOID (line 1928) | VOID
function VOID (line 1981) | VOID
function LRESULT (line 2098) | LRESULT
function INT (line 3307) | INT
function UINT (line 3335) | UINT
function ResetTreeMax (line 3386) | void
FILE: src/treectl.h
type DNODE (line 24) | typedef struct tagDNODE
type DNODE (line 34) | typedef DNODE *PDNODE;
FILE: src/wfassoc.c
type DDEINFO (line 39) | typedef struct _DDE_INFO {
type DDETYPE (line 48) | typedef struct _DDE_TYPE {
type _FILETYPE (line 62) | struct _FILETYPE
type _EXT (line 63) | struct _EXT
type FILETYPE (line 71) | typedef struct _FILETYPE {
type EXT (line 82) | typedef struct _EXT {
type ASSOCIATEFILEDLGINFO (line 98) | typedef struct _ASSOCIATE_FILE_DLG_INFO {
type VFILETYPEEXT (line 113) | typedef union _VFILETYPEEXT {
function VOID (line 201) | VOID
function VOID (line 239) | VOID
function VOID (line 300) | VOID
function INT_PTR (line 413) | INT_PTR
function INT_PTR (line 1020) | INT_PTR
function BOOL (line 1187) | BOOL
function VOID (line 1614) | VOID
function BOOL (line 1681) | BOOL
function BOOL (line 1753) | BOOL
function VOID (line 2140) | VOID
function VOID (line 2199) | VOID
function DWORD (line 2231) | DWORD
function DWORD (line 2394) | DWORD
function DWORD (line 2648) | DWORD
function DWORD (line 2781) | DWORD
function VOID (line 2881) | VOID
function VOID (line 2901) | VOID
function VOID (line 2941) | VOID
function VOID (line 2962) | VOID
function BOOL (line 3029) | BOOL
function BOOL (line 3088) | BOOL
function BOOL (line 3155) | BOOL
function BOOL (line 3226) | BOOL
function DWORD (line 3375) | DWORD
function DWORD (line 3425) | DWORD
function DWORD (line 3466) | DWORD
function DWORD (line 3558) | DWORD
function PEXT (line 3628) | PEXT
function VOID (line 3676) | VOID
function BOOL (line 3733) | BOOL
function VOID (line 3837) | VOID
function DWORD (line 3900) | DWORD
function INT (line 4004) | INT
function VOID (line 4068) | VOID
function VOID (line 4079) | VOID
function DWORD (line 4111) | DWORD
function BOOL (line 4161) | BOOL
function BOOL (line 4202) | BOOL
function DWORD (line 4296) | DWORD
function VOID (line 4438) | VOID
function VOID (line 4492) | VOID
function LPTSTR (line 4523) | LPTSTR
function LPTSTR (line 4571) | LPTSTR
FILE: src/wfchgnot.c
function VOID (line 33) | VOID
function VOID (line 103) | VOID
function VOID (line 144) | VOID
function VOID (line 167) | VOID
function VOID (line 200) | VOID
function VOID (line 259) | VOID
function VOID (line 331) | VOID
function VOID (line 434) | VOID
function VOID (line 484) | VOID
FILE: src/wfcomman.c
function VOID (line 37) | VOID
function VOID (line 51) | VOID
function VOID (line 62) | VOID
function HWND (line 102) | HWND
function VOID (line 170) | VOID
function VOID (line 249) | VOID
function HWND (line 444) | HWND
function HWND (line 528) | HWND
function VOID (line 635) | VOID
function VOID (line 778) | VOID
function BOOL (line 798) | BOOL
function BOOL (line 831) | BOOL
function BOOL (line 892) | BOOL GetBashExePath(LPTSTR szBashPath, UINT bufSize)
function BOOL (line 920) | BOOL
function VOID (line 2199) | VOID
function VOID (line 2209) | VOID
function VOID (line 2225) | VOID
function INT (line 2280) | INT
function DWORD (line 2334) | DWORD
function VOID (line 2358) | VOID
FILE: src/wfcopy.c
function BOOL (line 45) | BOOL
function LPTSTR (line 86) | LPTSTR
function LPTSTR (line 105) | LPTSTR
function VOID (line 134) | VOID
function UINT (line 167) | UINT
function BOOL (line 230) | BOOL
function BOOL (line 617) | BOOL
function BOOL (line 652) | BOOL
function BOOL (line 687) | BOOL
function VOID (line 882) | VOID
type PARAM_REPLACEDLG (line 893) | typedef struct {
function VOID (line 903) | VOID
function INT_PTR (line 942) | INT_PTR
function DWORD (line 1031) | DWORD
function DWORD (line 1107) | DWORD
function DWORD (line 1157) | DWORD
function PLFNDTA (line 1189) | PLFNDTA
function VOID (line 1206) | VOID
function BOOL (line 1230) | BOOL
function DWORD (line 1328) | DWORD
function VOID (line 1856) | VOID
function BOOL (line 1867) | BOOL
function INT (line 1890) | INT
function VOID (line 1924) | VOID
function VOID (line 1962) | VOID
function BOOL (line 1993) | BOOL
function DWORD (line 2027) | DWORD
function DWORD (line 2044) | DWORD
function DWORD (line 2154) | DWORD
function DWORD (line 3386) | DWORD
function DWORD (line 3519) | DWORD
function DWORD (line 3529) | DWORD
function DWORD (line 3613) | DWORD
function INT (line 3705) | INT
FILE: src/wfcopy.h
type COPYROOT (line 34) | typedef struct _copyroot {
FILE: src/wfdir.c
type SELINFO (line 22) | typedef struct _SELINFO {
function VOID (line 46) | VOID
function VOID (line 313) | VOID
function LRESULT (line 413) | LRESULT CALLBACK DirListBoxWndProc(HWND hWnd, UINT wMsg, WPARAM wParam, ...
function LRESULT (line 424) | LRESULT
function LRESULT (line 981) | LRESULT
function VOID (line 1542) | VOID
function BOOL (line 1580) | BOOL
function UINT (line 1727) | UINT
function INT (line 1764) | INT
function INT (line 1805) | INT
function INT (line 1847) | INT
function INT (line 1912) | INT
function INT (line 1945) | INT
function INT (line 1977) | INT
function INT (line 2047) | INT
function INT (line 2149) | INT
function VOID (line 2301) | VOID
function INT (line 2356) | INT
function VOID (line 2369) | VOID
function VOID (line 2440) | VOID
function INT (line 2518) | INT
function LPWSTR (line 2694) | LPWSTR
function INT (line 2991) | INT
function VOID (line 3028) | VOID
function BOOL (line 3101) | BOOL
function VOID (line 3147) | VOID
function HWND (line 3214) | HWND
function VOID (line 3301) | VOID
function HWND (line 3392) | HWND
function VOID (line 3405) | VOID
function VOID (line 3433) | VOID
function BOOL (line 3510) | BOOL
FILE: src/wfdirrd.c
type EDIRABORT (line 16) | typedef enum {
type EXTLOCATION (line 22) | typedef struct _EXT_LOCATION {
function BOOL (line 54) | BOOL
function VOID (line 92) | VOID
function LPXDTALINK (line 142) | LPXDTALINK
function VOID (line 186) | VOID
function LPXDTALINK (line 233) | LPXDTALINK
function VOID (line 295) | VOID
function VOID (line 321) | VOID
function LPXDTALINK (line 346) | LPXDTALINK
function VOID (line 409) | VOID
function VOID (line 435) | VOID
function DWORD (line 584) | DWORD
function LPXDTALINK (line 650) | LPXDTALINK
function BOOL (line 1103) | BOOL
FILE: src/wfdirsrc.c
function HCURSOR (line 24) | HCURSOR
function BOOL (line 63) | BOOL
function VOID (line 110) | VOID
function VOID (line 160) | VOID
function VOID (line 238) | VOID
function VOID (line 279) | VOID
function BOOL (line 433) | BOOL
function VOID (line 614) | VOID
function WORD (line 706) | WORD
function INT (line 754) | INT
function LPTSTR (line 985) | LPTSTR
function BOOL (line 1020) | BOOL
FILE: src/wfdlgs.c
function VOID (line 23) | VOID
function INT_PTR (line 140) | INT_PTR
function INT_PTR (line 232) | INT_PTR
function INT_PTR (line 338) | INT_PTR
function UINT_PTR (line 418) | UINT_PTR
function VOID (line 480) | VOID
function VOID (line 487) | VOID
function INT_PTR (line 654) | INT_PTR
function INT_PTR (line 718) | INT_PTR CALLBACK PrefDlgProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM...
function VOID (line 812) | VOID
function VOID (line 850) | VOID
FILE: src/wfdlgs2.c
function VOID (line 47) | VOID
function VOID (line 78) | VOID
function INT_PTR (line 105) | INT_PTR
function INT_PTR (line 258) | INT_PTR
function VOID (line 359) | VOID
function VOID (line 379) | VOID
function INT_PTR (line 423) | INT_PTR
function VOID (line 823) | VOID
type vertbl (line 847) | struct vertbl {
type vertbl (line 856) | struct vertbl
function VOID (line 898) | VOID
function LPTSTR (line 916) | LPTSTR
function LPTSTR (line 955) | LPTSTR
function VOID (line 1117) | VOID
function BOOL (line 1140) | BOOL
function VOID (line 1165) | VOID
function INT (line 1256) | INT
function INT_PTR (line 1648) | INT_PTR
function INT_PTR (line 1903) | INT_PTR
function BOOL (line 2013) | BOOL
FILE: src/wfdlgs3.c
type FDC_RET (line 37) | typedef enum {
function INT_PTR (line 49) | INT_PTR
function INT_PTR (line 157) | INT_PTR
function VOID (line 287) | VOID
function INT_PTR (line 515) | INT_PTR
function INT_PTR (line 743) | INT_PTR
function INT_PTR (line 850) | INT_PTR
function DWORD (line 884) | DWORD
function DWORD (line 913) | DWORD
function BOOL (line 941) | BOOL
function INT_PTR (line 1116) | INT_PTR
function INT_PTR (line 1327) | INT_PTR
function VOID (line 1422) | VOID
function INT_PTR (line 1555) | INT_PTR
function VOID (line 1659) | VOID
function VOID (line 1687) | VOID
function VOID (line 1714) | VOID
function VOID (line 1798) | VOID
function VOID (line 1826) | VOID
function BOOL (line 1852) | BOOL GetProductVersion(WORD * pwMajor, WORD * pwMinor, WORD * pwBuild, W...
FILE: src/wfdocb.h
type _DOC_BUCKET (line 18) | struct _DOC_BUCKET
type _DOC_BUCKET (line 19) | struct _DOC_BUCKET
type DOCENUM (line 28) | typedef struct _DOC_ENUM DOCENUM, *PDOCENUM;
FILE: src/wfdos.c
function VOID (line 14) | VOID
function INT (line 36) | INT
function DWORD (line 52) | DWORD
function DWORD (line 77) | DWORD
FILE: src/wfdrives.c
function VOID (line 51) | VOID
function VOID (line 176) | VOID
function INT (line 199) | INT
function VOID (line 237) | VOID
function VOID (line 265) | VOID
function VOID (line 307) | VOID
function BOOL (line 360) | BOOL
function VOID (line 463) | VOID
function VOID (line 504) | VOID
function VOID (line 562) | VOID
function LRESULT (line 690) | LRESULT
function INT (line 1116) | INT
FILE: src/wfdrop.c
function PaintRectItem (line 28) | void PaintRectItem(WF_IDropTarget *This, POINTL *ppt)
function LPWSTR (line 87) | LPWSTR QuotedDropList(IDataObject *pDataObject)
function HDROP (line 132) | HDROP CreateDropFiles(POINT pt, BOOL fNC, LPTSTR pszFiles)
function HRESULT (line 182) | static HRESULT StreamToFile(IStream *stream, TCHAR *szFile)
function LPWSTR (line 224) | LPWSTR QuotedContentList(IDataObject *pDataObject)
function BOOL (line 326) | static BOOL QueryDataObject(WF_IDataObject *pDataObject)
function DWORD (line 341) | static DWORD DropEffect(DWORD grfKeyState, POINTL pt, DWORD dwAllowed)
function ULONG (line 371) | static ULONG STDMETHODCALLTYPE idroptarget_addref (WF_IDropTarget* This)
function HRESULT (line 379) | static HRESULT STDMETHODCALLTYPE
function ULONG (line 405) | static ULONG STDMETHODCALLTYPE
function HRESULT (line 427) | static HRESULT STDMETHODCALLTYPE idroptarget_dragenter(WF_IDropTarget* T...
function HRESULT (line 454) | static HRESULT STDMETHODCALLTYPE idroptarget_dragover(WF_IDropTarget* Th...
function HRESULT (line 472) | static HRESULT STDMETHODCALLTYPE idroptarget_dragleave(WF_IDropTarget* T...
function HRESULT (line 482) | static HRESULT STDMETHODCALLTYPE idroptarget_drop(WF_IDropTarget* This, ...
function DropData (line 508) | void DropData(WF_IDropTarget *This, IDataObject *pDataObject, DWORD dwEf...
function RegisterDropWindow (line 579) | void RegisterDropWindow(HWND hwnd, WF_IDropTarget **ppDropTarget)
function UnregisterDropWindow (line 594) | void UnregisterDropWindow(HWND hwnd, IDropTarget *pDropTarget)
function WF_IDropTarget (line 609) | WF_IDropTarget * WF_IDropTarget_new(HWND hwnd)
function HRESULT (line 629) | HRESULT CreateDropTarget(HWND hwnd, WF_IDropTarget **ppDropTarget)
FILE: src/wfdrop.h
type WF_IDataObject (line 18) | typedef struct {
type WF_IEnumFORMATETC (line 28) | typedef struct {
type WF_IDropSource (line 38) | typedef struct {
type WF_IDropTarget (line 43) | typedef struct {
type WF_IDataObjectVtbl (line 52) | typedef struct WF_IDataObjectVtbl
type WF_IEnumFORMATETCVtbl (line 115) | typedef struct WF_IEnumFORMATETCVtbl
type WF_IDropSourceVtbl (line 151) | typedef struct WF_IDropSourceVtbl
type WF_IDropTargetVtbl (line 178) | typedef struct WF_IDropTargetVtbl
type WF_IDataObject (line 219) | typedef WF_IDataObject* LPWBDATAOBJECT;
type WF_IEnumFORMATETC (line 220) | typedef WF_IEnumFORMATETC* LPWBFORMATETC;
FILE: src/wfext.c
function VOID (line 24) | VOID
function LONG (line 38) | LONG
function LONG (line 248) | LONG
function VOID (line 359) | VOID
function LRESULT (line 382) | LRESULT
FILE: src/wfext.h
type FMS_GETFILESELA (line 63) | typedef struct _FMS_GETFILESELA {
type FMS_GETFILESELW (line 70) | typedef struct _FMS_GETFILESELW {
type FMS_GETDRIVEINFOA (line 86) | typedef struct _FMS_GETDRIVEINFOA { // for drive
type FMS_GETDRIVEINFOW (line 94) | typedef struct _FMS_GETDRIVEINFOW { // for drive
type FMS_LOADA (line 111) | typedef struct _FMS_LOADA {
type FMS_LOADW (line 118) | typedef struct _FMS_LOADW {
type EXT_BUTTON (line 136) | typedef struct tagEXT_BUTTON {
type FMS_TOOLBARLOAD (line 142) | typedef struct tagFMS_TOOLBARLOAD {
type FMS_HELPSTRINGA (line 151) | typedef struct tagFMS_HELPSTRINGA {
type FMS_HELPSTRINGW (line 157) | typedef struct tagFMS_HELPSTRINGW {
type WPARAM (line 172) | typedef DWORD (APIENTRY *FM_EXT_PROC)(HWND, WPARAM, LPARAM);
FILE: src/wfexti.h
type EXTENSION (line 17) | typedef struct _EXTENSION { /* ;Inte...
FILE: src/wffile.c
function DWORD (line 117) | DWORD MKDir(
function DWORD (line 148) | DWORD RMDir(
function BOOL (line 174) | BOOL WFSetAttr(
function VOID (line 205) | VOID CentreWindow(
function VOID (line 283) | VOID wfProgressYield()
function VOID (line 315) | VOID DisplayUncompressProgress(
function INT_PTR (line 382) | INT_PTR CALLBACK UncompressProgDlg(
function DisplayCompressProgress (line 465) | void DisplayCompressProgress(
function INT_PTR (line 601) | INT_PTR CALLBACK CompressProgDlg(
function BOOL (line 687) | BOOL WFCheckCompress(
function BOOL (line 1022) | BOOL CompressFile(
function BOOL (line 1082) | BOOL WFDoCompress(
function BOOL (line 1366) | BOOL UncompressFile(
function BOOL (line 1412) | BOOL WFDoUncompress(
function BOOL (line 1676) | BOOL GetRootPath(
function VOID (line 1714) | VOID RedrawAllTreeWindows()
function CompressErrMessageBox (line 1764) | int CompressErrMessageBox(
function INT_PTR (line 1822) | INT_PTR CALLBACK CompressErrDialogProc(
function BOOL (line 1893) | BOOL OpenFileForCompress(
FILE: src/wfgoto.cpp
function ParentOrdering (line 36) | int ParentOrdering(const PDNODE& a, const PDNODE& b)
function CompareNodes (line 95) | bool CompareNodes(const PDNODE& a, const PDNODE& b)
function FilterBySubtree (line 100) | vector<PDNODE> FilterBySubtree(vector<PDNODE> const& parents, vector<PDN...
function TreeIntersection (line 117) | vector<PDNODE> TreeIntersection(vector<vector<PDNODE>>& trees)
function PDNODE (line 236) | PDNODE CreateNode(PDNODE pParentNode, WCHAR *szName, DWORD dwAttribs)
function SplitIntoWords (line 267) | vector<wstring> SplitIntoWords(LPCTSTR szText)
function FreeDirectoryBagOValues (line 284) | void FreeDirectoryBagOValues(BagOValues<PDNODE> *pbov, vector<PDNODE> *p...
function BOOL (line 297) | BOOL BuildDirectoryBagOValues(BagOValues<PDNODE> *pbov, vector<PDNODE> *...
function GetDirectoryOptionsFromText (line 464) | vector<PDNODE> GetDirectoryOptionsFromText(LPCTSTR szText, BOOL *pbLimited)
function VOID (line 520) | VOID UpdateGotoList(HWND hDlg)
function LRESULT (line 579) | LRESULT APIENTRY GotoEditSubclassProc(
function VOID (line 609) | VOID
function INT_PTR (line 635) | INT_PTR
function DWORD (line 734) | DWORD WINAPI
function DWORD (line 790) | DWORD
FILE: src/wfgwl.h
type TREEDATA (line 10) | typedef struct {
type TREECTLDATA (line 24) | typedef struct {
type DIRDATA (line 31) | typedef struct {
type DRIVESDATA (line 39) | typedef struct {
type SEARCHDATA (line 47) | typedef struct {
FILE: src/wfinfo.c
function VOID (line 72) | VOID
function VOID (line 78) | VOID
function GetDiskSpace (line 109) | IF_READ(Space)
function INT (line 323) | INT
function VOID (line 404) | VOID
type _DOC_BUCKET (line 449) | struct _DOC_BUCKET {
function PPDOCBUCKET (line 476) | PPDOCBUCKET
function VOID (line 503) | VOID
function VOID (line 547) | VOID
function INT (line 588) | INT
function PDOCBUCKET (line 664) | PDOCBUCKET
function HICON (line 694) | HICON DocGetIcon(PDOCBUCKET pDocBucket)
type _DOC_ENUM (line 724) | struct _DOC_ENUM {
function PDOCENUM (line 753) | PDOCENUM
function LPTSTR (line 791) | LPTSTR
function VOID (line 844) | VOID
function DWORD (line 952) | DWORD
function INT (line 1040) | INT
function DWORD (line 1392) | DWORD
function VOID (line 1525) | VOID
function VOID (line 1611) | VOID
function VOID (line 1626) | VOID
function BOOL (line 1681) | BOOL
function VOID (line 1881) | VOID
function BOOL (line 1996) | BOOL
function VOID (line 2052) | VOID
FILE: src/wfinfo.h
type INFOSTATUS (line 43) | typedef struct _INFO_STATUS {
FILE: src/wfinit.c
function INT (line 45) | INT
function VOID (line 59) | VOID
function VOID (line 94) | VOID
function VOID (line 209) | VOID
function VOID (line 288) | VOID
function INT (line 296) | INT
function VOID (line 327) | VOID
function UINT (line 414) | UINT
function UINT (line 446) | UINT MapMenuPosToIDM(UINT pos)
function VOID (line 480) | VOID
function DWORD (line 530) | DWORD
function BOOL (line 537) | BOOL
function VOID (line 656) | VOID
function BOOL (line 709) | BOOL
function BOOL (line 728) | BOOL
function VOID (line 911) | VOID
function UINT (line 943) | UINT
function BOOL (line 1007) | BOOL
function VOID (line 1645) | VOID
function VOID (line 1665) | VOID
function VOID (line 1750) | VOID
function BOOL (line 1794) | BOOL
FILE: src/wfloc.c
type FM_LANG (line 18) | typedef struct _FM_LANG {
function LCID (line 35) | LCID
function VOID (line 60) | VOID InitLangList(HWND hCBox)
function VOID (line 97) | VOID SaveLang(HWND hCBox)
function BOOL (line 109) | BOOL DefaultLayoutRTL()
function DWORD (line 124) | DWORD MainWindowExStyle()
function VOID (line 142) | VOID PreserveBitmapInRTL(HDC hdc)
FILE: src/wfmem.c
function LPXDTALINK (line 21) | LPXDTALINK
function VOID (line 70) | VOID
function LPXDTALINK (line 225) | LPXDTALINK
function LPXDTA (line 288) | LPXDTA
FILE: src/wfmem.h
type _XDTAHEAD (line 13) | struct _XDTAHEAD
type _XDTA (line 14) | struct _XDTA
type _XDTALINK (line 15) | struct _XDTALINK
type XDTALINK (line 17) | typedef struct _XDTALINK {
type XDTAHEAD (line 32) | typedef struct _XDTAHEAD {
type XDTA (line 46) | typedef struct _XDTA {
FILE: src/wfprint.c
function DWORD (line 20) | DWORD
function DWORD (line 108) | DWORD
FILE: src/wfsearch.c
function INT (line 131) | INT
function VOID (line 421) | VOID
function INT (line 466) | INT
function VOID (line 542) | VOID
function VOID (line 569) | VOID
function LRESULT (line 601) | LRESULT
function VOID (line 1134) | VOID
function VOID (line 1147) | VOID
function VOID (line 1153) | VOID
function INT_PTR (line 1160) | INT_PTR CALLBACK
function VOID (line 1305) | VOID
function DWORD (line 1367) | DWORD
function VOID (line 1425) | VOID
FILE: src/wftree.c
function HICON (line 21) | HICON
function VOID (line 39) | VOID
function HWND (line 56) | HWND
function BOOL (line 82) | BOOL
function BOOL (line 177) | BOOL
function VOID (line 284) | VOID
function LRESULT (line 351) | LRESULT
function VOID (line 897) | VOID
FILE: src/wfutil.c
type HistoryDir (line 21) | typedef struct HistoryDir
function VOID (line 28) | VOID
function BOOL (line 45) | BOOL
function LPWSTR (line 62) | LPWSTR
function LPWSTR (line 99) | LPWSTR
function VOID (line 123) | VOID CDECL
function BOOL (line 161) | BOOL
function VOID (line 171) | VOID
function INT (line 198) | INT
function VOID (line 221) | VOID
function BOOL (line 250) | BOOL GetDriveDirectory(INT iDrive, LPTSTR pszDir)
function VOID (line 284) | VOID
function VOID (line 338) | VOID
function VOID (line 405) | VOID
function HWND (line 444) | HWND
function VOID (line 456) | VOID
function LPTSTR (line 469) | LPTSTR
function BOOL (line 514) | BOOL
function INT (line 556) | INT
function VOID (line 638) | VOID
function INT (line 794) | INT
function BOOL (line 821) | BOOL
function DWORD (line 836) | DWORD
function BOOL (line 863) | BOOL
function BOOL (line 888) | BOOL
function BOOL (line 916) | BOOL
function BOOL (line 923) | BOOL
function BOOL (line 930) | BOOL
function BOOL (line 937) | BOOL
function DWORD (line 945) | DWORD
function BOOL (line 963) | BOOL
function LPTSTR (line 990) | LPTSTR
function LPTSTR (line 1018) | LPTSTR
function VOID (line 1091) | VOID
function VOID (line 1116) | VOID
function VOID (line 1172) | VOID
function VOID (line 1203) | VOID
function BOOL (line 1224) | BOOL
function VOID (line 1246) | VOID
function UINT (line 1266) | UINT
function VOID (line 1291) | VOID
function VOID (line 1312) | VOID
function VOID (line 1342) | VOID
function LPTSTR (line 1367) | LPTSTR
function INT (line 1393) | INT
function DWORD (line 1439) | DWORD
function PDOCBUCKET (line 1565) | PDOCBUCKET
function BOOL (line 1592) | BOOL TypeAheadString(WCHAR ch, LPWSTR szT)
function LONG (line 1644) | LONG WFRegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, DWORD ...
function LPTSTR (line 1751) | LPTSTR GetFullPathInSystemDirectory(LPCTSTR FileName)
function HMODULE (line 1780) | HMODULE LoadSystemLibrary(LPCTSTR FileName)
FILE: src/winexp.h
type ATOMSTRUC (line 13) | typedef ATOMSTRUC *PATOM;
type ATOMTABLE (line 21) | typedef struct {
FILE: src/winfile.c
function INT (line 42) | INT APIENTRY
function VOID (line 113) | VOID
function BOOL (line 168) | BOOL
function LRESULT (line 486) | LRESULT
function LRESULT (line 1140) | LRESULT
function BOOL (line 1203) | BOOL
function BOOL (line 1299) | BOOL
FILE: src/winfile.h
type WCHAR (line 66) | typedef WCHAR TUCHAR, *PTUCHAR;
type TUCHAR (line 68) | typedef unsigned char TUCHAR, *PTUCHAR;
type HWND (line 243) | typedef HWND *PHWND;
type INT (line 244) | typedef INT DRIVE;
type INT (line 245) | typedef INT DRIVEIND;
type CANCEL_INFO (line 249) | typedef struct _CANCEL_INFO {
type SEARCH_INFO (line 284) | typedef struct _SEARCH_INFO {
type COPYINFO (line 308) | typedef struct _COPYINFO {
type ISELTYPE (line 315) | typedef enum eISELTYPE {
type WINDOW (line 327) | typedef struct {
type _SELINFO (line 346) | struct _SELINFO
type DRIVEINFO (line 934) | typedef struct _DRIVE_INFO {
type NTSYSAPI (line 1445) | typedef NTSYSAPI CHAR (*RtlSetProcessPlaceholderCompatibilityMode_t)(
FILE: src/wnetcaps.c
function BOOL (line 37) | BOOL
FILE: tools/ExeView/bmp.cpp
function BOOL (line 48) | BOOL ShowBitmap (LPRESPACKET lprp)
function LRESULT (line 106) | LRESULT FAR PASCAL ShowBitmapProc (HWND hWnd, UINT msg, WPARAM wParam, L...
function HBITMAP (line 184) | HBITMAP MakeBitmap ( LPRESPACKET lprp )
function HPALETTE (line 287) | HPALETTE CreateNewPalette (LPSTR lpbi, WORD fWin30, WORD wColors)
FILE: tools/ExeView/exehdr.cpp
function PEXEINFO (line 51) | PEXEINFO LoadExeInfo (LPSTR lpFile)
function VOID (line 180) | VOID FreeExeInfoMemory (PEXEINFO pExeInfo)
function ReadSegmentTable (line 284) | int ReadSegmentTable (int fFile, PEXEINFO pExeInfo)
function ReadResourceTable (line 340) | int ReadResourceTable (int fFile, PEXEINFO pExeInfo)
function ReadResidentNameTable (line 494) | int ReadResidentNameTable (int fFile, PEXEINFO pExeInfo)
function ReadImportedNameTable (line 563) | int ReadImportedNameTable (int fFile, PEXEINFO pExeInfo)
function ReadNonResidentNameTable (line 648) | int ReadNonResidentNameTable (int fFile, PEXEINFO pExeInfo)
function PSEGENTRY (line 722) | PSEGENTRY GetSegEntry ( PEXEINFO pExeInfo, int nIndex )
function LPSTR (line 756) | LPSTR GetModuleName ( PEXEINFO pExeInfo )
function LPSTR (line 788) | LPSTR GetModuleDescription ( PEXEINFO pExeInfo )
function LPSTR (line 820) | LPSTR GetExeDataType (PEXEINFO pExeInfo)
FILE: tools/ExeView/exehdr.h
type OLDEXE (line 18) | typedef struct
type NEWEXE (line 38) | typedef struct
type FENTRY (line 86) | typedef struct
type MENTRY (line 92) | typedef struct
type SEGENTRY (line 104) | typedef struct
type RTYPE (line 126) | typedef struct
type RINFO (line 133) | typedef struct
type tgRESTYPE (line 145) | struct tgRESTYPE
type RESINFO2 (line 147) | typedef struct
type RESTYPE (line 158) | typedef struct tgRESTYPE
type NAME (line 175) | typedef struct tgNAME
type EXEINFO (line 185) | typedef struct
FILE: tools/ExeView/filllb.cpp
function BOOL (line 71) | BOOL FillLBWithNewExeHeader (HWND hWnd, PEXEINFO pExeInfo)
function BOOL (line 230) | BOOL FillLBWithOldExeHeader (HWND hWnd, PEXEINFO pExeInfo )
function BOOL (line 320) | BOOL FillLBWithEntryTable (HWND hWnd, PEXEINFO pExeInfo )
function BOOL (line 450) | BOOL FillLBWithSegments (HWND hWnd, PEXEINFO pExeInfo )
function BOOL (line 513) | BOOL FillLBWithResources (HWND hWnd, PEXEINFO pExeInfo )
function BOOL (line 614) | BOOL FillLBWithResidentNames (HWND hWnd, PEXEINFO pExeInfo )
function BOOL (line 679) | BOOL FillLBWithImportedNames (HWND hWnd, PEXEINFO pExeInfo )
function BOOL (line 740) | BOOL FillLBWithNonResidentNames (HWND hWnd, PEXEINFO pExeInfo )
function LPSTR (line 806) | LPSTR FormatSegEntry ( PEXEINFO pExeInfo, PSEGENTRY pSeg, LPSTR lp )
function LPSTR (line 867) | LPSTR FormatResourceEntry ( PEXEINFO pExeInfo, PRESINFO pri, LPSTR lp )
FILE: tools/ExeView/iconcur.cpp
function INT_PTR (line 52) | INT_PTR FAR PASCAL ShowIconProc (HWND hDlg, UINT msg, WPARAM wParam, LPA...
function HICON (line 141) | HICON MakeIcon ( LPRESPACKET lprp )
function INT_PTR (line 427) | INT_PTR FAR PASCAL ShowCursorProc (HWND hDlg, UINT msg, WPARAM wParam, L...
function HCURSOR (line 520) | HCURSOR MakeCursor ( LPRESPACKET lprp )
FILE: tools/ExeView/init.cpp
function BOOL (line 49) | BOOL InitApplication (HINSTANCE hInstance)
function BOOL (line 110) | BOOL InitInstance (HINSTANCE hInstance, int nCmdShow)
FILE: tools/ExeView/main.cpp
function INT (line 59) | INT APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPST...
function LRESULT (line 106) | LRESULT CALLBACK MainWndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM...
function INT_PTR (line 341) | INT_PTR CALLBACK About (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
function VOID (line 383) | VOID ResizeChildWindows ( HWND hMainWnd )
function VOID (line 485) | VOID EnableChildWindows ( HWND hMainWnd, PEXEINFO pExeInfo )
FILE: tools/ExeView/menudlg.cpp
function BOOL (line 49) | BOOL ShowMenu (LPRESPACKET lprp)
function LRESULT (line 118) | LRESULT FAR PASCAL ShowMenuProc (HWND hWnd, UINT msg, WPARAM wParam, LPA...
function INT_PTR (line 154) | INT_PTR FAR PASCAL ShowDialogProc (HWND hDlg, UINT msg, WPARAM wParam, L...
FILE: tools/ExeView/res.cpp
function BOOL (line 29) | BOOL LoadResourcePacket(PEXEINFO pExeInfo, PRESTYPE prt, PRESINFO pri, L...
function VOID (line 126) | VOID FreeResourcePacket(LPRESPACKET lprp)
function BOOL (line 158) | BOOL DisplayResource ( PEXEINFO pExeInfo, PRESTYPE prt, PRESINFO pri )
function INT_PTR (line 339) | INT_PTR FAR PASCAL NameTableProc (HWND hDlg, UINT msg, WPARAM wParam, LP...
function BOOL (line 387) | BOOL FillLBWithNameTable (HWND hWnd, LPRESPACKET lprp)
function INT_PTR (line 469) | INT_PTR FAR PASCAL IconGroupProc (HWND hDlg, UINT msg, WPARAM wParam, LP...
function BOOL (line 518) | BOOL FillLBWithIconGroup (HWND hWnd, LPRESPACKET lprp)
function INT_PTR (line 582) | INT_PTR FAR PASCAL CursorGroupProc (HWND hDlg, UINT msg, WPARAM wParam, ...
function BOOL (line 631) | BOOL FillLBWithCursorGroup (HWND hWnd, LPRESPACKET lprp)
function INT_PTR (line 694) | INT_PTR FAR PASCAL AccelTableProc (HWND hDlg, UINT msg, WPARAM wParam, L...
function BOOL (line 743) | BOOL FillLBWithAccelTable (HWND hWnd, LPRESPACKET lprp)
function INT_PTR (line 834) | INT_PTR FAR PASCAL StringTableProc (HWND hDlg, UINT msg, WPARAM wParam, ...
function BOOL (line 883) | BOOL FillLBWithStringTable (HWND hWnd, LPRESPACKET lprp)
function INT_PTR (line 952) | INT_PTR FAR PASCAL FontDirProc (HWND hDlg, UINT msg, WPARAM wParam, LPAR...
function BOOL (line 1001) | BOOL FillLBWithFontDir (HWND hWnd, LPRESPACKET lprp)
FILE: tools/ExeView/res.h
type RESPACKET (line 23) | typedef struct
type NAMEENTRY (line 34) | typedef struct
type ICONENTRY (line 44) | typedef struct
type ICONDIR (line 56) | typedef struct
type CURSORENTRY (line 65) | typedef struct
type CURSORDIR (line 75) | typedef struct
type CURSORIMAGE (line 84) | typedef struct
type ACCELENTRY (line 93) | typedef struct
type FONTENTRY (line 106) | typedef struct
type DLGTEMPLATE16 (line 144) | typedef struct {
type DLGITEMTEMPLATE16 (line 155) | typedef struct {
type DLGITEMDECODE (line 168) | typedef struct
type DLGDECODE (line 179) | typedef struct
type MENUITEM (line 198) | typedef struct
type MENUDECODE (line 206) | typedef struct
FILE: tools/ExeView/save.cpp
function BOOL (line 24) | BOOL SaveResources(HWND hWnd, PEXEINFO pExeInfo, LPSTR lpFile)
function WORD (line 137) | WORD* DecodeMenu(WORD *lpv, MENUDECODE *pmenu)
function BOOL (line 163) | BOOL SaveMenu(HFILE hFile, LPRESPACKET lprp)
function VOID (line 219) | VOID DecodeDlgItem(WORD **ppwT, DLGITEMDECODE *pdecitem)
function VOID (line 248) | VOID DecodeDialog(VOID *lpv, DLGDECODE *pdecdlg)
function BOOL (line 283) | BOOL SaveDialog(HFILE hFile, LPRESPACKET lprp)
function BOOL (line 342) | BOOL SaveStringTable(HFILE hFile, LPRESPACKET lprp)
FILE: tools/FileSignatureInfo/FileSignatureInfo.cpp
function _tmain (line 39) | int __cdecl _tmain(int argc, TCHAR *argv[])
function BOOL (line 231) | BOOL PrintCertificateInfo(PCCERT_CONTEXT pCertContext)
function LPWSTR (line 331) | LPWSTR AllocateAndCopyWideString(LPCWSTR inputString)
function BOOL (line 344) | BOOL GetProgAndPublisherInfo(PCMSG_SIGNER_INFO pSignerInfo,
function BOOL (line 473) | BOOL GetDateOfTimeStamp(PCMSG_SIGNER_INFO pSignerInfo, SYSTEMTIME *st)
function BOOL (line 517) | BOOL GetTimeStampSignerInfo(PCMSG_SIGNER_INFO pSignerInfo, PCMSG_SIGNER_...
FILE: tools/FileSignatureInfo/VerifySignature.cpp
function BOOL (line 28) | BOOL VerifyEmbeddedSignature(LPCWSTR pwszSourceFile)
FILE: tools/VerifyResources/Resources.h
type PROCRES (line 18) | typedef struct
type DLGITEMDECODE (line 38) | typedef struct
type DLGDECODE (line 54) | typedef struct
type MENUITEM (line 81) | typedef struct
type MENUDECODE (line 89) | typedef struct
FILE: tools/VerifyResources/VerifyResources.cpp
function wmain (line 34) | int __cdecl wmain(int argc, wchar_t *argv[])
function LPCTSTR (line 58) | LPCTSTR MapRTToString(LPCTSTR lpType)
function BOOL (line 91) | BOOL CALLBACK ProcessTypesInMod(HMODULE hMod, LPWSTR lpType, LONG_PTR lP...
function BOOL (line 98) | BOOL CALLBACK ProcessNamesInMod(HMODULE hMod, LPCTSTR lpszType, LPTSTR l...
function BOOL (line 167) | BOOL CALLBACK ProcessLangInMod(HMODULE hMod, LPCTSTR lpszType, LPCTSTR l...
function VOID (line 200) | VOID DecodeDlgItem(WORD **ppwT, BOOL bExtended, DLGITEMDECODE *pdecitem)
function VOID (line 276) | VOID DecodeDialog(VOID *lpv, DLGDECODE *pdecdlg)
function VOID (line 377) | VOID VerifyLangDialogs(PROCRES *pprocres)
function VOID (line 464) | VOID DecodeMenu(VOID *lpv, MENUDECODE *pmenu)
function VOID (line 497) | VOID VerifyLangMenus(PROCRES *pprocres)
function WORD (line 552) | WORD GetUsedStringsMask(HGLOBAL hglob)
function VOID (line 572) | VOID VerifyLangStrings(HMODULE hMod, PROCRES *pprocres)
Condensed preview — 196 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,753K chars).
[
{
"path": ".gitignore",
"chars": 4815,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": "CHANGES.md",
"chars": 4905,
"preview": "## Changes in v10.4 compared to v10.3 (February 2025)\n\n1. New Korean translation\n2. Resizable dialogs in pt-PT\n3. Better"
},
{
"path": "GNUmakefile",
"chars": 1354,
"preview": "SRCS = \\\n\tsrc/dbg.c \\\n\tsrc/lfn.c \\\n\tsrc/lfnmisc.c \\\n\tsrc/numfmt.c \\\n\tsrc/Resize.c \\\n\tsrc/suggest.c \\\n\tsrc/tbar.c \\\n\tsrc/"
},
{
"path": "LICENSE",
"chars": 1162,
"preview": " MIT License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission is hereby granted, free o"
},
{
"path": "Package/Package.appxmanifest",
"chars": 2309,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package\n xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows1"
},
{
"path": "Package/Package.wapproj",
"chars": 5125,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "README.md",
"chars": 3931,
"preview": "\n\n# Announcement: Repository to be archived on March 1, 2025\nWe realize this may come as a shock and disappointment to o"
},
{
"path": "SECURITY.md",
"chars": 2757,
"preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.7 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products an"
},
{
"path": "SignConfig.xml",
"chars": 1179,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<SignConfigXML>\n <job platform=\"Win32\" certSubject=\"CN=Microsoft Corporation, O="
},
{
"path": "Winfile.sln",
"chars": 18809,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 15\nVisualStudioVersion = 15.0.27428.2037\nM"
},
{
"path": "build/README.md",
"chars": 799,
"preview": "\nThese two files control repo-wide build settings.\n\nMsbuild projects work by including a \"default\" props file, then allo"
},
{
"path": "build/Winfile.default.props",
"chars": 2685,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n <ItemGro"
},
{
"path": "build/Winfile.props",
"chars": 3144,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n <Import "
},
{
"path": "help/ini/index.html",
"chars": 10601,
"preview": "<html>\n<head>\n<title>Building winfile.ini from scratch</title>\n</head>\n<body>\n <p>OR: Building WINFILE.INI from scratch "
},
{
"path": "nuget/LICENSE.txt",
"chars": 1236,
"preview": "\nFrom: https://github.com/Microsoft/winfile/raw/master/LICENSE\n\nLICENSE\n\n MIT License\n\n Copyright (c) Microsoft Co"
},
{
"path": "nuget/VERIFICATION.txt",
"chars": 310,
"preview": "\nVERIFICATION\nVerification is intended to assist the Chocolatey moderators and community\nin verifying that this package'"
},
{
"path": "nuget/winfile.nuspec",
"chars": 2064,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<package xmlns=\"http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd\">\n <me"
},
{
"path": "samples/addon/AddOnSample.vcxproj.filters",
"chars": 1265,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild"
},
{
"path": "samples/addon/AddonSample.vcxproj",
"chars": 3334,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.microso"
},
{
"path": "samples/addon/dllmain.cpp",
"chars": 760,
"preview": "/********************************************************************\n\n dllmain.cpp\n\n Windows File Manager Sample Ad"
},
{
"path": "samples/addon/extproc.cpp",
"chars": 7058,
"preview": "/********************************************************************\n\n extproc.cpp\n\n Windows File Manager Sample Ad"
},
{
"path": "samples/addon/resource.h",
"chars": 817,
"preview": "/********************************************************************\n\n resource.h\n\n Windows File Manager Sample Add"
},
{
"path": "samples/addon/resources.rc",
"chars": 1651,
"preview": "/********************************************************************\n\n resources.rc\n\n Windows File Manager Sample A"
},
{
"path": "samples/addon/stdafx.cpp",
"chars": 283,
"preview": "// stdafx.cpp : source file that includes just the standard includes\n// Dll1.pch will be the pre-compiled header\n// stda"
},
{
"path": "samples/addon/stdafx.h",
"chars": 378,
"preview": "// stdafx.h : include file for standard system include files,\n// or project specific include files that are used frequen"
},
{
"path": "samples/addon/targetver.h",
"chars": 306,
"preview": "#pragma once\n\n// Including SDKDDKVer.h defines the highest available Windows platform.\n\n// If you wish to build your app"
},
{
"path": "samples/addon/wfext.h",
"chars": 5951,
"preview": "/********************************************************************\n\n wfext.h\n\n Windows File Manager Extensions de"
},
{
"path": "src/BagOValues.h",
"chars": 2990,
"preview": "/********************************************************************\r\n\r\n BagOValues.h\r\n\r\n Copyright (c) Microsoft C"
},
{
"path": "src/Resize.c",
"chars": 30409,
"preview": "\n//\n// Demonstration code for a generic implementation of resizeable dialogs.\n// This code implements a window class ("
},
{
"path": "src/Resize.h",
"chars": 937,
"preview": "\n#define DIALOGRESIZECONTROLCLASSW L\"DialogResizeControlClassW\"\n#define DIALOGRESIZECONTROLCLASSA \"DialogResizeControlCl"
},
{
"path": "src/Winfile.vcxproj",
"chars": 12675,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"14.0\" xmlns=\"http://schemas.micro"
},
{
"path": "src/Winfile.vcxproj.filters",
"chars": 4818,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "src/dbg.c",
"chars": 2687,
"preview": "/********************************************************************\r\n\r\n dbg.c\r\n\r\n Debugging utilities\r\n\r\n Copyri"
},
{
"path": "src/dbg.h",
"chars": 1885,
"preview": "/********************************************************************\r\n\r\n dbg.h\r\n\r\n Debugging utilities header\r\n\r\n "
},
{
"path": "src/fmifs.h",
"chars": 12988,
"preview": "/********************************************************************\r\n\r\n fmifs.h\r\n\r\n This header file contains the "
},
{
"path": "src/lang/res_de-DE.rc",
"chars": 40361,
"preview": "/********************************************************************\n\n res_de-DE.rc\n\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/lang/res_en-US.rc",
"chars": 35238,
"preview": "/********************************************************************\n\n res_en-US.rc\n\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/lang/res_he-IL.rc",
"chars": 32319,
"preview": "/********************************************************************\n\n res_he-IL.rc\n\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/lang/res_ja-JP.rc",
"chars": 31300,
"preview": "/********************************************************************\r\n\r\n res_ja-JP.rc\r\n\r\n Copyright (c) Microsoft C"
},
{
"path": "src/lang/res_ko-KR.rc",
"chars": 30427,
"preview": "/********************************************************************\r\n\r\n res_ko-KR.rc\r\n\r\n Copyright (c) Microsoft C"
},
{
"path": "src/lang/res_pl-PL.rc",
"chars": 37888,
"preview": "/********************************************************************\n\n res_en-US.rc\n\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/lang/res_pt-PT.rc",
"chars": 38667,
"preview": "/********************************************************************\r\n\r\n res_pt-PT.rc\r\n\r\n Copyright (c) Microsoft C"
},
{
"path": "src/lang/res_tr-TR.rc",
"chars": 34069,
"preview": "/********************************************************************\n\n res_tr-TR.rc\n\n Copyright (c) Microsoft Cor"
},
{
"path": "src/lang/res_zh-CN.rc",
"chars": 27415,
"preview": "/********************************************************************\n\n res_zh-CN.rc\n\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/lang/winfile_de-DE.dlg",
"chars": 51226,
"preview": "/********************************************************************\n\n winfile.dlg\n\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/lang/winfile_en-US.dlg",
"chars": 50716,
"preview": "/********************************************************************\n\n winfile.dlg\n\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/lang/winfile_he-IL.dlg",
"chars": 51195,
"preview": "/********************************************************************\n\n winfile.dlg\n\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/lang/winfile_ja-JP.dlg",
"chars": 50492,
"preview": "/********************************************************************\r\n\r\n winfile.dlg\r\n\r\n Copyright (c) Microsoft Co"
},
{
"path": "src/lang/winfile_ko-KR.dlg",
"chars": 49337,
"preview": "/********************************************************************\n\n winfile.dlg\n\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/lang/winfile_pl-PL.dlg",
"chars": 51302,
"preview": "/********************************************************************\n\n winfile.dlg\n\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/lang/winfile_pt-PT.dlg",
"chars": 52448,
"preview": "/********************************************************************\r\n\r\n winfile.dlg\r\n\r\n Copyright (c) Microsoft Co"
},
{
"path": "src/lang/winfile_tr-TR.dlg",
"chars": 51047,
"preview": "/********************************************************************\n\n winfile.dlg\n\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/lang/winfile_zh-CN.dlg",
"chars": 48946,
"preview": "/********************************************************************\n\n winfile.dlg\n\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/lfn.c",
"chars": 23928,
"preview": "/********************************************************************\r\n\r\n lfn.c\r\n\r\n This file contains code that com"
},
{
"path": "src/lfn.h",
"chars": 1561,
"preview": "/********************************************************************\r\n\r\n lfn.h\r\n\r\n declaration of lfn aware functio"
},
{
"path": "src/lfnmisc.c",
"chars": 8985,
"preview": "/********************************************************************\r\n\r\n lfnmisc.c\r\n\r\n Long filename support for wi"
},
{
"path": "src/mpr.h",
"chars": 12450,
"preview": "/********************************************************************\r\n\r\n mpr.h\r\n\r\n Standard MPR Header File for NT-"
},
{
"path": "src/numfmt.c",
"chars": 1861,
"preview": "/********************************************************************\r\n\r\n NumFmt.c\r\n\r\n Number formatting code\r\n\r\n "
},
{
"path": "src/numfmt.h",
"chars": 780,
"preview": "/********************************************************************\r\n\r\n numfmt.h\r\n\r\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/origrc/winfile.cs-CZ.rc",
"chars": 60694,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.da-DK.rc",
"chars": 62270,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.de-DE.rc",
"chars": 64998,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.en-US.rc",
"chars": 61673,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.es-ES.rc",
"chars": 65135,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.fi-FI.rc",
"chars": 61779,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.fr-FR.rc",
"chars": 65185,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.hu-HU.rc",
"chars": 61497,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.it-IT.rc",
"chars": 63866,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.ja-JP.rc",
"chars": 51269,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.ko-KR.rc",
"chars": 50290,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.nb-NO.rc",
"chars": 62185,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.nl-NL.rc",
"chars": 64602,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.pl-PL.rc",
"chars": 63636,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.pt-BR.rc",
"chars": 64151,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.ru-RU.rc",
"chars": 62800,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.sv-SE.rc",
"chars": 61904,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.zh-CN.rc",
"chars": 48880,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/origrc/winfile.zh-TW.rc",
"chars": 50371,
"preview": "// Microsoft Visual C++ generated resource script.\n//\n#include \"resource.h\"\n\n#define APSTUDIO_READONLY_SYMBOLS\n/////////"
},
{
"path": "src/res.h",
"chars": 19170,
"preview": "/**************************************************************************\r\n\r\n res.h\r\n\r\n Include for WINFILE resour"
},
{
"path": "src/res.rc",
"chars": 5553,
"preview": "/********************************************************************\r\n\r\n res.rc\r\n\r\n Copyright (c) Microsoft Corpora"
},
{
"path": "src/spinlock.h",
"chars": 2449,
"preview": "/********************************************************************\r\n\r\n spinlock.h\r\n\r\n Derived from https://www.co"
},
{
"path": "src/suggest.c",
"chars": 5798,
"preview": "/********************************************************************\r\n\r\n Suggest.c\r\n\r\n Handles error code messages "
},
{
"path": "src/suggest.h",
"chars": 1501,
"preview": "/********************************************************************\r\n\r\n suggest.h\r\n\r\n Copyright (c) Microsoft Corp"
},
{
"path": "src/tbar.c",
"chars": 46378,
"preview": "/********************************************************************\r\n\r\n tbar.c\r\n\r\n Windows File System Toolbar sup"
},
{
"path": "src/treectl.c",
"chars": 92196,
"preview": "/********************************************************************\r\n\r\n treectl.c\r\n\r\n Windows Directory Tree Windo"
},
{
"path": "src/treectl.h",
"chars": 923,
"preview": "/********************************************************************\r\n\r\n treectl.h\r\n\r\n Copyright (c) Microsoft Corp"
},
{
"path": "src/w31rc/winfile.Brazil.rc",
"chars": 44922,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Catalan.rc",
"chars": 35038,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Czech.rc",
"chars": 32592,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Danish.rc",
"chars": 43084,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Dutch.rc",
"chars": 45697,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Finnish.rc",
"chars": 42856,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.French.Int.rc",
"chars": 46225,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.French.rc",
"chars": 46225,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.German.rc",
"chars": 46941,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Hungary.rc",
"chars": 42093,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Italian.rc",
"chars": 44170,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Japanese.rc",
"chars": 26893,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Korean.rc",
"chars": 25796,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Norway.rc",
"chars": 42998,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Polish.rc",
"chars": 43369,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Portuguese.rc",
"chars": 44502,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.SimChin.rc",
"chars": 24776,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Spanish.rc",
"chars": 46421,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Swedish.rc",
"chars": 42895,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.TradChin.rc",
"chars": 25557,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.Turkish.rc",
"chars": 30729,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/w31rc/winfile.USEnglish.rc",
"chars": 42917,
"preview": "/********************************************************************\n\n Resources that were extracted from a binary t"
},
{
"path": "src/wfassoc.c",
"chars": 119045,
"preview": "/********************************************************************\r\n\r\n wfassoc.c\r\n\r\n Windows File Manager associa"
},
{
"path": "src/wfchgnot.c",
"chars": 11887,
"preview": "/********************************************************************\r\n\r\n wfchgnot.c\r\n\r\n WinFile Change Notify modul"
},
{
"path": "src/wfcomman.c",
"chars": 63601,
"preview": "/********************************************************************\r\n\r\n wfcomman.c\r\n\r\n Windows File System Command"
},
{
"path": "src/wfcopy.c",
"chars": 103818,
"preview": "/********************************************************************\r\n\r\n wfcopy.c\r\n\r\n Windows File System File Copy"
},
{
"path": "src/wfcopy.h",
"chars": 1600,
"preview": "/********************************************************************\r\n\r\n wfcopy.h\r\n\r\n Include for WINFILE's File Co"
},
{
"path": "src/wfdir.c",
"chars": 85677,
"preview": "/********************************************************************\r\n\r\n wfdir.c\r\n\r\n Implements view for directorie"
},
{
"path": "src/wfdirrd.c",
"chars": 27630,
"preview": "/********************************************************************\r\n\r\n wfDirRd.c\r\n\r\n Background directory read su"
},
{
"path": "src/wfdirsrc.c",
"chars": 30992,
"preview": "/********************************************************************\r\n\r\n wfDirSrc.c\r\n\r\n Copyright (c) Microsoft Cor"
},
{
"path": "src/wfdlgs.c",
"chars": 28146,
"preview": "/********************************************************************\r\n\r\n wfdlgs.c\r\n\r\n Windows File System Dialog pr"
},
{
"path": "src/wfdlgs.h",
"chars": 6325,
"preview": "/********************************************************************\r\n\r\n wfdlgs.h\r\n\r\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/wfdlgs2.c",
"chars": 58200,
"preview": "/********************************************************************\r\n\r\n wfdlgs2.c\r\n\r\n More Windows File System Dia"
},
{
"path": "src/wfdlgs3.c",
"chars": 57991,
"preview": "/********************************************************************\r\n\r\n wfdlgs3.c\r\n\r\n Windows File System Dialog p"
},
{
"path": "src/wfdoc.txt",
"chars": 4050,
"preview": "WINFILE Development Documentation -\r\n\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the MIT"
},
{
"path": "src/wfdocb.h",
"chars": 949,
"preview": "/********************************************************************\r\n\r\n wfdocb.h\r\n\r\n Doc Bucket header\r\n\r\n Copyr"
},
{
"path": "src/wfdos.c",
"chars": 2356,
"preview": "/********************************************************************\r\n\r\n wfdos.c\r\n\r\n Ported code from wfdos.asm\r\n\r\n"
},
{
"path": "src/wfdrives.c",
"chars": 29486,
"preview": "/********************************************************************\r\n\r\n wfdrives.c\r\n\r\n window procs and other stuf"
},
{
"path": "src/wfdrop.c",
"chars": 15319,
"preview": "/********************************************************************\r\n\r\n wfdrop.c\r\n\r\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/wfdrop.h",
"chars": 8373,
"preview": "/**************************************************************************\r\n\r\n wfdrop.h\r\n\r\n Include for WINFILE pro"
},
{
"path": "src/wfext.c",
"chars": 12192,
"preview": "/********************************************************************\r\n\r\n wfExt.c\r\n\r\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/wfext.h",
"chars": 6078,
"preview": "/********************************************************************\r\n\r\n wfext.h\r\n\r\n Windows File Manager Extension"
},
{
"path": "src/wfexti.h",
"chars": 1848,
"preview": "/********************************************************************\r\n\r\n wfexti.h\r\n\r\n Windows File Manager Extensio"
},
{
"path": "src/wffile.c",
"chars": 56805,
"preview": "/********************************************************************\r\n\r\n wffile.c\r\n\r\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/wfgoto.cpp",
"chars": 20742,
"preview": "/********************************************************************\r\n\r\n wfgoto.cpp\r\n\r\n This file contains code t"
},
{
"path": "src/wfgwl.h",
"chars": 1258,
"preview": "/********************************************************************\r\n\r\n wfgwl.h\r\n\r\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/wfhelp.h",
"chars": 6065,
"preview": "/********************************************************************\r\n\r\n wfhelp.h\r\n\r\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/wfinfo.c",
"chars": 51014,
"preview": "/********************************************************************\r\n\r\n wfinfo.c\r\n\r\n Handles caching and refreshin"
},
{
"path": "src/wfinfo.h",
"chars": 3732,
"preview": "/********************************************************************\r\n\r\n wfinfo.h\r\n\r\n DriveInformation handler head"
},
{
"path": "src/wfinit.c",
"chars": 51807,
"preview": "/********************************************************************\r\n\r\n wfinit.c\r\n\r\n Windows File System Initializ"
},
{
"path": "src/wfloc.c",
"chars": 4285,
"preview": "/********************************************************************\n\nwfloc.c\n\nWinfile localization selection procedure"
},
{
"path": "src/wfmem.c",
"chars": 6313,
"preview": "/********************************************************************\r\n\r\n wfmem.c\r\n\r\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/wfmem.h",
"chars": 1987,
"preview": "/********************************************************************\r\n\r\n wfmem.h\r\n\r\n Copyright (c) Microsoft Corpor"
},
{
"path": "src/wfprint.c",
"chars": 3648,
"preview": "/********************************************************************\r\n\r\n wfprint.c\r\n\r\n Windows Print Routines\r\n\r\n "
},
{
"path": "src/wfsearch.c",
"chars": 38112,
"preview": "/********************************************************************\r\n\r\n WFSearch.c - Windows File Manager Search co"
},
{
"path": "src/wftree.c",
"chars": 25942,
"preview": "/********************************************************************\r\n\r\n wftree.c\r\n\r\n Windows File System Tree Wind"
},
{
"path": "src/wfutil.c",
"chars": 43618,
"preview": "/********************************************************************\r\n\r\n wfutil.c\r\n\r\n Windows File System String Ut"
},
{
"path": "src/winexp.h",
"chars": 1362,
"preview": "/********************************************************************\r\n\r\n winexp.h\r\n\r\n Copyright (c) Microsoft Corpo"
},
{
"path": "src/winfile.c",
"chars": 36941,
"preview": "/********************************************************************\r\n\r\n winfile.c\r\n\r\n Copyright (c) Microsoft Corp"
},
{
"path": "src/winfile.exe.manifest",
"chars": 1266,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersi"
},
{
"path": "src/winfile.h",
"chars": 52025,
"preview": "/**************************************************************************\r\n\r\n winfile.h\r\n\r\n Include for WINFILE pr"
},
{
"path": "src/wnetcaps.c",
"chars": 3057,
"preview": "/********************************************************************\r\n\r\n WNetCaps.c\r\n\r\n Returns net status\r\n\r\n Co"
},
{
"path": "src/wnetcaps.h",
"chars": 613,
"preview": "/********************************************************************\r\n\r\n wnetcaps.h\r\n\r\n Copyright (c) Microsoft Cor"
},
{
"path": "tools/ExeView/ExeView.vcxproj",
"chars": 3182,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.microso"
},
{
"path": "tools/ExeView/ExeView.vcxproj.filters",
"chars": 2338,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "tools/ExeView/abstract.txt",
"chars": 1437,
"preview": "EXEVIEW: Extracts and Decodes Information from Executable\nFiles\n\nEXEVIEW demonstrates how to extract and decode resource"
},
{
"path": "tools/ExeView/bmp.cpp",
"chars": 8173,
"preview": "//*************************************************************\n// File name: Bitmapc\n//\n// Description: \n// Code"
},
{
"path": "tools/ExeView/exehdr.cpp",
"chars": 20809,
"preview": "//*************************************************************\n// File name: exehdr.c\n//\n// Description: \n// Rou"
},
{
"path": "tools/ExeView/exehdr.h",
"chars": 8294,
"preview": "//*************************************************************\n// File name: exehdr.h\n//\n// Description: \n// Str"
},
{
"path": "tools/ExeView/exeview.txt",
"chars": 1394,
"preview": "Summary:\n\n Often applications wish to extract information from an executable \nfile without the application being load"
},
{
"path": "tools/ExeView/filllb.cpp",
"chars": 22097,
"preview": "//*************************************************************\n// File name: filllb.c\n//\n// Description: \n// Con"
},
{
"path": "tools/ExeView/global.h",
"chars": 1845,
"preview": "//*************************************************************\n// File name: global.h\n//\n// Description: \n// Glo"
},
{
"path": "tools/ExeView/iconcur.cpp",
"chars": 20308,
"preview": "//*************************************************************\n// File name: iconcur.c\n//\n// Description: \n// Co"
},
{
"path": "tools/ExeView/init.cpp",
"chars": 5029,
"preview": "//*************************************************************\n// File name: init.c\n//\n// Description: \n// Initi"
},
{
"path": "tools/ExeView/main.cpp",
"chars": 15685,
"preview": "//*************************************************************\n// File name: main.c\n//\n// Description: \n// WinMa"
},
{
"path": "tools/ExeView/main.def",
"chars": 630,
"preview": "NAME EXEVIEW\n\nDESCRIPTION 'Windows Executable Viewer'\n\nEXETYPE WINDOWS\n\nSTUB 'WINSTUB.EXE'\n\nCODE "
},
{
"path": "tools/ExeView/main.rc",
"chars": 1671,
"preview": "//*************************************************************\n// File name: main.rc\n//\n// Description: \n// Reso"
},
{
"path": "tools/ExeView/makefile",
"chars": 778,
"preview": "#\n# Makefile for Sample Application\n#\n\nCC = cl -c -AM -Gsw -nologo -Od -W3 -Zpe\nLN = link /m/NOD/NOE/NOL/A"
},
{
"path": "tools/ExeView/menudlg.cpp",
"chars": 3950,
"preview": "//*************************************************************\n// File name: menudlg.c\n//\n// Description: \n// Co"
},
{
"path": "tools/ExeView/res.cpp",
"chars": 27177,
"preview": "//*************************************************************\n// File name: res.c\n//\n// Description: \n// Code f"
},
{
"path": "tools/ExeView/res.h",
"chars": 6285,
"preview": "//*************************************************************\n// File name: res.h\n//\n// Description: \n// header"
},
{
"path": "tools/ExeView/save.cpp",
"chars": 9247,
"preview": "/*************************************************************\n File name: save.c\n\n Description:\n Code for "
},
{
"path": "tools/FileSignatureInfo/FileSignatureInfo.cpp",
"chars": 18035,
"preview": "/********************************************************************\n\n FileSignatureInfo.cpp : displays and verifies"
},
{
"path": "tools/FileSignatureInfo/FileSignatureInfo.vcxproj",
"chars": 2896,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.microso"
},
{
"path": "tools/FileSignatureInfo/FileSignatureInfo.vcxproj.filters",
"chars": 1347,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "tools/FileSignatureInfo/VerifySignature.cpp",
"chars": 6204,
"preview": "/********************************************************************\n\n VerifySignature.cpp : verifies the embedded s"
},
{
"path": "tools/FileSignatureInfo/stdafx.cpp",
"chars": 304,
"preview": "// stdafx.cpp : source file that includes just the standard includes\r\n// FileSignatureInfo.pch will be the pre-compiled "
},
{
"path": "tools/FileSignatureInfo/stdafx.h",
"chars": 320,
"preview": "// stdafx.h : include file for standard system include files,\r\n// or project specific include files that are used freque"
},
{
"path": "tools/FileSignatureInfo/targetver.h",
"chars": 314,
"preview": "#pragma once\r\n\r\n// Including SDKDDKVer.h defines the highest available Windows platform.\r\n\r\n// If you wish to build your"
},
{
"path": "tools/VerifyResources/Resources.h",
"chars": 2213,
"preview": "/**************************************************************************\n\n Resources.h\n\n Copyright (c) Microsof"
},
{
"path": "tools/VerifyResources/VerifyResources.cpp",
"chars": 17394,
"preview": "/**************************************************************************\n\n VerifyResources.h\n\n Verify the consi"
},
{
"path": "tools/VerifyResources/VerifyResources.vcxproj",
"chars": 2815,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"15.0\" xmlns=\"http://schemas.microso"
},
{
"path": "tools/VerifyResources/VerifyResources.vcxproj.filters",
"chars": 1337,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "tools/VerifyResources/stdafx.cpp",
"chars": 294,
"preview": "// stdafx.cpp : source file that includes just the standard includes\n// VerifyResources.pch will be the pre-compiled hea"
},
{
"path": "tools/VerifyResources/stdafx.h",
"chars": 305,
"preview": "// stdafx.h : include file for standard system include files,\n// or project specific include files that are used frequen"
},
{
"path": "tools/VerifyResources/targetver.h",
"chars": 306,
"preview": "#pragma once\n\n// Including SDKDDKVer.h defines the highest available Windows platform.\n\n// If you wish to build your app"
}
]
// ... and 14 more files (download for full content)
About this extraction
This page contains the full source code of the microsoft/winfile GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 196 files (4.3 MB), approximately 1.1M tokens, and a symbol index with 765 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.