Что нового

скрипт для запуска проги DeskPins уже активированной

amorphyc

Новичок
Сообщения
45
Репутация
0
Здравствуйте, знатоки и мастера AutoIt. Есть такая удобная прога - DeskPins. Кто не знает - для закрепления любого окна поверх всех окон. Работает она по следующему алгоритму: 1- Запускаем прогу, она свернута в трее, 2-кликаем мышкой не значок в трее, прога активируется, 3-кликаем на любое окно и оно закрепляется поверх всех. Так вот, хочу сделать просто кнопку на рабочем столе, типа гаджета, чтоб одним кликом DeskPins запускалась и была уже активирована, чтоб не требовалось тянуться в трей, а сразу можно было щелчком закрепить любое окно. Несколько громоздко объясняю, но как получилось. ) Возможно ли такое решение, подскажите? :scratch:
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
amorphyc
для закрепления любого окна поверх всех окон
Наведите курсор мыши на нужное окно и нажмите Ctrl+F1 - окно станет "поверх всех". Нажатие Ctrl+F2 вернёт окно под курсором мыши в нормальное состояние. Для работы с окнами, имеющими права администратора, скрипт тоже должен быть запущен с правами администратора
Код:
#include <WinAPI.au3>

HotKeySet("^{F1}", "OnTop_On")
HotKeySet("^{F2}", "OnTop_Off")

While Sleep(1000)
WEnd

Func OnTop_On()
  SetOnTop(1)
EndFunc

Func OnTop_Off()
  SetOnTop(0)
EndFunc

Func SetOnTop($iFlag)
  $tPoint = _WinAPI_GetMousePos()
  WinSetOnTop(_WinAPI_GetAncestor(_WinAPI_WindowFromPoint($tPoint), 2), "", $iFlag)
EndFunc
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
InnI сказал(а):
amorphyc
для закрепления любого окна поверх всех окон
Наведите курсор мыши на нужное окно и нажмите Ctrl+F1 - окно станет "поверх всех". Нажатие Ctrl+F2 вернёт окно под курсором мыши в нормальное состояние. Для работы с окнами, имеющими права администратора, скрипт тоже должен быть запущен с правами администратора
Код:
#include <WinAPI.au3>

HotKeySet("^{F1}", "OnTop_On")
HotKeySet("^{F2}", "OnTop_Off")

[/quote] Спасибо большое, но нужно именно чтоб всё можно было делать двумя щелчками мыши. Почему - за компьютером в основном поздно вечером и ночью сидеть приходится, свет потушен,  клавиатуру не видно.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
amorphyc
свет потушен, клавиатуру не видно
Именно поэтому вы не пользуетесь встроенными в программу DeskPins горячими клавишами?
Пусть тогда скрипт за вас это сделает
Код:
Send("^{F11}")
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
InnI сказал(а):
amorphyc
свет потушен, клавиатуру не видно
Именно поэтому вы не пользуетесь встроенными в программу DeskPins горячими клавишами?
Пусть тогда скрипт за вас это сделает
Код:
Send("^{F11}")
;D Спасибо большое за помощь, но это из раздела "Зачем вам хлеб, купите лучше конфеты!" С DeskPins мне лично удобнее - на закрепленных окнах появляется маркер, да и я что-то слабо понимаю, как мне запустить скрипт, предложенный Вами, потом перенести курсор на окно, а потом как-то запустить эмуляцию нажатия кнопки... Мне достаточно просто прикрутить кнопку к
Код:
Run("D:\SOFT\Portable\Deskpins\DeskPins.exe", "", @SW_HIDE)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
достаточно просто прикрутить кнопку
Вы меня, видимо, не поняли. В программе DeskPins по умолчанию включены горячие клавиши, одна из которых Ctrl+F11 включает "Pin Mode". Если вам лень тянуться к клавиатуре, то сделайте скрипт с одной строчкой
Код:
Send("^{F11}")
Двойным кликом по этому файлу будет "нажиматься" Ctrl+F11, которую будет перехватывать DeskPins и вам останется только кликнуть в окно.

OffTopic:
amorphyc
слабо понимаю, как мне запустить скрипт
Хорошо. Тогда можно и без AutoIt.
Создайте файл с расширением VBS и пропишите в него две строки
Код:
Set WshShell = CreateObject("Wscript.Shell")
WshShell.SendKeys "^{F11}"
Двойным кликом по этому файлу сработает встроенный в систему vbscript, который "нажмёт" Ctrl+F11, в результате чего DeskPins перейдёт в "Pin Mode".
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
InnI сказал(а):
Двойным кликом по этому файлу сработает встроенный в систему vbscript, который "нажмёт" Ctrl+F11, в результате чего DeskPins перейдёт в "Pin Mode".
Теперь ясно! Действительно, я вас не понял.
Хммм.. А вот и не подхватывается. ни через VBS, ни через AutoIt :scratch: Прога активируется только когда именно курсором кликнуть по трею... И кнопки менял, не подхватывается. Как-то придётся думать по-другому.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
amorphyc
И кнопки менял, не подхватывается
В скрипте, надеюсь, не забыли тоже поменять?
И с клавиатуры "не подхватывается"?
Windows какая? DeskPins, случайно, не с правами администратора запущена?
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
InnI сказал(а):
amorphyc
И кнопки менял, не подхватывается
В скрипте, надеюсь, не забыли тоже поменять?
И с клавиатуры "не подхватывается"?
Windows какая? DeskPins, случайно, не с правами администратора запущена?
В обоих скриптах, конечно, менял кнопки. С клавиатуры нормально подхватывается. Win7 x64, программа без Админа запущена. Вот сижу, изучаю темы тут по этому вопросу. Видимо, нужно именно нажатие в трее, некоторые программы к этому чувствительны, такая инфа присутствует.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
amorphyc
Проверил на Win7 x64. С версией DeskPins 1.30 оба скрипта прекрасно работают через Ctrl+F11.
Но если хотите через трей, то вот через трей (тоже проверил на Win7 x64 - прекрасно работает)
Код:
#include <GuiToolbar.au3>

Global $tray, $search = "DeskPins"

$tray = ControlGetHandle("[class:Shell_TrayWnd]", "", "ToolbarWindow321")
If FindClick($search) Then Exit

ControlClick("[class:Shell_TrayWnd]", "", "Button1")
$tray = ControlGetHandle("[class:NotifyIconOverflowWindow]", "", "ToolbarWindow321")
If Not FindClick($search) Then MsgBox(0, "", "Кнопка с текстом '" & $search & "' не найдена", 7)

Func FindClick($text)
  For $i = 0 To _GUICtrlToolbar_ButtonCount($tray) - 1
    If StringInStr(_GUICtrlToolbar_GetButtonText($tray, _GUICtrlToolbar_IndexToCommand($tray, $i)), $text) > 0 Then
      _GUICtrlToolbar_ClickIndex($tray, $i)
      Return 1
    EndIf
  Next
  Return 0
EndFunc
 
Автор
A

amorphyc

Новичок
Сообщения
45
Репутация
0
InnI сказал(а):
amorphyc
Проверил на Win7 x64. С версией DeskPins 1.30 оба скрипта прекрасно работают через Ctrl+F11.
Но если хотите через трей, то вот через трей (тоже проверил на Win7 x64 - прекрасно работает)
Удивительно! ))) И я нашёл это-же самое решение! ))) Спасибо за помощь! Тема решена! :ok:


Добавлено:
Сообщение автоматически объединено:

P.S. Оказывается, и предложенная выше эмуляция клавиши работает! Только запускать скрипт через ПКМ -> Run script , а просто двойным кликом не срабатывал. Теперь поставил на NUMPADADD. Работает даже при выключенном Num Lock. :laugh:
 

bugmenot

Новичок
Сообщения
17
Репутация
0
InnI
хороший пример. Навожу курсор на любое окно
нажимаю Ctrl+F1, окно становится "поверх всех".
Навожу курсор мыши на другое окно, нажимаю Ctrl+F1 - и это окно становится "поверх всех"
А как сделать чтоб скрипт при повторной нажатии Ctrl+F1 скрипт вернул первую окно в нормальное состояние, а потом уже второе окно становился "поверх всех"
 
Верх