hhctrl.ocx: Correctly handle URLs in SetChmPath.
diff --git a/dlls/hhctrl.ocx/chm.c b/dlls/hhctrl.ocx/chm.c
index 493ed5b..d65d766 100644
--- a/dlls/hhctrl.ocx/chm.c
+++ b/dlls/hhctrl.ocx/chm.c
@@ -249,11 +249,29 @@
     return SUCCEEDED(hr);
 }
 
+static LPCWSTR skip_schema(LPCWSTR url)
+{
+    static const WCHAR its_schema[] = {'i','t','s',':'};
+    static const WCHAR msits_schema[] = {'m','s','-','i','t','s',':'};
+    static const WCHAR mk_schema[] = {'m','k',':','@','M','S','I','T','S','t','o','r','e',':'};
+
+    if(!strncmpiW(its_schema, url, sizeof(its_schema)/sizeof(WCHAR)))
+        return url+sizeof(its_schema)/sizeof(WCHAR);
+    if(!strncmpiW(msits_schema, url, sizeof(msits_schema)/sizeof(WCHAR)))
+        return url+sizeof(msits_schema)/sizeof(WCHAR);
+    if(!strncmpiW(mk_schema, url, sizeof(mk_schema)/sizeof(WCHAR)))
+        return url+sizeof(mk_schema)/sizeof(WCHAR);
+
+    return url;
+}
+
 void SetChmPath(ChmPath *file, LPCWSTR base_file, LPCWSTR path)
 {
     LPCWSTR ptr;
     static const WCHAR separatorW[] = {':',':',0};
 
+    path = skip_schema(path);
+
     ptr = strstrW(path, separatorW);
     if(ptr) {
         WCHAR chm_file[MAX_PATH];