Detlef Riekenberg : rundll.exe16: Add program as 16bit wrapper for rundll32 .exe.

Alexandre Julliard julliard at winehq.org
Mon Jul 19 11:05:42 CDT 2010


Module: wine
Branch: master
Commit: df898ea47a8a1833a842037f6d9935fcd33d7898
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=df898ea47a8a1833a842037f6d9935fcd33d7898

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Sun Jul 18 19:15:57 2010 +0200

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

---

 configure                         |    1 +
 configure.ac                      |    1 +
 programs/rundll.exe16/Makefile.in |   11 ++++++++
 programs/rundll.exe16/rundll.c    |   48 +++++++++++++++++++++++++++++++++++++
 tools/wine.inf.in                 |    1 +
 5 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/configure b/configure
index a57e048..864f60e 100755
--- a/configure
+++ b/configure
@@ -14786,6 +14786,7 @@ wine_fn_config_program reg enable_reg install
 wine_fn_config_program regedit enable_regedit installbin
 wine_fn_config_program regsvr32 enable_regsvr32 installbin
 wine_fn_config_program rpcss enable_rpcss install
+wine_fn_config_program rundll.exe16 enable_win16 install
 wine_fn_config_program rundll32 enable_rundll32 install
 wine_fn_config_program sc enable_sc install
 wine_fn_config_program secedit enable_secedit install
diff --git a/configure.ac b/configure.ac
index 61f376e..3416773 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2723,6 +2723,7 @@ WINE_CONFIG_PROGRAM(reg,install)
 WINE_CONFIG_PROGRAM(regedit,installbin)
 WINE_CONFIG_PROGRAM(regsvr32,installbin)
 WINE_CONFIG_PROGRAM(rpcss,install)
+WINE_CONFIG_PROGRAM(rundll.exe16,install,enable_win16)
 WINE_CONFIG_PROGRAM(rundll32,install)
 WINE_CONFIG_PROGRAM(sc,install)
 WINE_CONFIG_PROGRAM(secedit,install)
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




More information about the wine-cvs mailing list