Orion9

|
Posted: Thu Apr 24, 2025 13:03 Post subject: |
|
|
AkulaBig wrote: | ТС х64 не работает. |
В топике это обсуждалось. Ничего не поделать: в TC x64 остаётся пока только "лочить" подсказку.
Сейчас с DllCall можно проверять статус клавиши, например CapsLock, не прибегая к функции SetHotkeyAction и "локу" через переменные:
Code: | Local bCaps = DllCall("GetKeyState", "int", 0x14, "short")
Local b_CTRL = BitAND(bCaps, 1)
|
Полный, рабочий код:
 Hidden text Code: | Func JoinHint(FileName, FieldIndex, UnitIndex)
Local bCaps = DllCall("GetKeyState", "int", 0x14, "short")
Local b_CTRL = BitAND(bCaps, 1)
If Not b_CTRL then b_CTRL = IsPressed (0x11)
If Not b_CTRL Then Return
Static pipe, idx = 0
Static sLib = "MediaInfo" & (auX64 ? "" : "_i386") & ".dll", _
hLib = DllCall("LoadLibrary", "wstr", COMMANDER_PATH & "\Ini\Tools\Libs\" & sLib, "ptr")
If hLib = 0 Then
Return "Error LoadLibrary " & sLib
EndIf
If FieldIndex = 1 Then
idx = 0
Local hMI = DllCall(sLib & '\MediaInfo_New', "Ptr")
If hMI = 0 Then
Return "MediaInfo_New returned 0"
Endif
If DllCall(sLib & '\MediaInfo_Open', 'ptr', hMI, "wstr", FileName, "uint") <> 1 Then
DllCall(sLib & '\MediaInfo_Delete', "Ptr", hMI)
Return "MediaInfo_Open failed to open file " & FileName
EndIf
DllCall(sLib & '\MediaInfo_Option', 'ptr', hMI, "wstr", "Complete", "wstr", "", "wstr")
If IsPressed(0x10) Then
DllCall(sLib & '\MediaInfo_Option', 'ptr', hMI, "wstr", "Complete", "wstr", "1", "wstr")
EndIf
pipe = DllCall(sLib & '\MediaInfo_Inform', 'ptr', hMI, "uint", 0, "wstr")
DllCall(sLib & '\MediaInfo_Delete', "Ptr", hMI)
If IsPressed (0x5B) Then
idx = 50
Endif
Endif
Return TrimSpaces(StrPart(pipe, auLF, FieldIndex + idx))
EndFunc |
Конечно, не всегда удобно держать подсказку "на замке", но другого варианта для х64 пока нет.
AkulaBig wrote: | Получаются не работают сами кастомные поля в ТС х64? |
Поля работают. Не работает именно подсказка при нажатии клавиш-модификаторов. Можете проверить. Вызовите в х64 стандартную подсказку для любого файла и нажмите CTRL - подсказка просто исчезнет. И это случается только с ТС х64, в 32-битном ТС всё нормально.
AkulaBig wrote: | показалось, что ссылка выше совсем не из этих документов. |
Как-то мало там информации. Я, например, не понял, что именно делает параметр типа "Ptr" в MediaInfo_Open. В доках его вообще нет, хотя я глубоко не разбирался.
Loopback
Если привязать функцию к CapsLock командой SetHotkeyAction /V:20, то как сделать, чтобы эта функции пропускала через себя нажатие этой клавиши? Сейчас она блокируется.
Набрел на SendInput, но разбираться и эксперементировать со структурой INPUT сейчас совсем времени нет. |
|