Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
15e8e0a2
Commit
15e8e0a2
authored
Nov 15, 2002
by
Alberto Massari
Committed by
Alexandre Julliard
Nov 15, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added rundll32 utility.
parent
d41581db
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
148 additions
and
0 deletions
+148
-0
configure
configure
+0
-0
configure.ac
configure.ac
+1
-0
Makefile.in
programs/Makefile.in
+2
-0
.cvsignore
programs/rundll32/.cvsignore
+3
-0
Makefile.in
programs/rundll32/Makefile.in
+14
-0
rundll32.c
programs/rundll32/rundll32.c
+128
-0
No files found.
configure
View file @
15e8e0a2
This diff is collapsed.
Click to expand it.
configure.ac
View file @
15e8e0a2
...
...
@@ -1511,6 +1511,7 @@ programs/regapi/Makefile
programs/regedit/Makefile
programs/regsvr32/Makefile
programs/regtest/Makefile
programs/rundll32/Makefile
programs/uninstaller/Makefile
programs/view/Makefile
programs/wcmd/Makefile
...
...
programs/Makefile.in
View file @
15e8e0a2
...
...
@@ -17,6 +17,7 @@ SUBDIRS = \
regedit
\
regsvr32
\
regtest
\
rundll32
\
uninstaller
\
view
\
wcmd
\
...
...
@@ -38,6 +39,7 @@ INSTALLSUBDIRS = \
progman
\
regedit
\
regsvr32
\
rundll32
\
uninstaller
\
wcmd
\
wineconsole
\
...
...
programs/rundll32/.cvsignore
0 → 100644
View file @
15e8e0a2
Makefile
rundll32.exe.dbg.c
rundll32.exe.spec.c
programs/rundll32/Makefile.in
0 → 100644
View file @
15e8e0a2
TOPSRCDIR
=
@top_srcdir@
TOPOBJDIR
=
../..
SRCDIR
=
@srcdir@
VPATH
=
@srcdir@
MODULE
=
rundll32.exe
APPMODE
=
cui
IMPORTS
=
kernel32
C_SRCS
=
\
rundll32.c
@MAKE_PROG_RULES@
### Dependencies:
programs/rundll32/rundll32.c
0 → 100644
View file @
15e8e0a2
/*
* PURPOSE: Load a DLL and run an entry point with the specified parameters
*
* Copyright 2002 Alberto Massari
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* This version deliberately differs in error handling compared to the
* windows version.
*/
/*
*
* rundll32 dllname,entrypoint [arguments]
*
* Documentation for this utility found on KB Q164787
*
*/
/**
* FIXME - currently receives command-line parameters in ASCII only and later
* converts to Unicode. Ideally the function should have wWinMain entry point
* and then work in Unicode only, but it seems Wine does not have necessary
* support.
*/
#include "config.h"
#include "wine/port.h"
#include <stdio.h>
#include <string.h>
#include <windows.h>
typedef
void
(
*
EntryPointW
)
(
HWND
hWnd
,
HINSTANCE
hInst
,
LPWSTR
lpszCmdLine
,
int
nCmdShow
);
typedef
void
(
*
EntryPointA
)
(
HWND
hWnd
,
HINSTANCE
hInst
,
LPSTR
lpszCmdLine
,
int
nCmdShow
);
/**
* Loads procedure.
*
* Parameters:
* strDll - name of the dll.
* procName - name of the procedure to load from dll
* pDllHanlde - output variable receives handle of the loaded dll.
*/
static
FARPROC
LoadProc
(
char
*
strDll
,
char
*
procName
,
HMODULE
*
DllHandle
)
{
FARPROC
proc
;
*
DllHandle
=
LoadLibrary
(
strDll
);
if
(
!*
DllHandle
)
{
exit
(
-
1
);
}
proc
=
GetProcAddress
(
*
DllHandle
,
procName
);
if
(
!
proc
)
{
FreeLibrary
(
*
DllHandle
);
return
NULL
;
}
return
proc
;
}
int
main
(
int
argc
,
char
*
argv
[])
{
char
szDllName
[
MAX_PATH
],
szEntryPoint
[
64
],
szCmdLine
[
2048
];
char
*
comma
;
EntryPointW
pfEntryPointW
;
EntryPointA
pfEntryPointA
;
HMODULE
DllHandle
=
NULL
;
comma
=
strchr
(
argv
[
1
],
','
);
if
(
comma
==
NULL
)
return
0
;
/* Extract the name of the DLL */
memset
(
szDllName
,
0
,
MAX_PATH
);
strncpy
(
szDllName
,
argv
[
1
],(
comma
-
argv
[
1
]));
/* Merge the other paramters into one big command line */
memset
(
szCmdLine
,
0
,
2048
);
if
(
argc
>
2
)
{
int
i
;
for
(
i
=
2
;
i
<
argc
;
i
++
)
{
strcat
(
szCmdLine
,
argv
[
i
]);
if
(
i
+
1
<
argc
)
strcat
(
szCmdLine
,
" "
);
}
}
/* try loading the UNICODE version first */
strcpy
(
szEntryPoint
,
comma
+
1
);
strcat
(
szEntryPoint
,
"W"
);
pfEntryPointW
=
LoadProc
(
szDllName
,
szEntryPoint
,
&
DllHandle
);
if
(
pfEntryPointW
!=
NULL
)
{
WCHAR
wszCmdLine
[
2048
];
MultiByteToWideChar
(
CP_ACP
,
0
,
szCmdLine
,
-
1
,
wszCmdLine
,
2048
);
pfEntryPointW
(
NULL
,
DllHandle
,
wszCmdLine
,
SW_HIDE
);
}
else
{
strcpy
(
szEntryPoint
,
comma
+
1
);
strcat
(
szEntryPoint
,
"A"
);
pfEntryPointA
=
LoadProc
(
szDllName
,
szEntryPoint
,
&
DllHandle
);
if
(
pfEntryPointA
==
NULL
)
{
strcpy
(
szEntryPoint
,
comma
+
1
);
pfEntryPointA
=
LoadProc
(
szDllName
,
szEntryPoint
,
&
DllHandle
);
if
(
pfEntryPointA
==
NULL
)
return
0
;
}
pfEntryPointA
(
NULL
,
DllHandle
,
szCmdLine
,
SW_HIDE
);
}
if
(
DllHandle
)
FreeLibrary
(
DllHandle
);
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment