1

Тема: Лупа для игр.

Добрый день, нуждаюсь в помощи со следующей реализацией кода..
ИДЕЯ: Хочу сделать лупу участка (к примеру центра) участком и выводить этот участок больше например сбоку.
ПРОБЛЕМЫ: Вывод хорошо (код ниже), но в игре когда кручусь по сторонам мышка которую не видно тоже ездит из угла в угол.. и когда попадает на экран который показывает результат увеличения и я хочу стрельнуть оно переключается на этот экранчик. А когда делаю через код в инете пропуск клика.. то для этого нужно +lastfound а из-за него неработает лупа.. как сделать чтобы оно увеличивало и в тоже время пропускало клик ?

#NoEnv
#NoTrayIcon
SetBatchLines -1
OnExit,GuiClose
SetFormat,float,6.0
SysGet,w,MonitorWorkArea
wbottom+=30
zoom=4
Rx=128
Ry=128
Zx:=Rx/zoom
Zy:=Ry/zoom
paused=0
start=1

WinSet_Click_Through(I, T="254") {
	IfWinExist, % "ahk_id " I
	{
		If (T == "Off")
		{
			WinSet, AlwaysOnTop, Off, % "ahk_id " I
			WinSet, Transparent, Off, % "ahk_id " I
			WinSet, ExStyle, -0x20, % "ahk_id " I
		}
		Else
		{
			WinSet, AlwaysOnTop, On, % "ahk_id " I
			If(T < 0 || T > 254 || T == "On")
				T := 254
			WinSet, Transparent, % T, % "ahk_id " I
			WinSet, ExStyle, +0x20, % "ahk_id " I
		}
	}
	Else
		Return 0
}

Gui,3:-Caption +Border +ToolWindow +AlwaysOnTop 
Gui,3:Color,EEEEEE
Gui,3:Margin,0,0


Gui,+AlwaysOnTop +Resize +ToolWindow -Caption +LastFound
ID:= WinExist()
Gui,Show, % "w" 2*Rx " h" 2*Ry " x0 y0",ZoomW
WinSet_Click_Through(ID)
GuiControl,, ZoomW, Un-Clickable


WinGet,ID,id,ZoomW
WinGet,PrintSourceID,ID
hdd_frame:=DllCall("GetDC",UInt,PrintSourceID)
hdc_frame:=DllCall("GetDC",UInt,ID)

GuiSize:
loop
{
sleep,10

GetKeyState,rctrl,rctrl,P
if (rctrl="D")
{
  if paused=0
  {
    Gui,Hide
    Gui,3:Hide
    paused=1
    sleep,500
    tooltip,
  }
  else
  {
    pausedchek=0
    Gui,Show
    paused=0
    sleep,500
  }
}

if paused=0
{
WinGetPos,winx,winy,Wn,Hn,ZoomW
wn-=8
Hn-=26
Rx:=Wn/2
Ry:=Hn/2
Zx:=Rx/zoom
Zy:=Ry/zoom
xz:=(1920/2)-(Rx/4)
yz:=(1080/2)-(Ry/4)
DllCall("gdi32.dll\StretchBlt",UInt,hdc_frame,Int,0,Int,0,Int,2*Rx,Int,2*Ry,UInt,hdd_frame,UInt,xz,UInt,yz,Int,2*Zx,Int,2*Zy,UInt,0xCC0020) 
ww=%Zx%
hh=%Zy%
ww*=2
hh*=2
xx=%xz%
yy=%yz%
xx-=1
yy-=1
Gui,3:Show,x%xx% y%yy% w%ww% h%hh% NoActivate,frame
;Tooltip, %xx% and %yy% or %Rx% and %Ry%
WinGet,guiid,ID,frame
WinSet,TransColor,EEEEEE,ahk_id %guiid%
ifwinactive,frame
{
  zoom-=1
  winactivate,ahk_class Shell_TrayWnd
}

In(x,a,b)
{
   IfLess x,%a%,Return a
   IfLess b,%x%,Return b
   Return x
}

}
else
  sleep,100
}
Return

^WheelUp::
^WheelDoWn::
If (A_ThisHotKey="^WheelUp")
  zoom+=1
If (A_ThisHotKey="^WheelDoWn")
  zoom-=1
if zoom<1
  zoom=1
if zoom>35
  zoom=35
Zx:=Rx/zoom
Zy:=Ry/zoom
Return

GuiClose:
DllCall("gdi32.dll\DeleteDC",UInt,hdc_frame)
DllCall("gdi32.dll\DeleteDC",UInt,hdd_frame)
ExitApp

f4::exitapp
^space::reload