mirror of
https://github.com/QL-Win/QuickLook.git
synced 2025-09-12 18:39:45 +00:00
WIP
This commit is contained in:
21
QuickLook.Native.Shell32/QuickLook.Native.Shell32.cpp
Normal file
21
QuickLook.Native.Shell32/QuickLook.Native.Shell32.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
// dllmain.cpp : Defines the entry point for the DLL application.
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "Shell32.h"
|
||||
|
||||
#define EXPORT extern "C" __declspec(dllexport)
|
||||
|
||||
EXPORT void SaveCurrentSelection()
|
||||
{
|
||||
Shell32::SaveCurrentSelection();
|
||||
}
|
||||
|
||||
EXPORT int GetCurrentSelectionCount()
|
||||
{
|
||||
return Shell32::GetCurrentSelectionCount();
|
||||
}
|
||||
|
||||
EXPORT void GetCurrentSelectionBuffer(PWCHAR buffer)
|
||||
{
|
||||
Shell32::GetCurrentSelectionBuffer(buffer);
|
||||
}
|
1
QuickLook.Native.Shell32/QuickLook.Native.Shell32.h
Normal file
1
QuickLook.Native.Shell32/QuickLook.Native.Shell32.h
Normal file
@@ -0,0 +1 @@
|
||||
|
109
QuickLook.Native.Shell32/QuickLook.Native.Shell32.vcxproj
Normal file
109
QuickLook.Native.Shell32/QuickLook.Native.Shell32.vcxproj
Normal file
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>15.0</VCProjectVersion>
|
||||
<ProjectGuid>{D31EE321-C2B0-4984-B749-736F7DE509F1}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>QuickLookShell32Helper</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>QuickLook.Native.Shell32</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)Build\$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)Build\$(Configuration)\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;QUICKLOOKSHELL32HELPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<Optimization>Full</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;QUICKLOOKSHELL32HELPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Shell32.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="targetver.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QuickLook.Native.Shell32.cpp" />
|
||||
<ClCompile Include="Shell32.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="targetver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Shell32.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="QuickLook.Native.Shell32.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Shell32.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
220
QuickLook.Native.Shell32/Shell32.cpp
Normal file
220
QuickLook.Native.Shell32/Shell32.cpp
Normal file
@@ -0,0 +1,220 @@
|
||||
#include "stdafx.h"
|
||||
|
||||
#include "Shell32.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
vector<wstring> Shell32::vector_items;
|
||||
|
||||
void Shell32::SaveCurrentSelection()
|
||||
{
|
||||
vector_items.clear();
|
||||
|
||||
switch (GetFocusedWindowType())
|
||||
{
|
||||
case EXPLORER:
|
||||
SaveSelectedFromExplorer();
|
||||
break;
|
||||
case DESKTOP:
|
||||
SaveSelectedFromDesktop();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
UINT Shell32::GetCurrentSelectionCount()
|
||||
{
|
||||
return vector_items.size();
|
||||
}
|
||||
|
||||
void Shell32::GetCurrentSelectionBuffer(PWCHAR buffer)
|
||||
{
|
||||
PWCHAR pos = buffer;
|
||||
|
||||
for (vector<wstring>::iterator it = vector_items.begin(); it < vector_items.end(); ++it)
|
||||
{
|
||||
int l = it->length();
|
||||
wcscpy_s(pos, l + 1, it->c_str());
|
||||
|
||||
pos += l;
|
||||
|
||||
// overwrite NULL
|
||||
wcscpy_s(pos++, 2, L"|");
|
||||
}
|
||||
|
||||
// remove last "|"
|
||||
wcscpy_s(pos - 1, 1, L"");
|
||||
}
|
||||
|
||||
void Shell32::SaveSelectedFromExplorer() {
|
||||
CoInitialize(nullptr);
|
||||
|
||||
CComPtr<IShellWindows> psw;
|
||||
HRESULT ret=psw.CoCreateInstance(CLSID_ShellWindows);
|
||||
|
||||
auto hwndFGW = GetForegroundWindow();
|
||||
|
||||
auto fFound = FALSE;
|
||||
|
||||
for (int i = 0; !fFound; i++) {
|
||||
VARIANT vi;
|
||||
V_VT(&vi) = VT_I4;
|
||||
V_I4(&vi) = i;
|
||||
|
||||
CComPtr<IDispatch> pdisp;
|
||||
// ReSharper disable once CppSomeObjectMembersMightNotBeInitialized
|
||||
if (SUCCEEDED(psw->Item(vi, &pdisp)))
|
||||
{
|
||||
CComPtr<IWebBrowserApp> pwba;
|
||||
if (SUCCEEDED(pdisp->QueryInterface(IID_IWebBrowserApp, reinterpret_cast<void**>(&pwba)))) {
|
||||
HWND hwndWBA;
|
||||
if (SUCCEEDED(pwba->get_HWND(reinterpret_cast<LONG_PTR*>(&hwndWBA))) && hwndWBA == hwndFGW) {
|
||||
fFound = TRUE;
|
||||
|
||||
CComPtr<IDispatch> ppdisp;
|
||||
if (SUCCEEDED(pwba->get_Document(&ppdisp))) {
|
||||
CComPtr<IShellFolderViewDual2> pshvd;
|
||||
if (SUCCEEDED(ppdisp->QueryInterface(IID_IShellFolderViewDual2, reinterpret_cast<void**>(&pshvd))))
|
||||
{
|
||||
CComPtr<FolderItems> pfis;
|
||||
if (SUCCEEDED(pshvd->SelectedItems(&pfis)))
|
||||
{
|
||||
LONG pCount = 0L;
|
||||
pfis->get_Count(&pCount);
|
||||
|
||||
for (int ii = 0; ii < pCount; ii++)
|
||||
{
|
||||
VARIANT vii;
|
||||
V_VT(&vii) = VT_I4;
|
||||
V_I4(&vii) = ii;
|
||||
|
||||
CComPtr<FolderItem> pfi;
|
||||
// ReSharper disable once CppSomeObjectMembersMightNotBeInitialized
|
||||
if (SUCCEEDED(pfis->Item(vii, &pfi)))
|
||||
{
|
||||
CComBSTR pbs = SysAllocStringLen(L"", MAX_PATH);
|
||||
pfi->get_Path(&pbs);
|
||||
|
||||
wstring ws = wstring(pbs);
|
||||
ws.shrink_to_fit();
|
||||
|
||||
vector_items.push_back(ws);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CComQIPtr<IWebBrowser2> Shell32::AttachDesktopShellWindow()
|
||||
{
|
||||
CoInitialize(nullptr);
|
||||
|
||||
CComPtr<IShellWindows> psw;
|
||||
CComQIPtr<IWebBrowser2> pdispOut;
|
||||
|
||||
if (SUCCEEDED(psw.CoCreateInstance(CLSID_ShellWindows)))
|
||||
{
|
||||
VARIANT pvarLoc = { VT_EMPTY };
|
||||
long phwnd;
|
||||
psw->FindWindowSW(&pvarLoc, &pvarLoc, SWC_DESKTOP, &phwnd, SWFO_NEEDDISPATCH, reinterpret_cast<IDispatch**>(&pdispOut));
|
||||
}
|
||||
return pdispOut;
|
||||
}
|
||||
|
||||
void Shell32::SaveSelectedFromDesktop()
|
||||
{
|
||||
auto pWebBrowser2 = AttachDesktopShellWindow();
|
||||
|
||||
if (!pWebBrowser2)
|
||||
return;
|
||||
|
||||
CComQIPtr<IServiceProvider> psp(pWebBrowser2);
|
||||
CComPtr<IShellBrowser> psb;
|
||||
CComPtr<IShellView> psv;
|
||||
CComPtr<IFolderView> pfv;
|
||||
CComPtr<IPersistFolder2> ppf2;
|
||||
|
||||
if (!psp) return;
|
||||
|
||||
if (SUCCEEDED(psp->QueryService(SID_STopLevelBrowser, IID_IShellBrowser, reinterpret_cast<LPVOID*>(&psb))))
|
||||
{
|
||||
if (SUCCEEDED(psb->QueryActiveShellView(&psv)))
|
||||
{
|
||||
if (SUCCEEDED(psv->QueryInterface(IID_IFolderView, reinterpret_cast<void**>(&pfv))))
|
||||
{
|
||||
if (SUCCEEDED(pfv->GetFolder(IID_IPersistFolder2, reinterpret_cast<void**>(&ppf2))))
|
||||
{
|
||||
LPITEMIDLIST pidlFolder;
|
||||
if (SUCCEEDED(ppf2->GetCurFolder(&pidlFolder)))
|
||||
{
|
||||
CComPtr<IDataObject> dao;
|
||||
if (SUCCEEDED(psv->GetItemObject(SVGIO_SELECTION, IID_IDataObject, reinterpret_cast<void**>(&dao))))
|
||||
vectorFromDataObject(dao);
|
||||
}
|
||||
CoTaskMemFree(pidlFolder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Shell32::vectorFromDataObject(CComPtr<IDataObject> dao) {
|
||||
FORMATETC formatetc;
|
||||
STGMEDIUM medium;
|
||||
|
||||
formatetc.cfFormat = CF_HDROP;
|
||||
formatetc.ptd = nullptr;
|
||||
formatetc.dwAspect = DVASPECT_CONTENT;
|
||||
formatetc.lindex = -1;
|
||||
formatetc.tymed = TYMED_HGLOBAL;
|
||||
|
||||
medium.tymed = TYMED_HGLOBAL;
|
||||
|
||||
if (SUCCEEDED(dao->GetData(&formatetc, &medium)))
|
||||
{
|
||||
int n = DragQueryFile(HDROP(medium.hGlobal), 0xFFFFFFFF, nullptr, 0);
|
||||
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
WCHAR buffer[MAX_PATH];
|
||||
DragQueryFile(HDROP(medium.hGlobal), i, buffer, MAX_PATH - 1);
|
||||
|
||||
wstring ws = wstring(buffer);
|
||||
ws.shrink_to_fit();
|
||||
|
||||
vector_items.push_back(ws);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Shell32::FocusedWindowType Shell32::GetFocusedWindowType()
|
||||
{
|
||||
auto type = INVALID;
|
||||
|
||||
auto hwndfg = GetForegroundWindow();
|
||||
|
||||
auto classBuffer = new WCHAR[MAX_PATH];
|
||||
if (SUCCEEDED(GetClassName(hwndfg, classBuffer, MAX_PATH)))
|
||||
{
|
||||
if (wcscmp(classBuffer, L"WorkerW") == 0 || wcscmp(classBuffer, L"Progman") == 0)
|
||||
{
|
||||
if (FindWindowEx(hwndfg, nullptr, L"SHELLDLL_DefView", nullptr) != nullptr)
|
||||
{
|
||||
type = DESKTOP;
|
||||
}
|
||||
}
|
||||
else if (wcscmp(classBuffer, L"ExploreWClass") == 0 || wcscmp(classBuffer, L"CabinetWClass") == 0)
|
||||
{
|
||||
type = EXPLORER;
|
||||
}
|
||||
}
|
||||
delete[] classBuffer;
|
||||
|
||||
return type;
|
||||
}
|
29
QuickLook.Native.Shell32/Shell32.h
Normal file
29
QuickLook.Native.Shell32/Shell32.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
class Shell32
|
||||
{
|
||||
public:
|
||||
static void SaveCurrentSelection();
|
||||
static UINT GetCurrentSelectionCount();
|
||||
static void GetCurrentSelectionBuffer(PWCHAR buffer);
|
||||
|
||||
private:
|
||||
enum FocusedWindowType
|
||||
{
|
||||
INVALID,
|
||||
DESKTOP,
|
||||
EXPLORER,
|
||||
};
|
||||
|
||||
static std::vector<std::wstring> vector_items;
|
||||
|
||||
static void SaveSelectedFromDesktop();
|
||||
static void SaveSelectedFromExplorer();
|
||||
|
||||
static FocusedWindowType GetFocusedWindowType();
|
||||
static CComQIPtr<IWebBrowser2> AttachDesktopShellWindow();
|
||||
static void vectorFromDataObject(CComPtr<IDataObject> dao);
|
||||
};
|
||||
|
18
QuickLook.Native.Shell32/dllmain.cpp
Normal file
18
QuickLook.Native.Shell32/dllmain.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
// dllmain.cpp : Defines the entry point for the DLL application.
|
||||
#include "stdafx.h"
|
||||
#include "Shell32.h"
|
||||
|
||||
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
|
||||
{
|
||||
switch (ul_reason_for_call)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
case DLL_THREAD_ATTACH:
|
||||
case DLL_THREAD_DETACH:
|
||||
case DLL_PROCESS_DETACH:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
8
QuickLook.Native.Shell32/stdafx.cpp
Normal file
8
QuickLook.Native.Shell32/stdafx.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// QuickLook.Shell32Helper.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
23
QuickLook.Native.Shell32/stdafx.h
Normal file
23
QuickLook.Native.Shell32/stdafx.h
Normal file
@@ -0,0 +1,23 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "targetver.h"
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||
// Windows Header Files:
|
||||
#include <windows.h>
|
||||
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
||||
#include<atlcomcli.h>
|
||||
#include<Exdisp.h>
|
||||
#include<Shobjidl.h>
|
||||
#include<shlguid.h>
|
||||
#include<Shlobj.h>
|
||||
#include<Shellapi.h>
|
||||
#include<vector>
|
8
QuickLook.Native.Shell32/targetver.h
Normal file
8
QuickLook.Native.Shell32/targetver.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
// Including SDKDDKVer.h defines the highest available Windows platform.
|
||||
|
||||
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
|
||||
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
|
||||
|
||||
#include <SDKDDKVer.h>
|
Reference in New Issue
Block a user