Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Работа с файлами панелей инструментов тотал коммндера

Ответить
Настройки темы
[решено] Работа с файлами панелей инструментов тотал коммндера

Старожил


Сообщения: 156
Благодарности: 1


Конфигурация

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip 009_TV.zip
(811 байт, 5 просмотров)
Привет участникам форума!

Имеются файлы примерно такого содержания:
Код: Выделить весь код
[Buttonbar]
Buttoncount=15
button1=Wcmicons.dll,385
cmd1=%COMMANDER_PATH%\Programs\Players\VLC\Vlc.exe
iconic1=0
menu1=Открыть файлы/папки в VLC
param1=%P%S
button2=Wcmicons.dll,391
cmd2=%COMMANDER_PATH%\Programs\Players\Media_Player_Classic\MPlayerc.exe
iconic2=0
menu2=Открыть файл в MPlayer Classic
param2=%P%N
button3=
iconic3=0
button4=Wcmicons.dll,388
cmd4=%COMMANDER_PATH%\Programs\Players\Light_Alloy\LA.exe
iconic4=0
menu4=Открыть файлы/папки в Light Alloy
param4=%P%S
button5=Wcmicons.dll,389
cmd5=%COMMANDER_PATH%\Programs\Players\JetAudio\JetAudioPortable.exe
iconic5=0
menu5=Открыть файл/папку в JetAudio
param5=%P%N
button6=Wcmicons.dll,1757
cmd6=%COMMANDER_PATH%\Plugins\wlx\AmpView\AmpView.exe
iconic6=0
menu6=Открыть файлы в AmpView
param6=%P%S
button7=Wcmicons.dll,1742
iconic7=0
iconic8=0
button9=Wcmicons.dll,395
cmd9=%COMMANDER_PATH%\Programs\Players\Flash_Movie_Player\fmp.exe
menu9=Открыть файл в Flash Movie Player
param9=%P%N
button10=Wcmicons.dll,1283
cmd10=%COMMANDER_PATH%\Programs\Players\FlashPlayer\FlashPlayer.exe
menu10=Открыть файл в Flash Player
param10=%P%N
button11=Wcmicons.dll,1284
cmd11=%COMMANDER_PATH%\Programs\Players\Flash_Player_Pro\Flash_Player_Pro.exe
menu11=Открыть файл в Flash Player Pro
param11=%P%N
button12=Wcmicons.dll,402
cmd12=%COMMANDER_PATH%\Programs\Graphics\IrfanView\Plugins\IV_Player.exe
iconic12=0
menu12=Открыть файл в плеере IrfanView
param12=%P%N
button13=Wcmicons.dll,398
cmd13=%COMMANDER_PATH%\Programs\Graphics\XnView\xnview.exe
menu13=Открыть файл в плеере Xn View
param13=%P%N
button14=Wcmicons.dll,979
cmd14=%COMMANDER_PATH%\Programs\Players\KMPlayer\KMPlayerPortable.exe
menu14=Открыть файлы в KMPlayer
param14=%P%S
button15=Wcmicons.dll,396
cmd15=%COMMANDER_PATH%\Programs\Audio\Teen_Spirit\jaangle.exe
param15=%P%N
menu15=Открыть файл в плеере TeenSpirit
iconic15=0
iconic13=0
iconic9=0
cmd7=%COMMANDER_PATH%\Programs\Players\Ubi\UbiquitousPlayer.exe
param7=
path7=
menu7=Плеер Ubiquitous
Надо - иметь диалог выбора файла, чтобы при открытии открывался файл в текстовом поле (рабочий пример прилагаю) и по нажатию кнопки чтобы проходила конвертация к виду:
Код: Выделить весь код
menu1#!#button1#!#cmd1#!#param1
То есть на выходе надо получить такую же строку, как я писал в этой теме http://forum.oszone.net/thread-267794.html
То есть
Код: Выделить весь код
MENUITEM menu1#!#button1#!#cmd1#!#param1
Button1 - зависит от условия, есть ли в строке wcmicons.dll

Рабочий пример
Код: Выделить весь код
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
#Region ### START Koda GUI section ###
$Form1 = GUICreate("Form1", 813, 453, 435, 124)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 409, 401)
GUICtrlSetData(-1, "")
$Edit2 = GUICtrlCreateEdit("", 424, 8, 385, 401)
GUICtrlSetData(-1, "")
$Button1 = GUICtrlCreateButton("Button1", 8, 424, 113, 25)
$Button2 = GUICtrlCreateButton("Button2", 320, 424, 193, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
Case $Button1
_FileOpen()
Case $Button2
_Convert()
    EndSwitch
WEnd

Func _FileOpen()
  $h_file=FileOpenDialog ( "Открыть bar файл", @ScriptDir, "Файлы панелей Total Commander (*.bar)")
  $h_fileread=FileRead($h_file)
  GUICtrlSetData ($Edit1,$h_fileread)
EndFunc

Func _Convert()

EndFunc
Bar файл для экспериментов в архиве в прикрепленном файле. Может, что забыл уточнить, хотя вроде все

Отправлено: 15:22, 14-09-2013

 

Старожил


Сообщения: 156
Благодарности: 1

Профиль | Отправить PM | Цитировать


Creat0R, после замены все ок!

Отправлено: 18:52, 29-09-2013 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 156
Благодарности: 1

Профиль | Отправить PM | Цитировать


Выручайте, обнаружился мой косяк. Нужно еще одно условие к данной функции. Итак , вкратце. Отрезок функции такой
Код: Выделить весь код
Func _ConvertBarFile()
If GUICtrlRead($Edit1)='' Then
MsgBox(262144+48, "Ошибка", "В текстовом поле нет кода для конвертирования")
Return
EndIf
$Config = Int(IniRead($INICONV, 'Setting', 'Config', 1))
Local $sMenuHeader="M"
If $Config=1 Then
$sMenuHeader="MENUITEM"
EndIf
Local $sInStrCond="Wcmicons.dll"
    Local $sRead = GUICtrlRead($Edit1)
    Local $iCount = Int(_IniString_Read($sRead, 'Buttonbar', 'buttoncount', 0))

    Local $sItems = ''

    For $i = 1 To $iCount
        Dim $aItem[4] = _
            [ _
                _IniString_Read($sRead, 'Buttonbar', 'menu' & $i, ''), _ ;Menu
                _IniString_Read($sRead, 'Buttonbar', 'button' & $i, ''), _ ;Button
                _IniString_Read($sRead, 'Buttonbar', 'cmd' & $i, ''), _ ;Cmd
                _IniString_Read($sRead, 'Buttonbar', 'param' & $i, '') _ ;Param
            ]

        $sLine = $sMenuHeader & ' '

        For $j = 0 To 3
             If $j = 1 And StringInStr($aItem[$j], $sInStrCond) Then
                 $aItem[$j] = StringRegExpReplace($aItem[$j], '.*?(-?\d+)', '\1')
                 Endif
Идет проверка на условие наличия wcmicons.dll в строке и обрезается все, кроме номера иконки.
Если в строке нет wcmicons.dll , то строка должна браться полностью. Но есть проблема - в этом случае в конец строки надо добавить ",0" ( запятую с нулем, без кавычек)
Пробовал так, получается чепуха - он к номеру дописывает еще запятую с нулем
Код: Выделить весь код
For $j = 0 To 3
             If $j = 1 And StringInStr($aItem[$j], $sInStrCond) Then
                 $aItem[$j] = StringRegExpReplace($aItem[$j], '.*?(-?\d+)', '\1')
 Else
                $aItem[$j] = $aItem[$j]&",0"
            EndIf
В общем надо
-если строка с путем к файлу иконки содержит wcmicons.dll, то брать только номер иконки
-если эта же строка с путем не содержит wcmicons.dll, то брать путь полностью, дописывая ",0" в конце этой строки

Отправлено: 20:03, 04-10-2013 | #22


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата eus_deus:
Пробовал так, получается чепуха - он к номеру дописывает еще запятую с нулем »
Так разве не это и нужно?

Цитата eus_deus:
брать путь полностью, дописывая ",0" в конце этой строки »


Или имеется в виду что нужно обрезать у строки существующий номер, и вместо него подставлять 0?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 21:47, 05-10-2013 | #23


Старожил


Сообщения: 156
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Так разве не это и нужно? »
нужно - если wcmicons.dll, то обрезать до номера - это есть
а если другой exe,icl,dll - то писать полное имя с добавлением ",0"

Отправлено: 21:52, 05-10-2013 | #24


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата eus_deus:
нужно - если wcmicons.dll, то обрезать до номера - это есть
а если другой exe,icl,dll - то писать полное имя с добавлением ",0" »
Ну так оно так и работает с последним изменением выше.

Цитирую ещё раз:
Цитата eus_deus:
Пробовал так, получается чепуха - он к номеру дописывает еще запятую с нулем »
Ведь это же и требуется.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 22:20, 05-10-2013 | #25


Старожил


Сообщения: 156
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
он к номеру дописывает еще запятую с нулем »
к номеру wcmicons ноль дописывать не надо
Цитата Creat0R:
Ну так оно так и работает с последним изменением выше »
да, оно пишет имя полностью, но без нуля

Отправлено: 22:49, 05-10-2013 | #26


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата eus_deus:
оно пишет имя полностью, но без нуля »
Только что перепроверил, всё происходит так как нужно, там где есть wcmicons.dll извлекается только номер, а где нет - добавляется запятая с нулём.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:38, 05-10-2013 | #27


Старожил


Сообщения: 156
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Только что перепроверил, всё происходит так как нужно, там где есть wcmicons.dll извлекается только номер, а где нет - добавляется запятая с нулём. »
Вы имели в виду это код?
Цитата eus_deus:
For $j = 0 To 3
If $j = 1 And StringInStr($aItem[$j], $sInStrCond) Then
$aItem[$j] = StringRegExpReplace($aItem[$j], '.*?(-?\d+)', '\1')
Else
$aItem[$j] = $aItem[$j]&",0"
EndIf »
Его работа ниже. Это не то, что нужно

Код: Выделить весь код
MENUITEM Просмотр эскизов - открывается файл под курсором,0#!#1317#!#%COMMANDER_PATH%\BAR\044_Viiewers.bar,0#!#,0
MENUITEM ,0#!#,0#!#,0#!#,0
MENUITEM Панель специальных инструментов TC Image,0#!#1243#!#%COMMANDER_PATH%\Bar\028_Additional_Tools.bar,0#!#,0
MENUITEM Инструменты для работы с фото,0#!#1395#!#%COMMANDER_PATH%\Bar\258_Photoinstrument.bar,0#!#,0
MENUITEM Мои инструменты,0#!#2#!#%COMMANDER_PATH%\MENUIMG.exe,0#!#%Z%%COMMANDER_PATH%%\BAR\260_my_bar.bar||#podarok||$Мои~~инструменты||&v_podarok!!Частые~~программы,0
MENUITEM Программирование,0#!#53#!#%COMMANDER_PATH%\MENUIMG.exe,0#!#%Z%%COMMANDER_PATH%%\BAR\261_programming.bar||#RED||$Программирование,0
MENUITEM Запуск моих программ,0#!#%COMMANDER_PATH%\TCIMG.exe,0#!#%COMMANDER_PATH%\TCIMG.exe,0#!#tcimg=$tmtm_StartMyPrograms,0
MENUITEM Закачать по ссылке с буфера,0#!#891#!#%COMMANDER_PATH%\TCIMG.exe,0#!#downl="C:\Users\asmadeus\Downloads\Total\"!!1||cliplist,0
MENUITEM ,0#!#,0#!#-2,0#!#,0
MENUITEM Панель редактирования треков,0#!#2232#!#%COMMANDER_PATH%\BAR\229_Edit_Tracks.bar,0#!#,0
MENUITEM ,0#!#,0#!#,0#!#,0
MENUITEM Информация о медиофайлах и Настройка кодеков,0#!#41#!#%COMMANDER_PATH%\BAR\130_Audio_1.bar,0#!#,0
MENUITEM Редактирование тегов и Аудио утилиты,0#!#42#!#%COMMANDER_PATH%\BAR\131_Audio_2.bar,0#!#,0
MENUITEM Аудио Редакторы,0#!#605#!#%COMMANDER_PATH%\BAR\132_Audio_3.bar,0#!#,0
MENUITEM Регулировка системного звука,0#!#1611#!#%COMMANDER_PATH%\BAR\133_Audio_4.bar,0#!#,0
MENUITEM Программы для просмотра телевидения и прослушивания радио,0#!#406#!#%COMMANDER_PATH%\BAR\009_TV.bar,0#!#,0
MENUITEM ,0#!#,0#!#,0#!#,0

Отправлено: 20:32, 06-10-2013 | #28


Старожил


Сообщения: 156
Благодарности: 1

Профиль | Отправить PM | Цитировать


надеюсь, вопрос снят окончательно. методом проб и ошибок заработало так ( участок, который правился):
Код: Выделить весь код
For $j = 0 To 3
             If $j = 1 And StringInStr($aItem[$j], $sInStrCond) Then
                 $aItem[$j] = StringRegExpReplace($aItem[$j], '.*?(-?\d+)', '\1')
                 ElseIf $j = 1 and NOT StringInStr($aItem[$j], $sInStrCond)then
                  $aItem[$j]  =$aItem[$j]&',0'
            EndIf

Отправлено: 21:00, 06-10-2013 | #29


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата eus_deus:
надеюсь, вопрос снят окончательно. методом проб и ошибок заработало так »
Отлично, учимся медитировать над кодом .

Только во втором условии And Not... не нужно, достаточно просто проверять что $j = 1.
А ещё лучше, сделать так:

Код: Выделить весь код
	For $j = 0 To 3
            If $j = 1 Then
                If StringInStr($aItem[$j], $sInStrCond) Then
                    $aItem[$j] = StringRegExpReplace($aItem[$j], '.*?(-?\d+)', '\1')
                Else
                    $aItem[$j] &= ',0'
                EndIf
            EndIf

            ...
        Next

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 21:49, 06-10-2013 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Работа с файлами панелей инструментов тотал коммндера

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Работа с файлами D@n1k007 Программирование и базы данных 2 19-06-2010 16:06
Система - Встраивание кнопок или панелей инструментов в Проводник (Explorer) greenzed Программное обеспечение Windows 1 12-01-2009 12:00
Интерфейс - Пропала одна из панелей инструментов, что находитса на панели задач Gensun Microsoft Windows 2000/XP 9 15-02-2008 17:11
Работа с файлами ramo Программирование в *nix 5 23-04-2007 12:33
[решено] GPO - Запрет закрытия панелей инструментов molen Microsoft Windows NT/2000/2003 2 24-11-2005 10:19




 
Переход