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&am...
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