diff --git a/zbar/processor/win.c b/zbar/processor/win.c
--- a/zbar/processor/win.c
+++ b/zbar/processor/win.c
@@ -32,6 +32,14 @@
                    WS_MAXIMIZEBOX)
 #define EXT_STYLE (WS_EX_APPWINDOW | WS_EX_OVERLAPPEDWINDOW)
 
+static HMODULE hmodDll = 0;
+
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+    if(hmodDll==0)
+        hmodDll = (HMODULE)hinstDLL;
+    return TRUE;
+}
 
 int _zbar_event_init (zbar_event_t *event)
 {
@@ -266,9 +274,12 @@
                           unsigned height)
 {
     HMODULE hmod = NULL;
-    if(!GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
-                          GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
-                          (void*)_zbar_processor_open, (HINSTANCE*)&hmod))
+    if(hmodDll)
+        hmod = hmodDll;
+    else
+        // in case of static linking, get the exe handle
+        hmod = GetModuleHandle(NULL);
+    if(!hmod)
         return(err_capture(proc, SEV_ERROR, ZBAR_ERR_WINAPI, __func__,
                            "failed to obtain module handle"));
 
