OSDN Git Service

ShellExtension: Make ShellExtension buildable without the source code of WinMerge
authorTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 8 Oct 2017 09:20:53 +0000 (18:20 +0900)
committerTakashi Sawanaka <sdottaka@users.sourceforge.net>
Sun, 8 Oct 2017 09:20:53 +0000 (18:20 +0900)
ShellExtension/RegKey.cpp [new file with mode: 0644]
ShellExtension/RegKey.h [new file with mode: 0644]
ShellExtension/ShellExtension.vs2015.sln
ShellExtension/ShellExtension.vs2015.vcxproj
ShellExtension/ShellExtension.vs2015.vcxproj.filters
ShellExtension/ShellExtension.vs2017.sln
ShellExtension/ShellExtension.vs2017.vcxproj
ShellExtension/ShellExtension.vs2017.vcxproj.filters
ShellExtension/UnicodeString.cpp [new file with mode: 0644]
ShellExtension/UnicodeString.h [new file with mode: 0644]

diff --git a/ShellExtension/RegKey.cpp b/ShellExtension/RegKey.cpp
new file mode 100644 (file)
index 0000000..3e31e1f
--- /dev/null
@@ -0,0 +1,346 @@
+/** 
+ * @file  RegKey.cpp
+ *
+ * @brief Implementation of CRegKeyEx C++ wrapper class for reading Windows registry
+ */
+
+#define NOMINMAX
+#include "RegKey.h"
+#include <windows.h>
+#include <cassert>
+#include <strsafe.h>
+#include "UnicodeString.h"
+
+/**
+ * @brief Default constructor.
+ */
+CRegKeyEx::CRegKeyEx()
+: m_hKey(NULL)
+{
+}
+
+/**
+ * @brief Default destructor.
+ */
+CRegKeyEx::~CRegKeyEx()
+{
+       Close();
+}
+
+/**
+ * @brief Closes the key.
+ */
+void CRegKeyEx::Close()
+{
+       if (m_hKey) 
+       {
+               RegCloseKey(m_hKey);
+               m_hKey = NULL;
+       }
+}
+
+/**
+ * @brief Opens or creates a key in given path.
+ * @param [in] hKeyRoot Root key to open, HKLM, HKCU..
+ * @param [in] pszPath Path to actual registry key to access.
+ * @return ERROR_SUCCESS or error value.
+ */
+LONG CRegKeyEx::Open(HKEY hKeyRoot, LPCTSTR pszPath)
+{
+       return OpenWithAccess(hKeyRoot, pszPath, KEY_ALL_ACCESS);
+}
+
+/**
+ * @brief Opens or creates a key in given path with access control.
+ * @param [in] hKeyRoot Root key to open, HKLM, HKCU..
+ * @param [in] pszPath Path to actual registry key to access.
+ * @param [in] regsam Registry access parameter.
+ * @return ERROR_SUCCESS or error value.
+ */
+LONG CRegKeyEx::OpenWithAccess(HKEY hKeyRoot, LPCTSTR pszPath, REGSAM regsam)
+{
+       DWORD dw;
+
+       Close();
+       m_sPath = pszPath;
+
+       return RegCreateKeyEx(hKeyRoot, pszPath, 0L, NULL,
+               REG_OPTION_NON_VOLATILE, regsam, NULL, 
+               &m_hKey, &dw);
+}
+
+/**
+ * @brief Opens key in given path.
+ * @param [in] hKeyRoot Root key to open, HKLM, HKCU..
+ * @param [in] pszPath Path to actual registry key to access.
+ * @param [in] regsam Registry access parameter.
+ * @return ERROR_SUCCESS or error value.
+ */
+LONG CRegKeyEx::OpenNoCreateWithAccess(HKEY hKeyRoot, LPCTSTR pszPath, REGSAM regsam)
+{
+       Close();
+
+       m_sPath = pszPath;
+
+       return RegOpenKeyEx (hKeyRoot, pszPath, 0L, regsam, &m_hKey);
+}
+
+/**
+ * @brief Opens registry key from HKEY_LOCAL_MACHINE for reading.
+ * @param [in] key Path to actual registry key to access.
+ * @return true on success, false otherwise.
+ */
+bool CRegKeyEx::QueryRegMachine(LPCTSTR key)
+{
+       return OpenNoCreateWithAccess(HKEY_LOCAL_MACHINE, key, KEY_QUERY_VALUE) == ERROR_SUCCESS;
+}
+
+/**
+ * @brief Opens registry key from HKEY_CURRENT_USER for reading.
+ * @param [in] key Path to actual registry key to access.
+ * @return true on success, false otherwise.
+ */
+bool CRegKeyEx::QueryRegUser(LPCTSTR key)
+{
+       return OpenNoCreateWithAccess(HKEY_CURRENT_USER, key, KEY_QUERY_VALUE) == ERROR_SUCCESS;
+}
+
+/**
+ * @brief Write DWORD value to registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] dwVal Value to write.
+ * @return ERROR_SUCCESS on success, or error value.
+ */
+LONG CRegKeyEx::WriteDword(LPCTSTR pszKey, DWORD dwVal)
+{
+       assert(m_hKey);
+       assert(pszKey);
+       return RegSetValueEx(m_hKey, pszKey, 0L, REG_DWORD,
+               (const LPBYTE) &dwVal, sizeof(DWORD));
+}
+
+/**
+ * @brief Write BOOL value to registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] bVal Value to write.
+ * @return ERROR_SUCCESS on success, or error value.
+ */
+LONG CRegKeyEx::WriteBool(LPCTSTR pszKey, BOOL bVal)
+{
+       assert(m_hKey);
+       assert(pszKey);
+       DWORD dwVal = (DWORD)bVal; 
+       return RegSetValueEx(m_hKey, pszKey, 0L, REG_DWORD,
+               (const LPBYTE) &dwVal, sizeof(DWORD));
+}
+
+/**
+ * @brief Write float value to registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] fVal Value to write.
+ * @return ERROR_SUCCESS on success, or error value.
+ */
+LONG CRegKeyEx::WriteFloat(LPCTSTR pszKey, float fVal)
+{
+       assert(m_hKey);
+       assert(pszKey);
+       String s = strutils::to_str(fVal);
+       return RegSetValueEx(m_hKey, pszKey, 0L, REG_SZ,
+               (const LPBYTE) s.c_str(), static_cast<DWORD>((s.length() + 1))*sizeof(TCHAR) );
+}
+
+/**
+ * @brief Write string value to registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] pszData Value to write.
+ * @return ERROR_SUCCESS on success, or error value.
+ */
+LONG CRegKeyEx::WriteString(LPCTSTR pszKey, LPCTSTR pszData)
+{
+       assert(m_hKey);
+       assert(pszKey);
+       assert(pszData);
+
+       return RegSetValueEx(m_hKey, pszKey, 0L, REG_SZ,
+               (const LPBYTE) pszData, static_cast<DWORD>(_tcslen(pszData)+ 1)*sizeof(TCHAR));
+}
+
+/**
+ * @brief Read DWORD value from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] defval Default value to return if reading fails.
+ * @return Read DWORD value.
+ */
+DWORD CRegKeyEx::ReadDword(LPCTSTR pszKey, DWORD defval)
+{
+       assert(m_hKey);
+       assert(pszKey);
+
+       DWORD dwType;
+       DWORD dwSize = sizeof (DWORD);
+       DWORD dwDest;
+
+       LONG lRet = RegQueryValueEx (m_hKey, (LPTSTR) pszKey, NULL, 
+               &dwType, (LPBYTE) &dwDest, &dwSize);
+
+       if (lRet == ERROR_SUCCESS)
+               return dwDest;
+       else
+               return defval;
+}
+
+/**
+ * @brief Read LONG value from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] defval Default value to return if reading fails.
+ * @return Read LONG value.
+ */
+LONG CRegKeyEx::ReadLong(LPCTSTR pszKey, LONG defval)
+{
+       return (LONG)ReadDword(pszKey, (DWORD)defval);
+}
+
+/**
+ * @brief Read UINT value from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] defval Default value to return if reading fails.
+ * @return Read UINT value.
+ */
+UINT CRegKeyEx::ReadUint(LPCTSTR pszKey, UINT defval)
+{
+       return (UINT)ReadDword(pszKey, (DWORD)defval);
+}
+
+/**
+ * @brief Read UINT value from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] defval Default value to return if reading fails.
+ * @return Read UINT value.
+ */
+UINT CRegKeyEx::ReadInt(LPCTSTR pszKey, int defval)
+{
+       return (int)ReadDword(pszKey, (DWORD)defval);
+}
+
+/**
+ * @brief Read short int value from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] defval Default value to return if reading fails.
+ * @return Read short int value.
+ */
+short int CRegKeyEx::ReadShort(LPCTSTR pszKey, short int defval)
+{
+       return (short int)ReadDword(pszKey, (DWORD)defval);
+}
+
+/**
+ * @brief Read BYTE value from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] defval Default value to return if reading fails.
+ * @return Read BYTE value.
+ */
+BYTE CRegKeyEx::ReadByte(LPCTSTR pszKey, BYTE defval)
+{
+       return (BYTE)ReadDword(pszKey, (DWORD)defval);
+}
+
+/**
+ * @brief Read float value from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] defval Default value to return if reading fails.
+ * @return Read float value.
+ */
+float CRegKeyEx::ReadFloat(LPCTSTR pszKey, float defval)
+{
+       assert(m_hKey);
+       assert(pszKey);
+
+       DWORD dwType;
+       DWORD dwSize = 100;
+       TCHAR  string[100];
+
+       LONG lReturn = RegQueryValueEx(m_hKey, (LPTSTR) pszKey, NULL,
+               &dwType, (LPBYTE) string, &dwSize);
+
+       if (lReturn == ERROR_SUCCESS)
+               return (float)_tcstod(string, NULL);
+       else
+               return defval;
+}
+
+/**
+ * @brief Read BOOL value from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] defval Default value to return if reading fails.
+ * @return Read BOOL value.
+ */
+BOOL CRegKeyEx::ReadBool(LPCTSTR pszKey, BOOL defval)
+{
+       assert(m_hKey);
+       assert(pszKey);
+
+       DWORD dwType;
+       DWORD dwSize = sizeof(DWORD);
+       DWORD dwDest;
+
+       LONG lRet = RegQueryValueEx(m_hKey, (LPTSTR) pszKey, NULL, 
+               &dwType, (LPBYTE) &dwDest, &dwSize);
+
+       if (lRet == ERROR_SUCCESS)
+               return (dwDest!=(DWORD)0);
+       else
+               return defval;
+}
+
+/**
+ * @brief Read String value from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] defval Default value to return if reading fails.
+ * @return Read String value.
+ */
+String CRegKeyEx::ReadString (LPCTSTR pszKey, LPCTSTR defval)
+{
+       assert(m_hKey);
+       assert(pszKey);
+
+       DWORD dwType;
+       DWORD dwSize = 0;
+       String retString;
+
+       // Get size of the string
+       LONG lReturn = RegQueryValueEx(m_hKey, (LPTSTR) pszKey, NULL,
+               &dwType, NULL, &dwSize);
+
+       if (lReturn == ERROR_SUCCESS)
+       {
+               retString.resize(dwSize/sizeof(TCHAR));
+               lReturn = RegQueryValueEx(m_hKey, (LPTSTR) pszKey, NULL,
+                       &dwType, (LPBYTE) retString.data(), &dwSize);
+               retString.resize(dwSize/sizeof(TCHAR)-1);
+       }
+       if (lReturn == ERROR_SUCCESS)
+               return retString;
+       else
+               return defval;
+}
+
+/**
+ * @brief Read char table from registry.
+ * @param [in] pszKey Path to actual registry key to access.
+ * @param [in] pData Pointer to char table where value is written to.
+ * @param [in] dwLen Size of pData table in bytes.
+ * @param [in] defval Default value to return if reading fails.
+ */
+void CRegKeyEx::ReadChars (LPCTSTR pszKey, LPTSTR pData, DWORD dwLen, LPCTSTR defval)
+{
+       assert(m_hKey);
+       assert(pszKey);
+
+       DWORD dwType;
+       DWORD len = dwLen;
+
+       LONG ret = RegQueryValueEx (m_hKey, (LPTSTR) pszKey, NULL,
+               &dwType, (LPBYTE)pData, &len);
+       if (ret != ERROR_SUCCESS)
+               StringCchCopy(pData, dwLen, defval);
+}
diff --git a/ShellExtension/RegKey.h b/ShellExtension/RegKey.h
new file mode 100644 (file)
index 0000000..9c50e92
--- /dev/null
@@ -0,0 +1,51 @@
+/** 
+ * @file  RegKey.h
+ *
+ * @brief Declaration of CRegKeyEx C++ wrapper class for reading Windows registry
+ */
+#pragma once
+
+#include <Windows.h>
+#include "UnicodeString.h"
+
+/**
+ * @brief Class for reading/writing registry.
+ */
+class CRegKeyEx
+{
+
+// Construction
+public:
+       CRegKeyEx();
+       ~CRegKeyEx();
+
+// Operations
+public:
+       HKEY GetKey()  { return m_hKey; }  // Only used by VssPrompt.cpp - can be removed?
+       void Close();
+       LONG Open(HKEY hKeyRoot, LPCTSTR pszPath);
+       LONG OpenWithAccess(HKEY hKeyRoot, LPCTSTR pszPath, REGSAM regsam);
+       LONG OpenNoCreateWithAccess(HKEY hKeyRoot, LPCTSTR pszPath, REGSAM regsam);
+       bool QueryRegMachine(LPCTSTR key);
+       bool QueryRegUser(LPCTSTR key);
+
+       LONG WriteDword (LPCTSTR pszKey, DWORD dwVal);
+       LONG WriteString (LPCTSTR pszKey, LPCTSTR pszVal);
+       LONG WriteBool (LPCTSTR pszKey, BOOL bVal);
+       LONG WriteFloat (LPCTSTR pszKey, float fVal);
+
+       DWORD ReadDword (LPCTSTR pszKey, DWORD defval);
+       float ReadFloat (LPCTSTR pszKey, float defval);
+       BOOL ReadBool(LPCTSTR pszKey, BOOL defval);
+       LONG ReadLong (LPCTSTR pszKey, LONG defval);
+       UINT ReadUint (LPCTSTR pszKey, UINT defval);
+       UINT ReadInt (LPCTSTR pszKey, int defval);
+       short int ReadShort (LPCTSTR pszKey, short int defval);
+       BYTE ReadByte (LPCTSTR pszKey, BYTE defval);
+       String ReadString (LPCTSTR pszKey, LPCTSTR defval);
+       void ReadChars (LPCTSTR pszKey, LPTSTR pData, DWORD dwLength, LPCTSTR defval);
+
+protected:
+       HKEY m_hKey; /**< Open key (HKLM, HKCU, etc). */
+       String m_sPath; /**< Path to actual key to open. */
+};
index d84c7f0..595d446 100644 (file)
@@ -1,27 +1,27 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.24720.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShellExtension", "ShellExtension.vs2015.vcxproj", "{76A538A1-9D2C-49CB-AE9F-72548CE37F88}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Unicode Debug|Win32 = Unicode Debug|Win32
-               Unicode Debug|x64 = Unicode Debug|x64
-               Unicode Release MinDependency|Win32 = Unicode Release MinDependency|Win32
-               Unicode Release MinDependency|x64 = Unicode Release MinDependency|x64
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|Win32.ActiveCfg = Unicode Release MinDependency|Win32
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|Win32.Build.0 = Unicode Release MinDependency|Win32
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|x64.ActiveCfg = Unicode Release MinDependency|x64
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|x64.Build.0 = Unicode Release MinDependency|x64
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 14\r
+VisualStudioVersion = 14.0.24720.0\r
+MinimumVisualStudioVersion = 10.0.40219.1\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShellExtension", "ShellExtension.vs2015.vcxproj", "{76A538A1-9D2C-49CB-AE9F-72548CE37F88}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Unicode Debug|Win32 = Unicode Debug|Win32\r
+               Unicode Debug|x64 = Unicode Debug|x64\r
+               Unicode Release MinDependency|Win32 = Unicode Release MinDependency|Win32\r
+               Unicode Release MinDependency|x64 = Unicode Release MinDependency|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|x64.Build.0 = Unicode Debug|x64\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|Win32.ActiveCfg = Unicode Release MinDependency|Win32\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|Win32.Build.0 = Unicode Release MinDependency|Win32\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|x64.ActiveCfg = Unicode Release MinDependency|x64\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|x64.Build.0 = Unicode Release MinDependency|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
index 8fb6e05..3957d46 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Unicode Debug|Win32">
-      <Configuration>Unicode Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Unicode Debug|x64">
-      <Configuration>Unicode Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Unicode Release MinDependency|Win32">
-      <Configuration>Unicode Release MinDependency</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Unicode Release MinDependency|x64">
-      <Configuration>Unicode Release MinDependency</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectName>ShellExtension</ProjectName>
-    <ProjectGuid>{76A538A1-9D2C-49CB-AE9F-72548CE37F88}</ProjectGuid>
-    <RootNamespace>ShellExtension</RootNamespace>
-    <WindowsTargetPlatformVersion>7.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <UseOfAtl>Static</UseOfAtl>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <UseOfAtl>Static</UseOfAtl>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140_xp</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140_xp</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">.\..\Build\$(ProjectName)$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">.\..\Build\$(PlatformName)\$(ProjectName)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">.\..\BuildTmp\$(ProjectName)$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">.\..\BuildTmp\$(PlatformName)\$(ProjectName)$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</LinkIncremental>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">.\..\Build\$(ProjectName)$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">.\..\Build\$(PlatformName)\$(ProjectName)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">.\..\BuildTmp\$(ProjectName)$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">.\..\BuildTmp\$(PlatformName)\$(ProjectName)$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">false</LinkIncremental>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">false</LinkIncremental>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">$(ProjectName)X64</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">$(ProjectName)X64</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">$(ProjectName)U</TargetName>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">$(ProjectName)U</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;../src/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>$(IntDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-      <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
-    </ClCompile>
-    <Link>
-      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)/$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <ImportLibrary>$(IntDir)/$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-    <Midl>
-      <TypeLibraryName>.\..\BuildTmp\ShellExtension__UnicodeDebug/ShellExtension.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;../src/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>$(IntDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <Link>
-      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ProgramDatabaseFile>$(OutDir)/$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <ImportLibrary>$(IntDir)/$(TargetName).lib</ImportLibrary>
-      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
-    </Link>
-    <Midl>
-      <TypeLibraryName>.\..\BuildTmp\ShellExtension__UnicodeDebug/ShellExtension.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>.;../src/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>$(IntDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-      <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>
-    </ClCompile>
-    <Link>
-      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
-      <ProgramDatabaseFile>$(OutDir)/$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <ImportLibrary>$(IntDir)/$(TargetName).lib</ImportLibrary>
-      <TargetMachine>MachineX86</TargetMachine>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-    </Link>
-    <Midl>
-      <TypeLibraryName>.\..\BuildTmp\ShellExtension__UnicodeReleaseMinDependency/ShellExtension.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">
-    <ClCompile>
-      <Optimization>MinSpace</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>.;../src/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <PrecompiledHeaderOutputFile>$(IntDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>
-      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>Default</CompileAs>
-    </ClCompile>
-    <Link>
-      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>
-      <ProgramDatabaseFile>$(OutDir)/$(TargetName).pdb</ProgramDatabaseFile>
-      <SubSystem>Windows</SubSystem>
-      <ImportLibrary>$(IntDir)/$(TargetName).lib</ImportLibrary>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-    </Link>
-    <Midl>
-      <TypeLibraryName>.\..\BuildTmp\ShellExtension__UnicodeReleaseMinDependency/ShellExtension.tlb</TypeLibraryName>
-      <HeaderFileName>
-      </HeaderFileName>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\src\common\RegKey.cpp" />
-    <ClCompile Include="ShellExtension.cpp" />
-    <ClCompile Include="StdAfx.cpp" />
-    <ClCompile Include="..\Src\Common\UnicodeString.cpp" />
-    <ClCompile Include="WinMergeShell.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuildStep Include="ShellExtension.def">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </CustomBuildStep>
-    <CustomBuildStep Include="ShellExtensionU.def" />
-    <None Include="WinMergeShell.rgs" />
-  </ItemGroup>
-  <ItemGroup>
-    <Midl Include="ShellExtension.idl">
-      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</GenerateStublessProxies>
-      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</GenerateStublessProxies>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">.\ShellExtension.tlb</TypeLibraryName>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">.\ShellExtension.tlb</TypeLibraryName>
-      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">ShellExtension.h</HeaderFileName>
-      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">ShellExtension.h</HeaderFileName>
-      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">ShellExtension_i.c</InterfaceIdentifierFileName>
-      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">ShellExtension_i.c</InterfaceIdentifierFileName>
-      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</GenerateStublessProxies>
-      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</GenerateStublessProxies>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">.\ShellExtension.tlb</TypeLibraryName>
-      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">.\ShellExtension.tlb</TypeLibraryName>
-      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">ShellExtension.h</HeaderFileName>
-      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">ShellExtension.h</HeaderFileName>
-      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">ShellExtension_i.c</InterfaceIdentifierFileName>
-      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">ShellExtension_i.c</InterfaceIdentifierFileName>
-    </Midl>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\src\common\coretools.h" />
-    <ClInclude Include="..\src\common\RegKey.h" />
-    <ClInclude Include="Resource.h" />
-    <ClInclude Include="StdAfx.h" />
-    <ClInclude Include="..\Src\Common\UnicodeString.h" />
-    <ClInclude Include="WinMergeShell.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="Languages\ShellExtensionBasque.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSerbian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSlovenian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="ShellExtension.rc">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">_DEBUG</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">_DEBUG</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">$(OUTDIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">$(OUTDIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">NDEBUG</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">NDEBUG</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">$(OUTDIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">$(OUTDIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionBrazilian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionBulgarian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionCatalan.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionChineseSimplified.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionChineseTraditional.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionCroatian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionCzech.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionDanish.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionDutch.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionFrench.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionGalician.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionGerman.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionGreek.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionHungarian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionItalian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionJapanese.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionKorean.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionNorwegian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionPolish.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionPortuguese.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionRomanian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionRussian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSlovak.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSpanish.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSwedish.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionTurkish.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionUkrainian.rc">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <Image Include="WinMerge.ico" />
-    <Image Include="WinMergeDir.ico" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="Unicode Debug|Win32">\r
+      <Configuration>Unicode Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Unicode Debug|x64">\r
+      <Configuration>Unicode Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Unicode Release MinDependency|Win32">\r
+      <Configuration>Unicode Release MinDependency</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="Unicode Release MinDependency|x64">\r
+      <Configuration>Unicode Release MinDependency</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectName>ShellExtension</ProjectName>\r
+    <ProjectGuid>{76A538A1-9D2C-49CB-AE9F-72548CE37F88}</ProjectGuid>\r
+    <RootNamespace>ShellExtension</RootNamespace>\r
+    <WindowsTargetPlatformVersion>7.0</WindowsTargetPlatformVersion>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <UseOfAtl>Static</UseOfAtl>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140_xp</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <UseOfAtl>Static</UseOfAtl>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140_xp</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140_xp</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v140_xp</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">.\..\Build\$(ProjectName)$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">.\..\Build\$(PlatformName)\$(ProjectName)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">.\..\BuildTmp\$(ProjectName)$(Configuration)\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">.\..\BuildTmp\$(PlatformName)\$(ProjectName)$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">.\..\Build\$(ProjectName)$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">.\..\Build\$(PlatformName)\$(ProjectName)$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">.\..\BuildTmp\$(ProjectName)$(Configuration)\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">.\..\BuildTmp\$(PlatformName)\$(ProjectName)$(Configuration)\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">false</LinkIncremental>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">$(ProjectName)X64</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">$(ProjectName)X64</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">$(ProjectName)U</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">$(ProjectName)U</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>$(IntDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>\r
+      <ObjectFileName>$(IntDir)</ObjectFileName>\r
+      <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>\r
+    </ClCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)/$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <ImportLibrary>$(IntDir)/$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
+    </Link>\r
+    <Midl>\r
+      <TypeLibraryName>.\..\BuildTmp\ShellExtension__UnicodeDebug/ShellExtension.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>$(IntDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>\r
+      <ObjectFileName>$(IntDir)</ObjectFileName>\r
+      <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(OutDir)/$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <ImportLibrary>$(IntDir)/$(TargetName).lib</ImportLibrary>\r
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>\r
+    </Link>\r
+    <Midl>\r
+      <TypeLibraryName>.\..\BuildTmp\ShellExtension__UnicodeDebug/ShellExtension.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MinSpace</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>$(IntDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>\r
+      <ObjectFileName>$(IntDir)</ObjectFileName>\r
+      <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions</EnableEnhancedInstructionSet>\r
+    </ClCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>\r
+      <ProgramDatabaseFile>$(OutDir)/$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <ImportLibrary>$(IntDir)/$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+    </Link>\r
+    <Midl>\r
+      <TypeLibraryName>.\..\BuildTmp\ShellExtension__UnicodeReleaseMinDependency/ShellExtension.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">\r
+    <ClCompile>\r
+      <Optimization>MinSpace</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <PrecompiledHeader>\r
+      </PrecompiledHeader>\r
+      <PrecompiledHeaderOutputFile>$(IntDir)$(ProjectName).pch</PrecompiledHeaderOutputFile>\r
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>\r
+      <ObjectFileName>$(IntDir)</ObjectFileName>\r
+      <ProgramDataBaseFileName>$(IntDir)</ProgramDataBaseFileName>\r
+      <WarningLevel>Level3</WarningLevel>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <CompileAs>Default</CompileAs>\r
+    </ClCompile>\r
+    <Link>\r
+      <OutputFile>$(OutDir)$(TargetName).dll</OutputFile>\r
+      <SuppressStartupBanner>true</SuppressStartupBanner>\r
+      <ModuleDefinitionFile>.\$(TargetName).def</ModuleDefinitionFile>\r
+      <ProgramDatabaseFile>$(OutDir)/$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Windows</SubSystem>\r
+      <ImportLibrary>$(IntDir)/$(TargetName).lib</ImportLibrary>\r
+      <GenerateDebugInformation>false</GenerateDebugInformation>\r
+    </Link>\r
+    <Midl>\r
+      <TypeLibraryName>.\..\BuildTmp\ShellExtension__UnicodeReleaseMinDependency/ShellExtension.tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="RegKey.cpp" />\r
+    <ClCompile Include="ShellExtension.cpp" />\r
+    <ClCompile Include="StdAfx.cpp" />\r
+    <ClCompile Include="UnicodeString.cpp" />\r
+    <ClCompile Include="WinMergeShell.cpp" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuildStep Include="ShellExtension.def">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </CustomBuildStep>\r
+    <CustomBuildStep Include="ShellExtensionU.def" />\r
+    <None Include="WinMergeShell.rgs" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Midl Include="ShellExtension.idl">\r
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</GenerateStublessProxies>\r
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</GenerateStublessProxies>\r
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">.\ShellExtension.tlb</TypeLibraryName>\r
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">.\ShellExtension.tlb</TypeLibraryName>\r
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">ShellExtension.h</HeaderFileName>\r
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">ShellExtension.h</HeaderFileName>\r
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">ShellExtension_i.c</InterfaceIdentifierFileName>\r
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">ShellExtension_i.c</InterfaceIdentifierFileName>\r
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</GenerateStublessProxies>\r
+      <GenerateStublessProxies Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</GenerateStublessProxies>\r
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">.\ShellExtension.tlb</TypeLibraryName>\r
+      <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">.\ShellExtension.tlb</TypeLibraryName>\r
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">ShellExtension.h</HeaderFileName>\r
+      <HeaderFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">ShellExtension.h</HeaderFileName>\r
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">ShellExtension_i.c</InterfaceIdentifierFileName>\r
+      <InterfaceIdentifierFileName Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">ShellExtension_i.c</InterfaceIdentifierFileName>\r
+    </Midl>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="RegKey.h" />\r
+    <ClInclude Include="Resource.h" />\r
+    <ClInclude Include="StdAfx.h" />\r
+    <ClInclude Include="UnicodeString.h" />\r
+    <ClInclude Include="WinMergeShell.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="Languages\ShellExtensionBasque.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSerbian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSlovenian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="ShellExtension.rc">\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">_DEBUG</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">_DEBUG</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">$(OUTDIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">$(OUTDIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">NDEBUG</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">NDEBUG</PreprocessorDefinitions>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">$(OUTDIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">$(OUTDIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionBrazilian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionBulgarian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionCatalan.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionChineseSimplified.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionChineseTraditional.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionCroatian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionCzech.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionDanish.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionDutch.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionFrench.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionGalician.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionGerman.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionGreek.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionHungarian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionItalian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionJapanese.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionKorean.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionNorwegian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionPolish.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionPortuguese.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionRomanian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionRussian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSlovak.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSpanish.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSwedish.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionTurkish.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionUkrainian.rc">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Unicode Release MinDependency|x64'">true</ExcludedFromBuild>\r
+    </ResourceCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Image Include="WinMerge.ico" />\r
+    <Image Include="WinMergeDir.ico" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
 </Project>
\ No newline at end of file
index b354438..0bac2d2 100644 (file)
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{991919a9-648c-4833-8cc2-fcfcfbf66c84}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{dc00728d-8923-40a0-bf47-3bd79a4ee439}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{39d571c9-dfaf-4994-a7f5-7f34c3d5d192}</UniqueIdentifier>
-      <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\src\common\RegKey.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="ShellExtension.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="StdAfx.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\Src\Common\UnicodeString.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="WinMergeShell.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="WinMergeShell.rgs">
-      <Filter>Resource Files</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Midl Include="ShellExtension.idl">
-      <Filter>Source Files</Filter>
-    </Midl>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\src\common\coretools.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\common\RegKey.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="Resource.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="StdAfx.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\Src\Common\UnicodeString.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="WinMergeShell.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="ShellExtension.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionBrazilian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionBulgarian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionCatalan.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionChineseSimplified.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionChineseTraditional.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionCroatian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionCzech.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionDanish.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionDutch.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionFrench.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionGalician.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionGerman.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionGreek.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionHungarian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionItalian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionJapanese.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionKorean.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionNorwegian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionPolish.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionPortuguese.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionRomanian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionRussian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSlovak.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSpanish.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSwedish.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionTurkish.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionUkrainian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSerbian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionSlovenian.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-    <ResourceCompile Include="Languages\ShellExtensionBasque.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuildStep Include="ShellExtension.def">
-      <Filter>Source Files</Filter>
-    </CustomBuildStep>
-    <CustomBuildStep Include="ShellExtensionU.def">
-      <Filter>Source Files</Filter>
-    </CustomBuildStep>
-  </ItemGroup>
-  <ItemGroup>
-    <Image Include="WinMerge.ico">
-      <Filter>Resource Files</Filter>
-    </Image>
-    <Image Include="WinMergeDir.ico">
-      <Filter>Resource Files</Filter>
-    </Image>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup>\r
+    <Filter Include="Source Files">\r
+      <UniqueIdentifier>{991919a9-648c-4833-8cc2-fcfcfbf66c84}</UniqueIdentifier>\r
+      <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>\r
+    </Filter>\r
+    <Filter Include="Header Files">\r
+      <UniqueIdentifier>{dc00728d-8923-40a0-bf47-3bd79a4ee439}</UniqueIdentifier>\r
+      <Extensions>h;hpp;hxx;hm;inl</Extensions>\r
+    </Filter>\r
+    <Filter Include="Resource Files">\r
+      <UniqueIdentifier>{39d571c9-dfaf-4994-a7f5-7f34c3d5d192}</UniqueIdentifier>\r
+      <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>\r
+    </Filter>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="RegKey.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="ShellExtension.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="StdAfx.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="UnicodeString.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="WinMergeShell.cpp">\r
+      <Filter>Source Files</Filter>\r
+    </ClCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="WinMergeShell.rgs">\r
+      <Filter>Resource Files</Filter>\r
+    </None>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Midl Include="ShellExtension.idl">\r
+      <Filter>Source Files</Filter>\r
+    </Midl>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="RegKey.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="Resource.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="StdAfx.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="UnicodeString.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="WinMergeShell.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="ShellExtension.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionBrazilian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionBulgarian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionCatalan.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionChineseSimplified.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionChineseTraditional.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionCroatian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionCzech.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionDanish.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionDutch.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionFrench.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionGalician.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionGerman.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionGreek.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionHungarian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionItalian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionJapanese.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionKorean.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionNorwegian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionPolish.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionPortuguese.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionRomanian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionRussian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSlovak.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSpanish.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSwedish.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionTurkish.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionUkrainian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSerbian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionSlovenian.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+    <ResourceCompile Include="Languages\ShellExtensionBasque.rc">\r
+      <Filter>Resource Files</Filter>\r
+    </ResourceCompile>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <CustomBuildStep Include="ShellExtension.def">\r
+      <Filter>Source Files</Filter>\r
+    </CustomBuildStep>\r
+    <CustomBuildStep Include="ShellExtensionU.def">\r
+      <Filter>Source Files</Filter>\r
+    </CustomBuildStep>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Image Include="WinMerge.ico">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+    <Image Include="WinMergeDir.ico">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
+  </ItemGroup>\r
 </Project>
\ No newline at end of file
index 5103883..9018f7b 100644 (file)
@@ -1,27 +1,27 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.12
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShellExtension", "ShellExtension.vs2017.vcxproj", "{76A538A1-9D2C-49CB-AE9F-72548CE37F88}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Unicode Debug|Win32 = Unicode Debug|Win32
-               Unicode Debug|x64 = Unicode Debug|x64
-               Unicode Release MinDependency|Win32 = Unicode Release MinDependency|Win32
-               Unicode Release MinDependency|x64 = Unicode Release MinDependency|x64
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|x64.Build.0 = Unicode Debug|x64
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|Win32.ActiveCfg = Unicode Release MinDependency|Win32
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|Win32.Build.0 = Unicode Release MinDependency|Win32
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|x64.ActiveCfg = Unicode Release MinDependency|x64
-               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|x64.Build.0 = Unicode Release MinDependency|x64
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 15\r
+VisualStudioVersion = 15.0.26730.12\r
+MinimumVisualStudioVersion = 10.0.40219.1\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShellExtension", "ShellExtension.vs2017.vcxproj", "{76A538A1-9D2C-49CB-AE9F-72548CE37F88}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Unicode Debug|Win32 = Unicode Debug|Win32\r
+               Unicode Debug|x64 = Unicode Debug|x64\r
+               Unicode Release MinDependency|Win32 = Unicode Release MinDependency|Win32\r
+               Unicode Release MinDependency|x64 = Unicode Release MinDependency|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|x64.ActiveCfg = Unicode Debug|x64\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Debug|x64.Build.0 = Unicode Debug|x64\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|Win32.ActiveCfg = Unicode Release MinDependency|Win32\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|Win32.Build.0 = Unicode Release MinDependency|Win32\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|x64.ActiveCfg = Unicode Release MinDependency|x64\r
+               {76A538A1-9D2C-49CB-AE9F-72548CE37F88}.Unicode Release MinDependency|x64.Build.0 = Unicode Release MinDependency|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
index a39872c..860a7b3 100644 (file)
@@ -89,7 +89,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;../src/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Unicode Debug|x64'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>.;../src/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
     <ClCompile>
       <Optimization>MinSpace</Optimization>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>.;../src/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
     <ClCompile>
       <Optimization>MinSpace</Optimization>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>.;../src/common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;UNICODE;_ATL_NO_UUIDOF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
     </ResourceCompile>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClCompile Include="..\src\common\RegKey.cpp" />
+    <ClCompile Include="RegKey.cpp" />
     <ClCompile Include="ShellExtension.cpp" />
     <ClCompile Include="StdAfx.cpp" />
-    <ClCompile Include="..\Src\Common\UnicodeString.cpp" />
+    <ClCompile Include="UnicodeString.cpp" />
     <ClCompile Include="WinMergeShell.cpp" />
   </ItemGroup>
   <ItemGroup>
     </Midl>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\src\common\coretools.h" />
-    <ClInclude Include="..\src\common\RegKey.h" />
+    <ClInclude Include="coretools.h" />
+    <ClInclude Include="RegKey.h" />
     <ClInclude Include="Resource.h" />
     <ClInclude Include="StdAfx.h" />
-    <ClInclude Include="..\Src\Common\UnicodeString.h" />
+    <ClInclude Include="UnicodeString.h" />
     <ClInclude Include="WinMergeShell.h" />
   </ItemGroup>
   <ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
\ No newline at end of file
+</Project>
index b354438..0a4c042 100644 (file)
@@ -15,7 +15,7 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="..\src\common\RegKey.cpp">
+    <ClCompile Include="RegKey.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="ShellExtension.cpp">
@@ -24,7 +24,7 @@
     <ClCompile Include="StdAfx.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\Src\Common\UnicodeString.cpp">
+    <ClCompile Include="UnicodeString.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
     <ClCompile Include="WinMergeShell.cpp">
     </Midl>
   </ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\src\common\coretools.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\src\common\RegKey.h">
+    <ClInclude Include="RegKey.h">
       <Filter>Header Files</Filter>
     </ClInclude>
     <ClInclude Include="Resource.h">
@@ -54,7 +51,7 @@
     <ClInclude Include="StdAfx.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="..\Src\Common\UnicodeString.h">
+    <ClInclude Include="UnicodeString.h">
       <Filter>Header Files</Filter>
     </ClInclude>
     <ClInclude Include="WinMergeShell.h">
diff --git a/ShellExtension/UnicodeString.cpp b/ShellExtension/UnicodeString.cpp
new file mode 100644 (file)
index 0000000..7673fa8
--- /dev/null
@@ -0,0 +1,236 @@
+/////////////////////////////////////////////////////////////////////////////
+//    License (GPLv2+):
+//    This program is free software; you can redistribute it and/or modify
+//    it under the terms of the GNU General Public License as published by
+//    the Free Software Foundation; either version 2 of the License, or
+//    (at your option) any later version.
+//
+//    This program is distributed in the hope that it will be useful, but
+//    WITHOUT ANY WARRANTY; without even the implied warranty of
+//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//    General Public License for more details.
+//
+//    You should have received a copy of the GNU General Public License
+//    along with this program; if not, write to the Free Software
+//    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+/////////////////////////////////////////////////////////////////////////////
+
+/** 
+ * @file  UnicodeString.cpp
+ *
+ * @brief String utilities.
+ */
+
+// String formatting code originally from Paul Senzee:
+// http://www.senzee5.com/2006/05/c-formatting-stdstring.html
+
+#include "UnicodeString.h"
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <cerrno>
+#include <vector>
+
+namespace strutils
+{
+
+/**
+ * @brief Convert a string to lower case string.
+ * @param [in] str String to convert to lower case.
+ * @return Lower case string.
+ */
+String makelower(const String &str)
+{
+       String ret(str);
+       String::size_type i = 0;
+       for (i = 0; i < ret.length(); i++)
+               ret[i] = _totlower(ret[i]);
+       return ret;
+}
+
+/**
+ * @brief Convert a string to upper case string.
+ * @param [in] str String to convert to upper case.
+ * @return upper case string.
+ */
+String makeupper(const String &str)
+{
+       String ret(str);
+       String::size_type i = 0;
+       for (i = 0; i < ret.length(); i++)
+               ret[i] = _totupper(ret[i]);
+       return ret;
+}
+
+/**
+ * @brief Replace a string inside a string with another string.
+ * This function searches for a string inside another string an if found,
+ * replaces it with another string. Function can replace several instances
+ * of the string inside one string.
+ * @param [in] target A string containing another string to replace.
+ * @param [in] find A string to search and replace with another (@p replace).
+ * @param [in] replace A string used to replace original (@p find).
+ */
+void replace(String &target, const String &find, const String &replace)
+{
+       const String::size_type find_len = find.length();
+       const String::size_type replace_len = replace.length();
+       String::size_type pos = 0;
+       while ((pos = target.find(find, pos)) != String::npos)
+       {
+               target.replace(pos, find_len, replace);
+               pos += replace_len;
+       }
+}
+
+/**
+ * @brief Compare two strings ignoring the character casing.
+ * @param [in] str1 First string to compare.
+ * @param [in] str2 Second string to compare.
+ * @return As strcmp(), 0 if strings match.
+ */
+int compare_nocase(const String &str1, const String &str2)
+{
+       return _tcsicoll(str1.c_str(), str2.c_str());
+}
+
+/**
+ * @brief Trims whitespace chars from begin and end of the string.
+ * @param [in] str the original string.
+ * @return Trimmed string.
+ */
+String trim_ws(const String & str)
+{
+       if (str.empty())
+               return str;
+
+       String result(str);
+       String::iterator it = result.begin();
+       while (it != result.end() && _istspace(*it))
+               ++it;
+       
+       if (it != result.begin())
+               result.erase(result.begin(), it);
+
+       if (result.empty())
+               return result;
+
+       it = result.end() - 1;
+       while (it != result.begin() && _istspace(*it))
+               --it;
+
+       if (it != result.end() - 1)
+               result.erase(it + 1, result.end());
+       return result;
+}
+
+/**
+ * @brief Trims whitespace chars from begin of the string.
+ * @param [in] str the original string.
+ * @return Trimmed string.
+ */
+String trim_ws_begin(const String & str)
+{
+       if (str.empty())
+               return str;
+
+       String result(str);
+       String::iterator it = result.begin();
+       while (it != result.end() && _istspace(*it))
+               ++it;
+       
+       if (it != result.begin())
+               result.erase(result.begin(), it);
+       return result;
+}
+
+/**
+ * @brief Trims whitespace chars from end of the string.
+ * @param [in] str the original string.
+ * @return Trimmed string.
+ */
+String trim_ws_end(const String & str)
+{
+       if (str.empty())
+               return str;
+
+       String result(str);
+       String::reverse_iterator it = result.rbegin();
+       while (it != result.rend() && _istspace(*it))
+               ++it;
+
+       if (it != result.rbegin())
+               result.erase(it.base(), result.end());
+       return result;
+}
+
+String format_arg_list(const TCHAR *fmt, va_list args)
+{
+       if (!fmt)
+               return _T("");
+       int result = -1;
+       int length = 256;
+       std::vector<TCHAR> buffer(length, 0);
+       while (result == -1)
+       {
+               result = _vsntprintf_s(&buffer[0], length, _TRUNCATE, fmt, args);
+               length *= 2;
+               buffer.resize(length, 0);
+       }
+       String s(&buffer[0]);
+       return s;
+}
+
+/**
+ * @brief printf()-style formatting for STL string.
+ * Use this function to format String:s in printf() style.
+ */
+String format(const TCHAR *fmt, ...)
+{
+       va_list args;
+       va_start(args, fmt);
+       String s = format_arg_list(fmt, args);
+       va_end(args);
+       return s;
+}
+
+String format_strings(const String& fmt, const String *args[], size_t nargs)
+{
+       String str;
+       str.reserve(fmt.length() * 2);
+       String::const_iterator it;
+       for (it = fmt.begin(); it != fmt.end(); ++it)
+       {
+               if (*it == '%')
+               {
+                       ++it;
+                       if (it == fmt.end())
+                               break;
+                       int n = *it - '0';
+                       if (n > 0 && static_cast<unsigned int>(n) <= nargs)
+                               str += *args[n - 1];
+                       else
+                               str += *it;
+               }
+               else
+               {
+                       str += *it;
+               }
+       }
+       return str;
+}
+
+String format_string1(const String& fmt, const String& arg1)
+{
+       const String* args[] = {&arg1};
+       return format_strings(fmt, args, 1);
+}
+
+String format_string2(const String& fmt, const String& arg1, const String& arg2)
+{
+       const String* args[] = {&arg1, &arg2};
+       return format_strings(fmt, args, 2);
+}
+
+}
diff --git a/ShellExtension/UnicodeString.h b/ShellExtension/UnicodeString.h
new file mode 100644 (file)
index 0000000..e637170
--- /dev/null
@@ -0,0 +1,121 @@
+/////////////////////////////////////////////////////////////////////////////
+//    License (GPLv2+):
+//    This program is free software; you can redistribute it and/or modify
+//    it under the terms of the GNU General Public License as published by
+//    the Free Software Foundation; either version 2 of the License, or
+//    (at your option) any later version.
+//
+//    This program is distributed in the hope that it will be useful, but
+//    WITHOUT ANY WARRANTY; without even the implied warranty of
+//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//    General Public License for more details.
+//
+//    You should have received a copy of the GNU General Public License
+//    along with this program; if not, write to the Free Software
+//    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+/////////////////////////////////////////////////////////////////////////////
+
+/** 
+ * @file UnicodeString.h
+ *
+ * @brief Unicode string based on std::wstring.
+ *
+ */
+#pragma once
+
+#include <string>
+#include <cstdarg>
+#include <cstdint>
+
+#ifdef _WIN32
+#  include <tchar.h>
+#else
+#  ifndef _T
+#    ifdef _UNICODE
+#      define _T(x) L ## x
+#    else
+#      define _T(x) x
+#    endif
+#  endif
+#  ifndef _TCHAR_DEFINED
+#    ifdef _UNICODE
+typedef wchar_t TCHAR;
+#    else
+typedef char    TCHAR;
+#    endif
+#  endif
+#  define _TCHAR_DEFINED
+#endif
+
+#ifdef _UNICODE
+#define std_tchar(type) std::w##type
+#else
+#define std_tchar(type) std::type
+#endif // _UNICODE
+
+typedef std_tchar(string) String;
+
+namespace strutils
+{
+
+String makelower(const String &str);
+String makeupper(const String &str);
+
+void replace(String &target, const String &find, const String &replace);
+
+// Comparing
+int compare_nocase(const String &str1, const String &str2);
+
+// Trimming
+String trim_ws(const String & str);
+String trim_ws_begin(const String & str);
+String trim_ws_end(const String & str);
+
+// Formatting
+String format_arg_list(const TCHAR *fmt, va_list args);
+String format(const TCHAR *fmt, ...);
+String format_strings(const String& fmt, const String *args[], size_t nargs);
+String format_string1(const String& fmt, const String& arg1);
+String format_string2(const String& fmt, const String& arg1, const String& arg2);
+
+template <class InputIterator>
+String join(const InputIterator& begin, const InputIterator& end, const String& delim)
+{
+       size_t sum = 0, delim_len = delim.length();
+       for (InputIterator it = begin; it != end; ++it)
+       {
+               if (sum != 0) sum += delim_len;
+               sum += (*it).length();
+       }
+       String result;
+       result.reserve(sum);
+       for (InputIterator it = begin; it != end; ++it)
+       {
+               if (!result.empty()) result.append(delim);
+               result += *it;
+       }
+       return result;
+}
+
+template <class Formatter, class InputIterator>
+String join(const InputIterator& begin, const InputIterator& end, const String& delim, Formatter func)
+{
+       String result;
+       for (InputIterator it = begin; it != end; ++it)
+       {
+               if (!result.empty()) result.append(delim);
+               result += func(*it);
+       }
+       return result;
+}
+
+inline String to_str(int val) { return strutils::format(_T("%d"), val); }
+inline String to_str(unsigned val) { return strutils::format(_T("%u"), val); }
+inline String to_str(long val) { return strutils::format(_T("%ld"), val); }
+inline String to_str(unsigned long val) { return strutils::format(_T("%lu"), val); }
+inline String to_str(long long val) { return strutils::format(_T("%I64d"), val); }
+inline String to_str(unsigned long long val) { return strutils::format(_T("%I64u"), val); }
+inline String to_str(float val) { return strutils::format(_T("%f"), val); }
+inline String to_str(double val) { return strutils::format(_T("%f"), val); }
+
+}