1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- namespace SevenZip
- {
- using System;
- using System.Runtime.InteropServices;
- #if UNMANAGED
- internal static class NativeMethods
- {
- [UnmanagedFunctionPointer(CallingConvention.StdCall)]
- public delegate int CreateObjectDelegate(
- [In] ref Guid classID,
- [In] ref Guid interfaceID,
- [MarshalAs(UnmanagedType.Interface)] out object outObject);
- [DllImport("kernel32.dll", BestFitMapping = false, ThrowOnUnmappableChar = true)]
- public static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)] string fileName);
- [DllImport("kernel32.dll")]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool FreeLibrary(IntPtr hModule);
- [DllImport("kernel32.dll", BestFitMapping = false, ThrowOnUnmappableChar = true)]
- public static extern IntPtr GetProcAddress(IntPtr hModule, [MarshalAs(UnmanagedType.LPStr)] string procName);
- public static T SafeCast<T>(PropVariant var, T def)
- {
- object obj;
-
- try
- {
- obj = var.Object;
- }
- catch (Exception)
- {
- return def;
- }
- if (obj is T expected)
- {
- return expected;
- }
-
- return def;
- }
- }
- #endif
- }
|