diff --git a/dlls/kernel/format_msg.c b/dlls/kernel/format_msg.c
index 42ab1095b75b90743e5d30531fd3ff661c104dbc..560ee374b116639b0b46d55d4b654da6d0390937 100644
--- a/dlls/kernel/format_msg.c
+++ b/dlls/kernel/format_msg.c
@@ -163,12 +163,14 @@ DWORD WINAPI FormatMessageA(
 
         if (dwFlags & FORMAT_MESSAGE_FROM_HMODULE)
         {
-           bufsize=load_messageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
+            if (!hmodule)
+                hmodule = GetModuleHandleW(NULL);
+            bufsize=load_messageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
         }
         if ((dwFlags & FORMAT_MESSAGE_FROM_SYSTEM) && (!bufsize))
         {
-           hmodule = GetModuleHandleA("kernel32");
-           bufsize=load_messageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
+            hmodule = GetModuleHandleA("kernel32");
+            bufsize=load_messageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
         }
 
         if (!bufsize) {
@@ -388,12 +390,14 @@ DWORD WINAPI FormatMessageW(
 
         if (dwFlags & FORMAT_MESSAGE_FROM_HMODULE)
         {
-           bufsize=load_messageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
+            if (!hmodule)
+                hmodule = GetModuleHandleW(NULL);
+            bufsize=load_messageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
         }
         if ((dwFlags & FORMAT_MESSAGE_FROM_SYSTEM) && (!bufsize))
         {
-           hmodule = GetModuleHandleA("kernel32");
-           bufsize=load_messageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
+            hmodule = GetModuleHandleA("kernel32");
+            bufsize=load_messageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
         }
 
         if (!bufsize) {