1 (изменено: Mikki, 2012-08-30 15:24:56)

Тема: AHK: Перетаскивание GUI за элемент "Button"

Тестовый скрипт:

-не перетаскивается окно за кнопки, а так же за элеиенты которым назначена g-label. Как исправить?

#Persistent
	Gui, 1: +AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000 +HWNDhGUI1
	Gui, 1:Add, Text,, Bla-bla-bla
	Gui, 1:Add, Button, +HWNDhB1 , % 1*100
	Gui, 1:Add, Button,  +HWNDhB2 , % 2*100
	Gui, 1:Show
	
	OnMessage(WM_LBUTTONDOWN:=0x201, "WindowProc")
return

WindowProc(wParam, lParam, uMsg, hWnd)
{
	global
   If uMsg=0x201 
   {
     If (hWnd=hGui1)
		PostMessage, WM_NCLBUTTONDOWN:=0xA1, HTCAPTION:=2,,, % "ahk_id"hGUI1
	 else
		Loop 2 
		  If (hWnd=hB%A_Index%)
		   PostMessage, WM_NCLBUTTONDOWN:=0xA1, HTCAPTION:=2,,, ahk_id%hWnd% ;hB%A_Index%
	}
}
Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

2

Re: AHK: Перетаскивание GUI за элемент "Button"

По-моему, странное желание! Тебе нужно, чтобы при нажатии левой кнопкой выполнялась g-label, или чтобы перетаскивалось?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Перетаскивание GUI за элемент "Button"

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

BIG BROTHER IS WATCHING YOU.

4

Re: AHK: Перетаскивание GUI за элемент "Button"

А как скрипт должен узнать, что после нажатия планируется удержание?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Перетаскивание GUI за элемент "Button"

Mikki пишет:

-не перетаскивается окно за кнопки, а так же за элеиенты которым назначена g-label. Как исправить?

Таскать вручную.

6 (изменено: Mikki, 2012-08-30 16:48:26)

Re: AHK: Перетаскивание GUI за элемент "Button"

Камрад, Korobkof прав.
Получается, используя функцию OnMessage либо невозможно, либо гораздо сложнее, чем в скрипте EWD (последний пункт), осуществить сабж

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

7 (изменено: Александр_, 2012-08-30 16:55:44)

Re: AHK: Перетаскивание GUI за элемент "Button"

Mikki пишет:

Получается, используя функцию OnMessage либо невозможно, либо гораздо сложнее, чем в скрипте EWD (последний пункт), осуществить сабж

Ну вот простейший пример:

#Persistent
    Gui, 1: +AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000 +HWNDhGUI1
    Gui, 1:Add, Text,, Bla-bla-bla
    Gui, 1:Add, Button, +HWNDhB1 , % 1*100
    Gui, 1:Add, Button,  +HWNDhB2 , % 2*100
    Gui, 1:Show
 
    OnMessage(WM_LBUTTONDOWN:=0x201, "WindowProc")
	OnMessage(0x200, "WindowProc")
	OnMessage(0x0202, "WindowProc")
return
 
WindowProc(wParam, lParam, uMsg, hWnd)
{
   global
   Critical
   static flag := 0
   static lastX
   static lastY
   if(hWnd=hGui1)
   {
      if(uMsg=0x201)
	     PostMessage, WM_NCLBUTTONDOWN:=0xA1, HTCAPTION:=2,,, ahk_id%hGUI1%
   }
   else if(hWnd=hB1||hWnd=hB2)
   {
      if(uMsg=0x201)
	  {
	     flag := 1
		 DllCall("GetCursorPos", "uint64*", coord)
		 lastX := coord&0xFFFFFFFF
		 lastY := coord>>32
	  }
	  else if(uMsg=0x0202)
	     flag := 0
	  else if(uMsg=0x200)
	  {
	     if(flag)
		    {
			   DllCall("GetCursorPos", "uint64*", coord)
		       dX := lastX-(coord&0xFFFFFFFF)
		       dY := lastY-(coord>>32)
			   WinGetPos, x, y,,, %WinTitle%
	           WinMove, ahk_id%hGUI1%, , x-dX, y-dY
			   lastX := coord&0xFFFFFFFF
		       lastY := coord>>32
			}
	  }
   }
}

Esc::ExitApp

Писал на скорость, поэтому так криво получилось. Ну и желательно задать отступ более одного пикселя для перемещения .

8

Re: AHK: Перетаскивание GUI за элемент "Button"

Извините Александр_ , что спрашиваю очередной вопрос не проверив еще ваш ответ, но так будет бстрее:

- а если вместо WM_LBUTTONDOWN:=0x201 использовать WM_MBUTTONDOWN = 0x207 или WM_RBUTTONDOWN = 0x204 это проще?

...Попытавшись в лоб осуществить замену предложенную мной выше в получил лишь то, что OnMessage не срабатывает.
Листинг:

002: Gui,1: +AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000 +HWNDhGUI1
003: Gui,1:Add,Text,,Bla-bla-bla
004: Gui,1:Add,Button,+HWNDhB1,1*100
005: Gui,1:Add,Button,+HWNDhB2,2*100
006: Gui,1:Show (0.05)
008: OnMessage(WM_MBUTTONDOWN = 0x207, "WindowProc")  
010: Return (491.66)

Press [F5] to refresh.
Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

9 (изменено: Mikki, 2012-08-30 22:05:31)

Re: AHK: Перетаскивание GUI за элемент "Button"

Нормальное перемещение окна, за любую его часть и без рывков, получилось только методом аля-EWD.

Единственный (который я увидел) минус моего кода  - во время работы этого скрипта ВСЕ окна с классом AutoHotkeyGUI (а это, обычно, все окна созданные AutoHotkey-ем) будут перемещаться средней клавишей мыши.

- от использования LButton и RButton я отказался ибо они часто используются и это создает ненужную нагрузку на проц.

MButton:: ; Средняя мышь - перемещение окон за любое место внутри окна
;-----------------------------------------------------------------------------
    ; И вы можете во время перемещения нажать Escape, чтобы отменить перемещение
CoordMode, Mouse ; переключиться на абсолютные координаты экрана
MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin ; получить начальную позицию мыши и ID окна под мышью
WinGetClass, EWD_Win_Class, ahk_id %EWD_MouseWin% ; получаем класс окна под мышью
WinGetTitle, EWD_Win_Title, ahk_id %EWD_MouseWin% 

If EWD_Win_Class=AutoHotkeyGUI
{
	if !hand
      DllCall("SetSystemCursor", UInt, CROSS_CursorHandle, Int, OCR_NORMAL), hand := 1

	WinGetPos, EWD_OriginalPosX, EWD_OriginalPosY,,, ahk_id %EWD_MouseWin% ; запоминаем исходные координаты окна
    SetTimer, EWD_WatchMouse, 5 ; переходить к указанной подпрограмме через каждые 10 мс
} 
else 
{
        SetTimer, EWD_WatchMouse, off ; отключить таймер
        EWD_Work = ; сбрасываем флаг, что подпрограмма выполняется
		Send, {MButton Down}
		Loop
			GetKeyState, MBState, MButton, P ; проверить нажата ли средняя кнопка мыши
		Until MBState = "U" ; если кнопка отпущена, то закончить 
		Send, {MButton Up}
		DllCall("SystemParametersInfo", UInt, SPI_SETCURSORS:=0x57, UInt, 0, UInt, 0, UInt, 0), hand := ""
    	Return ; закончить обработку горячей клавиши
 }
Return ; закончить обработку горячей клавиши

EWD_WatchMouse: ; подпрограмма обработки событий в таймере
    EWD_Work = 1 ; флаг, что подпрограмма выполняется (он нужен для корректной работы закрытия окон по Escape)
    GetKeyState, EWD_MButtonState, MButton, P ; проверить нажата ли средняя кнопка мыши
    If EWD_MButtonState = U ; если кнопка отпущена, то закончить перемещение окна...
    {
        SetTimer, EWD_WatchMouse, off ; отключить таймер
        EWD_Work = ; сбрасываем флаг, что подпрограмма выполняется
 		DllCall("SystemParametersInfo", UInt, SPI_SETCURSORS:=0x57, UInt, 0, UInt, 0, UInt, 0), hand := ""
       Return ; конец подпрограммы, закончить обработку горячей клавиши
    }
    GetKeyState, EWD_EscapeState, Escape, P ; проверить нажата ли клавиша Escape
    If EWD_EscapeState = D ; если нажата, то отменить перемещение окна (вернуть его в начальные координаты)
    {
        SetTimer, EWD_WatchMouse, off ; отключить таймер
        EWD_Work = ; сбрасываем флаг, что подпрограмма выполняется
        WinMove, ahk_id %EWD_MouseWin%,, %EWD_OriginalPosX%, %EWD_OriginalPosY% ; вернуть окно в начальные координаты
        DllCall("SystemParametersInfo", UInt, SPI_SETCURSORS:=0x57, UInt, 0, UInt, 0, UInt, 0), hand := ""
		Return ; конец подпрограммы, закончить обработку горячей клавиши
    }
    ; ...если кнопка нажата, то перемешать окно вслед за перемещением указателя мыши
    CoordMode, Mouse ; переключиться на абсолютные координаты экрана
    MouseGetPos, EWD_MouseX, EWD_MouseY ; получить текущие координаты мыши
    WinGetPos, EWD_WinX, EWD_WinY,,, ahk_id %EWD_MouseWin% ; получить позицию окна под мышкой
    SetWinDelay, -1 ; перемещать окно немедленно
    ; переместить окно под мышью вслед за мышью
    WinMove, ahk_id %EWD_MouseWin%,, EWD_WinX + EWD_MouseX - EWD_MouseStartX, EWD_WinY + EWD_MouseY - EWD_MouseStartY
    EWD_MouseStartX := EWD_MouseX ; обновить X координату для следующего вызова этой подпрограммы по таймеру
    EWD_MouseStartY := EWD_MouseY ; обновить Y координату для следующего вызова этой подпрограммы по таймеру

Return ; закончить подпрограмму и обработку горячей клавиши

Собственно, вставляете этот кусок кода в любой свой скрипт ("подрихтовав" сравнение

If EWD_Win_Class=AutoHotkeyGUI

и ваше окно перемещается средней клавишей мыши.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

10

Re: AHK: Перетаскивание GUI за элемент "Button"

Mikki пишет:

Нормальное перемещение окна, за любую его часть и без рывков, получилось только методом аля-EWD.

Единственный (который я увидел) минус моего кода  - во время работы этого скрипта ВСЕ окна с классом AutoHotkeyGUI (а это, обычно, все окна созданные AutoHotkey-ем) будут перемещаться средней клавишей мыши.

- от использования LButton и RButton я отказался ибо они часто используются и это создает ненужную нагрузку на проц.

Да пофиг какая кнопка, XXI-ый век на дворе. Рывки тут только из-за искусственных задержек, одна из которых отключена через SetWinDelay в последнем скрипте.

11 (изменено: Mikki, 2012-08-31 01:07:26)

Re: AHK: Перетаскивание GUI за элемент "Button"

Думал было создать новую тему, да вопрос тесно связан со скриптами приведенными тут, поэтому спрошу тут:

- при использовании скрипта Александр_-а, если на Button назначена g-Lable то, после окончания перемещения, при отпускании клавиши мышки, срабатывает g-Lable. Как этого избежать?

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

12

Re: AHK: Перетаскивание GUI за элемент "Button"

У меня для левой кнопки так получилось:

global hGui, moved

Gui, +hwndhGui -Caption
Gui, Add, Text, gText, Текст
Gui, Add, Button, gButton, Кнопка
Gui, Show, w100 h100
return
    
Text:
    WinMove()
    if moved
        return
    MsgBox, Text
    return

Button:
    if moved
        return
    MsgBox, Button
    return

WinMove()
{
    static
    CoordMode, Mouse
    SetWinDelay, -1
    SetBatchLines, -1
    MouseGetPos, Start_X, Start_Y
    WinGetPos, X_Win, Y_Win,,, ahk_id %hGui%
    While GetKeyState("LButton", "P")
    {
        MouseGetPos, Current_X, Current_Y
        moved := (Current_X != Start_X || Current_Y != Start_Y) ? 1 : ""
        WinMove, ahk_id %hGui%,, X_Win + Current_X - Start_X, Y_Win + Current_Y - Start_Y
        Sleep, 10
    }
}

Esc::ExitApp
#If WinActive("ahk_id" hGui)
~LButton:: WinMove()

Только метка перехода текста срабатывает после отжатия, как у кнопки.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: Перетаскивание GUI за элемент "Button"

Вот нормальный вариант без хуков, вроде работает всегда :

SetWinDelay, -1
CoordMode, Mouse
global WM_MOUSEMOVE:=0x200, WM_LBUTTONDOWN:=0x201, WM_LBUTTONUP:=0x202, WM_MOUSELEAVE:=0x2A3, WM_NCLBUTTONDOWN:=0xA1
global hGui1, hB1, hB2
Gui, 1: +AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000 +HWNDhGui1
Gui, 1:Add, Text,, moving
Gui, 1:Add, Button, vb2 glMsgbox +HWNDhB1, % 1*100
Gui, 1:Add, Button, +HWNDhB2, % 2*100
Gui, 1:Show
Gui, 2: +AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000 +HWNDhGui2
Gui, 2:Add, Text,, no moving
Gui, 2:Show
OnMessage(WM_LBUTTONDOWN, "WindowProc")
OnMessage(WM_MOUSEMOVE, "WindowProc")
OnMessage(WM_LBUTTONUP, "WindowProc")
OnMessage(WM_MOUSELEAVE, "WindowProc")
return

lMsgbox:
   msgbox tra-ta-ta
return

WindowProc(wParam, lParam, uMsg, hWnd)
{
   Critical
   static IsMove := 0, IsMoved := 0
   
   static lastX, lastY
   if(hWnd=hGui1)
   {
      if(uMsg=WM_LBUTTONDOWN)
	     PostMessage, WM_NCLBUTTONDOWN, HTCAPTION:=2,,, ahk_id%hGui1%
   }
   else if(DllCall("GetAncestor", ptr, hWnd, uint, 2, ptr)=hGui1)
   {
      if(uMsg=WM_LBUTTONDOWN)
      {
         IsMove := 1
		 IsMoved := 0
	     MouseGetPos, lastX, lastY
      }
      else if(uMsg=WM_MOUSELEAVE)
	     IsMove := 0
	  else if(uMsg=WM_LBUTTONUP)
	  {
	     IsMove := 0
	     if(IsMoved)
		 {
		    GuiControl, -g, b2
		    DllCall("CallWindowProcW", ptr, DllCall("GetWindowLongPtr", ptr, hWnd, int, -4, ptr), ptr, hWnd, uint, uMsg, ptr, wParam, ptr, lParam)
	        GuiControl, +glMsgbox, b2
		 }
		 IsMoved := 0
	  }
      else if(uMsg=WM_MOUSEMOVE)
         if(IsMove)
	     {
		    IsMoved := 1
	        MouseGetPos, x, y
		    WinGetPos, WinX, WinY, Width,, ahk_id%hGui1%
		    WinMove, ahk_id%hGui1%,, WinX+x-lastX, WinY+y-lastY
			lastX := x
			lastY := y
	     }
   }
}

Esc::ExitApp

Теперь меня мучает вопрос- почему WM_MOUSELEAVE не всегда приходит основному окну, а дочерним всегда?
teadrinker, . Твой код срабатывает когда нужное окно активно, а нужно когда по нему происходит щелчок . А тут получается, если наше окно неактивно, и мы попытаемся его тащить- то наше окно просто активируется. А если наше окно активно и мы зажмём левую кнопку в другой части экрана, то всё равно будем его таскать.

14

Re: AHK: Перетаскивание GUI за элемент "Button"

Александр_ пишет:

teadrinker, . Твой код срабатывает когда нужное окно активно, а нужно когда по нему происходит щелчок . А тут получается, если наше окно неактивно, и мы попытаемся его тащить- то наше окно просто активируется. А если наше окно активно и мы зажмём левую кнопку в другой части экрана, то всё равно будем его таскать.

Ну, делов-то:

global hGui, moved

Gui, +hwndhGui -Caption
Gui, Add, Text, gText, Текст
Gui, Add, Button, gButton, Кнопка
Gui, Show, w100 h100
return
    
Text:
    WinMove()
    if moved
        return
    MsgBox, Text
    return

Button:
    if moved
        return
    MsgBox, Button
    return

WinMove()
{
    CoordMode, Mouse
    SetWinDelay, -1
    SetBatchLines, -1
    MouseGetPos, Start_X, Start_Y
    WinGetPos, X_Win, Y_Win,,, ahk_id %hGui%
    While GetKeyState("LButton", "P")
    {
        MouseGetPos, Current_X, Current_Y
        moved := (Current_X != Start_X || Current_Y != Start_Y) ? 1 : ""
        WinMove, ahk_id %hGui%,, X_Win + Current_X - Start_X, Y_Win + Current_Y - Start_Y
        Sleep, 10
    }
}

~LButton::
    MouseGetPos,,, WinID
    if (WinID = hGui)
        WinMove()
    return
    
Esc::ExitApp

Просто у меня окно активируется при наведении курсора.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Перетаскивание GUI за элемент "Button"

Кстати, в твоём варианте не учтена метка перехода текста.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16 (изменено: Александр_, 2012-08-31 03:45:22)

Re: AHK: Перетаскивание GUI за элемент "Button"

teadrinker пишет:

Ну, делов-то:

Это тебе "делов-то", а я по всему рабочему столу твоё окно искал . Оказалось я его за пределы экрана увёл, пока ярлык перемещал.

teadrinker пишет:

Кстати, в твоём варианте не учтена метка перехода текста.

А это что такое?

17

Re: AHK: Перетаскивание GUI за элемент "Button"

Контролу "Text" можно присвоить метку перехода gLabel, как в моём варианте. Тогда можно задать подпрограмму Label, которая будет выполняться при щелчке по нему. Но, в отличие от подпрограммы кнопки, при нажатии, а не при отпускании LButton.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18

Re: AHK: Перетаскивание GUI за элемент "Button"

teadrinker пишет:

Контролу "Text" можно присвоить метку перехода gLabel, как в моём варианте. Тогда можно задать подпрограмму Label, которая будет выполняться при щелчке по нему. Но, в отличие от подпрограммы кнопки, при нажатии, а не при отпускании LButton.

Это хреново, тогда придётся или для каждого класса отдельный код писать или вообще обрубить нажатие для для всего окна и отправлять его с задержкой. И ещё я там идентификатор контрола зашил в оконной функции, это тоже определённо "не айс".

19

Re: AHK: Перетаскивание GUI за элемент "Button"

Ну, мой-то код работает, вроде бы?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

20

Re: AHK: Перетаскивание GUI за элемент "Button"

teadrinker, Александр_, огромное спасибо за ваш интерес к моей проблеме. Вариант с использованием OnMessage действительно более громоздок, т.к. требует описания каждого элемента на который назначено действие.

Воспользовался вариантом teadrinker-а. Тихо млею ))

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

21

Re: AHK: Перетаскивание GUI за элемент "Button"

Да, в моём варианте static в функции не нужен. Отредактировал.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

22

Re: AHK: Перетаскивание GUI за элемент "Button"

teadrinker, предлагаю занести ваш алгоритм в Коллекцию, ибо это готовый блок в программы.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

23

Re: AHK: Перетаскивание GUI за элемент "Button"

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

24

Re: AHK: Перетаскивание GUI за элемент "Button"

teadrinker пишет:

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

Я тут без году неделю, но полагаю, что как раз решения для нетривиальных случаев должны находится в коллекции.
А желание как раз мне понятно, мое эстетическое чувство тоже было бы глубоко возмущено, ибо приняло бы либо возможность таскать только за строго и специально определенное для этого место или уж за какое угодно. Это как жить в комнате, на окно которой нельзя прилепить бумажку или порисовать пальцем на стекле, потому что окно не для того создано; особой необходимости как бы нет, может мне и не придет это в голову, а может придет, кто знает, но осознание того факта, что я, хозяин квартиры и, соответственно, окон, царь, как говорили некогда, природы, не могу сделать то, для чего нет естественных, понятных для меня ограничений, будет перманентно угнетать меня.

BIG BROTHER IS WATCHING YOU.

25

Re: AHK: Перетаскивание GUI за элемент "Button"

Хорошо, вечером выложу.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

26

Re: AHK: Перетаскивание GUI за элемент "Button"

Согласен с teadrinker, что практическая польза от данного топика вряд ли настолько значительна, что стОит увековечивания в Коллекции. (Надеюсь, это и подразумевалось под нетипичностью вопроса).
Да, таскать окно за верхний бордюр не всегда бывает удобно, но это является стандартом и делается на автомате и работает для всех типовых окон.
Будет ли удобней "Перетаскивание GUI за элемент "Button" ", и будет ли пользователь отходить от своих привычек ради одного-двух скриптов? Уверен, что нет.

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

27

Re: AHK: Перетаскивание GUI за элемент "Button"

Irbis, может ты не совсем понял, здесь как раз реализован алгоритм перетаскивания окна за любую его часть, в том числе и за Button, и за другие контролы с меткой перехода. Перетаскивается собственное окно, но тот же принцип можно использовать для перетаскивания любого.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

28

Re: AHK: Перетаскивание GUI за элемент "Button"

Перетаскивание GUI работает, действительно. И идея хорошая, но все же перенесение этого принципа "as is" на все окна, хоть и не представляет сложностей, видится в таком виде малопригодным, потому что тогда пропадает возможность click-and-drag для ЛКМ (и даже попытка выделить несколько иконок на рабочем столе заканчивается совсем не так, как хотелось бы):

CoordMode, Mouse
SetWinDelay, -1
SetBatchLines, -1
~LButton::
    MouseGetPos, Start_X, Start_Y, Win
    WinGetPos, X_Win, Y_Win,,, ahk_id %Win%
    While GetKeyState("LButton") {
        MouseGetPos, Current_X, Current_Y
        WinMove, ahk_id %Win%,, X_Win + Current_X - Start_X, Y_Win + Current_Y - Start_Y
        Sleep, 10
    }
return
Escape:: ExitApp

Можно, конечно, составить список окон-исключений, но как определить, например, что же хотел пользователь в окне браузера - передвинуть его или выделить текст? Без клавиш-модификаторов или смены хоткея не обойтись.

29

Re: AHK: Перетаскивание GUI за элемент "Button"

Ни к чему использовать именно LButton. Я, например, пользуюсь для этого

#If GetKeyState("LButton", "P")
   RButton::
   ...
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

30

Re: AHK: Перетаскивание GUI за элемент "Button"

Я к тому и веду - что горячую клавишу можно ж и изменить. Тут главное - алгоритм рабочий и крути-верти его под себя как хочешь. В этом и смысл Коллекции - выкладывать не готовые решения на каждый случай, а алгоритмы к действию. Так что, мой голос за "в Коллекцию".

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

31

Re: AHK: Перетаскивание GUI за элемент "Button"

Mikki пишет:

Я к тому и веду - что горячую клавишу можно ж и изменить. Тут главное - алгоритм рабочий и крути-верти его под себя как хочешь. В этом и смысл Коллекции - выкладывать не готовые решения на каждый случай, а алгоритмы к действию. Так что, мой голос за "в Коллекцию".

Тут еще вот что, не знаю, правда, насколько это актуально для других. Сколько бы я не сталкивался с подобными коллекциями (названия, конечно, разные, но суть одна - собрание наиболее удачных результатов деятельности) в разных областях знаний, они, в подавляющем большинстве содержат решения для некоторого круга наиболее распространенных проблем. То есть если встала проблема, которая долго занимала многих людей - найдется много добротных разнообразных готовых решений, среди которых, покопавшись, можно выбрать наиболее подходящее. Но если вопрос непопулярен или, более того, экзотичен (у меня лично, как бы сказать, далеко не редкость ), то за поиском хоть малейшей зацепки можно провести много времени и остаться ни с чем. А почем знать, людей-то много, кто-то наверняка уже занимался тем же, да может подумал, что слишком уж невостребована тема, и не стал в коллекцию добавлять.

BIG BROTHER IS WATCHING YOU.