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
b1d96f6f
Commit
b1d96f6f
authored
Apr 01, 2009
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shell32: Add implementation of WOWShellExecute.
The callback is probably not fully compatible, but apps are not supposed to use that function anyway.
parent
b2d35c36
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
28 deletions
+42
-28
shell.c
dlls/shell32/shell.c
+5
-27
shell32.spec
dlls/shell32/shell32.spec
+1
-1
shlexec.c
dlls/shell32/shlexec.c
+36
-0
No files found.
dlls/shell32/shell.c
View file @
b1d96f6f
...
...
@@ -48,6 +48,9 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
shell
);
extern
HINSTANCE
WINAPI
WOWShellExecute
(
HWND
hWnd
,
LPCSTR
lpOperation
,
LPCSTR
lpFile
,
LPCSTR
lpParameters
,
LPCSTR
lpDirectory
,
INT
iShowCmd
,
void
*
callback
);
typedef
struct
{
/* structure for dropped files */
WORD
wSize
;
...
...
@@ -600,31 +603,6 @@ HINSTANCE16 WINAPI ShellExecute16( HWND16 hWnd, LPCSTR lpOperation,
LPCSTR
lpFile
,
LPCSTR
lpParameters
,
LPCSTR
lpDirectory
,
INT16
iShowCmd
)
{
SHELLEXECUTEINFOW
seiW
;
WCHAR
*
wVerb
=
NULL
,
*
wFile
=
NULL
,
*
wParameters
=
NULL
,
*
wDirectory
=
NULL
;
HANDLE
hProcess
=
0
;
seiW
.
lpVerb
=
lpOperation
?
__SHCloneStrAtoW
(
&
wVerb
,
lpOperation
)
:
NULL
;
seiW
.
lpFile
=
lpFile
?
__SHCloneStrAtoW
(
&
wFile
,
lpFile
)
:
NULL
;
seiW
.
lpParameters
=
lpParameters
?
__SHCloneStrAtoW
(
&
wParameters
,
lpParameters
)
:
NULL
;
seiW
.
lpDirectory
=
lpDirectory
?
__SHCloneStrAtoW
(
&
wDirectory
,
lpDirectory
)
:
NULL
;
seiW
.
cbSize
=
sizeof
(
seiW
);
seiW
.
fMask
=
0
;
seiW
.
hwnd
=
HWND_32
(
hWnd
);
seiW
.
nShow
=
iShowCmd
;
seiW
.
lpIDList
=
0
;
seiW
.
lpClass
=
0
;
seiW
.
hkeyClass
=
0
;
seiW
.
dwHotKey
=
0
;
seiW
.
hProcess
=
hProcess
;
SHELL_execute
(
&
seiW
,
SHELL_Execute16
);
SHFree
(
wVerb
);
SHFree
(
wFile
);
SHFree
(
wParameters
);
SHFree
(
wDirectory
);
return
HINSTANCE_16
(
seiW
.
hInstApp
);
return
HINSTANCE_16
(
WOWShellExecute
(
HWND_32
(
hWnd
),
lpOperation
,
lpFile
,
lpParameters
,
lpDirectory
,
iShowCmd
,
SHELL_Execute16
));
}
dlls/shell32/shell32.spec
View file @
b1d96f6f
...
...
@@ -438,4 +438,4 @@
@ stdcall StrStrIA(str str) shlwapi.StrStrIA
@ stdcall StrStrIW(wstr wstr) shlwapi.StrStrIW
@ stdcall StrStrW(wstr wstr) shlwapi.StrStrW
@ st
ub WOWShellExecute
@ st
dcall WOWShellExecute(long str str str str long ptr)
dlls/shell32/shlexec.c
View file @
b1d96f6f
...
...
@@ -1956,6 +1956,42 @@ HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile,
}
/*************************************************************************
* WOWShellExecute [SHELL32.@]
*
* FIXME: the callback function most likely doesn't work the same way on Windows.
*/
HINSTANCE
WINAPI
WOWShellExecute
(
HWND
hWnd
,
LPCSTR
lpOperation
,
LPCSTR
lpFile
,
LPCSTR
lpParameters
,
LPCSTR
lpDirectory
,
INT
iShowCmd
,
void
*
callback
)
{
SHELLEXECUTEINFOW
seiW
;
WCHAR
*
wVerb
=
NULL
,
*
wFile
=
NULL
,
*
wParameters
=
NULL
,
*
wDirectory
=
NULL
;
HANDLE
hProcess
=
0
;
seiW
.
lpVerb
=
lpOperation
?
__SHCloneStrAtoW
(
&
wVerb
,
lpOperation
)
:
NULL
;
seiW
.
lpFile
=
lpFile
?
__SHCloneStrAtoW
(
&
wFile
,
lpFile
)
:
NULL
;
seiW
.
lpParameters
=
lpParameters
?
__SHCloneStrAtoW
(
&
wParameters
,
lpParameters
)
:
NULL
;
seiW
.
lpDirectory
=
lpDirectory
?
__SHCloneStrAtoW
(
&
wDirectory
,
lpDirectory
)
:
NULL
;
seiW
.
cbSize
=
sizeof
(
seiW
);
seiW
.
fMask
=
0
;
seiW
.
hwnd
=
hWnd
;
seiW
.
nShow
=
iShowCmd
;
seiW
.
lpIDList
=
0
;
seiW
.
lpClass
=
0
;
seiW
.
hkeyClass
=
0
;
seiW
.
dwHotKey
=
0
;
seiW
.
hProcess
=
hProcess
;
SHELL_execute
(
&
seiW
,
callback
);
SHFree
(
wVerb
);
SHFree
(
wFile
);
SHFree
(
wParameters
);
SHFree
(
wDirectory
);
return
seiW
.
hInstApp
;
}
/*************************************************************************
* OpenAs_RunDLLA [SHELL32.@]
*/
void
WINAPI
OpenAs_RunDLLA
(
HWND
hwnd
,
HINSTANCE
hinst
,
LPCSTR
cmdline
,
int
cmdshow
)
...
...
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