Skip to content

Commit 81a3756

Browse files
committed
Add ARM64 support to Classic IE
1 parent 0b97050 commit 81a3756

7 files changed

+322
-4
lines changed

Src/ClassicIE/ClassicIE.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,10 @@ int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
189189
}
190190
}
191191

192-
#ifdef _WIN64
192+
#if defined(_M_AMD64)
193193
HMODULE hHookModule=GetModuleHandle(L"ClassicIEDLL_64.dll");
194+
#elif defined(_M_ARM64)
195+
HMODULE hHookModule=GetModuleHandle(L"ClassicIEDLL_ARM64.dll");
194196
#else
195197
HMODULE hHookModule=GetModuleHandle(L"ClassicIEDLL_32.dll");
196198
#endif

Src/ClassicIE/ClassicIE.vcxproj

+126
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|ARM64">
5+
<Configuration>Debug</Configuration>
6+
<Platform>ARM64</Platform>
7+
</ProjectConfiguration>
48
<ProjectConfiguration Include="Debug|Win32">
59
<Configuration>Debug</Configuration>
610
<Platform>Win32</Platform>
@@ -9,6 +13,10 @@
913
<Configuration>Debug</Configuration>
1014
<Platform>x64</Platform>
1115
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Release|ARM64">
17+
<Configuration>Release</Configuration>
18+
<Platform>ARM64</Platform>
19+
</ProjectConfiguration>
1220
<ProjectConfiguration Include="Release|Win32">
1321
<Configuration>Release</Configuration>
1422
<Platform>Win32</Platform>
@@ -17,6 +25,10 @@
1725
<Configuration>Release</Configuration>
1826
<Platform>x64</Platform>
1927
</ProjectConfiguration>
28+
<ProjectConfiguration Include="Setup|ARM64">
29+
<Configuration>Setup</Configuration>
30+
<Platform>ARM64</Platform>
31+
</ProjectConfiguration>
2032
<ProjectConfiguration Include="Setup|Win32">
2133
<Configuration>Setup</Configuration>
2234
<Platform>Win32</Platform>
@@ -60,19 +72,39 @@
6072
<CharacterSet>Unicode</CharacterSet>
6173
<WholeProgramOptimization>true</WholeProgramOptimization>
6274
</PropertyGroup>
75+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|ARM64'" Label="Configuration">
76+
<ConfigurationType>Application</ConfigurationType>
77+
<PlatformToolset>v142</PlatformToolset>
78+
<UseOfAtl>Static</UseOfAtl>
79+
<CharacterSet>Unicode</CharacterSet>
80+
<WholeProgramOptimization>true</WholeProgramOptimization>
81+
</PropertyGroup>
6382
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
6483
<ConfigurationType>Application</ConfigurationType>
6584
<PlatformToolset>v142</PlatformToolset>
6685
<UseOfAtl>Static</UseOfAtl>
6786
<CharacterSet>Unicode</CharacterSet>
6887
<WholeProgramOptimization>true</WholeProgramOptimization>
6988
</PropertyGroup>
89+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
90+
<ConfigurationType>Application</ConfigurationType>
91+
<PlatformToolset>v142</PlatformToolset>
92+
<UseOfAtl>Static</UseOfAtl>
93+
<CharacterSet>Unicode</CharacterSet>
94+
<WholeProgramOptimization>true</WholeProgramOptimization>
95+
</PropertyGroup>
7096
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
7197
<ConfigurationType>Application</ConfigurationType>
7298
<PlatformToolset>v142</PlatformToolset>
7399
<UseOfAtl>Static</UseOfAtl>
74100
<CharacterSet>Unicode</CharacterSet>
75101
</PropertyGroup>
102+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
103+
<ConfigurationType>Application</ConfigurationType>
104+
<PlatformToolset>v142</PlatformToolset>
105+
<UseOfAtl>Static</UseOfAtl>
106+
<CharacterSet>Unicode</CharacterSet>
107+
</PropertyGroup>
76108
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
77109
<ImportGroup Label="ExtensionSettings">
78110
</ImportGroup>
@@ -92,14 +124,26 @@
92124
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
93125
<Import Project="..\Version.props" />
94126
</ImportGroup>
127+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Setup|ARM64'" Label="PropertySheets">
128+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
129+
<Import Project="..\Version.props" />
130+
</ImportGroup>
95131
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
96132
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
97133
<Import Project="..\Version.props" />
98134
</ImportGroup>
135+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
136+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
137+
<Import Project="..\Version.props" />
138+
</ImportGroup>
99139
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
100140
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
101141
<Import Project="..\Version.props" />
102142
</ImportGroup>
143+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
144+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
145+
<Import Project="..\Version.props" />
146+
</ImportGroup>
103147
<PropertyGroup Label="UserMacros" />
104148
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
105149
<OutDir>$(Configuration)\</OutDir>
@@ -113,6 +157,12 @@
113157
<LinkIncremental>true</LinkIncremental>
114158
<TargetName>$(ProjectName)_64</TargetName>
115159
</PropertyGroup>
160+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
161+
<LinkIncremental>true</LinkIncremental>
162+
<TargetName>$(ProjectName)_ARM64</TargetName>
163+
<IntDir>$(Configuration)ARM64\</IntDir>
164+
<OutDir>$(Configuration)ARM64\</OutDir>
165+
</PropertyGroup>
116166
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
117167
<OutDir>$(Configuration)\</OutDir>
118168
<IntDir>$(Configuration)\</IntDir>
@@ -125,6 +175,12 @@
125175
<LinkIncremental>false</LinkIncremental>
126176
<TargetName>$(ProjectName)_64</TargetName>
127177
</PropertyGroup>
178+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
179+
<LinkIncremental>false</LinkIncremental>
180+
<TargetName>$(ProjectName)_ARM64</TargetName>
181+
<IntDir>$(Configuration)ARM64\</IntDir>
182+
<OutDir>$(Configuration)ARM64\</OutDir>
183+
</PropertyGroup>
128184
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
129185
<OutDir>$(Configuration)\</OutDir>
130186
<IntDir>$(Configuration)\</IntDir>
@@ -137,6 +193,12 @@
137193
<LinkIncremental>false</LinkIncremental>
138194
<TargetName>$(ProjectName)_64</TargetName>
139195
</PropertyGroup>
196+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Setup|ARM64'">
197+
<LinkIncremental>false</LinkIncremental>
198+
<TargetName>$(ProjectName)_ARM64</TargetName>
199+
<IntDir>$(Configuration)ARM64\</IntDir>
200+
<OutDir>$(Configuration)ARM64\</OutDir>
201+
</PropertyGroup>
140202
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
141203
<ClCompile>
142204
<Optimization>Disabled</Optimization>
@@ -177,6 +239,26 @@
177239
<SubSystem>Windows</SubSystem>
178240
</Link>
179241
</ItemDefinitionGroup>
242+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
243+
<ClCompile>
244+
<Optimization>Disabled</Optimization>
245+
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
246+
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
247+
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
248+
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
249+
<PrecompiledHeader>NotUsing</PrecompiledHeader>
250+
<WarningLevel>Level3</WarningLevel>
251+
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
252+
<MultiProcessorCompilation>true</MultiProcessorCompilation>
253+
<ConformanceMode>true</ConformanceMode>
254+
<LanguageStandard>stdcpp17</LanguageStandard>
255+
</ClCompile>
256+
<Link>
257+
<AdditionalDependencies>shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
258+
<GenerateDebugInformation>true</GenerateDebugInformation>
259+
<SubSystem>Windows</SubSystem>
260+
</Link>
261+
</ItemDefinitionGroup>
180262
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
181263
<ClCompile>
182264
<Optimization>MaxSpeed</Optimization>
@@ -221,6 +303,28 @@
221303
<EnableCOMDATFolding>true</EnableCOMDATFolding>
222304
</Link>
223305
</ItemDefinitionGroup>
306+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
307+
<ClCompile>
308+
<Optimization>MaxSpeed</Optimization>
309+
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
310+
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
311+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
312+
<FunctionLevelLinking>true</FunctionLevelLinking>
313+
<PrecompiledHeader>NotUsing</PrecompiledHeader>
314+
<WarningLevel>Level3</WarningLevel>
315+
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
316+
<MultiProcessorCompilation>true</MultiProcessorCompilation>
317+
<ConformanceMode>true</ConformanceMode>
318+
<LanguageStandard>stdcpp17</LanguageStandard>
319+
</ClCompile>
320+
<Link>
321+
<AdditionalDependencies>shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
322+
<GenerateDebugInformation>true</GenerateDebugInformation>
323+
<SubSystem>Windows</SubSystem>
324+
<OptimizeReferences>true</OptimizeReferences>
325+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
326+
</Link>
327+
</ItemDefinitionGroup>
224328
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Setup|Win32'">
225329
<ClCompile>
226330
<Optimization>MaxSpeed</Optimization>
@@ -265,6 +369,28 @@
265369
<EnableCOMDATFolding>true</EnableCOMDATFolding>
266370
</Link>
267371
</ItemDefinitionGroup>
372+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Setup|ARM64'">
373+
<ClCompile>
374+
<Optimization>MaxSpeed</Optimization>
375+
<AdditionalIncludeDirectories>..\Lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
376+
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
377+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
378+
<FunctionLevelLinking>true</FunctionLevelLinking>
379+
<PrecompiledHeader>NotUsing</PrecompiledHeader>
380+
<WarningLevel>Level3</WarningLevel>
381+
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
382+
<MultiProcessorCompilation>true</MultiProcessorCompilation>
383+
<ConformanceMode>true</ConformanceMode>
384+
<LanguageStandard>stdcpp17</LanguageStandard>
385+
</ClCompile>
386+
<Link>
387+
<AdditionalDependencies>shlwapi.lib;comctl32.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
388+
<GenerateDebugInformation>true</GenerateDebugInformation>
389+
<SubSystem>Windows</SubSystem>
390+
<OptimizeReferences>true</OptimizeReferences>
391+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
392+
</Link>
393+
</ItemDefinitionGroup>
268394
<ItemGroup>
269395
<ClCompile Include="ClassicIE.cpp" />
270396
</ItemGroup>

Src/ClassicIE/ClassicIEDLL/ClassicIEBHO.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,11 @@ static DWORD StartBroker( bool bWait, const wchar_t *param )
5050
PathAppend(path,L"ClassicIE_32.exe");
5151
else
5252
#endif
53+
#if defined(_M_AMD64) || defined(_M_IX86)
5354
PathAppend(path,L"ClassicIE_64.exe");
55+
#elif defined(_M_ARM64)
56+
PathAppend(path,L"ClassicIE_ARM64.exe");
57+
#endif
5458

5559
wchar_t cmdLine[1024];
5660
Sprintf(cmdLine,_countof(cmdLine),L"\"%s\" %s",path,param);

0 commit comments

Comments
 (0)