ViSiToR
Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору sproxy 23:14 25-02-2009 Цитата: в каких случаях это не будет работаьт правильно | Думаю тогда, когда это ярлык сервиса или системного (встроенного в системную оболочку) приложения, типа Ms Word. Вот так должно работать всегда: Код: _ShellExecuteEx(@ProgramsCommonDir & "\Microsoft Office\Microsoft Office Word 2003.lnk") _ShellExecuteEx(@DesktopDir & "\Ярлык.lnk") Func _ShellExecuteEx($sCmd, $sArgs = "", $sFolder = "", $sVerb = "", $iState = @SW_SHOWNORMAL, $hWnd = 0) Local $stINFO = DllStructCreate("long;long;long;ptr;ptr;ptr;ptr;long;long;long;ptr;long;long;long;long") Local $stVerb = DllStructCreate("char[15];char") Local $stPath = DllStructCreate("char[255];char") Local $stArgs = DllStructCreate("char[255];char") Local $stWDir = DllStructCreate("char[255];char") DllStructSetData($stVerb, 1, $sVerb) DllStructSetData($stPath, 1, $sCmd) DllStructSetData($stWDir, 1, $sFolder) DllStructSetData($stArgs, 1, $sArgs) DllStructSetData($stINFO, 1, DllStructGetSize($stINFO)) DllStructSetData($stINFO, 2, BitOR(0xC, 0x40, 0x400)) DllStructSetData($stINFO, 3, $hWnd) DllStructSetData($stINFO, 4, DllStructGetPtr($stVerb)) DllStructSetData($stINFO, 5, DllStructGetPtr($stPath)) DllStructSetData($stINFO, 6, DllStructGetPtr($stArgs)) DllStructSetData($stINFO, 7, DllStructGetPtr($stWDir)) DllStructSetData($stINFO, 8, $iState) Local $aRet = DllCall("shell32.dll", "int", "ShellExecuteEx", "ptr", DllStructGetPtr($stINFO)) If Not IsArray($aRet) Or Not $aRet[0] Then Return SetError(2, 0, 0) Return 1 EndFunc |
---------- ViSiToR a.k.a CreatoR CreatoR это не ник, CreatoR это стиль жизни! |
| Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 01:00 26-02-2009 | Исправлено: ViSiToR, 01:01 26-02-2009 |
|