Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Плагины для Total Commander (часть 3)

Модерирует : gyra, Maz

Maz (29-03-2022 21:29): Плагины для Total Commander (часть 4)|  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
;Получить свойства PDF с помощью плагина xPDFSearch
;
; Путь к плагину указывается в 23й строке (Local $sPlugin = ""). Писать только xPDFSearch.wdx,
;   можно с переменными окружения
; Разрядность AutoIt должна соответствовать разрядности плагина! Скрипт сам проверит и
;   если х64, то попытается использовать "*.wdx64"
;
; Запуск: AutoIt3.exe script.au3 %P%N
 
#NoTrayIcon
 
Opt('WinWaitDelay', 100)
 
Global Const $MAX_BUFFER_SIZE = 65534
Global Const $ft_string = 8
Global Const $ft_stringw = 11
Global Const $ft_nosuchfield = -1
Global Const $ft_fileerror = -2
Global Const $ft_fieldempty = -3
Global Const $tagContentDefaultParamStruct = "int;dword;dword;char[256]"
 
Local $hPlugin, $sTitle, $sSub, $sAut, $sApp, $sProd, $sMsg, $iErr = 0
Local $sPlugin = "%COMMANDER_PATH%\Plugins\wdx\xPDFSearch\xPDFSearch.wdx"
 
;Проверяем параметры запуска
If $CmdLine[0] <> 1 Then
    MsgBox(48 + 4096, @ScriptName, 'Проверьте параметры запуска!')
    Exit
EndIf
;Ищем плагин xPDFSearch
$sPlugin = _WinAPI_ExpandEnvironmentStrings($sPlugin)
If @AutoItX64 Then $sPlugin = $sPlugin & '64'
If Not FileExists($sPlugin) Then
    MsgBox(48 + 4096, @ScriptName, 'wdx-плагин xPDFSearch не найден, выходим.')
    Exit
EndIf
;Получаем инфо
$hPlugin = _PHWDXPluginOpen($sPlugin)
$sTitle = __PHWDXGetFieldValue($hPlugin, $CmdLine[1], 0, 0)
If @error Then $iErr += 1
$sSub = __PHWDXGetFieldValue($hPlugin, $CmdLine[1], 1, 0)
If @error Then $iErr += 1
$sAut = __PHWDXGetFieldValue($hPlugin, $CmdLine[1], 3, 0)
If @error Then $iErr += 1
$sApp = __PHWDXGetFieldValue($hPlugin, $CmdLine[1], 4, 0)
If @error Then $iErr += 1
$sProd = __PHWDXGetFieldValue($hPlugin, $CmdLine[1], 5, 0)
If @error Then $iErr += 1
_PHWDXPluginClose($hPlugin)
If $iErr > 0 Then
    MsgBox(48 + 4096, @ScriptName, 'Ошибка получения значений полей wdx-плагина, выходим.')
Else
    $sMsg = 'Заголовок: ' & $sTitle & @CRLF & _
            'Тема: ' & $sSub & @CRLF & _
            'Автор: ' & $sAut & @CRLF & _
            'Приложение: ' & $sApp & @CRLF & _
            'Производитель PDF: ' & $sProd & @CRLF & @CRLF & _
            'Скопировать в буфер обмена Приложение и Производитель PDF?'
    If MsgBox(4 + 256 + 4096, @ScriptName, $sMsg) = 6 Then ClipPut($sApp & @CRLF & $sProd)
EndIf
 
#Region ;UDF
;PluginHelpers.au3 (Loopback)
Func _PHWDXPluginOpen($sPlugin)
    Local $hPlugin = DllOpen($sPlugin)
    If @error Then Return SetError(1, 0, "")
    Local $pDPS = DllStructCreate($tagContentDefaultParamStruct)
    DllStructSetData($pDPS, 1, 272)
    DllStructSetData($pDPS, 2, 10)
    DllStructSetData($pDPS, 3, 2)
    DllStructSetData($pDPS, 4, EnvGet("COMMANDER_PATH") & "\contplug.ini")
    DllCall($hPlugin, "none", "ContentSetDefaultParams", "ptr", DllStructGetPtr($pDPS))
    Return $hPlugin
EndFunc   ;==>_PHWDXPluginOpen
 
Func _PHWDXPluginClose($hPlugin)
    DllCall($hPlugin, "none", "ContentPluginUnloading")
    DllClose($hPlugin)
EndFunc   ;==>_PHWDXPluginClose
 
Func __PHWDXGetFieldValue($vPlugin, $sFileName, $nFieldIdx, $nUnitIdx)
    Local $pBuffer = DllStructCreate("byte[" & $MAX_BUFFER_SIZE & "]")
    $aRet = DllCall($vPlugin, "int", "ContentGetValueW", "wstr", $sFileName, "int", $nFieldIdx, "int", $nUnitIdx, "ptr", DllStructGetPtr($pBuffer), "int", $MAX_BUFFER_SIZE, "int", 0)
    If @error = 3 Then $aRet = DllCall($vPlugin, "int", "ContentGetValue", "str", $sFileName, "int", $nFieldIdx, "int", $nUnitIdx, "ptr", DllStructGetPtr($pBuffer), "int", $MAX_BUFFER_SIZE, "int", 0)
    If @error Then Return SetError(1, 0, "")
    Switch $aRet[0]
        Case $ft_string
            $pValue = DllStructCreate("char[" & $MAX_BUFFER_SIZE & "]", DllStructGetPtr($pBuffer))
        Case $ft_stringw
            $pValue = DllStructCreate("wchar[" & $MAX_BUFFER_SIZE / 2 & "]", DllStructGetPtr($pBuffer))
        Case $ft_nosuchfield, $ft_fileerror, $ft_fieldempty
            Return SetError(2, 0, "")
        Case Else
            Return SetError(3, 0, "")
    EndSwitch
    Return DllStructGetData($pValue, 1)
EndFunc   ;==>__PHWDXGetFieldValue
 
;WinAPI.au3
Func _WinAPI_ExpandEnvironmentStrings($sString)
    Local $aResult = DllCall("kernel32.dll", "dword", "ExpandEnvironmentStringsW", "wstr", $sString, "wstr", "", "dword", 4096)
    If @error Then Return SetError(@error, @extended, "")
    Return $aResult[2]
EndFunc   ;==>_WinAPI_ExpandEnvironmentStrings
#EndRegion ;UDF

Всего записей: 6462 | Зарегистр. 28-01-2008 | Отправлено: 00:40 08-12-2018 | Исправлено: Skif_off, 16:30 09-12-2018
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Плагины для Total Commander (часть 3)
Maz (29-03-2022 21:29): Плагины для Total Commander (часть 4)|


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru