Creat0R
Цитата:
в принципе догадываюсь что функция будет примерно такой, но и она у меня не работает »
|
а чего ты для UDF
_ShellExecuteEx() используешь API-функцию
ShellExecute?.. она как раз не поддерживает "properties"
Код:

HotKeySet("{Esc}", "OnExit")
_ShellExecuteEx(@ScriptName, "", @ScriptDir, "properties")
While 1
Sleep(500)
WEnd
Func _ShellExecuteEx($sCmd, $Args = "", $sFolder = "", $Verb = "", $rState = @SW_SHOWNORMAL, $hWnd = 0)
Local $struINFO = DllStructCreate("long;long;long;ptr;ptr;ptr;ptr;long;long;long;ptr;long;long;long;long")
Local $struVerb = DllStructCreate("char[15];char")
Local $struPath = DllStructCreate("char[255];char")
Local $struArgs = DllStructCreate("char[255];char")
Local $struWDir = DllStructCreate("char[255];char")
; Заполняем структуры параметров
DllStructSetData($struVerb, 1, $Verb)
If StringRight($sCmd, 3) = "lnk" Then
Local $aShortcutInfo = FileGetShortcut($sCmd)
If IsArray($aShortcutInfo) Then
DllStructSetData($struPath, 1, $aShortcutInfo[0])
DllStructSetData($struWDir, 1, $aShortcutInfo[1])
DllStructSetData($struArgs, 1, $aShortcutInfo[2])
$rState = $aShortcutInfo[6]
Else
Return 0
Endif
Else
DllStructSetData($struPath, 1, $sCmd)
DllStructSetData($struWDir, 1, $sFolder)
DllStructSetData($struArgs, 1, $Args)
EndIf
; Заполняем структуру SHELLEXECUTEINFO
DllStructSetData($struINFO, 1, DllStructGetSize($struINFO))
DllStructSetData($struINFO, 2, BitOR(0xC, 0x40, 0x400))
DllStructSetData($struINFO, 3, $hWnd)
DllStructSetData($struINFO, 4, DllStructGetPtr($struVerb))
DllStructSetData($struINFO, 5, DllStructGetPtr($struPath))
DllStructSetData($struINFO, 6, DllStructGetPtr($struArgs))
DllStructSetData($struINFO, 7, DllStructGetPtr($struWDir))
DllStructSetData($struINFO, 8, $rState)
Local $ret = DllCall("shell32.dll", "int", "ShellExecuteEx", "ptr", DllStructGetPtr($struINFO))
Return $ret[0]
EndFunc
Func OnExit()
Exit
EndFunc
P.S. кста я про ярлыки и не подумал
