diff --git a/configure b/configure index a57e0489626..864f60ebac6 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 61f376ecc45..3416773121f 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 00000000000..9e5df3eaeb9 --- /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 + +@MAKE_PROG_RULES@ diff --git a/programs/rundll.exe16/rundll.c b/programs/rundll.exe16/rundll.c new file mode 100644 index 00000000000..f7788f2166c --- /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 +#include + +#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 63a78d2e119..8612f2274d0 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