public static void Initialize() { if (hHookLib != IntPtr.Zero) { return; } string installPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "QTTabBar"); string filename = IntPtr.Size == 8 ? "QTHookLib64.dll" : "QTHookLib32.dll"; hHookLib = PInvoke.LoadLibrary(Path.Combine(installPath, filename)); int retcode = -1; if (hHookLib == IntPtr.Zero) { int error = Marshal.GetLastWin32Error(); QTUtility2.MakeErrorLog(null, "LoadLibrary error: " + error); } else { IntPtr pFunc = PInvoke.GetProcAddress(hHookLib, "Initialize"); if (pFunc != IntPtr.Zero) { InitHookLibDelegate initialize = (InitHookLibDelegate) Marshal.GetDelegateForFunctionPointer(pFunc, typeof(InitHookLibDelegate)); try { retcode = initialize(callbackStruct); } catch (Exception e) { QTUtility2.MakeErrorLog(e, ""); } } } if (retcode == 0) { return; } QTUtility2.MakeErrorLog(null, "HookLib Initialize failed: " + retcode); MessageForm.Show(IntPtr.Zero, String.Format( "{0}: {1} {2}", QTUtility.TextResourcesDic["ErrorDialogs"][4], QTUtility.TextResourcesDic["ErrorDialogs"][5], QTUtility.TextResourcesDic["ErrorDialogs"][7] ), QTUtility.TextResourcesDic["ErrorDialogs"][1], MessageBoxIcon.Hand, 30000, false, true ); }
static HookLibManager() { string installPath = ""; using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Quizo\QTTabBar")) { if (key != null) { installPath = (string)key.GetValue("InstallPath", ""); } } string filename = IntPtr.Size == 8 ? "QTHookLib64.dll" : "QTHookLib32.dll"; hHookLib = PInvoke.LoadLibrary(Path.Combine(installPath, filename)); int retcode = -1; if (hHookLib == IntPtr.Zero) { int error = Marshal.GetLastWin32Error(); QTUtility2.MakeErrorLog(null, "LoadLibrary error: " + error); } else { IntPtr pFunc = PInvoke.GetProcAddress(hHookLib, "Initialize"); if (pFunc != IntPtr.Zero) { InitHookLibDelegate initialize = (InitHookLibDelegate) Marshal.GetDelegateForFunctionPointer(pFunc, typeof(InitHookLibDelegate)); try { retcode = initialize(fpHookResult); } catch (Exception e) { QTUtility2.MakeErrorLog(e, ""); } } } if (retcode == 0) { return; } QTUtility2.MakeErrorLog(null, "HookLib Initialize failed: " + retcode); // TODO: Localize this MessageForm.Show(IntPtr.Zero, "Error: Unable to load QTTabBar hook library. " + "Some features might not be functional. " + "You may need to reinstall the applicaiton.", "Error", MessageBoxIcon.Hand, 30000, false, true); }
public static void Initialize() { if (_hHookLib != IntPtr.Zero) { return; } string installPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); string filename = IntPtr.Size == 8 ? "BEHookLib64.dll" : "BEHookLib32.dll"; _hHookLib = WindowsAPI.LoadLibrary(Path.Combine(installPath, filename)); int retcode = -1; if (_hHookLib == IntPtr.Zero) { int error = Marshal.GetLastWin32Error(); //TODO: error should be logged; } else { IntPtr pFunc = WindowsAPI.GetProcAddress(_hHookLib, "Initialize"); if (pFunc != IntPtr.Zero) { InitHookLibDelegate initialize = (InitHookLibDelegate) Marshal.GetDelegateForFunctionPointer(pFunc, typeof(InitHookLibDelegate)); try { Hookptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(callbackStruct)); Marshal.StructureToPtr(callbackStruct, Hookptr, true); retcode = initialize(Hookptr); } catch (Exception e) { //TODO: Erors should be logged } } } if (retcode == 0) { return; } //TODO: here Errors should be logged }
static HookLibManager() { string installPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "QTTabBar"); string filename = IntPtr.Size == 8 ? "QTHookLib64.dll" : "QTHookLib32.dll"; hHookLib = PInvoke.LoadLibrary(Path.Combine(installPath, filename)); int retcode = -1; if (hHookLib == IntPtr.Zero) { int error = Marshal.GetLastWin32Error(); QTUtility2.MakeErrorLog(null, "LoadLibrary error: " + error); } else { IntPtr pFunc = PInvoke.GetProcAddress(hHookLib, "Initialize"); if (pFunc != IntPtr.Zero) { InitHookLibDelegate initialize = (InitHookLibDelegate) Marshal.GetDelegateForFunctionPointer(pFunc, typeof(InitHookLibDelegate)); try { retcode = initialize(fpHookResult); } catch (Exception e) { QTUtility2.MakeErrorLog(e, ""); } } } if (retcode == 0) { return; } QTUtility2.MakeErrorLog(null, "HookLib Initialize failed: " + retcode); // TODO: Localize this MessageForm.Show(IntPtr.Zero, "Error: Unable to load QTTabBar hook library. " + "Some features might not be functional. " + "You may need to reinstall the applicaiton.", "Error", MessageBoxIcon.Hand, 30000, false, true); }