using ShellExtensions.Interop.Common;
using System;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
namespace ShellExtensions.Interop
{
internal static class HandlerNativeMethods
{
internal static readonly Guid IThumbnailProviderGuid = new Guid("e357fccd-a995-4576-b01f-234630154e96");
internal static readonly Guid IInitializeWithFileGuid = new Guid("b7d14566-0509-4cce-a71f-0a554233bd9b");
internal static readonly Guid IInitializeWithStreamGuid = new Guid("b824b49d-22ac-4161-ac8a-9916e8fa3f7f");
//internal static readonly Guid IInitializeWithItemGuid = new Guid("7f73be3f-fb79-493c-a6c7-7ee14e245841");
internal static readonly Guid IMarshalGuid = new Guid("00000003-0000-0000-C000-000000000046");
}
#region Interfaces
///
/// ComVisible interface for native IThumbnailProvider
///
[ComImport]
[Guid("e357fccd-a995-4576-b01f-234630154e96")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IThumbnailProvider
{
///
/// Gets a pointer to a bitmap to display as a thumbnail
///
///
///
///
void GetThumbnail(uint squareLength, [Out] out IntPtr bitmapHandle, [Out] out uint bitmapType);
}
///
/// Provides means by which to initialize with a file.
///
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("b7d14566-0509-4cce-a71f-0a554233bd9b")]
interface IInitializeWithFile
{
///
/// Initializes with a file.
///
///
///
void Initialize([MarshalAs(UnmanagedType.LPWStr)] string filePath, AccessModes fileMode);
}
///
/// Provides means by which to initialize with a stream.
///
[ComImport]
[Guid("b824b49d-22ac-4161-ac8a-9916e8fa3f7f")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IInitializeWithStream
{
///
/// Initializes with a stream.
///
///
///
void Initialize(IStream stream, AccessModes fileMode);
}
#endregion
//
/// Thumbnail Alpha Types
///
public enum ThumbnailAlphaType
{
///
/// Let the system decide.
///
Unknown = 0,
///
/// No transparency
///
NoAlphaChannel = 1,
///
/// Has transparency
///
HasAlphaChannel = 2,
}
}