<?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=6651&amp;type=atom" />
	<updated>2012-01-07T19:39:26Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=6651</id>
		<entry>
			<title type="html"><![CDATA[AHK: Экранная лупа]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=55435#p55435" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#NoEnv
#NoTrayIcon
#MaxHotkeysPerInterval, 1000

CoordMode, Mouse
OnMessage(WM_LBUTTONDOWN:=0x201, &quot;WndProc&quot;), OnMessage(AHK_NOTIFYICON:=0x404, &quot;WndProc&quot;)
LR_DEFAULTSIZE:=0x40, CAPTUREBLT:=0x40000000, MERGECOPY:=0xC000CA, iconHex:=`&quot;
(Join
0000010001002020000001002000A8100000160000002800000020000000400000000100200000000
000801000000000000000000000000000000000000000000000010101031919192E1B1B1B30010101
150000000200000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000101010B2D2D2D93303030B42
F2F2F7F37373737000000100000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000004E4C4EAD8584
84FF888888FF444444D53F3F3F6E2A2B2A2B0000000A0000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
0757073E5E3E0E2FF959495FF909090FE353635C14A4A4A5A15151522000000050000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000766F71A7B4ACAFFFE5E2E4FF8C8B8BFF818181F72B2A2AA7494949490505051A000
000020000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000007B767A0D6D6669CDCBC5C7FFCFCDCFFF8D8C8CFF686868EC2A2A2A
8C3E3E3E3900000011000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000747074266D6668E3DCD6D9FFB8B6B7FF8
E8E8EFF4A4A4ADB393838722B2B2B2C000000FF000000FF000000FF000000FF000000000000000000
000000000000000000000000000000000000FF000000FF000000FF000000FF0000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000706C6F45776F
71F1E5DFE2FFA5A3A4FF8A8989FF363636C244444459000000FF000000FF000000FF000000FF00000
0000000000000000000000000000000000000000000000000FF000000FF000000FF000000FF000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000006F6A6E64877E81FBE3DDE0FF969595FF767676F62A2929A4000000FF000000FF000000FF
000000FF000000000000000000000000000000000000000000000000000000FF000000FF000000FF0
00000FF00000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000006D676B81978E91FFD6D2D3FF908E8EFF575757E8000000FF000
000FF000000FF000000FF000000000000000000000000000000000000000000000000000000FF0000
00FF000000FF000000FF0000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000006B66699BA59D9EFFC3C0C0FF858485
FF000000FF000000FF000000FF000000FF0000000000000002000000080000000E000000100000000
E000000FF000000FF000000FF000000FF000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000006E686BAEA
FA7A9FFB0AEAEFF000000FF000000FF000000FF000000FF000000230F0F0F471C1C1D622525266B2A
2A2B652B2B2C58000000FF000000FF000000FF000000FF00000001000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
00007D787C06776F73B9B0A9AAFF000000FF000000FF000000FF000000FF737373CB8F8F90E6A5A5A
6EDAEAEAFF0A4A4A4ED8B8B8BE2000000FF000000FF000000FF000000FF0000001400000002000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000918A8F077A7375B5000000FF000000FF000000FF000000FFC3C2BFAB
D0CECC65D4D2D228EAC5A40BD8C9BC32D2CBC46F000000FF000000FF000000FF000000FF292A2B390
000001900000002000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000043414230000000FF000000FF000000FF000
000FFFFBB7D0FFFBB7D08FFBB7D06FFBB7D08FFBB7D0FFFBB7D17000000FF000000FF000000FF0000
00FF61605E842F2F31390000001400000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000004A4A4B5B000000FF000000
FF000000FF000000FFFFBB7D14FFBB7D0FFFBB7D0DFFDEC01CFFE6CF30FFE4CC39000000FF000000F
F000000FF000000FF8B8B8BE1605F5B721B1B1B2F0000000600000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000191A1D35858587E00
00000FF000000FF000000FF000000FFFFBB7D1BFFCA9A1CFFECDC3CFFF3E95AFFF1E65DFFEEE06000
0000FF000000FF000000FF000000FFC6C0B8BA767675CF514E4C490000001C0000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000005D5D
5F93BCBCB9E2000000FF000000FF000000FF000000FFFFC28B27FFE9D64DFFF2E86CFFF2E76BFFF1E
36CFFEEDF6E000000FF000000FF000000FF000000FFF1C79C64ADACABE55F5D5B8E2020232E000000
020000000000000000000000000000000000000000000000000000000000000000000000000000000
020212430868688DECFC6B8A8000000FF000000FF000000FF000000FFFFE0C553FFF1E57DFFF1E57B
FFF1E37AFFEFE17AFFEDDE7C000000FF000000FF000000FF000000FFFFBF865FCCC3B7B8747373CD4
040413C00000008000000000000000000000000000000000000000000000000000000000000000000
0000000000000037373952A3A2A2EFE0C7A980000000FF000000FF000000FF000000FFFFECDC7FFFF
1E38BFFF1E38AFFF0E189FFEEE088FFEDDE89000000FF000000FF000000FF000000FFFFCFA477E2C7
AB8E959495E9404141530000000F00000000000000000000000000000000000000000000000000000
00000000000000000000000000037373966B7B6B5EEF0BF906D000000FF000000FF000000FF000000
FFFFF0E29BFFF0E298FFF0E297FFEFE196FFEEDF96FFEDDE96000000FF000000FF000000FF000000F
FFFDBBA8EF1C1927AACADADF037373669000003120000000000000000000000000000000000000000
00000000000000000000000000000000000000003F3F4172BFBDBCF0FDBC8069000000FF000000FF0
00000FF000000FFFFE4CC84FFF0E2A4FFEFE1A3FFEFE0A2FFEEDFA2FFEDDEA2000000FF000000FF00
0000FF000000FFFFE2C9A3FDBB7F75B8B8B8F23232326F0000030F000000000000000000000000000
000000000000000000000000000000000000000000000000000005B5C5E7CB7B5B2F1F0BE8D790000
00FF000000FF000000FF000000FFFFC1885EFFD6B175FFE5CE92FFEFE1ADFFEEDFADFFEDDEAD00000
0FF000000FF000000FF000000FFFFE8D3B3F2C09082B1B1B0F1313132670000000800000000000000
0000000000000000000000000000000000000000000000000000000000000000005B5C5E63A6A4A2F
0E2C29F8F000000FF000000FF000000FF000000FFFFE7D1A1FFD8B582FFC18867FFD1A879FFDEC291
FFE8D4A6000000FF000000FF000000FF000000FFFFE5CEB2E6C6A6969E9E9EEC3131324C000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000008C
8C9161939291EFD0BFAAAF000000FF000000FF000000FF000000FFFFF1E3C4FFF0E2C2FFE9D5AEFFD
EC098FFD0A582FFC08773000000FF000000FF000000FF000000FFFFD9B8A2D5C7B7BB848485D72629
292000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000097989A2B919191CEBBB4ACDD000000FF000000FF000000FF000000FFFFF1E4CBFFF1E3
C9FFF1E3C9FFF0E2C8FFF0E2C7FFEAD7BA000000FF000000FF000000FF000000FFF4C79787C3BFBBE
45C5D5DA0000000040000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000A3A3A4639C9997F5CEBCA4B3FFBB7E7FFFBB7D7EFFE4CCB3F
FF1E6D1FFF1E5D0FFF1E5CFFFF1E3CEFFF1E3CEFFF0E2CEFFF0E1CDFFEFE1CDFFEFE0CDFFE3CBB4DD
CCBBBE8F8F90E51A1B1B2600000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000929393BFACA5A0F5D8BE9FA3FFBB
7E80FFD9B8A3FFF2E7D5FFF2E6D5FFF1E5D4FFF1E5D3FFF1E5D3FFF1E4D2FFF1E3D2FFF1E3D1FFE9D
5BFE9D4C0B6B1AEADF35152537F000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000004E4E4E19959493D
9B2AAA2F6D4C0AABAF4CCA08DFFECDCC8FFF2E8D7FFF2E8D7FFF2E8D6FFF2E7D6FFF2E7D5FFF1E6D4
FAE7D4BCE0D1C1C7B5B1B0F6606062A30000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000A9AAAA1C868585C8A49D97F9C4BAAFE5DBCCBAC6F0E2D4CBFAECE0D1FEF2E8D7FAECDFCFF1E
3D4C9E0D4C6CFC9C1B8EA9A9897F359595B8D00000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000003738380654545577848380E0A09994F7B3ABA4FCC1B9B2FDC7C1BB
FCC0B9B3FCB1ACA6FB979592F3747475C42A2A2B36000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000001A1A1B0B454646536060608F6
B6A69AE6A6967B3666665A050505176292A2B2C000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000083FFFFFF03FFFFFF01FFFFFF00F
FFFFF007FFFFF007FFFFF8007E1FFC007E1FFE007E1FFF007E1FFF80401FFFC0000FFFC00007FFE00
003FFF00003FFF00001FFE00001FFE00000FFC00000FFC00000FFC00000FFC00000FFC00000FFC000
01FFC00001FFC00001FFE00003FFF00007FFF0000FFFF8001FFFFC003FFFFF00FFF
)`&quot;
tSize:=A_PtrSize=4 ? A_IsUnicode ? 956:508:976
NumPut(VarSetCapacity(NOTIFYICONDATA, tSize, 0), NOTIFYICONDATA, 0)
VarSetCapacity(iconData, nSize:=StrLen(iconHex)//2)
Loop, % nSize
   NumPut(&quot;0x&quot;SubStr(iconHex, 2*A_Index-1, 2), iconData, A_Index-1, &quot;UChar&quot;)
hIcon1:=DllCall(&quot;CreateIconFromResourceEx&quot;, &quot;Ptr&quot;, &amp;iconData+22
                                          , &quot;UInt&quot;, NumGet(&amp;iconData+14)
                                          , &quot;Int&quot;, True
                                          , &quot;UInt&quot;, 0x30000
                                          , &quot;Int&quot; , 0
                                          , &quot;Int&quot; , 0
                                          , &quot;UInt&quot;, LR_DEFAULTSIZE
                                          , &quot;Ptr&quot;)
hIcon2:=DllCall(&quot;shell32\ExtractIcon&quot;(A_IsUnicode ? &quot;W&quot;:&quot;A&quot;), &quot;Ptr&quot;, 0
                                                            , &quot;Str&quot;, &quot;shell32.dll&quot;
                                                            , &quot;Int&quot;, -23
                                                            , &quot;Ptr&quot;)
iconHex:=iconData:=nSize:=sSize:=&quot;&quot;, tipInfo:=&quot;RCtrl+Enter - set defaults`n&quot;
                                            . &quot;RCtrl+Up     - dec zoom`n&quot;
                                            . &quot;RCtrl+Down - inc zoom`n&quot;
                                            . &quot;LClick(icon) - pause`n&quot;
                                            . &quot;Esc(hold)     - exit&quot;
TrayIcon(A_ScriptHwnd, 1, AHK_NOTIFYICON, hIcon2, tipInfo, 0)

Gui, +AlwaysOnTop -Caption +Resize +ToolWindow HWNDhWnd_
Gui, Show, % &quot;w155 h&quot;value_:=width:=155, % &quot;Magnifier&quot;
WinGetPos, xWnd, yWnd,,, % &quot;ahk_id&quot;hWnd_
hDC1:=DllCall(&quot;GetDC&quot;, &quot;Ptr&quot;, hWnd_, &quot;Ptr&quot;)
hDC2:=DllCall(&quot;GetDC&quot;, &quot;Ptr&quot;, DllCall(&quot;GetDesktopWindow&quot;, &quot;Ptr&quot;), &quot;Ptr&quot;)
SetTimer, % &quot;ChaseCursor&quot;, 100

Hotkey, RCtrl &amp; Enter, % &quot;HotkeyAction&quot;
Hotkey, RCtrl &amp; Up, % &quot;HotkeyAction&quot;
Hotkey, RCtrl &amp; Down, % &quot;HotkeyAction&quot;

Menu, Tray, NoStandard
Menu, Tray, Add, % &quot;Keep &amp;zoom&quot;, % &quot;ZoomMenu&quot;
Menu, Tray, Check, % &quot;Keep &amp;zoom&quot;
Menu, Tray, Add, % &quot;Keep &amp;aspect ratio&quot;, % &quot;AspectMenu&quot;
Menu, Tray, Check, % &quot;Keep &amp;aspect ratio&quot;
Menu, Tray, Add
Menu, Tray, Add, % &quot;&amp;Exit&quot;, % &quot;ExitScript&quot;

~Esc::
   While, GetKeyState(SubStr(A_ThisHotkey, 2), &quot;P&quot;)
   {
      Sleep, 50
      If A_TimeSinceThisHotkey&gt;500
      {
         KeyWait, % SubStr(A_ThisHotkey, 2)
         Goto, ExitScript
      }
   }
   Return

HotkeyAction:
   If SubStr(A_ThisHotkey, 9)=&quot;Enter&quot;
      SetDefault()
   Else If SubStr(A_ThisHotkey, 9)=&quot;Down&quot;
      value_-=5, value_&lt;0 ? value_:=1:value_
   Else value_+=5
   Return

Guisize:
   If reset
   {
      reset:=False
      Return
   }
   If % A_EventInfo=0
   {
      If !isNotKeepZ
      {
         value_*=A_Guiwidth/width
         If (Mod(value_, 2)=0)
            value_+=1
      }
      width:=A_Guiwidth, height:=A_Guiheight
      WinMove, % &quot;ahk_id&quot;hWnd_,,,, width, isNotKeepAR ? height:width
   }
   Return

ChaseCursor:
   MouseGetPos, xPos, yPos
   DllCall(&quot;gdi32\StretchBlt&quot;, &quot;Ptr&quot;, hDC1
                             , &quot;Int&quot; , 0
                             , &quot;Int&quot; , 0
                             , &quot;Int&quot; , width
                             , &quot;Int&quot; , isNotKeepAR ? height:width
                             , &quot;Ptr&quot;, hDC2
                             , &quot;Int&quot; , xPos-(value_/2)
                             , &quot;Int&quot; , yPos-(value_/2)
                             , &quot;Int&quot; , value_
                             , &quot;Int&quot; , value_
                             , &quot;UInt&quot;, CAPTUREBLT|MERGECOPY)
   Return

ZoomMenu:
AspectMenu:
   If isPaused
   {
      MsgBox, 262208, % A_Space, % &quot;Without result while on a pause.&quot;, % 1.5
      Return
   }
   Menu, Tray, % (A_ThisLabel~=&quot;mM&quot; ? (isNotKeepZ:=!isNotKeepZ) ? &quot;Unc&quot;:&quot;C&quot;
                               . &quot;&quot; : (isNotKeepAR:=!isNotKeepAR) ? &quot;Unc&quot;:&quot;C&quot;)&quot;heck&quot;
             , % &quot;Keep &amp;&quot;(A_ThisLabel~=&quot;mM&quot; ? &quot;zoom&quot;:&quot;aspect ratio&quot;)
   If % A_ThisLabel~=&quot;tM&quot;
      SetDefault()
   Return

ExitScript:
   Loop, 2
      DllCall(&quot;DestroyIcon&quot;, &quot;Ptr&quot;, hIcon%A_Index%), DllCall(&quot;ReleaseDC&quot;, &quot;Ptr&quot;, 0
                                                                        , &quot;Ptr&quot;, hDC%A_Index%)
   ExitApp

SetDefault()
{
   Global

   reset:=True, value_:=width:=height:=155
   WinMove, % &quot;ahk_id&quot;hWnd_,, xWnd, yWnd, 155, 155
}

WndProc(aParams*)
{
   Global hIcon1, hIcon2, tipInfo, isPaused, WM_LBUTTONDOWN, AHK_NOTIFYICON

   If aParams.3=WM_LBUTTONDOWN
      PostMessage, WM_NCLBUTTONDOWN:=0xA1, HTCAPTION:=2,,, % &quot;ahk_id&quot;aParams.4
   Else If aParams.2=WM_LBUTTONUP:=0x202
   {
      Gui, % (isPaused:=!isPaused) ? &quot;Cancel&quot;:&quot;Show&quot;
      TrayIcon(A_ScriptHwnd, 1, AHK_NOTIFYICON, isPaused ? hIcon1:hIcon2, tipInfo, 1)
      Hotkey, RCtrl &amp; Enter, % &quot;HotkeyAction&quot;, % isPaused ? &quot;Off&quot;:&quot;On&quot;
      Hotkey, RCtrl &amp; Up, % &quot;HotkeyAction&quot;, % isPaused ? &quot;Off&quot;:&quot;On&quot;
      Hotkey, RCtrl &amp; Down, % &quot;HotkeyAction&quot;, % isPaused ? &quot;Off&quot;:&quot;On&quot;
      SetTimer, % &quot;ChaseCursor&quot;, % isPaused ? &quot;Off&quot;:100
   }
}

TrayIcon(handleWnd, uID, uCbMsg:=0, hIcon:=0, szTip:=&quot;&quot;, dwMsg:=2)
{
   Global NOTIFYICONDATA

   NumPut(handleWnd, NOTIFYICONDATA,  A_PtrSize=4 ? 04:08, &quot;Ptr&quot;)
   NumPut(uID      , NOTIFYICONDATA,  A_PtrSize=4 ? 08:16, &quot;UInt&quot;)
   NumPut(1|2|4    , NOTIFYICONDATA,  A_PtrSize=4 ? 12:20, &quot;UInt&quot;)
   NumPut(uCbMsg   , NOTIFYICONDATA,  A_PtrSize=4 ? 16:24, &quot;UInt&quot;)
   NumPut(hIcon    , NOTIFYICONDATA,  A_PtrSize=4 ? 20:32, &quot;Ptr&quot;)
   StrPut(szTip    ,&amp;NOTIFYICONDATA +(A_PtrSize=4 ? 24:40), 141, A_IsUnicode ? &quot;UTF-16&quot;:&quot;&quot;)
   NumPut(1|2      , NOTIFYICONDATA,  A_PtrSize=4 ? A_IsUnicode ? 800:416:816, &quot;UInt&quot;)
   DllCall(&quot;shell32\Shell_NotifyIcon&quot;(A_IsUnicode ? &quot;W&quot;:&quot;A&quot;), &quot;UInt&quot;, dwMsg
                                                            , &quot;Ptr&quot;, &amp;NOTIFYICONDATA)
}</code></pre></div><p><a href="http://forum.script-coding.com/viewtopic.php?id=6638">Тема</a> для обсуждения на форуме.</p>]]></content>
			<author>
				<name><![CDATA[Grey]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25792</uri>
			</author>
			<updated>2012-01-07T19:39:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=55435#p55435</id>
		</entry>
</feed>
