1 (изменено: Indomito, 2012-04-18 18:22:03)

Тема: AHK: "Затемнение" Рабочего Стола

Простите за столь туманное название, но мне нужно реализовать функцию которая бы делала следующее, т.е. то что написано в теме.

Взят фрагмент Рабочего стола и проанализирован в Adobe Photoshop CS5 (64 Bit)


Нормальный вид Рабочего Стола
http://i36.fastpic.ru/big/2012/0418/46/48714aa18190157efb78170dea7e2a46.png

"Затухший" вид Рабочего Стола
http://i36.fastpic.ru/big/2012/0418/1e/acc0b0d55c7bfbe2eaa78191f879161e.png

P.S. OS Windows 7 SP1 x64

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

2 (изменено: Irbis, 2012-04-18 15:15:56)

Re: AHK: "Затемнение" Рабочего Стола

Indomito, было бы проще, если бы написал, какие цели преследуешь сим действием, а то возникает ряд вопросов:
- Нужно ли затемнить только рабочий стол с иконками, виджетами или окна открытых программ тоже.
- Разрешено ли взаимодействие с запущенными приложениями.
Возможны еще вопросы по мере конкретизации темы.
Вот пример скрипта, затемняющего все и блокирующего взаимодействие с запущенными программами.
F12 - вкл/выкл, Escape - выход

Gui +LastFound +AlwaysOnTop -Caption +ToolWindow
Gui, Color, 0
WinSet, Transparent, 200
Gui, Show, x0 y0 NoActivate W%A_ScreenWidth% H%A_ScreenHeight%
return

Esc:: ExitApp
F12::
   s := s = "Hide" ? "Show" : "Hide"
   Gui, %s%
return

3 (изменено: Indomito, 2012-04-18 15:21:30)

Re: AHK: "Затемнение" Рабочего Стола

Irbis пишет:

было бы проще, если бы написал, какие цели преследуешь сим действием

да, я как то и не подумал что это будет проще, видимо да, т.е. проще.

А делаю я вот что:
Вывожу окно таким скриптом (он в процессе разработки, т.к. разбираюсь с BASE64)

Gui, New , -caption +AlwaysOnTop  ;,Windows 7
Gui, Margin , 0, 0 ; без caption
Gui, Add, Picture, x0 y0 w750 h563 , C:\AHK\IMG\Fon_s_knopkami.png ;C:\AHK\IMG\Fon_s_dyrkami.png
;Gui, Color, EEAA99 ;  background color Example values: Silver, FFFFAA, 0xFFFFAA, Default
Gui, Show, xCenter yCenter
return
GuiClose:
GuiEscape:
ExitApp

он выдаёт/задаёт три вопроса LogOff|ReStart|Power в виде картинки|окна

(Показано только окно)
http://i35.fastpic.ru/big/2012/0418/8f/48b6e2a5ade14b58dc41ffe63289408f.png

Надо притушить всё кроме этого окна.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

4 (изменено: Irbis, 2012-04-18 15:36:26)

Re: AHK: "Затемнение" Рабочего Стола

Не вижу никаких проблем:

Gui +LastFound +AlwaysOnTop -Caption +ToolWindow
Gui, Color, 0
WinSet, Transparent, 200
Gui, Show, x0 y0 NoActivate W%A_ScreenWidth% H%A_ScreenHeight%
RunWait, choice.ahk
ExitApp

Вместо choice.ahk - имя твоего скрипта.

5

Re: AHK: "Затемнение" Рабочего Стола

Спасибо, я просто не знал как пригасить экран.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

6

Re: AHK: "Затемнение" Рабочего Стола

Этот вариант позволит обойтись без лишних скриптов:

Gui Gray:New, +LastFound +AlwaysOnTop -Caption +ToolWindow +HwndMyGuiHwnd
Gui, Gray:Default
Gui , Color, 0
WinSet, Transparent, 200
Gui, Show, x0 y0 NoActivate W%A_ScreenWidth% H%A_ScreenHeight%
Gui, Default
Gui, New , -caption +AlwaysOnTop  ;,Windows 7
Gui, Margin , 0, 0 ; без caption
Gui, Add, Picture, x0 y0 w750 h563 , C:\AHK\IMG\Fon_s_knopkami.png ;C:\AHK\IMG\Fon_s_dyrkami.png
;Gui, Color, EEAA99 ;  background color Example values: Silver, FFFFAA, 0xFFFFAA, Default
Gui, Show, xCenter yCenter
return
GuiClose:
GuiEscape:
ExitApp

7 (изменено: Indomito, 2012-04-18 16:11:18)

Re: AHK: "Затемнение" Рабочего Стола

А может так, а то по названию как то криво у меня вышло

Gui 2:New, +LastFound +AlwaysOnTop -Caption +ToolWindow +HwndMyGuiHwnd
Gui, 2:Default
Gui , 2:Color, 0
WinSet, Transparent, 200
Gui, 2:Show, x0 y0 NoActivate W%A_ScreenWidth% H%A_ScreenHeight%
Gui, 2:Default
Gui, 3:New , -caption +AlwaysOnTop  ;,Windows 7
Gui, 3:Margin , 0, 0 ; без caption
Gui, 3:Add, Picture, x0 y0 w750 h563 , C:\AHK\IMG\Fon_s_knopkami.png ;C:\AHK\IMG\Fon_s_dyrkami.png
Gui, 3:Show, xCenter yCenter
return
3GuiClose:
3GuiEscape:
ExitApp

Вместо Gray я использовал цифры, просто я не знаю как назначить скажем GuiEscape на имя, не нашел в справке, а в лоб не получилось.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

8 (изменено: Irbis, 2012-04-18 16:19:01)

Re: AHK: "Затемнение" Рабочего Стола

Можно и так, лишь бы выполняло свою задачу

9

Re: AHK: "Затемнение" Рабочего Стола

Нет, с меткой то лучше, но как написать скажем GuiEscape? Вариант NameGuiEscape не проходит.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

10

Re: AHK: "Затемнение" Рабочего Стола

Из справки:
Label [v1.0.44.09+]: Sets custom names for this window's special labels. For example, Gui MyGui:+LabelMyGui_On would use the labels MyGui_OnClose and MyGui_OnSize (if they exist) instead of MyGuiGuiClose and MyGuiGuiSize. In other words, the string "MyGuiGui" is replaced by "MyGui_On" in the names of all special labels. This can also be used to make multiple windows share the same set of labels (in which case the script may consult A_Gui to determine which window launched the subroutine).

11 (изменено: Indomito, 2012-04-18 16:27:07)

Re: AHK: "Затемнение" Рабочего Стола

Это я то читал, но не получилось или что обязательно MyGui_OnSize, т.е. обязательно так - Имя подчерк Функция?

Всё, разобрался сам. Видимо я не так писал или где то допустил неточность.
Для Gui, test:New , -maximizebox -minimizebox +AlwaysOnTop,Windows 7
Надо: testGuiEscape:

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

12 (изменено: Irbis, 2012-04-18 16:50:59)

Re: AHK: "Затемнение" Рабочего Стола

Офф: Коллега, будь точен в составлении названия темы и написании вопроса, ибо правильно заданный вопрос - это уже половина ответа.
Набранный в поисковике запрос "Затемнение рабочего стола" привел меня на форум Дельфи, где пост про полупрозрачную форму без контролов на весь экран и сподвиг на данный скрипт. Вряд ли "притухание рабочего стола" даст хоть одну вменяемую ссылку

13 (изменено: Indomito, 2012-04-18 18:24:15)

Re: AHK: "Затемнение" Рабочего Стола

OFF: Да уж... надо было сначала мне погуглить на эту тему что бы верно озаглавить эту тему

P.S. Поправил название темы на вменяемое - "Затемнение" Рабочего Стола

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

14 (изменено: Indomito, 2012-04-18 18:34:34)

Re: AHK: "Затемнение" Рабочего Стола

В скрипте

Gui Gray:New, +LastFound +AlwaysOnTop -Caption +ToolWindow +HwndMyGuiHwnd
Gui, Gray:Default
Gui , Color, 0
WinSet, Transparent, 200
Gui, Show, x0 y0 NoActivate W%A_ScreenWidth% H%A_ScreenHeight%
Gui, Default
Gui, New , -caption +AlwaysOnTop  ;,Windows 7
Gui, Margin , 0, 0 ; без caption
Gui, Add, Picture, x0 y0 w750 h563 , C:\AHK\IMG\Fon_s_knopkami.png ;C:\AHK\IMG\Fon_s_dyrkami.png
;Gui, Color, EEAA99 ;  background color Example values: Silver, FFFFAA, 0xFFFFAA, Default
Gui, Show, xCenter yCenter
return
GuiClose:
GuiEscape:
ExitApp

есть неточность/баг - клик мышкой вне окна блокирует всё, т.е. и окно запроса помогает только снятие задачи через диспетчер.
Есть простой метод ограничить мышку пределами окна?
Конечно это можно сделать через проверку, но как я помню это можно реализовать через модальность, только я не уверен что я прав.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

15

Re: AHK: "Затемнение" Рабочего Стола

Да, действительно. Mea culpa
Исправь строку

Gui, New , -caption +AlwaysOnTop  ;,Windows 7

на

Gui, New , -caption +AlwaysOnTop +HwndMyFocus ;,Windows 7

В конец своего скрипта добавь

Lbutton::
   MouseGetPos,,,OutputVarWin
   if (MyFocus == OutputVarWin)
   Click
return

16 (изменено: Indomito, 2012-04-18 20:00:52)

Re: AHK: "Затемнение" Рабочего Стола

Сенкс, сейчас проверим.

Всё ОК, только меня смущает вот что

Lbutton::
   MouseGetPos,,,OutputVarWin
   if (MyFocus = OutputVarWin)
   Click
return

Какая "область видимости" для Lbutton::? Не хотелось что бы возникли коллизии по нажатию на ЛКМ.

Я понимаю что она сработает по условию, но может стоит её объявить на время действия/существования окна через HotKey, а потом через тот же HotKey перевести в состояние Off ?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

17

Re: AHK: "Затемнение" Рабочего Стола

Можно включать/выключать совместно с окном. А можно в хоткее исправить строчку на

if (MyGuiHwnd != OutputVarWin)

18 (изменено: Indomito, 2012-04-18 20:44:58)

Re: AHK: "Затемнение" Рабочего Стола

Я лучше выберу первое

Можно включать/выключать совместно с окном.

+ надо и ПКМ дописывать - такая жа ситуация.

Правда можно по таймеру переводить это окно в активное.

B ещё я посмотрел реализацию этой функции в TLB (от куда и позаимствовал идею). Так там это окно можно обойти если по Alt-Tab переключится на полноэкранное приложение, скажем на игрушку, а на остальное не переключается даже по тому же Alt-Tab.
Может быть это внутрисистемная функция?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

19 (изменено: Indomito, 2012-04-18 21:57:06)

Re: AHK: "Затемнение" Рабочего Стола

В общем я решил задачу с кликами и переключением немного иначе, по своему и на мой взгляд извращенно

Gui Gray:New, +LastFound +AlwaysOnTop -Caption +ToolWindow +HwndMyGuiHwnd
Gui, Gray:Default
Gui , Color, 0
WinSet, Transparent, 200
Gui, Show, x0 y0 NoActivate W%A_ScreenWidth% H%A_ScreenHeight%
Gui, Default
vWinName := "Windows 7"
Gui, New , +OwnDialogs -caption +AlwaysOnTop +HwndMyFocus , %vWinName%
Gui, Margin , 0, 0 ; без caption
Gui, Add, Picture, x0 y0 w750 h563 , C:\AHK\IMG\Fon_s_knopkami.png ;C:\AHK\IMG\Fon_s_dyrkami.png
;Gui, Color, EEAA99 ;  background color Example values: Silver, FFFFAA, 0xFFFFAA, Default
Gui, Show, xCenter yCenter
SetTimer lbTop, 10, on
return
GuiClose:
GuiEscape:
SetTimer lbTop,, off
ExitApp

lbTop:
if (!WinActive(vWinName))
     WinActivate, %vWinName% 
return

;Lbutton::
;   MouseGetPos,,,OutputVarWin
;   if (MyFocus = OutputVarWin)
;   Click
;return

1. Добавил переменную имени окна
2. Добавил +OwnDialogs для... не очень понял для чего, но без этого выходит криво.
3. Запустил таймер который проверяет активность окна и если нужно делает его активным.

По пункту №3 не нужно проверять мышку, Alt-Tab и всё остальное - окно будет висеть пока не будет принято решение.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

20 (изменено: Irbis, 2012-04-18 23:00:57)

Re: AHK: "Затемнение" Рабочего Стола

Как вариант, пойдет. Разве что при зажатии Alt+Tab проскакивает-таки выбор окон. Но на это и внимания можно не обращать.
А можно и... обратить. После Gui, New , +OwnDialogs -caption +AlwaysOnTop +HwndMyFocus , %vWinName%    вставить

Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *!Tab, TabPressed

а в конце скрипта

TabPressed:
return

(Хотя эту метку можно поставить перед любым return)

21 (изменено: Indomito, 2012-04-18 23:14:09)

Re: AHK: "Затемнение" Рабочего Стола

Спасибо, я так уже сделал, просто не стал писать - "нет предела совершенству"
Жаль что моргание осталось при выполнении WinActivate, %vWinName% , но это увы это "издержки производства"

Кстати не только Alt-Tab, но и срабатывают остальные хоткеи самого скрипта их можно сразу все выключить, а потом включить одной командой?
Я конечно могу их повыключать/повключать... но уж больно лениво писать ещё одну функцию, хотя и не сложно т.к. они у меня все в массиве хранятся.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

22 (изменено: Irbis, 2012-04-18 23:49:22)

Re: AHK: "Затемнение" Рабочего Стола

Чтоб не мигало, можно таким же способом "укротить" все клавиши мыши:

Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *!Tab, TabPressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *LButton, LBpressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *XButton1, TabPressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *XButton2, TabPressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *MButton, TabPressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *RButton, TabPressed
...
...
LBpressed:
   MouseGetPos,,,OutputVarWin
   if (MyFocus = OutputVarWin)
   Click
return

23 (изменено: Indomito, 2012-04-18 23:54:32)

Re: AHK: "Затемнение" Рабочего Стола

Спасибо за скрипт, а я то голову ломал

Кстати

Irbis пишет:

А можно и... обратить. После Gui, New , +OwnDialogs -caption +AlwaysOnTop +HwndMyFocus , %vWinName%    вставить

может всё же после Gui, Show, xCenter yCenter, а?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

24 (изменено: Irbis, 2012-04-18 23:54:50)

Re: AHK: "Затемнение" Рабочего Стола

Насчет своих хоткеев... Не знаю, единственное, что приходит на ум - завести флаг при показе Gui, например
NoKeys  := 1, а первой строкой в своих хоткеях прописать

if NoKeys
return

Естесственно, после того как Gui отработает, пишем
NoKeys  := 0

25

Re: AHK: "Затемнение" Рабочего Стола

Да, флаг это хорошо, но вот не позабыть бы везде проставить Проще выключать-включать в одном месте, а то потом концов не найдёшь. IMHO

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

26

Re: AHK: "Затемнение" Рабочего Стола

Так он и включается в одном месте - перед показом затемненного окна

27 (изменено: Indomito, 2012-04-19 00:03:41)

Re: AHK: "Затемнение" Рабочего Стола

Irbis пишет:

Так он и включается в одном месте - перед показом затемненного окна

ты про флаг или про пост #23?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

28

Re: AHK: "Затемнение" Рабочего Стола

может всё же после Gui, Show, xCenter yCenter, а?

На мой взгляд, без разницы - окно уже создано и имеет id, только невидимо. Конечно, если между New и Show есть большой (по времени) кусок кода,
предполагающий работу с блокированными клавишами, то лучше после Show

29 (изменено: Irbis, 2012-04-19 00:12:05)

Re: AHK: "Затемнение" Рабочего Стола

Флаг включается однократо и блокирует те хоткеи, в которые внесено
if NoKeys
return

Ты написал, что они у тебя одним блоком идут, наверно накопипастить пару строк это нетрудно
(за сим откланиваюсь на сегодня )

30 (изменено: Indomito, 2012-04-19 00:21:19)

Re: AHK: "Затемнение" Рабочего Стола

Нет конечно, они имеют все стандартную проверку, вот например:

FireFox:
if (fnWinClose(arrayKey[fnRetIndexOfHotkey(A_ThisHotkey),cAhkC_WinT]))
  return
Run, %ProgSysPath32%Mozilla Firefox\firefox.exe
return

один if стоит, ну а где один там и второй будет... скоро придётся функцию писать (для обощения)

Или просто дополнить этот IF

FireFox:
if (fnWinClose(arrayKey[fnRetIndexOfHotkey(A_ThisHotkey),cAhkC_WinT]) and NoKeys )
  return
Run, %ProgSysPath32%Mozilla Firefox\firefox.exe
return
Irbis пишет:

(за сим откланиваюсь на сегодня )

аналогично

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

31 (изменено: Irbis, 2012-04-19 11:08:59)

Re: AHK: "Затемнение" Рабочего Стола

Не самая лучшая идея - совместить проверку флага и вызов функции в одной строке, потому что конструкция
if (МояФункция() and Флаг ) then return
будет иметь сторонние эффекты, связанные с вызовом МояФункция, так как она вызывается в любом случае.
В языке программирования С, если не ошибаюсь, есть возможность оптимизации, то есть if (a and someFunc()) - тут someFunc() может и не вызываться, если a = 0
В АНК есть ли такая возможность, не знаю, даже если и была бы, лучше избегать таких неочевидных решений.

32 (изменено: creature.ws, 2012-04-19 13:54:10)

Re: AHK: "Затемнение" Рабочего Стола

ShortCircuit
Если «настроиться» на правильный лад, неочевидность отсутствует

33 (изменено: Indomito, 2012-04-20 07:29:23)

Re: AHK: "Затемнение" Рабочего Стола

Я посмотрел на весь скрипт в целом и оказалось, что подобные флаги я использую неоднократно, а это вносит путаницу.
И посему  была написана функция отключения/включения для HotKey.

OFF: Содержимое скопировал в тему про массивы

fnHotKeyOnOff(a,b)
A - логическое значение True/False - включить/выключить HotKey из моего описанного массива.
B - массив меток которые не включаются/не выключаются соответственно.

fnHotKeyOnOff(,"sasa1","sasa2")
;или
vTmpArr := ["tata1","tata2","tata3"]
fnHotKeyOnOff(false,vTmpArr*)
return
;---------------------------------------
fnHotKeyOnOff(fSw = true, vIsArr*)
{
  msgbox %fSw%
  vLoop := vIsArr.MaxIndex()
  i := 1
  loop %vLoop%
  {
  a := vIsArr[i]
  msgbox %a%
  i++
  }
return
}
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

34 (изменено: Indomito, 2012-04-20 02:52:08)

Re: AHK: "Затемнение" Рабочего Стола

Итак, возвращаясь к вопросу темы.

В результате совместных "мучений" получился скрипт

Gui Gray:New, +LastFound +AlwaysOnTop -Caption +ToolWindow +HwndMyGuiHwnd
Gui, Gray:Default
Gui , Color, 0
WinSet, Transparent, 200
Gui, Show, x0 y0 NoActivate W%A_ScreenWidth% H%A_ScreenHeight%
Gui, Default
vWinName := "Windows 7"
Gui, New , +OwnDialogs -caption +AlwaysOnTop +HwndMyFocus , %vWinName%
Gui, Margin , 0, 0 ; без caption
Gui, Add, Picture, x0 y0 w750 h563 , C:\AHK\IMG\Fon_s_knopkami.png ;C:\AHK\IMG\Fon_s_dyrkami.png
;Gui, Color, EEAA99 ;  background color Example values: Silver, FFFFAA, 0xFFFFAA, Default
Gui, Show, xCenter yCenter
SetTimer lbTopWinLogo,10, on
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *!Tab, TabPressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *LButton, LBpressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *XButton1, TabPressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *XButton2, TabPressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *MButton, TabPressed
Hotkey, IfWinExist, ahk_id %MyFocus%
Hotkey, *RButton, TabPressed
return
GuiClose:
GuiEscape:
SetTimer lbTopWinLogo,, off
ExitApp

LBpressed:
   MouseGetPos,,,OutputVarWin
   if (MyFocus = OutputVarWin)
   Click
return

TabPressed:
return

lbTopWinLogo:
if (!WinActive(vWinName))
     WinActivate, %vWinName%
MouseGetPos, OutputVarX, OutputVarY, OutputVarWin
   if (MyFocus = OutputVarWin)
    ToolTip X= %OutputVarX% `n Y= %OutputVarY%    
return

;Lbutton::
;   MouseGetPos,,,OutputVarWin
;   if (MyFocus = OutputVarWin)
;   Click
;return

Но если посмотреть мой пост #3, то там остались три кнопки.

Вот моя основная идея.
1. Если курсор над кнопкой, то кнопка перерисовывается в статус "Курсор над кнопкой".
2. Если курсор не над кнопкой, то кнопка перерисовывается в статус  "По умолчанию".
3. Если курсор над кнопкой и произведен выбор (ЛКМ или Enter), то кнопка перерисовывается в статус "Нажатие на кнопку".

Как это лучше реализовать.
То есть через Gui, Add, Picture,..... с перерисовкой по Hwnd(картинки кнопки) или иначе?

Вот три вида кнопок для LogOff

По умолчанию -> http://i34.fastpic.ru/big/2012/0420/e5/0f3aff3be437792aebd794574e7091e5.png Курсор над кнопкой -> http://i34.fastpic.ru/big/2012/0420/8f/836b260009a822f8f9d2d21afb15758f.png Нажатие на кнопку -> http://i34.fastpic.ru/big/2012/0420/bb/d5e647a107a2a4ecb7410b39528ae1bb.png

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro