Автор Тема: [Автоматизация] Как включить/отключить панель Quick Launch (или любую другую) с помощью AutoIt  (Прочитано 11003 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Favorite6233 [?]

  • Новичок
  • *
  • Сообщений: 21
  • Репутация: 5
  • Пол: Мужской
    • Награды
Проблема такая: при установке Win-XP бывает, что надо включить панель быстрого запуска "Quick Launch". После установки Nero 7 появляется панель инструментов "Nero Search", которую хотелось бы выключить, опять же, автоматизировано. Вопрос состоит в том: как это сделать? Ещё хотелось бы узнать, как можно включить или выключить "группировку сходных элементов в панели задач" и автоматическое скрытие панели задач с экрана?

Русское сообщество AutoIt


Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2713
  • Репутация: 1137
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
Favorite6233
Вопрос наверно больше относится к реестру, чем к AutoIt.
Смотри раздел реестра:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop
Параметры: TaskbarWinXP и Toolbars
Но эксплорер читает этот раздел при запуске, а при выходе сохраняет текущее. Так что изменять можно только до запуска или в промежутке перезапуска.
Используй regshot и всегда получишь разницу при изменении реестра.

Оффлайн Favorite6233 [?]

  • Новичок
  • *
  • Сообщений: 21

  • Автор темы
  • Репутация: 5
  • Пол: Мужской
    • Награды
AZJIO  [?]
Цитировать
Смотри раздел реестра:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\DesktopПараметры: TaskbarWinXP и ToolbarsНо эксплорер читает этот раздел при запуске, а при выходе сохраняет текущее. Так что изменять можно только до запуска или в промежутке перезапуска.

О, спасибо. Действительно, когда Nero внедряет свою панель, то она появляется после перезагрузки explorer-a.

На данный момент нашёл способ вот такой:
Код: AutoIt [Выделить]

    $Results = ControlGetPos("","Quick Launch","[Classnn:ToolbarWindow321]")
    If $Results = 0 Then
     ControlClick("","Выполнение приложений","[Class:ToolbarWindow32]","right")
     ControlSend("","Выполнение приложений","[Class:ToolbarWindow32]","{down}{right}{up 2}{enter}")
    EndIf
 


В общем-то устраивает, но возникает вопрос: можно ли как-то в меню, которое открывается по правой кнопке мыши, узнать, в какой строчке что написано? Тогда проблема вообще решилась бы. Потому что сейчас просто наугад выбираю. Замечено, что этот пункт "быстрого запуска" находится в одной и той же позиции меню, поэтому просто на него попадаю и всё.
В идеале было бы, конечно, хорошо анализировать пункты этого меню и соответственно включать или выключать нужные/ненужные.

Alecsis1

  • Гость
Как-то имел дело с похожей задачей, касаемо Quick Launch и др. настроек ПЗ.
Если интересно, вот слегка «причёсанный» вариант, проверен в англоязычной версии с русским MUI.
Код: AutoIt [Выделить]
Opt('MustDeclareVars', 1)
Opt('SendKeyDelay', 250)    ; для наглядности процесса

Local Const $csTAB          = '{Tab}', _        ; клавиша TAB
            $csPlus         = '{NumPadAdd}', _  ; "+" на цифровом блоке (вкл. чекбокс)
            $csMinus        = '{NumPadSub}'     ; "-" на цифровом блоке (выкл. чекбокс)

; если надо — подставить требуемые параметры
; в принципе, более кошерно считывать их
; из чего-то наподобие .INI-файла, тут дело личного вкуса
;
XPSetTaskbarOpt()
Exit

#cs
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Настройки Панели задач
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#ce

Func XPSetTaskbarOpt($bLockTB     = False, _  ; зафиксировать Панель Задач (ПЗ)
                     $bAutoHide   = False, _  ; автоматически прятать ПЗ
                     $bKeepOnTop  = True, _   ; ПЗ поверх всех окон
                     $bGroup      = True, _   ; группировать сходные эл-ты ПЗ
                     $bShowQuick  = True, _   ; показывать Панель бустрого запуска (ПБЗ)
                     $bShowClock  = True, _   ; показывать часики в трее
                     $bHideIcons  = False)    ; прятать неактивные иконки в трее

  ; команда для вызова апплета настройки свойств ПЗ и меню "Пуск"
  ;
  Local Const $csRunTBProp    = 'RunDll32.exe shell32.dll,Options_RunDLL 1'

  ; единый регэксп заголовка окна для английского и русского интерфейса
  ;
  Local Const $csTBPropMain   = '[REGEXPTITLE:Taskbar and Start Menu|Свойства панели задач]'

  ; имя контрола с вкладками свойств собственно ПЗ и пускового меню
  ;
  Local Const $csTB_Tabs      = '[CLASS:SysTabControl32; INSTANCE:1]'

  ; имя контрола кнопки Apply свойств ПЗ
  ;
  Local Const $csBtnApplyTB   = '[CLASS:Button; INSTANCE:13]'

  Local $hWndTB     ; хендл окна настройки свойств ПЗ

  Run($csRunTBProp)                         ; вызов апплета настройки свойств ПЗ
  $hWndTB = WinWait($csTBPropMain)          ; дождаться окна с настройками
  WinActivate($hWndTB)                      ; активировать его
  ControlFocus($hWndTB, '', $csTB_Tabs)     ; фокус -> на панель вкладок
  Send('^{Home}')                           ; выбор левой вкладки ("Свойства ПЗ")

  BlockInput(True)
  XPTaskBar_Set($bLockTB)       ; Фиксация ПЗ?
  XPTaskBar_Set($bAutoHide)     ; Автоматически прятать ПЗ?
  XPTaskBar_Set($bKeepOnTop)    ; Поверх всех окон?
  XPTaskBar_Set($bGroup)        ; Группировать похожие?
  XPTaskBar_Set($bShowQuick)    ; Показывать ПБЗ?
  XPTaskBar_Set($bShowClock)    ; Показывать часики?
  XPTaskBar_Set($bHideIcons)    ; Прятать неактивные иконки в трее?

  ; Может так получиться, что кнопка Apply неактивна (например, запустили
  ; скрипт дважды с одинаковыми параметрами). Тогда нефиг на неё давить :-)
  ;
  If ControlCommand($hWndTB, '', $csBtnApplyTB, 'IsEnabled', '') Then
    ;
    ; Apply доступна, можно смело кликать
    ;
    ControlClick($hWndTB, '', $csBtnApplyTB)
  EndIf

  Send('!{F4}')   ; Finita
  WinWaitClose($hWndTB)
  BlockInput(False)
EndFunc

Func XPTaskBar_Set($bKey)
  Send($csTAB)            ; установиться на очередной чекбокс
  If $bKey Then
      Send($csPlus)       ; true  -> включить
    Else
      Send($csMinus)      ; false -> выключить
  EndIf
EndFunc
 

P.S. Насчёт отключения панели Nero Search ничего сказать не могу, не дружу с этим продуктом

Русское сообщество AutoIt


Оффлайн Favorite6233 [?]

  • Новичок
  • *
  • Сообщений: 21

  • Автор темы
  • Репутация: 5
  • Пол: Мужской
    • Награды
Alecsis1
О, отдельное спасибо за команду:
RunDll32.exe shell32.dll,Options_RunDLL 1Была мысль вызывать это окно, но быстро не нашёл, как это делается. Заодно и другие параметры можно поменять.

Alecsis1

  • Гость
Sorry, забыл откомментить существенную тонкость:
(нажмите для показа/скрытия)

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2316
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Alecsis1  [?]
Цитировать
последовательность вызовов XPTaskBar_Set($bXXX) должна в точности соотвествовать последовательности чекбоксов в окне настройки ПЗ, иначе поимеем феерический облом!
Здесь не нужно использовать Send. Так будет должно работать и в том случае, если окно не активно или закрыто другим.
Код: AutoIt [Выделить]
Run('RunDll32.exe shell32.dll,Options_RunDLL 1')

$hWin = WinWait('[Title:Свойства панели задач и меню "Пуск"; Class:#32770]', '', 5) ;у меня такой заголовок
If Not $hWin Then Exit -13
;меняем на противоположные состояния
For $i = 1 To 7
    $iCheck = ControlCommand($hWin, '', '[CLASS:Button; INSTANCE:' & $i & ']', 'IsChecked', '')
    If $iCheck Then
        $sCommand = 'UnCheck'
    Else
        $sCommand = 'Check'
    EndIf
    ControlCommand($hWin, '', '[CLASS:Button; INSTANCE:' & $i & ']', $sCommand, '')
    Sleep(1000)
Next
;возвращаем обратно.
For $i = 1 To 7
    $iCheck = ControlCommand($hWin, '', '[CLASS:Button; INSTANCE:' & $i & ']', 'IsChecked', '')
    If $iCheck Then
        $sCommand = 'UnCheck'
    Else
        $sCommand = 'Check'
    EndIf
    ControlCommand($hWin, '', '[CLASS:Button; INSTANCE:' & $i & ']', $sCommand, '')
    Sleep(1000)
Next

ControlSend($hWin, '', '[CLASS:SysTabControl32; INSTANCE:1]', '^{TAB}')
;меняем на противоположные состояния
$iCheck = ControlCommand($hWin, '', '[CLASS:Button; INSTANCE:1]', 'IsChecked', '')
If $iCheck Then
    $sCommand = 'Check'
Else
    $sCommand = 'UnCheck'
EndIf
ControlCommand($hWin, '', '[CLASS:Button; INSTANCE:2]', $sCommand, '')
Sleep(2000)
;возвращаем обратно.
$iCheck = ControlCommand($hWin, '', '[CLASS:Button; INSTANCE:2]', 'IsChecked', '')
If $iCheck Then
    $sCommand = 'Check'
Else
    $sCommand = 'UnCheck'
EndIf
ControlCommand($hWin, '', '[CLASS:Button; INSTANCE:1]', $sCommand, '')


Оффлайн Favorite6233 [?]

  • Новичок
  • *
  • Сообщений: 21

  • Автор темы
  • Репутация: 5
  • Пол: Мужской
    • Награды
Код: AutoIt [Выделить]
$iCheck = ControlCommand($hWin, '', '[CLASS:Button; INSTANCE:' & $i & ']', 'IsChecked', '')
 

Скажите, а CLASS:Button - откуда это стало известно? AutoIt Windows Info этого не показывает. И INSTANCE у элементов тоже показывает совсем не то, которое используется в программе, вернее совсем не показывает.

Русское сообщество AutoIt


Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2316
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Favorite6233  [?]
Цитировать
AutoIt Windows Info этого не показывает
Используйте Control Viewer или AutoIt Windows Info версии 3.3.2.0

Оффлайн sov44 [?]

  • Новичок
  • *
  • Сообщений: 22
  • Репутация: 0
    • Награды
Нашел скрипт на oszone для создания QL. К сожалению скрипт не всегда отрабатывает. OC - Windows 7 Home Premium. Просьба подкорректировать скрип.
Код: AutoIt [Выделить]
OPT("TrayIconDebug", 1)
Opt("WinDetectHiddenText", 0)
Opt("WinTextMatchMode", 2)
Opt("TrayIconHide", 0)
HotKeySet("{F1}", "OnF1")
Sleep(100)
If $CMDLINE[0] Then
    For $I = 1 To $CMDLINE[0]
        Switch $CMDLINE[$I]
            Case "/?"
                MsgBox(262144, "Help", "Switchless Commands: /NOPIN /TGL /TSI /AUTOTRAY /LBS3 /EXPLORER")
                Exit
            Case "/NOPIN"
                RegWrite("HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer", "TaskbarNoPinnedList", "REG_DWORD", "1")
            Case "/TGL"
                RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "TaskbarGlomLevel", "REG_DWORD", "2")
            Case "/TSI"
                RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "TaskbarSmallIcons", "REG_DWORD", "1")
            Case "/AUTOTRAY"
                RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer", "EnableAutoTray", "REG_DWORD", "0")
            Case "/LBS3"
                RegWrite("HKEY_CURRENT_USER\Software\Microsoft\CTF\LangBar", "ShowStatus", "REG_DWORD", "3")
            Case "/EXPLORER"
                ProcessClose("explorer.exe")
        EndSwitch
    Next
EndIf
If Not ProcessWait("explorer.exe", 5) Then Run(@WindowsDir & "\explorer.exe")
WinWait("[CLASS:Shell_TrayWnd]")
Sleep(2000)
TrayTip("Quick Launch Classic 7", "Я работаю - ничего не трогай!!!", 30, 2)
MsgBox(4095, "Running.", "Quick Launch Classic 7", 1)
Sleep(10000)
$TASKBARSIZEMOVE = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "TaskbarSizeMove")
If $TASKBARSIZEMOVE = 1 Then
    Do
        ProcessClose("explorer.exe")
    Until Not ProcessExists("explorer.exe")
    RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "TaskbarSizeMove", "REG_DWORD", "0")
    If Not ProcessWait("explorer.exe", 5) Then Run(@WindowsDir & "\explorer.exe")
    WinWait("[CLASS:Shell_TrayWnd]")
    Sleep(2000)
EndIf
$TRAY = ControlGetPos("[CLASS:Shell_TrayWnd]", "", "[CLASS:CiceroUIWndFrame; TEXT:TF_FloatingLangBar_WndTitle]")
If Not @error Then
    Call("_DISABLELANGBAR")
    $QLA = WinGetText("[CLASS:Shell_TrayWnd]", "")
    If StringInStr($QLA, "Quick Launch") Then
        MouseClick("right", 0, @DesktopHeight)
        Send("{DOWN}{RIGHT}{UP 2}{ENTER}")
    EndIf
EndIf
$QLA = WinGetText("[CLASS:Shell_TrayWnd]", "")
If StringInStr($QLA, "Quick Launch") Then
    MouseClick("right", 0, @DesktopHeight)
    Send("{DOWN}{RIGHT}{UP 2}{ENTER}")
EndIf
$CLEARDESKTOP = ControlGetPos("[CLASS:Shell_TrayWnd]", "", "[CLASS:TrayShowDesktopButtonWClass]")
$TASKBAR_CENTERHEIGHT = @DesktopHeight - ($CLEARDESKTOP[3] / 2)
MouseClick("left", $CLEARDESKTOP[0] - 0, $TASKBAR_CENTERHEIGHT, 1, 10)
_TOGGLETASKBARLOCK()
$TRAY = ControlGetPos("[CLASS:Shell_TrayWnd]", "", "[CLASS:CiceroUIWndFrame; TEXT:TF_FloatingLangBar_WndTitle]")
If Not @error Then
    Call("_DISABLELANGBAR")
EndIf
$PATH = "Shell:Quick Launch"
$TOOLBARTEXT = "{DOWN 3}{ENTER}"
$TOOLBARTITLE = "{DOWN 4}{ENTER}"
$TRAY = ControlGetPos("[CLASS:Shell_TrayWnd]", "", "[CLASS:ReBarWindow32]")
$LANG = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop", "PreferredUILanguages")
If @error = 0 Then
Else
    $LANG = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\MuiCached", "MachinePreferredUILanguages")
EndIf
Select
    Case $LANG = "en-US"
        $TITLE = "New Toolbar - Choose a folder"
        $PROGRAMS = "[CLASS:MSTaskListWClass; TEXT:Running applications]"
    Case $LANG = "fr-FR"
        $TITLE = "Nouvelle barre dРІР‚в„ўoutilsР’В -Р’В Choisir un dossier"
        $PROGRAMS = "[CLASS:MSTaskListWClass; TEXT:Applications en cours dРІР‚в„ўexР в„–cution]"
    Case $LANG = "nl-NL"
        $TITLE = "Nieuwe werkbalk - Selecteer een map"
        $PROGRAMS = "[CLASS:MSTaskListWClass; TEXT:Actieve toepassingen]"
    Case $LANG = "da-DK"
        $TITLE = "Ny vР В¶rktС€jslinje - vР В¶lg en mappe"
        $PROGRAMS = "[CLASS:MSTaskListWClass; TEXT:Programmer, der kС€rer]"
    Case $LANG = "se-SE"
        $TITLE = "Nytt verktygsfР Т‘lt - vР Т‘lj en mapp"
        $PROGRAMS = "[CLASS:MSTaskListWClass; TEXT:Program som kС†rs]"
    Case $LANG = "nb-NO"
        $TITLE = "Ny verktС€ylinje - velg en mappe"
        $PROGRAMS = "[CLASS:MSTaskListWClass; TEXT:KjС€rer programmer]"
    Case $LANG = "de-DE"
        $TITLE = "Neue Symbolleiste - Ordner auswР Т‘hlen"
        $PROGRAMS = "[CLASS:MSTaskListWClass; TEXT:AusgefРЎРЉhrte Anwendungen]"
    Case $LANG = "ru-RU"
        $TITLE = "Новая панель инструментов - Выбор папки"
        $PROGRAMS = "[CLASS:MSTaskListWClass; TEXT:Выполнение приложений]"
EndSelect
_TASKTOOLBARWIN7("Shell:Quick Launch")
While 1
    Sleep(100)
    $QUICKLAUNCH = ControlGetPos("[CLASS:Shell_TrayWnd]", "", "[CLASS:ToolbarWindow32; TEXT:Quick Launch]")
    If Not @error Then ExitLoop
WEnd
$TASKBAR_CENTERHEIGHT = @DesktopHeight - ($QUICKLAUNCH[3] / 2)
Sleep(100)
MouseClick("right", $QUICKLAUNCH[0] - 5, $TASKBAR_CENTERHEIGHT, 1, 0)
Send($TOOLBARTEXT)
Sleep(100)
$TASKBAR_CENTERHEIGHT = @DesktopHeight - ($QUICKLAUNCH[3] / 2)
Sleep(100)
MouseClick("right", $QUICKLAUNCH[0] - 5, $TASKBAR_CENTERHEIGHT, 1, 0)
Send($TOOLBARTITLE)
Sleep(1000)
$QUICKLAUNCH = ControlGetPos("[CLASS:Shell_TrayWnd]", "", "[CLASS:ToolbarWindow32; TEXT:Quick Launch]")
MouseClickDrag("left", $QUICKLAUNCH[0] - 10, $TASKBAR_CENTERHEIGHT, $TRAY[0] + 5, $TASKBAR_CENTERHEIGHT, 40)
$CURRENTAPPS = ControlGetPos("[CLASS:Shell_TrayWnd]", "", $PROGRAMS)
MouseClickDrag("left", $CURRENTAPPS[0] - 10, $TASKBAR_CENTERHEIGHT, $TRAY[0] + 150, $TASKBAR_CENTERHEIGHT, 40)
_TOGGLETASKBARLOCK()
$CLEARDESKTOP = ControlGetPos("[CLASS:Shell_TrayWnd]", "", "[CLASS:TrayShowDesktopButtonWClass]")
$TASKBAR_CENTERHEIGHT = @DesktopHeight - ($CLEARDESKTOP[3] / 2)
MouseClick("left", $CLEARDESKTOP[0] - 0, $TASKBAR_CENTERHEIGHT, 1, 10)

Func _DISABLELANGBAR()
    MouseClick("right", 0, @DesktopHeight)
    Send("{DOWN}{RIGHT}{UP 2}{ENTER}")
EndFunc


Func _TASKTOOLBARWIN7($PATH)
    MouseClick("right", 0, @DesktopHeight)
    Send("{DOWN}{RIGHT}{UP}{ENTER}")
    WinActive($TITLE)
    Sleep(1000)
    ControlSetText($TITLE, "", "Edit1", $PATH)
    Sleep(1000)
    ControlClick($TITLE, "", "Button1")
EndFunc


Func _TOGGLETASKBARLOCK()
    MouseClick("right", 0, @DesktopHeight)
    Send("{UP 2}{ENTER}")
EndFunc

BlockInput(1)
$MP = MouseGetPos()
$WP = WinGetPos("TF_FloatingLangBar_WndTitle")
MouseClick("left", $WP[0] + $WP[2] - 10, $WP[1] + 10, 1, 0)
MouseMove($MP[0], $MP[1], 0)
BlockInput(0)
FileDelete(@AppDataDir & "\Microsoft\Internet Explorer\Quick Launch\Shows Desktop.lnk")
FileDelete(@AppDataDir & "\Microsoft\Internet Explorer\Quick Launch\Window Switcher.lnk")
DirRemove(@AppDataDir & "\Microsoft\Internet Explorer\Quick Launch\User Pinned", 1)
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband", "Favorites", "REG_BINARY", "ff")
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband", "FavoritesResolve")
$LANGBAR = RegRead("HKEY_CURRENT_USER\Software\Microsoft\CTF\LangBar", "ShowStatus")
Select
    Case $LANGBAR = "0"
        RegWrite("HKEY_CURRENT_USER\Software\Microsoft\CTF\LangBar", "ShowStatus", "REG_DWORD", "4")
EndSelect

Func ONF1()
    Exit
EndFunc

TrayTip("Quick Launch Classic 7", "Наслаждайся!", 30, 2)
MsgBox(4095, "Running.", "Quick Launch Classic 7", 1)
Sleep(2000)

« Последнее редактирование: Февраль 16, 2013, 17:14:14 от sov44 »

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
14 Ответов
58141 Просмотров
Последний ответ Апрель 28, 2012, 12:36:49
от CreatoR
0 Ответов
3069 Просмотров
Последний ответ Ноябрь 10, 2010, 21:40:21
от Bodya
4 Ответов
7985 Просмотров
Последний ответ Июнь 08, 2011, 11:13:39
от DIS
15 Ответов
8889 Просмотров
Последний ответ Июль 21, 2011, 05:55:37
от gregaz
5 Ответов
4268 Просмотров
Последний ответ Август 22, 2011, 18:26:09
от Zaramot
2 Ответов
1549 Просмотров
Последний ответ Март 26, 2015, 14:36:37
от pvnn
2 Ответов
1220 Просмотров
Последний ответ Ноябрь 10, 2015, 01:07:51
от CreatoR
1 Ответов
1737 Просмотров
Последний ответ Февраль 07, 2016, 00:09:55
от Garrett
2 Ответов
532 Просмотров
Последний ответ Март 21, 2017, 11:21:39
от Stalevar
1 Ответов
583 Просмотров
Последний ответ Октябрь 24, 2017, 11:34:23
от joiner