Что нового

Отображать панель задач поверх остальных окон

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Версия AutoIt: 3.3.8.1
Описание: пожалуйста, у кого есть время, возможность, желание - мне очень сильно нужен стартер start.exe на Autoit для ярлыка на рабочем столе Конфигуратор базы ТСРВ-024 М (1024x600).lnk.
Автоматизация действий:
1) выполняем действие - один раз быстро щёлкнуть правой кнопкой мышки по Панель задач -> в появившемся меню один раз быстро щёлкнуть левой кнопкой мышки по строке Свойства -> в появившемся окне с заголовком Свойства панели задач и меню "Пуск" убираем птичку Отображать панель задач поверх остальных окон, нажимаем кнопку ОК.
2) запускаем программу Конфигуратор базы ТСРВ-024 М (1024x600).lnk, после запуска программы Конфигуратор базы ТСРВ-024 М (1024x600).lnk она запускает файл C:\Program Files\Vzljot\VzljotMasterViewer\VzljotMasterViewer.exe с такими параметрами
"C:\Program Files\Vzljot\VzljotMasterViewer\VzljotMasterViewer.exe" "C:\Program Files\Vzljot\KB TSRV-024 M (1024x600)\BASE.vmpv"
3) работаем в программе Конфигуратор базы ТСРВ-024 М (1024x600)
4) после закрытия программы Конфигуратор базы ТСРВ-024 М (1024x600) (это если в диспетчере задач нет процесса VzljotMasterViewer.exe) выполняем действие - один раз быстро щёлкнуть правой кнопкой мышки по Панель задач -> в появившемся меню один раз быстро щёлкнуть левой кнопкой мышки по строке Свойства -> в появившемся окне с заголовком Свойства панели задач и меню "Пуск" ставим птичку Отображать панель задач поверх остальных окон, нажимаем кнопку ОК.
Примечания:
1) скачиваем и устанавливаем (везде далее, далее) эту программу http://www.vzljot.ru/files/soft/VzljotMasterViewer0.8.3Setup.exe
2) скачиваем и устанавливаем (везде далее, далее) эту программу http://www.vzljot.ru/files/soft/KBTSRV024M1024x600.exe

На cmd/bat файлах это выглядело бы как-то так:

Код:
@Echo Off
снять птичку [b]Отображать панель задач поверх остальных окон[/b]
START /MAX /WAIT [b]Конфигуратор базы ТСРВ-024 М (1024x600).lnk[/b]
поставить птичку [b]Отображать панель задач поверх остальных окон[/b]
Exit
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Попробуй. Только свой путь к ярлыку пропиши.
Код:
$Lnk = @DesktopDir&"\"&"FreeCommander.lnk" ;свой путь к ярлыку
$Progr = FileGetShortcut($Lnk)
If @error Then
   MsgBox(16, "Ошибка", "Файл не найден")
   Exit
EndIf

Global $Status, $hWnd
Check()
If $Status = 1 Then
	  ControlClick($hWnd, "", "Button3")
	  Sleep(100)   
	  ControlClick($hWnd, "", "Button11")
   Else
	  ControlClick($hWnd, "", "Button11")
EndIf   
RunWait($Progr[0])
Check()
If $Status = 0 Then
	  ControlClick($hWnd, "", "Button3")
	  Sleep(100)   
	  ControlClick($hWnd, "", "Button11")
   Else
	  ControlClick($hWnd, "", "Button11")
   EndIf

Func Check()
   Run("RunDll32.exe shell32.dll,Options_RunDLL 1")
   $hWnd = WinWaitActive('Свойства панели задач и меню "Пуск"', "", 5)
   $Status = ControlCommand($hWnd, "", "Button3", "IsChecked")
EndFunc

Можно проще и короче
Код:
$Lnk = @DesktopDir&"\"&"FreeCommander.lnk" ;свой путь к ярлыку
$Progr = FileGetShortcut($Lnk)
If @error Then
   MsgBox(16, "Ошибка", "Файл не найден")
   Exit
EndIf
Click()
RunWait($Progr[0])
Click()
Func Click()
   Run("RunDll32.exe shell32.dll,Options_RunDLL 1")
   $hWnd = WinWaitActive('Свойства панели задач и меню "Пуск"', "", 5)
   ControlClick($hWnd, "", "Button3")
   Sleep(100)   
   ControlClick($hWnd, "", "Button11")
EndFunc
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
А если так:
Код:
WinSetOnTop('[CLASS:Shell_TrayWnd]', '', 1) ;Ставим панель поверхвсех окон
ShellExecute('Конфигуратор базы ТСРВ-024 М (1024x600).lnk')  ;Запускаем программу
ProcessWaitClose('VzljotMasterViewer.exe') ;Ждем закрытие программы
WinSetOnTop('[CLASS:Shell_TrayWnd]', '', 0) ;Убираем панель поверхвсех окон
 
Автор
S

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Yuriy
Большое Вам спасибо за помощь, Ваш вариант 1 рабочий, Ваш вариант 2 проверю 07-08-2013.
Только попутно, если это возможно, для вариант 1 и 2 сделайте так:
1) поставить или убрать птичку, чтобы было скрытно, без отображения окна, где эта птичка убирается или ставится. Или же это окно сделать прозрачным или же это окно сделать ему координаты 0;0
2) не запускать программу пока птичка не уберется
3) не закрывать стартер пока птичка не поставится

Zaramot
Большое Вам спасибо за помощь, Ваш вариант проверю 07-08-2013.

Спасибо.
 
Автор
S

SharkyEXE

Новичок
Сообщения
134
Репутация
0
Yuriy

Оба Ваших варианта не запускают ярлык, при этом снятие или установка птичек работает отлично.

Еще несколько пожеланий к пожеланиям выше:
1) до запуска ярлыка сделать проверку: если птичка снята, то запуск ярлыка; если птичка стоит, то убрать птичку и запуск ярлыка
2) ярлык запустить во весь экран
3) после закрытия программы: если птичка снята, то поставить птичку и закрыть стартер; если птичка стоит, то закрыть стартер

Zaramot

В Вашем варианте не работает строка 1 и последняя строка. Надо до запуска ярлыка поверх всех окон для панели задач выключить, надо после закрытия программы поверх всех окон для намеки задач включить

Спасибо
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
SharkyEX
Такой вот вариант. Лучше не смог придумать. :-[
Код:
$Lnk = @DesktopDir&"\"&"Конфигуратор базы ТСРВ-024 М (1024x600).lnk" ;путь к ярлыку на рабочем столе
Global $Status, $hWnd
Check() ; вызов функции проверки: установлена ли галочка до запуска программы

If $Status = 1 Then ; если 1, значит установлена
   ControlClick($hWnd, "", "Button3") ;ставим галку
   Sleep(100)   
   ControlClick($hWnd, "", "Button11") ;жмем Ок
Else ; иначе - не установлена
   ControlClick($hWnd, "", "Button11") ;жмем Ок
EndIf

While 1
   If Not WinExists($hWnd) Then ;ждем закрытия свойства панели задач      
	  ShellExecute($Lnk) ;запуск программы по ярлыку
	  ExitLoop
   EndIf   
   Sleep(100)
WEnd

$hWndPr = WinWaitActive("КБ ТСРВ-024М (1024x600)", "", 10) ;ждем окно программы
WinWaitActive("Журнал событий - BASE", "", 10) ;ждем окно журнала программы
Sleep(500) ;добавлено
WinSetState($hWndPr, "", @SW_MAXIMIZE) ;придаем окну статус "развернуть"

While 1 ;цикл отслеживания завершения процесса
   Sleep(100)
   If Not ProcessExists("VzljotMasterViewer.exe") Then ;если процесс не существует, тогда
	  ExitLoop ;завершаем цикл
   EndIf
WEnd	  
	  
Check() ; вызов функции проверки: установлена ли галочка после завершения программы

If $Status = 0 Then ; если 0, значит не установлена
   ControlClick($hWnd, "", "Button3")
   Sleep(100)   
   ControlClick($hWnd, "", "Button11")
Else ; иначе - установлена
   ControlClick($hWnd, "", "Button11")
EndIf

Func Check() ;функция проверки установки галочки
   Run("RunDll32.exe shell32.dll,Options_RunDLL 1") ;открытие окна свойства панели задач
   $hWnd = WinWait('Свойства панели задач и меню "Пуск"')  ;ждем и запоминаем хэндл этого окна
   WinSetState($hWnd, "", @SW_HIDE) ;скрыть окно (к сожалению мелькание не знаю как убрать)   
   WinWaitActive('Свойства панели задач и меню "Пуск"', "", 5) ;ждем активации этого окна   
   $Status = ControlCommand($hWnd, "", "Button3", "IsChecked") ;проверяем статус галки: установлена/не установлена
EndFunc
 
Верх