126

Re: AHK: Экранная лупа

Gdi не прозрачный.
А чего не хочешь пойти по более легкому первому алгоритму?

127

Re: AHK: Экранная лупа

1) Создать прозрачное окно с лупой
2) Брать снимок через Gdi
3) Анализировать этот снимок
4) По результатам анализа делать размытие через wdm на окно с лупой.

Мне это не понятно.

Точнее первое теперь не понятно, ни GetDC ни PrintWindow не получают данные из magnification.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

128

Re: AHK: Экранная лупа

А тебе нужно данные именно из magnification?
Я так понял, что ты просто хочешь размывать участки экрана в зависимости от его контента.

129

Re: AHK: Экранная лупа

Участок экрана закрыт окном GDI с размытием, нужно получить картинку под ним, чтобы обновить размытие. Чтобы узнать что под ним, надо воспользоватся лупой не беря окно с размытием.

Malcev пишет:

Я так понял, что ты просто хочешь размывать участки экрана в зависимости от его контента.

Ну да.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

130

Re: AHK: Экранная лупа

Так размывай окно с лупой, а картинку получай через gdi.

131

Re: AHK: Экранная лупа

Это как?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

132

Re: AHK: Экранная лупа

https://docs.microsoft.com/en-us/window … hindwindow

133

Re: AHK: Экранная лупа

Мне на это дело сверху ещё надо кучу своих картинок кинуть уже без размытия.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

134

Re: AHK: Экранная лупа

EnableBlurBehindWindow это наверное не то размытие, я не нашёл там параметра глубины.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

135

Re: AHK: Экранная лупа

Это стандартное размытие, которое использует виндовс без дополнительных настроек.
Но тебе видно придется-таки получать CreateCompatibleDC из колбека.

136

Re: AHK: Экранная лупа

Malcev пишет:

нужен MagImageScalingCallback, иначе не достать информацию с снимка через лупу.

С такими примечаниями, не хочется.
А почему ты так уверен, что не может быть других вариантов?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

137

Re: AHK: Экранная лупа

Я других не знаю. Да и вообще программ с таким функционалом ни разу не встречал.

138 (изменено: serzh82saratov, 2019-01-12 01:14:31)

Re: AHK: Экранная лупа

Malcev пишет:

Я других не знаю

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

139

Re: AHK: Экранная лупа

О, с выключенным аеро картинка есть.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

140

Re: AHK: Экранная лупа

И без аеро каким то чудом определяется задний фон.
И по краям появляются артефакты. (


#SingleInstance, Force
#NoEnv
SetBatchLines, -1
CoordMode, Mouse

If !pToken := Gdip_Startup()
{
	MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
	ExitApp
}
OnExit, Exit

Gui, -Caption +E0x80000 +AlwaysOnTop +ToolWindow +OwnDialogs +E0x08000000 +HWNDhGui  ; +E0x20
Gui Show, NA, test 

x:= 505
y:= 505
w:= 600
h:= 600 
xv := 400
yv := 200

Blur := 22

hdcSrc := GetDCEx(0)
hdcDest := CreateCompatibleDC()
GoTo Update 
 
1::  
Update:
	; Gui, hide
	; KeyWait, 1
	hBitmap := CreateDIBSection(w, h, hdcDest)
	SelectObject(hdcDest, hBitmap)  
	StretchBlt(hdcDest, 0, 0, w, h, hdcSrc, xv, yv, w,  h) 
	pBitmap := Gdip_CreateBitmapFromHBITMAP(hBitmap)
	DeleteObject(hBitmap)
	pBlurBitmap := Gdip_BlurBitmap(pBitmap, Blur)
	Gdip_DisposeImage(pBitmap)
	G := Gdip_GraphicsFromHDC(hdcDest)
	Gdip_DrawImage(G, pBlurBitmap, 0, 0, w, h, 0, 0, w, h)
	Gdip_DisposeImage(pBlurBitmap) 
	Gdip_DeleteGraphics(G) 
	UpdateLayeredWindow(hGui, hdcDest, xv, yv, w, h)
	Gui, Show, NA  
	Return 

esc::
Exit: 
	DeleteDC(hdcSrc) 
	DeleteDC(hdcDest)  
	Gdip_Shutdown(pToken)
	ExitApp 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

141

Re: AHK: Экранная лупа

У меня при включенном аэро (win7 x64 ahk 64 bit) и при adjust for best appearance в настройках perfomance при нажатии пригтскрин окно лупы копируется в клипбоард.
Если к окну лупы применить MagSetWindowFilterList с хендлом на какое-либо окно, то это окно в лупе показываться не будет и соответственно в буфере обмена тоже.

142

Re: AHK: Экранная лупа

То что лупа может исключать окна мы разобрались, а буфер обмена что даёт?
DC рабочего стола даёт картинку лупы при любых раскладах, это сразу было известно.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

143

Re: AHK: Экранная лупа

Ну во-первых не при любых раскладах. А во-вторых если мы можем получить  снимок лупы, то следовательно мы можем получить снимок без размытого окна. Разве не это твоя цель?

144

Re: AHK: Экранная лупа

Malcev пишет:

Ну во-первых не при любых раскладах.

А что может быть?

Malcev пишет:

А во-вторых если мы можем получить  снимок лупы, то следовательно мы можем получить снимок без размытого окна. Разве не это твоя цель?

Да, но как получить снимок лупы которой не должно быть видно на экране. Как он окажется в буфере, и чем пригтскрин отличается от DC всего экрана?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

145

Re: AHK: Экранная лупа

serzh82saratov пишет:

А что может быть?

Если выключим desktop composition, то в принтскрине лупы не будет.

serzh82saratov пишет:

Да, но как получить снимок лупы которой не должно быть видно на экране. Как он окажется в буфере, и чем пригтскрин отличается от DC всего экрана?

Там же всё пошагово расписано:

Malcev пишет:

Пример для взятия скриншота:
https://www.codeproject.com/Articles/60 … on-library

146

Re: AHK: Экранная лупа

Malcev пишет:

Если выключим desktop composition, то в принтскрине лупы не будет.

Если выключим, то и лупа ненужна.

Malcev пишет:

Там же всё пошагово расписано:

Так мы же обсуждали:

This is a simple way to take a screenshot using the powerful Magnification library. However there is a problem that is need to be solved. The MagImageScalingCallback() function is deprecated, and could be removed from newer versions of Windows. So we need to find another way to access the data. Currently I haven't not found any solution yet. If anyone could find anyway, please let me know.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

147

Re: AHK: Экранная лупа

serzh82saratov пишет:

Если выключим, то и лупа ненужна.

Почему?

serzh82saratov пишет:

Так мы же обсуждали:

Во всяком случае за 5 лет не убрали.
Ну а с семерки уж точно уже не уберут.

148

Re: AHK: Экранная лупа

serzh82saratov пишет:

без аеро каким то чудом определяется задний фон.

В 140 код, попробуй обновлять на кл. 1.

Malcev пишет:

Ну а с семерки уж точно уже не уберут.

Если делать, то уже с расчётом на 10.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

149

Re: AHK: Экранная лупа

В GetDCEx DCX_EXCLUDERGN может иметь отношение к теме?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

150

Re: AHK: Экранная лупа

Не знаю, но думаю вряд ли это поможет.
А зачем тебе вообще это надо?
Что за приложение ты делаешь в котором этот функционал необходим?