[PATCH] rundll.exe16: Add program as 16bit wrapper for rundll32.exe

Detlef Riekenberg wine.dev at web.de
Sun Jul 18 12:15:57 CDT 2010


Needed for some installer (startupcpl.exe as example)

Using winhelp.exe16 as template.

--
By by ... Detlef
---
 programs/rundll.exe16/Makefile.in |   11 ++++++++
 programs/rundll.exe16/rundll.c    |   48 +++++++++++++++++++++++++++++++++++++
 tools/wine.inf.in                 |    1 +
 3 files changed, 60 insertions(+), 0 deletions(-)
 create mode 100644 programs/rundll.exe16/Makefile.in
 create mode 100644 programs/rundll.exe16/rundll.c

diff --git a/programs/rundll.exe16/Makefile.in b/programs/rundll.exe16/Makefile.in
new file mode 100644
index 0000000..9e5df3e
--- /dev/null
+++ b/programs/rundll.exe16/Makefile.in
@@ -0,0 +1,11 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = rundll.exe16
+APPMODE   = -mwindows -Wb,--subsystem,win16
+IMPORTS   = kernel32 kernel
+
+C_SRCS = rundll.c
+
+ at MAKE_PROG_RULES@
diff --git a/programs/rundll.exe16/rundll.c b/programs/rundll.exe16/rundll.c
new file mode 100644
index 0000000..f7788f2
--- /dev/null
+++ b/programs/rundll.exe16/rundll.c
@@ -0,0 +1,48 @@
+/*
+ * 16-bit rundll implementation
+ *
+ * Copyright 2009 Alexandre Julliard
+ * Copyright 2010 Detlef Riekenberg
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#include "wine/winbase16.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(rundll);
+
+/**************************************************************************
+ *  RUNDLL entry point
+ */
+WORD WINAPI WinMain16( HINSTANCE16 inst, HINSTANCE16 prev, LPSTR cmdline, WORD show )
+{
+    int len = GetSystemDirectoryA( NULL, 0 ) + sizeof("\\rundll32.exe ") + strlen(cmdline);
+    char *buffer = HeapAlloc( GetProcessHeap(), 0, len );
+
+    GetSystemDirectoryA( buffer, len );
+    strcat( buffer, "\\rundll32.exe " );
+    strcat( buffer, cmdline );
+
+    WINE_TRACE( "starting %s\n", wine_dbgstr_a(buffer) );
+
+    WinExec16( buffer, show );
+
+    HeapFree( GetProcessHeap(), 0, buffer );
+    ExitThread( 0 );
+}
diff --git a/tools/wine.inf.in b/tools/wine.inf.in
index 63a78d2..8612f22 100644
--- a/tools/wine.inf.in
+++ b/tools/wine.inf.in
@@ -2541,6 +2541,7 @@ HKLM,%CurrentVersion%\Telephony\Country List\998,"SameAreaRule",,"G"
 
 ; 32bit-only fake dlls
 [FakeDllsWin32]
+10,,rundll.exe,rundll.exe16
 10,,twain.dll,twain.dll16
 10,,twain_32.dll
 10,,winhelp.exe,winhelp.exe16
-- 
1.7.0.4




More information about the wine-patches mailing list