[MSHTA] Implement MSHTA.exe (#577) CORE-12813
authorJared Smudde <computerwhiz02@hotmail.com>
Tue, 5 Jun 2018 15:17:00 +0000 (10:17 -0500)
committerHermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Tue, 5 Jun 2018 15:17:00 +0000 (17:17 +0200)
Implement mshta.exe. It links directly to the function RunHTMLApplication in mshtml and passes the file name and other optional arguments along. While the function is unimplemented in mshtml, it's a start.

[MSHTML] Add ADD_IMPORTLIB to CMakeLists so mshta can link to mshtml.
[BOOTDATA] Add the association information for mshta.exe to the registry.

base/applications/CMakeLists.txt
base/applications/mshta/CMakeLists.txt [new file with mode: 0644]
base/applications/mshta/main.c [new file with mode: 0644]
base/applications/mshta/mshta.ico [new file with mode: 0644]
base/applications/mshta/mshta.rc [new file with mode: 0644]
boot/bootdata/hivecls.inf
dll/win32/mshtml/CMakeLists.txt

index 2af017d..4c7677a 100644 (file)
@@ -23,6 +23,7 @@ add_subdirectory(mplay32)
 add_subdirectory(msconfig)
 add_subdirectory(msconfig_new)
 add_subdirectory(mscutils)
+add_subdirectory(mshta)
 add_subdirectory(mspaint)
 add_subdirectory(mstsc)
 add_subdirectory(network)
diff --git a/base/applications/mshta/CMakeLists.txt b/base/applications/mshta/CMakeLists.txt
new file mode 100644 (file)
index 0000000..e34b822
--- /dev/null
@@ -0,0 +1,6 @@
+
+add_executable(mshta main.c mshta.rc)
+target_link_libraries(mshta)
+set_module_type(mshta win32gui)
+add_importlibs(mshta msvcrt mshtml kernel32 ntdll)
+add_cd_file(TARGET mshta DESTINATION reactos/system32 FOR all)
diff --git a/base/applications/mshta/main.c b/base/applications/mshta/main.c
new file mode 100644 (file)
index 0000000..b7a47d0
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * PROJECT:     ReactOS HTML Application Host
+ * LICENSE:     GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
+ * PURPOSE:     Forwards HTA application information to mshtml
+ * COPYRIGHT:   Copyright 2017-2018 Jared Smudde(computerwhiz02@hotmail.com)
+ */
+
+#include <windef.h>
+#include <winbase.h>
+#include <winuser.h>
+#include <mshtml.h>
+
+extern DWORD WINAPI RunHTMLApplication(HINSTANCE hinst, HINSTANCE hPrevInst, LPSTR szCmdLine, int nCmdShow);
+
+int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmdline, int cmdshow)
+{
+    return RunHTMLApplication(hInst, hPrevInst, cmdline, cmdshow);
+}
diff --git a/base/applications/mshta/mshta.ico b/base/applications/mshta/mshta.ico
new file mode 100644 (file)
index 0000000..c0ab82c
Binary files /dev/null and b/base/applications/mshta/mshta.ico differ
diff --git a/base/applications/mshta/mshta.rc b/base/applications/mshta/mshta.rc
new file mode 100644 (file)
index 0000000..6865b5d
--- /dev/null
@@ -0,0 +1,7 @@
+#define REACTOS_STR_FILE_DESCRIPTION  "ReactOS HTML Application Host"
+#define REACTOS_STR_INTERNAL_NAME     "mshta"
+#define REACTOS_STR_ORIGINAL_FILENAME "mshta.exe"
+
+#include <reactos/version.rc>
+
+1 ICON "mshta.ico"
index 1568b54..61d6f4f 100644 (file)
@@ -216,6 +216,12 @@ HKCR,"chm.file","",0x00000000,%CHMFILE%
 HKCR,"chm.file\DefaultIcon","",0x00020000,"%SystemRoot%\hh.exe,0"
 HKCR,"chm.file\shell\open\command","",0x00020000,"%SystemRoot%\hh.exe %1"
 
+; HTA Files
+HKCR,".hta","",0x00000000,"htafile"
+HKCR,"htafile","",0x00000000,"HTML Application"
+HKCR,"htafile\DefaultIcon","",0x00020000,"%SystemRoot%\system32\mshta.exe,-1"
+HKCR,"htafile\shell\open\command","",0x00020000,"%SystemRoot%\system32\mshta.exe ""%1"" %*"
+
 ; set MIME type for .html and .htm because Tiny webserver needs it
 HKCR,".htm","",0x00000000,"htmlfile"
 HKCR,".htm","Content Type",0x00000000,"text/html"
index 5db4724..1b93bfa 100644 (file)
@@ -8,7 +8,7 @@ add_definitions(
 
 include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine)
 add_idl_headers(mshtml_nsiface_header nsiface.idl)
-spec2def(mshtml.dll mshtml.spec)
+spec2def(mshtml.dll mshtml.spec ADD_IMPORTLIB)
 
 list(APPEND SOURCE
     conpoint.c