summaryrefslogtreecommitdiffstats
path: root/src/lib/platform/MSWindowsHookResource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/platform/MSWindowsHookResource.cpp')
-rw-r--r--src/lib/platform/MSWindowsHookResource.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/lib/platform/MSWindowsHookResource.cpp b/src/lib/platform/MSWindowsHookResource.cpp
new file mode 100644
index 0000000..ced5ff1
--- /dev/null
+++ b/src/lib/platform/MSWindowsHookResource.cpp
@@ -0,0 +1,33 @@
+#include "MSWindowsHookResource.h"
+
+WindowsHookResource::WindowsHookResource() :
+ _hook(NULL)
+{
+}
+
+WindowsHookResource::~WindowsHookResource()
+{
+ unset();
+}
+
+bool WindowsHookResource::set(int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadId)
+{
+ if (is_set())
+ return false;
+ _hook = SetWindowsHookEx(idHook, lpfn, hmod, dwThreadId);
+ return is_set();
+}
+
+bool WindowsHookResource::unset()
+{
+ if (is_set()) {
+ if (UnhookWindowsHookEx(_hook) == 0) {
+ return false;
+ }
+ _hook = NULL;
+ }
+ return true;
+}
+
+bool WindowsHookResource::is_set() const { return _hook != NULL; }
+WindowsHookResource::operator HHOOK() const { return _hook; } \ No newline at end of file