<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Множественные действия на левой и верхней границах экрана]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10079&amp;type=atom" />
	<updated>2014-11-02T14:15:56Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=10079</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87927#p87927" />
			<content type="html"><![CDATA[<p>Тоже давно пользуюсь похожей штукой, у меня задействован правый край экрана, используется 2 хоткея по ПКМ и СКМ.</p>]]></content>
			<author>
				<name><![CDATA[Xwansu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27590</uri>
			</author>
			<updated>2014-11-02T14:15:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87927#p87927</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87757#p87757" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />Ну это всё добавлять по вкусу, кому как.</p><p>Но для меня всё удобство тут именно в <strong>ClipCursor</strong>. Я почти не целюсь, то есть всё задаётся направлением мыши, и она никуда не убежит, также как и угол экрана. Ну и также то, что всё это делается только одним кликом.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-10-26T16:44:59Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87757#p87757</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87754#p87754" />
			<content type="html"><![CDATA[<p>По-моему, поле &quot;Отмена&quot; лишнее, только место зря занимает. Проще убрать <em>DllCall(&quot;ClipCursor&quot;,&quot;uint&quot;,&amp;RECT)</em> и делать отмену по отпусканию RButton вне поля. Сам пользуюсь подобным меню, но появление его просто посажено на одну из кнопок мыши.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2014-10-26T15:02:27Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87754#p87754</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87739#p87739" />
			<content type="html"><![CDATA[<p>Серж, это гениально! По нему Коллекция плачет! Это будет отечественное &quot;<a href="http://www.autohotkey.com/forum/topic50813.html">радиальное меню</a>&quot;. То есть квадрадиальное)))</p>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2014-10-25T22:56:39Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87739#p87739</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87738#p87738" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Думаю, здорово бы расширило возможности от одиночных кликов.</p></blockquote></div><p>Кстати задумка хорошая, но не по духу мне по всему экрану мышью махать, куда то целится и что то вспоминать. Короче вспомнилась <a href="http://forum.script-coding.com/viewtopic.php?pid=84892#p84892">такая тема</a>, вроде удобный и наглядный лаунчер получился.<br /></p><div class="codebox"><pre><code>     
    ;  http://forum.script-coding.com/viewtopic.php?pid=87738#p87738
    
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1
OnExit, OnExit
OnMessage(0x200, &quot;WM_MOUSEMOVE&quot;)
CoordMode Mouse
VarSetCapacity(RECT, 16 ,0)
Global prArea, Area, Color := &quot;D9952F&quot;, Light := &quot;696969&quot;
wside := 150, hside := 70, margin := 5

Action := [[&quot;Action1&quot;,&quot;Action1&quot;]
        , [&quot;Action2&quot;,&quot;Action2&quot;]
        , [&quot;Action3&quot;,&quot;Action3&quot;]
        , [&quot;Action4&quot;,&quot;Action4&quot;]
        , [&quot;Отмена&quot;,&quot;&quot;]
        , [&quot;Action5&quot;,&quot;Action5&quot;]
        , [&quot;Action6&quot;,&quot;Action6&quot;]
        , [&quot;Action7&quot;,&quot;Action7&quot;]
        , [&quot;Action8&quot;,&quot;Action8&quot;]]

Gui, -DPIScale +AlwaysOnTop -Caption +HWNDhThisGui +E0x08000000  
Gui, Font, s12
Gui, Margin, 0, 0
Loop 9  { 
    Gui, Add, Progress, % (Mod(A_Index+2, 3) ? &quot;x+&quot; margin : &quot;x0&quot;)
        . &quot; y&quot; ((A_Index-1)//3)*(hside+margin) &quot; h&quot; hside &quot; w&quot; wside &quot; c&quot; Color &quot; v&quot; A_Index, % A_Index = 5 ? 0 : 100
    Gui, Add, Text, xp yp wp hp BackgroundTrans +0x201 vText%A_Index%, % Action[A_Index][1]
} 
Return 
    
#If NeedCoords(0, 0, 11, 11)

RButton::
    Gui, Show, NA x11 y11
    WinSet, Transparent, 210, ahk_id %hThisGui%  
    Show := 1, DllCall(&quot;GetWindowRect&quot;,&quot;uint&quot;,hThisGui,&quot;uint&quot;,&amp;RECT) 
    DllCall(&quot;ClipCursor&quot;,&quot;uint&quot;,&amp;RECT)
    DllCall(&quot;ShowCursor&quot;, &quot;uint&quot;, 1)
    SetTimer, IsThisGui, 100  
    GoSub MoveCenter
    Return

#If Show 

~RButton Up::
    GoSub Close
    MouseMove, 0, 0, 0
    Try GoSub % Action[Area][2] 
    Return

#If

IsThisGui:
    MouseGetPos, , , WinID
    DllCall(&quot;ClipCursor&quot;,&quot;uint&quot;,&amp;RECT)
    If (WinID = hThisGui || WinID = &quot;&quot;) 
        Return
    GoTo Close
    
MoveCenter:
    WinGetPos, WinX, WinY, WinWidth, WinHeight, ahk_id %hThisGui%
    MouseMove, WinX+WinWidth/2, WinY+WinHeight/2, 0
    Color(Color, prArea), Color(Light, prArea := 5)
    Return
 
Close: 
    Gui, Hide 
    SetTimer, IsThisGui, Off 
    DllCall(&quot;ClipCursor&quot;), Show := 0 
    SetTimer, MoveCenter, Off 
    Color(Color, prArea), prArea := 5
    Return
    
OnExit:
    DllCall(&quot;ClipCursor&quot;) 
    ExitApp
    
WM_MOUSEMOVE()   {
    Area := A_GuiControl
    If (Area = prArea)
        Return
    Color(Color, prArea), prArea := Area
    If (Area = &quot;&quot;)
        Return
    Color(Light, Area)
    SetTimer, MoveCenter, % Area = 5 ? &quot;Off&quot; : -1200
} 

NeedCoords(x1, y1, x2, y2)  { 
    MouseGetPos, X, Y
    Return X &gt;= x1 &amp;&amp; X &lt;= x2 &amp;&amp; Y &gt;= y1 &amp;&amp; Y &lt;= y2
} 

Color(c, ctrl)  { 
    GuiControl, +c%c%, % ctrl
    GuiControl, +Redraw, % ctrl 
    GuiControl, +Redraw, Text%ctrl%
}

Action1:
Action2:
Action3:
Action4:
Action5:
Action6:
Action7:
Action8: 
    MsgBox,,, % A_ThisLabel, 0.7
    Return
 
</code></pre></div><p>RButton зажимаем в левом верхнем углу экрана, отпускаем где надо.</p><br /><p>RButton, цвета, угол экрана - конечно по вкусу.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-10-25T18:53:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87738#p87738</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87734#p87734" />
			<content type="html"><![CDATA[<p>Ну, кнопку я таки привязал — а это уже заоблочные вещи))) Благодарю!</p>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2014-10-25T17:02:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87734#p87734</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87731#p87731" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>как ставить условия: после клика по нижней половине левой границы делать этак, после клика по правой половине верхней границы делать раз-этак и т.д.?</p></blockquote></div><p>Думал что догадаетесь.<br /></p><div class="codebox"><pre><code>
CoordMode, Mouse

#If (Area := WhatArea())
LButton::
    If Area = 1
        MsgBox 1
    Else If Area = 2
        MsgBox 2
    Else If Area = 3
        MsgBox 3
    Else If Area = 4
        MsgBox 4
    Else If Area = 5
        MsgBox 5
    Return
#If
    
WhatArea()  {
    Static R := [[0.0,0.5,0.05,1]
                , [0.0,0.05,0.05,0.5]
                , [0.0,0.0,0.05,0.05]
                , [0.05,0.0,0.5,0.05]
                , [0.5,0.0,1,0.05]]
    MouseGetPos, X, Y
    X := X / A_ScreenWidth, Y := Y / A_ScreenHeight
    For K, V in R
        If (X &gt;= V[1] &amp;&amp; X &lt;= V[3] &amp;&amp; Y &gt;= V[2] &amp;&amp; Y &lt;= V[4])
            Return K
} 
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-10-25T16:54:50Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87731#p87731</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87729#p87729" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
CoordMode, Mouse

#If WhatArea() 
~LButton::
    ToolTip % WhatArea() 
return
#If

    
WhatArea()  {
    Static R := [[0.0,0.5,0.05,1]
                , [0.0,0.05,0.05,0.5]
                , [0.0,0.0,0.05,0.05]
                , [0.05,0.0,0.5,0.05]
                , [0.5,0.0,1,0.05]]
    MouseGetPos, X, Y
    X := X / A_ScreenWidth, Y := Y / A_ScreenHeight
    For K, V in R
        If (X &gt;= V[1] &amp;&amp; X &lt;= V[3] &amp;&amp; Y &gt;= V[2] &amp;&amp; Y &lt;= V[4])
            Return K
}
</code></pre></div><p>Огромное спасибо, пример замечательный! Только недокумекаю, как задавать условия на действия в определенных областях? Т.е. сейчас, если я правильно понимаю, это как бы общая функция. Интересует, как ставить условия: &quot;если активна нижняя половина левой границы экрана, делать этак&quot;, &quot;если активна правая половина верхней границы — делать раз-этак&quot; и т.д.?</p>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2014-10-25T16:49:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87729#p87729</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87725#p87725" />
			<content type="html"><![CDATA[<p>Если независимо от разрешения, и относительно экрана, то так:<br /></p><div class="codebox"><pre><code>
CoordMode, Mouse

Loop
    ToolTip % WhatArea() 
    
WhatArea()  {
    Static R := [[0.0,0.5,0.05,1]
                , [0.0,0.05,0.05,0.5]
                , [0.0,0.0,0.05,0.05]
                , [0.05,0.0,0.5,0.05]
                , [0.5,0.0,1,0.05]]
    MouseGetPos, X, Y
    X := X / A_ScreenWidth, Y := Y / A_ScreenHeight
    For K, V in R
        If (X &gt;= V[1] &amp;&amp; X &lt;= V[3] &amp;&amp; Y &gt;= V[2] &amp;&amp; Y &lt;= V[4])
            Return K
} 
</code></pre></div><p>Как привязать кнопку, думаю сообразите.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-10-25T16:20:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87725#p87725</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Множественные действия на левой и верхней границах экрана]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=87724#p87724" />
			<content type="html"><![CDATA[<p><a href="http://fastpic.ru/"><span class="postimg"><img src="http://i64.fastpic.ru/big/2014/1025/31/a5b7fb47dd8413bb8bb23fb9ad68a931.png" alt="http://i64.fastpic.ru/big/2014/1025/31/a5b7fb47dd8413bb8bb23fb9ad68a931.png" /></span></a></p><p>Давно мечтаю повесить действия на изображенные экранные области, по следующему формату:</p><div class="codebox"><pre><code>#If right_edge(A_ScreenWidth - 2)
;...
#If
right_edge(x)
{
    CoordMode, Mouse
    MouseGetPos, x_pos
    return x_pos &gt;= x
}</code></pre></div><p>Сбыточно ли это? Думаю, здорово бы расширило возможности от одиночных кликов.</p>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2014-10-25T16:02:51Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=87724#p87724</id>
		</entry>
</feed>
