Loopback
|
Posted: Tue Feb 11, 2025 12:17 Post subject: |
|
|
Orion9 wrote: | Вроде всё работает, но иногда спотыкается, а иногда и ТС валит. |
Есть две очевидные проблемы:
- память структуры нужно обнулять после создания, если явно не устанавливаются все её члены, иначе там окажется случайный мусор;
- размер структуры 60 - это для 32-битной версии, в x64 должен быть 112.
Как-то так:
 Hidden text
Code: | Func FileSecInfo(lParam)
Static SEE_MASK_INVOKEIDLIST = 0x0000000C, _
LPSHELLEXECUTEINFO = (auX64 ? 112 : 60) , _
SW_SHOWNORMAL = 1
SW_SHOW = 5
Local p = RequestCopyDataInfo("SP")
Local n = RequestCopyDataInfo("SN")
Local f = p & n
Local buff = Buffer(LPSHELLEXECUTEINFO), verb = Buffer(10*2+2), file = Buffer(StrLen(f)*2+2), parm = Buffer(12*2+2)
buff.Zero() # обнуляем память
verb.SetStr("properties" & Chr(0))
file.SetStr(f & Chr(0))
#parm.SetStr("Security" & Chr(0))
parm.SetStr("Безопасность" & Chr(0))
buff.SetNum(0, "dword", buff.size, _
"ulong", SEE_MASK_INVOKEIDLIST, _
"ptr", 0, _
"ptr", verb.Ptr, _
"ptr", file.Ptr, _
"ptr", parm.Ptr, _
"ptr", 0, _
"int", 1)
DllCall("shell32\ShellExecuteExW", "ptr", buff.Ptr)
Free(buff, verb, file, parm)
EndFunc |
Orion9 wrote: | Ну и с новыми функциями сам Гислер велел: |
В подразделе "Конфигурация TC" справочных примеров Flasher добавил пример на эту тему, гляньте, может пригодится. |
|