MASK_FLAG_DDEWAIT in ShellExecuteExW32 ()
Olivier Kaloudoff
kalou at kalou.net
Thu Oct 7 02:12:57 CDT 2004
Hi,
Trying to run an unsupported application, I get the following
error:
fixme:exec:ShellExecuteExW32 flags ignored: 0x00000140
and the application gives me C:\windows\temp\MMIsnst, access
denied...
so two bits are set by the application, requesting
MASK_FLAG_DDEWAIT and MASK_NOCLOSEPROCESS ...
as far as I understand DDEWAIT, it should be trivial to implement,
as it is just some kind of sleep() ... even with no C experience, I should
be able to do this..
what about NOCLOSEPROCESS ? .... hmmm, crawling the web, it turns
out that the writer of this application (MobileMaster.exe) probably made a
call to a RunWait function ... in a language called LibertyBasic ... am I
right ?
http://libertybasic.conforums.com/index.cgi?board=tips&num=1079874405&action=display&start=15
sub RunWait file$, para$, dir$
' sub to open an application or file
'
' Usage:
' call RunWait {filename}, {parameters}, {startfolder}
'
' filename ...... full path to file or executable
' parameters .... if file is a document this should be empty
' if file is an executable any parameters
' that should be passed to it
' startfolder ... initial folder, can be empty
SEE.MASK.NOCLOSEPROCESS = hexdec("40")
SEE.MASK.FLAG.DDEWAIT = hexdec("100")
struct ExecInfo, _
Size as long, _
fMask as long, _
hwnd as long, _
Verb$ as ptr, _
File$ as ptr, _
Parameters$ as ptr, _
Directory$ as ptr, _
Show as long, _
InstApp as long, _
IDList as long, _
Class$ as ptr, _
keyClass as long, _
HotKey as long, _
Icon as long, _
Process as long
ExecInfo.fMask.struct = SEE.MASK.NOCLOSEPROCESS or
SEE.MASK.FLAG.DDEWAIT
ExecInfo.File$.struct = file$ + chr$(0)
ExecInfo.Parameters$.struct = para$ + chr$(0)
ExecInfo.Directory$.struct = dir$ + chr$(0)
ExecInfo.Show.struct = _SW_SHOWNORMAL
ExecInfo.Size.struct = len(ExecInfo.struct)
calldll #shell32, "ShellExecuteExA", _
ExecInfo as struct, _
result as long
if result <> 0 then
Handle = ExecInfo.Process.struct
Milliseconds = _INFINITE
calldll #kernel32, "WaitForSingleObject", _
Handle as long, _
Milliseconds as long, _
result as long
end if
end sub
More information about the wine-devel
mailing list