801

Re: AHK: Замена "Window Spy"

Всё равно не понял.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

802

Re: AHK: Замена "Window Spy"

В 796 посте:
demoItem3.style.top = -y + 50 + "px";
Вместо 50 передавать текущее положение элемента.

803

Re: AHK: Замена "Window Spy"

Не знаю как это будет на практике.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

804 (изменено: serzh82saratov, 2017-11-27 09:13:15)

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

Буду пока пробовать с onscroll и onresize, fixed по по моему больше проблем создаёт, но его всё равно нет. Думаю корректировать ширину полос и сдвиг title, так как мелькание справа не так бросаются в глаза, в сравнении чем менять left.

Что то получилось, никак не могу побороть чтобы не было переноса, тут если окно уменьшить по ширине, то кнопка съезжает.

serzh82saratov пишет:

Или на 8, хотя ощущение что в нём ничего нового

А нет, на 8 появился querySelector. fixed тоже есть.


#SingleInstance Force
#NoEnv

FontSize = 12pt
FontSize = 20pt

Gui, +ReSize
Gui, Add, ActiveX, w812 h312 HWNDhActiveX voDoc, HTMLFile
Gui, Show
Gui, +MinSize497

FontFamily :=  "Arial"
ColorBg := "#F8F8F8"
ColorTitle := "#27419B"

html =
(
<script type="text/javascript">
	var prWidth;
	function shift(p) {
		var col, Width, clientWidth, scrollLeft, Offset;
		clientWidth = document.documentElement.clientWidth
		scrollLeft = document.documentElement.scrollLeft
//		alert(clientWidth + '   ' + scrollLeft);
		Width = (clientWidth + scrollLeft)
		if (!p && Width == prWidth)
			return
		col = document.querySelectorAll('.fix');
		for (var i = 0; i < col.length; i++) {
			col[i].style.width = Width + 'px';
		}
		Offset = ((clientWidth / 100 * 35) + scrollLeft)
		col = document.querySelectorAll('.con');
		for (var i = 0; i < col.length; i++) {
			col[i].style.left = Offset + "px";
		}
		prWidth = Width
	}
	onresize = function() {
		shift(1);
	} 
	onscroll = function() {
		shift(0);
	} 
	
</script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=8""></head>" html)
oDoc.Close()

html =
(
<body id="body">
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 000</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text 
Text Text Text 
Text Text Text</pre>
<div id='hkjjkr'><br><br><br><br></div>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<pre contenteditable='true'>contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent000</pre>

<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<br><br><br><br><br><br><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title 1 ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div></div>
</body>

<style>
* {
	font-family: %FontFamily%; 
	font-size: %FontSize%;
	margin:0;
	background-color: %ColorBg%;
}
body {
	word-wrap: break-word;
	word-wrap: normal; 
}
.fix {
	text-align:center;
	display:inline-block; 
}
.fix, .hr {
	position:absolute;
	width:100`%;
	float: left;
	left:0px;
}
.hr { 
	border-bottom:0.2em dashed red;
	height:0.5em;
}
.con {
	position:absolute;
	left: 35`%;
	background: none; 
}
.title {
	position:relative;
	color: %ColorTitle%;
	margin-right: 11px;
	float: left; 
}
pre { 
}
.button {
	margin-left: 44px;
	border: 1px solid black;
	padding: 0px 0.5em;
}
</style>
)
oDoc.body.innerhtml := html
return

GuiSize:
	WinMove, ahk_id %hActiveX%, , 0, 0, A_GuiWidth, A_GuiHeight
	return

FixIE() {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", _ := FixIE()
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, Value, HKCU, %Key%, %ExeName%
	If Value != 9999
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 9999
}

Escape::
GuiEscape:
GuiClose: 
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

805

Re: AHK: Замена "Window Spy"

Malcev пишет:

Gui, Add, ActiveX, x0 y-5 w140 h50 vDocument, MSHTML:%html%

Это просто в начале, в сабже идёт вставка каждые 150 - 200мс.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

806

Re: AHK: Замена "Window Spy"

Вроде работает.
Черновик пока из 795.


#SingleInstance Force
#NoEnv

FixIE(1)

Gui, +ReSize +DPIScale
Gui, Add, ActiveX, w812 h312 HWNDhActiveX voDoc, HTMLFile
Gui, Show
Gui, +MinSize497

FontSize = 20pt
FontSize = 15pt

FontFamily :=  "Arial"
ColorBg := "#F0F0F0"
ColorTitle := "#27419B"

html =
(
<script type="text/javascript">
	var prY = 0, col, Attr, prAttr, Offset, Attr2;
	
	window.onscroll = function () {
		Attr = (window.pageYOffset != prY) ? 'fix' : 'fix2'
		Attr2 = (window.pageYOffset != prY) ? 'relative' : 'fixed'
		Offset = (Attr == 'fix') ? window.pageXOffset : 0;
		prY = window.pageYOffset;
		if (prAttr != Attr) {
			col = document.querySelectorAll('.fix');
			for (var i = 0; i < col.length; i++) {
		//		alert(Attr);
		//		col[i].setAttribute('id',Attr);
				col[i].style.position = Attr2;
				
				col[i].style.left = (Offset + 'px');
			if (Attr == 'fix2') {
				col[i].style.top = (col[i].offsetTop - window.pageYOffset) + 'px';
			//	alert(Attr);
			}
			else
				col[i].style.top =  '';
			}
		}
		prAttr = Attr;
		document.getElementById('test').innerText = prAttr + "   " + Offset;
	}
</script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=11""></head>" html)
oDoc.Close()

html =
(
<body>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 000</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<pre contenteditable='true'>contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent000</pre>
fixed absolute sticky  relative             <span id="test">  </span>
<br><br><br><br>

<div class="fix"><div class='hr'></div></div><br>
</body>

<style>

.fix{
	position:fixed;
	width:100`%;
	float: left;
	text-align:center;
	left:0px;
	display:inline-block;
	z-index:2;
	background-color: %ColorBg%;
}
.hr{
	position:absolute;
	border-bottom:0.2em dashed red;
	float: left;
	width:100`%;
	height:0.5em;
	z-index:-1;
}
#fix{
	position:relative;
}
* {
	font-family: %FontFamily%; 
	font-size: %FontSize%;
	margin:0;
	background-color: %ColorBg%;
	
}
body {
	word-wrap: normal;
	background-color: %ColorBg%;
}
pre {
	background-color: %ColorBg%;
}
.button {
	position:relative;
	margin-left: 44px;
	left: 44px;
	border: 1px solid black;
	padding: 0px 0.5em;
	background-color: %ColorBg%;
}
.title {
	position:relative;
	color: #%ColorTitle%;
	left: 35`%;
	margin-right: 44px;
	float: left;
	background-color: %ColorBg%;
}
</style>
)
oDoc.body.innerhtml := html
return

GuiSize:
	WinMove, ahk_id %hActiveX%, , 0, 0, A_GuiWidth, A_GuiHeight
	return

FixIE(Fix) {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION"
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, OutputVar, HKCU, %Key%, %ExeName%
	
	If Fix
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 110001
	Else
		RegDelete, HKCU, %Key%, %ExeName%
}

Escape::
GuiEscape:
GuiClose: 
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

807

Re: AHK: Замена "Window Spy"

Если запустить скрипт и нажать на скролл вниз, то идет дерганье.

808

Re: AHK: Замена "Window Spy"

Имеешь ввиду нажать на стрелку внизу скролла?
Тогда да, если за сам скролл дёргать, то вроде нет дерганья. Почему так...

Ещё интересно, в 804 всё дёргается, но если зажать ЛКМ где то в середине верхней строки с текстом, и поводить мышью влево право, то дерганий нет, тоже не ясно с чего бы.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

809 (изменено: serzh82saratov, 2017-11-27 16:31:35)

Re: AHK: Замена "Window Spy"

На 8 если на любой скролл понажимать, я понял не только на стрелки но и в молоко тоже, то процесс крашится.


#SingleInstance Force
#NoEnv

Gui, +ReSize +DPIScale
Gui, Add, ActiveX, w812 h312 HWNDhActiveX voDoc, HTMLFile
Gui, Show
Gui, +MinSize497

FontSize = 20pt
FontSize = 12pt

FontFamily :=  "Arial"
ColorBg := "#F0F0F0"
ColorTitle := "27419B"

html =
(
<script type="text/javascript">
	var prY, prAttr
	window.onscroll = function () {
		var col, Attr, Offset, Attr2, Top;
		Top = document.documentElement.scrollTop
		Attr = (Top != prY) ? 'relative' : 'fixed'
		Offset = (Attr == 'relative') ? document.documentElement.scrollLeft : 0;
		prY = Top;
		if (prAttr != Attr) {
			prAttr = Attr;
			col = document.querySelectorAll('.fix');
			for (var i = 0; i < col.length; i++) {
				col[i].style.position = Attr;
				col[i].style.left = (Offset + 'px');
			if (Attr == 'fixed') 
				col[i].style.top = (col[i].offsetTop - Top) + 'px';
			else
				col[i].style.top =  '';
			}
		}
	}
</script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=8""></head>" html)
oDoc.Close()

html =
(
<body>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 000</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<pre contenteditable='true'>contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent000</pre>
fixed absolute sticky  relative             <span id="test">  </span>
<br><br><br><br>

<div class="fix"><div class='hr'></div></div><br>
</body>

<style>

.fix{
	position:fixed;
	width:100`%;
	float: left;
	text-align:center;
	left:0px;
	display:inline-block;
	z-index:2;
	background-color: %ColorBg%;
}
.hr{
	position:absolute;
	border-bottom:0.2em dashed red;
	float: left;
	width:100`%;
	height:0.5em;
	z-index:-1;
}
#fix{
	position:relative;
}
* {
	font-family: %FontFamily%; 
	font-size: %FontSize%;
	margin:0;
	background-color: %ColorBg%;
	
}
body {
	word-wrap: normal;
	background-color: %ColorBg%;
}
pre {
	background-color: %ColorBg%;
}
.button {
	position:relative;
	margin-left: 44px;
	left: 44px;
	border: 1px solid black;
	padding: 0px 0.5em;
	background-color: %ColorBg%;
}
.title {
	position:relative;
	color: #%ColorTitle%;
	left: 35`%;
	margin-right: 44px;
	float: left;
	background-color: %ColorBg%;
}
</style>
)
oDoc.body.innerhtml := html
return

GuiSize:
	WinMove, ahk_id %hActiveX%, , 0, 0, A_GuiWidth, A_GuiHeight
	return

FixIE() {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", _ := FixIE()
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, Value, HKCU, %Key%, %ExeName%
	If Value != 8000 
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 8000 
}

Escape::
GuiEscape:
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

810

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

Тогда да, если за сам скролл дёргать, то вроде нет дерганья. Почему так...

Если за сам скролл тянуть то сначала выполняется процедура onscroll, а потом уже визуально смещается, а если нажимать то сначала смещается, и только после выполняется процедура onscroll.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

811 (изменено: Malcev, 2017-11-27 16:51:41)

Re: AHK: Замена "Window Spy"

Если в IE убрать опцию use smooth scrolling, то код из 796 поста перестает дергаться.
Твой код продолжает, но только при нажатии на горизонтальный скролл.
Возможно, дело в том, что ты запускаешь через HTMLFile.
Апдейт. Дело не в этом - проверил. Надо пересмотреть алгоритм привязки по вертикали.

812 (изменено: serzh82saratov, 2017-11-27 16:55:46)

Re: AHK: Замена "Window Spy"

А как оключить use smooth scrolling в 8?

Malcev пишет:

Возможно, дело в том, что ты запускаешь через HTMLFile.

Нет, тоже самое.

serzh82saratov пишет:

Если за сам скролл тянуть то сначала выполняется процедура onscroll, а потом уже визуально смещается, а если нажимать то сначала смещается, и только после выполняется процедура onscroll.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

813

Re: AHK: Замена "Window Spy"

https://www.granneman.com/files/9313/1467/1112/ie-smooth-scrolling-use-smooth-scrolling.gif

814

Re: AHK: Замена "Window Spy"

Ну это не вариант.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

815

Re: AHK: Замена "Window Spy"

Ну через реестр можно.

816

Re: AHK: Замена "Window Spy"

Можно пробовать блокировать клики по скроллбару и ссамому потом опускать-поднимать страницу:

event.preventDefault();

или если не сработает:

event.returnValue = false;

https://developer.mozilla.org/ru/docs/W … eturnValue

817

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

Если за сам скролл тянуть то сначала выполняется процедура onscroll, а потом уже визуально смещается, а если нажимать то сначала смещается, и только после выполняется процедура onscroll.

Похоже это тоже баг ИЕ https://jsfiddle.net/9qa9d22w/ в других браузерах норм.

Malcev пишет:

Можно пробовать блокировать клики по скроллбару

Можешь попробовать? Я мало что понял.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

818

Re: AHK: Замена "Window Spy"

Похоже событие скролл нельзя прекратить.
А почему не хочешь через реестр отключать smooth scrolling?

819

Re: AHK: Замена "Window Spy"

Ключ вроде такой, только не пойму что писать, видел что для включения 0 надо.

RegWrite, REG_DWORD, HKCU, Software\Microsoft\Internet Explorer\MAIN\SmoothScroll, ?, ?

Только не понял что это даёт.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

820

Re: AHK: Замена "Window Spy"

1 - включен.
0 - выключен.
Как я понял, выключать нужно только при создании webbrowser, а потом можно менять на дефалтную установку.

serzh82saratov пишет:

Только не понял что это даёт.

Код из 806 поста перестает дергаться.

821

Re: AHK: Замена "Window Spy"

RegWrite, REG_DWORD, HKCU, Software\Microsoft\Internet Explorer\MAIN\SmoothScroll, , 0

Всё тоже самое, жмёшь верт. скролл, сначала всё уезжает, а потом полосы смещаются.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

822

Re: AHK: Замена "Window Spy"

Так неправильно.
Надо так:

RegWrite, REG_DWORD, HKCU, Software\Microsoft\Internet Explorer\MAIN, SmoothScroll, 0

В этом режиме код из 796 поста у меня вообще не дергается, а код из 806 дергается толко при горизонтальном скролле.
Код из 809 поста не дергается при любом режиме smoothscroll и не крашится.

823

Re: AHK: Замена "Window Spy"

Да, окей. На вызов onscroll это конечно не влияет, но за счёт более быстрой перемотки незаметно.
Блин, тогда придётся в реестр 2 раза писать, выкл \ вкл так как параметр глобальный.

Ещё думаю по таймеру, вроде не напрягает, а может даже лучше, не так пестрит когда строка бежит под заголовком.


#SingleInstance Force
#NoEnv
Global oDoc
FontSize = 20pt
FontSize = 12pt

Gui, +ReSize
Gui, Add, ActiveX, w812 h312 HWNDhActiveX voDoc, HTMLFile
Gui, Show
Gui, +MinSize497

FontFamily :=  "Arial"
ColorBg := "#F8F8F8"
ColorTitle := "#27419B"

html =
(
<script language='JavaScript'>
	var prscroll, timerId;
	function shift(p) {
		var col, Width, clientWidth, scrollLeft, Offset;
		clientWidth = document.documentElement.clientWidth
		scrollLeft = document.documentElement.scrollLeft
	//	alert(clientWidth + '   ' + scrollLeft);   alert();
	//	Width = (clientWidth + scrollLeft)
		Width = document.documentElement.scrollWidth
		if (!p && scrollLeft == prscroll)
			return
		Offset = ((clientWidth / 100 * 35) + scrollLeft)
		//	col[i].style.transform = 'rotateZ(45deg)';
		col = document.querySelectorAll('.con');
		for (var i = 0; i < col.length; i++) {
			col[i].style.left = Offset + "px";
		}
		col = document.querySelectorAll('.fix');
		for (var i = 0; i < col.length; i++) {
			col[i].style.width = Width + 'px';
		}
		prscroll = scrollLeft;
	}
	onresize = function() {
		shift(1);
	} 
	onscroll = function() {
	//	shift(0);
	//	scrolltimer();
		clearTimeout(timerId);
		timerId = setTimeout("shift(0)", 100);
	}
</script>

<script id='script1' language='JavaScript'>
	var key1;
	function scrolltimer() {
		key1 = 'scrolltimer';
		script1.click();
	//	alert();
	}
</script>
)

oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=8""></head>" html)
oDoc.Close()
ComObjConnect(# := oDoc.getElementById("script1"), MyEvents)

html =
(
<body id="body">
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 000</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text 
Text Text Text 
Text Text Text</pre>
<div id='hkjjkr'><br><br><br><br></div>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<pre contenteditable='true'>contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent000</pre>

<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<br><br><br><br><br><br><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div></div>
</body>

<style>
* {
	font-family: %FontFamily%; 
	font-size: %FontSize%;
	margin:0;
	background-color: %ColorBg%;
}
body {
	word-wrap: break-word;
	word-wrap: normal; 
}
.fix {
	text-align:center;
	display:inline-block; 
}
.fix, .hr {
	position:absolute;
	width:100`%;
	float: left;
	left:0px;
}
.hr { 
	border-bottom:0.2em dashed red;
	height:0.5em;
}
.con {
	position:absolute;
	left: 35`%;
	background: none; 
}
.title {
	position:relative;
	color: %ColorTitle%;
	margin-right: 11px;
	float: left; 
}
pre { 
}
.button {
	margin-left: 44px;
	border: 1px solid black;
	padding: 0px 0.5em;
}
</style>
)
oDoc.body.innerhtml := html
oDoc.body.innerhtml := html
return

GuiSize:
	WinMove, ahk_id %hActiveX%, , 0, 0, A_GuiWidth, A_GuiHeight
	return

FixIE(ver) {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN"
	. "\FeatureControl\FEATURE_BROWSER_EMULATION", _ := FixIE(8000)
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, value, HKCU, %Key%, %ExeName% 
	If (value != ver)
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, %ver% 
}

Escape::
GuiEscape:
GuiClose: 
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

824 (изменено: Malcev, 2017-11-28 00:34:13)

Re: AHK: Замена "Window Spy"

Сейчас по горизонтали скачет.
Код из 809 поста - пока самый оптимальный. И не надо реестр править.

825

Re: AHK: Замена "Window Spy"

Не понял, если 809 то надо реестр править.
У меня с SmoothScroll = 0 по горизонтали не скачет.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

826

Re: AHK: Замена "Window Spy"

823 скачет.
809 не скачет и без  правки реестра. Проверил на 5 компах.

#SingleInstance Force
#NoEnv

Gui, +ReSize +DPIScale
Gui, Add, ActiveX, w812 h312 HWNDhActiveX voDoc, HTMLFile
Gui, Show
Gui, +MinSize497

FontSize = 20pt
FontSize = 12pt

FontFamily :=  "Arial"
ColorBg := "#F0F0F0"
ColorTitle := "27419B"

html =
(
<script type="text/javascript">
	var prY, prAttr
	window.onscroll = function () {
		var col, Attr, Offset, Attr2, Top;
		Top = document.documentElement.scrollTop
		Attr = (Top != prY) ? 'relative' : 'fixed'
		Offset = (Attr == 'relative') ? document.documentElement.scrollLeft : 0;
		prY = Top;
		if (prAttr != Attr) {
			prAttr = Attr;
			col = document.querySelectorAll('.fix');
			for (var i = 0; i < col.length; i++) {
				col[i].style.position = Attr;
				col[i].style.left = (Offset + 'px');
			if (Attr == 'fixed') 
				col[i].style.top = (col[i].offsetTop - Top) + 'px';
			else
				col[i].style.top =  '';
			}
		}
	}
</script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=8""></head>" html)
oDoc.Close()

html =
(
<body>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 000</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<pre contenteditable='true'>contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent000</pre>
fixed absolute sticky  relative             <span id="test">  </span>
<br><br><br><br>

<div class="fix"><div class='hr'></div></div><br>
</body>

<style>

.fix{
	position:fixed;
	width:100`%;
	float: left;
	text-align:center;
	left:0px;
	display:inline-block;
	z-index:2;
	background-color: %ColorBg%;
}
.hr{
	position:absolute;
	border-bottom:0.2em dashed red;
	float: left;
	width:100`%;
	height:0.5em;
	z-index:-1;
}
#fix{
	position:relative;
}
* {
	font-family: %FontFamily%; 
	font-size: %FontSize%;
	margin:0;
	background-color: %ColorBg%;
	
}
body {
	word-wrap: normal;
	background-color: %ColorBg%;
}
pre {
	background-color: %ColorBg%;
}
.button {
	position:relative;
	margin-left: 44px;
	left: 44px;
	border: 1px solid black;
	padding: 0px 0.5em;
	background-color: %ColorBg%;
}
.title {
	position:relative;
	color: #%ColorTitle%;
	left: 35`%;
	margin-right: 44px;
	float: left;
	background-color: %ColorBg%;
}
</style>
)
oDoc.body.innerhtml := html
return

GuiSize:
	WinMove, ahk_id %hActiveX%, , 0, 0, A_GuiWidth, A_GuiHeight
	return

FixIE() {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", _ := FixIE()
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, Value, HKCU, %Key%, %ExeName%
	If Value != 8000 
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 8000 
}

Escape::
GuiEscape:
	ExitApp

827

Re: AHK: Замена "Window Spy"

Оба крашатся.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

828

Re: AHK: Замена "Window Spy"

У тебя какая версия интернет эксплорера?
Version: 11.0.9600.18837
Update Versions: 11.0.48

829

Re: AHK: Замена "Window Spy"

Версия: 11.0.9600.17843IS
Версии обновления: 11.0.20
64bit, пишет что самая последняя.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

830

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

пишет что самая последняя.

Думаю врет:
https://www.catalog.update.microsoft.co … =kb4047206

831

Re: AHK: Замена "Window Spy"

Спасибо, обновил.
Я теперь запутался, 826 вроде норм (ну если не считать что есть ещё стрелочка по MButton), ты вроде говорил что у тебя тоже мелькало, потом говорили про SmoothScroll = 0, а теперь со SmoothScroll = 1 не мелькает, что изменилось?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

832

Re: AHK: Замена "Window Spy"

Начиная с ИЕ-9  ввели новую фичу smooth scroll.
Поставь в 826 код

If Value != 11000
RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 11000

и начнет снова мелькать.

833

Re: AHK: Замена "Window Spy"

Так все те примеры на 8.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

834

Re: AHK: Замена "Window Spy"

806 на IE11.

835

Re: AHK: Замена "Window Spy"

Мы же про 823, 809, 826.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

836 (изменено: Malcev, 2017-11-28 02:30:41)

Re: AHK: Замена "Window Spy"

Когда я писал про реестр, я имел в виду код 806.
А 823 у меня при нажатии на горизонтальный скролл дергается.

837

Re: AHK: Замена "Window Spy"

О, у меня тут теперь не мелькает. Он попроще, и стрелочка по MButton норм.

#SingleInstance Force
#NoEnv

FontSize = 20pt
FontSize = 12pt

Gui, +ReSize
Gui, Add, ActiveX, w812 h312 HWNDhActiveX voDoc, HTMLFile
Gui, Show
Gui, +MinSize497

FontFamily :=  "Arial"
ColorBg := "#F8F8F8"
ColorTitle := "#27419B"

html =
(
<script type="text/javascript">
	var prWidth;
	function shift(p) {
		var col, Width, clientWidth, scrollLeft, Offset;
		clientWidth = document.documentElement.clientWidth
		scrollLeft = document.documentElement.scrollLeft
	//	alert(clientWidth + '   ' + scrollLeft);
		Width = (clientWidth + scrollLeft)
		if (!p && Width == prWidth)
			return
		Offset = ((clientWidth / 100 * 35) + scrollLeft)
		col = document.querySelectorAll('.con');
		for (var i = 0; i < col.length; i++) {
			col[i].style.left = Offset + "px";
		}
		col = document.querySelectorAll('.fix');
		for (var i = 0; i < col.length; i++) {
			col[i].style.width = Width + 'px';
		}
		prWidth = Width
	}
	onresize = function() {
		shift(1);
	} 
	onscroll = function() {
		shift(0);
	}
</script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=8""></head>" html)
oDoc.Close()

html =
(
<body id="body">
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 000</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text 
Text Text Text 
Text Text Text</pre>
<div id='hkjjkr'><br><br><br><br></div>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<pre contenteditable='true'>contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent000</pre>

<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<br><br><br><br><br><br><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div></div>
</body>

<style>
* {
	font-family: %FontFamily%; 
	font-size: %FontSize%;
	margin:0;
	background-color: %ColorBg%;
}
body {
	word-wrap: break-word;
	word-wrap: normal; 
}
.fix {
	text-align:center;
	display:inline-block; 
}
.fix, .hr {
	position:absolute;
	width:100`%;
	float: left;
	left:0px;
}
.hr { 
	border-bottom:0.2em dashed red;
	height:0.5em;
}
.con {
	position:absolute;
	left: 35`%;
	background: none; 
}
.title {
	position:relative;
	color: %ColorTitle%;
	margin-right: 11px;
	float: left; 
}
pre { 
}
.button {
	margin-left: 44px;
	border: 1px solid black;
	padding: 0px 0.5em;
}
</style>
)
oDoc.body.innerhtml := html
return

GuiSize:
	WinMove, ahk_id %hActiveX%, , 0, 0, A_GuiWidth, A_GuiHeight
	return

FixIE(ver) {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN"
	. "\FeatureControl\FEATURE_BROWSER_EMULATION", _ := FixIE(8000)
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, value, HKCU, %Key%, %ExeName% 
	If (value != ver)
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, %ver% 
}

Escape::
GuiEscape:
GuiClose: 
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

838

Re: AHK: Замена "Window Spy"

Malcev пишет:

Проверил на 5 компах.

ХР на них не было?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

839

Re: AHK: Замена "Window Spy"

Не, только win7 и на win10.

840

Re: AHK: Замена "Window Spy"

Malcev пишет:

А 823 у меня при нажатии на горизонтальный скролл дергается.

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

#SingleInstance Force
#NoEnv
Global oDoc
FontSize = 20pt
FontSize = 12pt

Gui, +ReSize
Gui, Add, ActiveX, w812 h312 HWNDhActiveX voDoc, HTMLFile
Gui, Show
Gui, +MinSize497

FontFamily :=  "Arial"
ColorBg := "#F8F8F8"
ColorTitle := "#27419B"

html =
(
<script language='JavaScript'>
	var prscroll, timerId, timeropacity;
	function shift(p) {
		var col, Width, clientWidth, scrollLeft, Offset;
		clientWidth = document.documentElement.clientWidth
		scrollLeft = document.documentElement.scrollLeft
	//	alert(clientWidth + '   ' + scrollLeft);   alert();
		Width = document.documentElement.scrollWidth
		if (p && scrollLeft == prscroll)
			return
		Offset = ((clientWidth / 100 * 35) + scrollLeft)
		col = document.querySelectorAll('.fix');
		for (var i = 0; i < col.length; i++) {
			col[i].style.width = Width + 'px';
		}
		col = document.querySelectorAll('.con');
		if (p) {
			clearTimeout(timeropacity);
			for (var i = 0; i < col.length; i++) {
				col[i].style.filter = 'alpha(opacity=0)';
			}
			timeropacity = setTimeout("opacity(0)", 50);
		}
		for (var i = 0; i < col.length; i++) {
			col[i].style.left = Offset + "px";
		}
		prscroll = scrollLeft;
	}
	function opacity(trans) {
		trans += 10
		col = document.querySelectorAll('.con');
		for (var i = 0; i < col.length; i++) {
			col[i].style.filter = 'alpha(opacity=' + trans + ')';
		}
		if (trans < 100)
			timeropacity = setTimeout("opacity(" + trans + ")", 20);
	} 
	onresize = function() {
		shift(0);
	} 
	onscroll = function() {
	//	shift(1);
	//	scrolltimer();
		clearTimeout(timerId);
		timerId = setTimeout("shift(1)", 140);
	}
</script>

<script id='script1' language='JavaScript'>
	var key1;
	function scrolltimer() {
		key1 = 'scrolltimer';
		script1.click();
	//	alert();
	}
</script>
)

oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=8""></head>" html)
oDoc.Close()
ComObjConnect(# := oDoc.getElementById("script1"), MyEvents)

html =
(
<body id="body">
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 000</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text 
Text Text Text 
Text Text Text</pre>
<div id='hkjjkr'><br><br><br><br></div>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<pre contenteditable='true'>contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent000</pre>

<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<br><br><br><br><br><br><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div><div class='con'><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div></div><br>
<div class="fix"><div class='hr'></div></div>
</body>

<style>
* {
	font-family: %FontFamily%; 
	font-size: %FontSize%;
	margin:0;
	background-color: %ColorBg%;
}
body {
	word-wrap: break-word;
	word-wrap: normal; 
}
.fix {
	text-align:center;
	display:inline-block; 
}
.fix, .hr {
	position:absolute;
	width:100`%;
	float: left;
	left:0px;
}
.hr { 
	border-bottom:0.2em dashed red;
	height:0.5em;
}
.con {
	position:absolute;
	left: 35`%;
	background: none; 
//	filter: alpha(opacity=10)
}
.title {
	color: %ColorTitle%;
	margin-right: 11px;
	float: left;
}
pre { 
}
.button {
	margin-left: 44px;
	border: 1px solid black;
	padding: 0px 0.5em;
}
</style>
)
oDoc.body.innerhtml := html
oDoc.body.innerhtml := html
return

GuiSize:
	WinMove, ahk_id %hActiveX%, , 0, 0, A_GuiWidth, A_GuiHeight
	return

FixIE(ver) {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN"
	. "\FeatureControl\FEATURE_BROWSER_EMULATION", _ := FixIE(8000)
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, value, HKCU, %Key%, %ExeName% 
	If (value != ver)
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, %ver% 
}

Escape::
GuiEscape:
GuiClose: 
	ExitApp
	

2::oDoc.querySelector(".fixDiv").style.left := "0px"
return
   
1:: msgbox % oDoc.documentMode   

Class MyEvents {
	onclick() {
		key1 := oDoc.Script.key1
		ToolTip % key1
	}
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

841 (изменено: Malcev, 2017-11-28 04:25:26)

Re: AHK: Замена "Window Spy"

Может это ввести опционально, а то при постоянной работе это мелькание может отвлекать или раздражать.

842 (изменено: serzh82saratov, 2017-11-28 10:14:31)

Re: AHK: Замена "Window Spy"

Не сказать что это очень мне нравится, но варианты с fixed заработали только после обновления 11, неизвестно как это работает на 9 ХР, да и обновление стоит не у всех, как показал мой же случай. И по MButton выглядит тоже плохо, даже 837 выглядит лучше, но тоже только с обновлением.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

843

Re: AHK: Замена "Window Spy"

Можно делать 3 варианта выбора гуи:
1-ый как сейчас, 2-ой - 837 пост, 3-ий - 840.

844

Re: AHK: Замена "Window Spy"

Ну это будет раздутый код, надо на чём то одном остановится. С fixed ты уже не рассматриваешь?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

845

Re: AHK: Замена "Window Spy"

Не. Просто запутался в вариантах.
Мне больше всего нравится из 826 - fixed.
Можно сделать его и если он у кого-то не заработает, то оставить возможность использовать гуи в таком виде как сейчас.
Другие варианты гуи мне не нравятся из-за мельтешения.

serzh82saratov пишет:

Ну это будет раздутый код, надо на чём то одном остановится

Зато 100% у всех работающий.
Как мы заметили IE весьма капризный инструмент - неизвестно, как он себя поведет при установленных каких-либо плагинах.

846 (изменено: serzh82saratov, 2017-11-28 14:59:21)

Re: AHK: Замена "Window Spy"

Malcev пишет:

Можно сделать его и если он у кого-то не заработает, то оставить возможность использовать гуи в таком виде как сейчас.

Всё равно слишком сложно.

Malcev пишет:

неизвестно, как он себя поведет при установленных каких-либо плагинах.

Ну такое не предусмотреть и в текущей версии сабжа.
Ок, 826, break-word, верхняя строка, button1 наезжает на титл, button4 съезжает вниз, появляется скролл. Не знаю как решить.


#SingleInstance Force
#NoEnv

Gui, +ReSize +DPIScale
Gui, Add, ActiveX, w497 h312 HWNDhActiveX voDoc, HTMLFile
Gui, Show
Gui, +MinSize497

FontSize = 20pt
FontSize = 12pt

FontFamily :=  "Arial"
ColorBg := "#F0F0F0"
ColorTitle := "27419B"

html =
(
<script type="text/javascript">
	var prY, prAttr
	window.onscroll = function () {
		var col, Attr, Offset, Attr2, Top;
		Top = document.documentElement.scrollTop
		Attr = (Top != prY) ? 'relative' : 'fixed'
		Offset = (Attr == 'relative') ? document.documentElement.scrollLeft : 0;
		prY = Top;
		if (prAttr != Attr) {
			prAttr = Attr;
			col = document.querySelectorAll('.fix');
			for (var i = 0; i < col.length; i++) {
				col[i].style.position = Attr;
				col[i].style.left = (Offset + 'px');
			if (Attr == 'fixed') 
				col[i].style.top = (col[i].offsetTop - Top) + 'px';
			else
				col[i].style.top =  '';
			}
		}
	}
</script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=8""></head>" html)
oDoc.Close()

html =
(
<body>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button1 </span><span class='button'> button2 </span><span class='button'> button3 </span><span class='button'> button4 </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 000</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<pre contenteditable='true'>Text Text Text Text Text Text Text Text Text</pre>
<div class="fix"><div class='hr'></div><span class='title'> ( Title ) </span><span class='button'> button </span><span class='button'> button </span></div><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<pre contenteditable='true'>contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent000</pre>
fixed absolute sticky  relative             <span id="test">  </span>
<br><br><br><br>

<div class="fix"><div class='hr'></div></div><br>
</body>

<style>

.fix{
	position:fixed;
	width:100`%;
	float: left;
	text-align:center;
	left:0px;
	display:inline-block;
	z-index:2;
	background-color: %ColorBg%;
}
.hr{
	position:absolute;
	border-bottom:0.2em dashed red;
	float: left;
	width:100`%;
	height:0.5em;
	z-index:-1;
}
#fix{
	position:relative;
}
* {
	font-family: %FontFamily%; 
	font-size: %FontSize%;
	margin:0;
	background-color: %ColorBg%;
	
}
body {
	word-wrap: normal;
	word-wrap: break-word;
	background-color: %ColorBg%;
}
pre {
	background-color: %ColorBg%;
}
.button {
	position:relative;
	margin-left: 44px;
	left: 44px;
	border: 1px solid black;
	padding: 0px 0.5em;
	background-color: %ColorBg%;
}
.title {
	position:relative;
	color: #%ColorTitle%;
	left: 35`%;
	margin-right: 44px;
	float: left;
	background-color: %ColorBg%;
}
</style>
)
oDoc.body.innerhtml := html
return

GuiSize:
	WinMove, ahk_id %hActiveX%, , 0, 0, A_GuiWidth, A_GuiHeight
	return

FixIE() {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", _ := FixIE()
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, Value, HKCU, %Key%, %ExeName%
	If Value != 8000 
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 8000 
}

Escape::
GuiEscape:
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

847

Re: AHK: Замена "Window Spy"

Можно на body поставить overflow-x: hidden;.
И уменьшить margin чтобы все кнопки и title вмещались в одну строку.

848

Re: AHK: Замена "Window Spy"

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

849

Re: AHK: Замена "Window Spy"

На такой случай можно задавать минимальную ширину окна в зависимости от размера шрифта.

850

Re: AHK: Замена "Window Spy"

Ну это костыль, хочется на хтмл, вроде хотелка пустяковая.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

851

Re: AHK: Замена "Window Spy"

Возможно ли получить Accinfo не с под указателя мышки а с ClasNN??

852 (изменено: serzh82saratov, 2017-12-04 09:56:47)

Re: AHK: Замена "Window Spy"

Сделал новый вид, пока только для режима Window. Отпишитесь по тестам. Перенос слов, изменение размера шрифта, горизонтальная прокрутка - названия заголовков и кнопки в линии с ними,  должны оставатся на месте относительно окна.

https://raw.githubusercontent.com/serzh … y_Test.ahk

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

853 (изменено: serzh82saratov, 2017-12-04 11:34:46)

Re: AHK: Замена "Window Spy"

Ещё вроде шрифт как то хуже стал выглядеть.


http://images.vfl.ru/ii/1512372762/dc74224d/19679650.png

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

854

Re: AHK: Замена "Window Spy"

По шрифтам изменений не заметил, но дергающаяся красная линия отвлекает.

855

Re: AHK: Замена "Window Spy"

А как дергается? У меня норм. Или ты про надписи заголовков.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

856

Re: AHK: Замена "Window Spy"

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

857

Re: AHK: Замена "Window Spy"

Malcev пишет:

Надписи тоже иногда подергиваются.

После обновления IE у меня не наблюдается.

Malcev пишет:

красная линия при горизонтальной прокрутке тоже движется вместе с текстом

Так она и в текущей версии также движется вместе с текстом.
Сделаю опционально чтобы заголовки с кнопками не двигались при прокрутке, а только при растягивании окна.
Ещё думаю про опцию, чтобы поля в которых возможны большие объёмы обрезались, см. Window Text.
https://raw.githubusercontent.com/serzh … hkSpy1.ahk

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

858

Re: AHK: Замена "Window Spy"

Есть кто проверить, с ХР или 10...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

859

Re: AHK: Замена "Window Spy"

А fixed ты не захотел из-за невозможности запуска без обновленного IE?
Заметил такую особенность:
1) Активируем какое-нибудь окно.
2) Активируем AhkSpy и сдвигаем горизонтальный ползунок вправо.
3) Активируем какое-нибудь окно.
В результате красные линии обрезаются.

860

Re: AHK: Замена "Window Spy"

Malcev пишет:

В результате красные линии обрезаются.

Это фиаско... Как я мог не заметить.

Malcev пишет:

А fixed ты не захотел из-за невозможности запуска без обновленного IE?

Это показалось лучше, по MButton норм, ну и так по мелочи. И да, обновление  сильнее сгладило "шероховатости", но всё равно с fixed осталось больше косяков. Вообщем тут на примерах надо.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

861 (изменено: stealzy, 2017-12-04 16:56:46)

Re: AHK: Замена "Window Spy"

+ offtop

Сорри за ламерский вопрос, но какие новые возможности дает IE, которые трудно или нельзя достичь стандартными контролами?
Если допустим пункты сделать вкладками, а содержимое Edit-ами. И редактирование-изменение некоторых свойств можно прикрутить.

862

Re: AHK: Замена "Window Spy"

Windows XP SP3. Internet Explorer 6.0.2900.5512.

Post's attachments

Безымянный.PNG
Безымянный.PNG 10.45 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

863

Re: AHK: Замена "Window Spy"

Нужен 8 ие.

stealzy
В Edit большое содержимое тупит.
А какие свойства?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

864

Re: AHK: Замена "Window Spy"

Malcev пишет:

В результате красные линии обрезаются.

Хотя можно ведь перед вставкой HTML делать scrollLeft := 0, думаю это выглядит нормально и логично.
https://raw.githubusercontent.com/serzh … hkSpy1.ahk
stealzy
А какие такие стили нельзя поменять в HTML?

Не получится на анк даже близко добится такой статичной картинки при обновлении инфой или размера окна, нет кучи фишек, разноцветный текст, кнопки прямо в тексте, на HTML верстать намного легче, практически всё из коробки. На анк как минимум надо написать всё позиционирование, это куча кода, и будет всё мелькать как ни старайся. Плюс HTML и javascript это ещё один поток.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

865

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

Хотя можно ведь перед вставкой HTML делать scrollLeft := 0, думаю это выглядит нормально и логично.

Да. Логично.
На Вин10 вроде всё ок.

866 (изменено: serzh82saratov, 2017-12-05 07:15:42)

Re: AHK: Замена "Window Spy"

Поиск по странице поломался, надо будет не забыть поправить.

Кстати почему то через объект в АНК не работает например querySelector - неизвестное имя. Хотя через javascript работает, с чего бы так?
И работа через объект идентична javascript, или javascript может быть более низкоуровневым или просто производительнее?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

867

Re: AHK: Замена "Window Spy"

Странно, должен работать.
Попробуй на каком-нибудь простом примере.

868

Re: AHK: Замена "Window Spy"

#SingleInstance Force
#NoEnv

Gui, Add, ActiveX, w222 h222 voDoc, HTMLFile
Gui, Show 

html =
(
<span class='title'>Title Text</span>
<script type="text/javascript">
alert(document.querySelector(".title").innerText);
</script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=8""></head>" html)
oDoc.Close()

MsgBox % oDoc.querySelector(".title").innerText
return 

FixIE() {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", _ := FixIE()
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, Value, HKCU, %Key%, %ExeName%
	If Value != 8000
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 8000
}

Escape::
GuiEscape:
GuiClose: 
	ExitApp 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

869 (изменено: Malcev, 2017-12-05 16:58:10)

Re: AHK: Замена "Window Spy"

Наверное глюк HTMLFile.
Так как querySelector поддерживается, начиная с 8 версии, то через js он работает.
А через HTMLFile работает только почему-то начиная с 9-ой.

870

Re: AHK: Замена "Window Spy"

Мда, ну хоть костыль можно соорудить.

#SingleInstance Force
#NoEnv

Gui, Add, ActiveX, w222 h222 voDoc, HTMLFile
Gui, Show 

html =
(
<span class='title'>Title Text</span>
<script type="text/javascript">
	function querySelector (Selector) {
		return document.querySelector(Selector);
	}
</script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=8""></head>" html)
oDoc.Close()
oJScript := oDoc.Script

MsgBox % oJScript.querySelector(".title").innerText
return 

FixIE() {
	Static Key := "Software\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", _ := FixIE()
	If A_IsCompiled
		ExeName := A_ScriptName
	Else
		SplitPath, A_AhkPath, ExeName
	RegRead, Value, HKCU, %Key%, %ExeName%
	If Value != 8000
		RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 8000
}

Escape::
GuiEscape:
GuiClose: 
	ExitApp 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

871 (изменено: serzh82saratov, 2017-12-08 11:29:33)

Re: AHK: Замена "Window Spy"

У всех нормально крест выглядит? Хочу добавить в сабж.


#SingleInstance Force
#NoEnv
CoordMode, Mouse
Global hMarkerCross

Gui, Cr: Margin, 0, 0
Gui, Cr: -DPIScale +AlwaysOnTop +HWNDhMarkerCross +E0x08000000 +E0x20 -Caption +Owner +0x40000000 -0x80000000
Gui, Cr: Color, E14B30
	
Loop 
{
	MouseGetPos, MXS, MYS
	ShowMarkerCross(MXS - 25, MYS - 25)
	Sleep 10
}
Return

ShowMarkerCross(x, y, s := 51, a := 3, b := 5) {
	Static IsStart
	If !IsStart && (IsStart := 1) { 
		Gui, Cr: Add, Progress, % "x" (p := (s - a) / 2) " y" p " w" a " h" a " Background000000"
		WinSet, TransColor, 000000 150, ahk_id %hMarkerCross%
		DllCall("SetClassLong", "Ptr", hMarkerCross, "int", -26
		, "int", DllCall("GetClassLong", "Ptr", hMarkerCross, "int", -26) | 0x20000)
	}
	sp := (s - b) / 2  
	WinSet, Region, %  0 "-" sp 
				. " " sp "-" sp
				. " " sp "-" 0
				. " " sp+b "-" 0
				. " " sp+b "-" sp
				. " " s "-" sp
				. " " s "-" sp+b
				. " " sp+b "-" sp+b
				. " " sp+b "-" s
				. " " sp "-" s
				. " " sp "-" sp+b
				. " " 0 "-" sp+b
					, ahk_id %hMarkerCross%
	Gui, Cr: Show, NA x%x% y%y% w%s% h%s%
	Gui, Cr: +AlwaysOnTop
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

872

Re: AHK: Замена "Window Spy"

Не великоват? Можно системным курсором воспользоваться:

Gui, Margin, 30, 30
Gui, Add, Text, vField +0x6 w31 h31 Border gCrossCursor
GuiControlGet, Field, Pos
Gui, Add, Text, % "+0x7 w3 x" FieldX + Floor(FieldW/2) - 1 " yp+4 hp-8 gCrossCursor"
Gui, Add, Text, +0x7 xp+1 yp hp w1 gCrossCursor
Gui, Add, Text, % "+0x7 w" FieldW - 8 " y" FieldY + Floor(FieldW/2) - 1 " x" FieldX + 4 " h3 gCrossCursor"
Gui, Add, Text, +0x7 xp yp+1 h1 wp gCrossCursor
Gui, Add, Text, % "x" FieldX + 40 " y" FieldY + FieldH//2 - 6, Перетащите крестик
Gui, Show
Return
   
CrossCursor:
   Loop 4
      GuiControl, Hide, % "Static" A_Index + 1
   CrossCursor()
   Hotkey, ~LButton Up, Label, On
   Return
   
Label:
   Hotkey, LButton Up, Off
   CrossCursor(0)
   Loop 4
      GuiControl, Show, % "Static" A_Index + 1
   Return
   
GuiClose:
GuiEscape:
   ExitApp
   
CrossCursor(OnOff=1)
{
   static IDC_CROSS := 32515, SPI_SETCURSORS := 0x57
        , hCursor := DllCall("LoadCursor", Ptr, 0, UInt, IDC_CROSS, Ptr)
        , sys_cursors := [32512,32513,32514,32516,32642,32643,32644,32645,32646,32648,32649,32650]
   
   if !OnOff
      DllCall("SystemParametersInfo", UInt, SPI_SETCURSORS, UInt, 0, UInt, 0, UInt, 0)
   else
      for k, cursor in sys_cursors
         hCopy := DllCall("CopyImage", Ptr, hCursor, UInt, 2, Int, 0, Int, 0, UInt, 0)
         , DllCall("SetSystemCursor", Ptr, hCopy, UInt, cursor)
}

Он и цвет меняет на контрастный к тому, который под ним.

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

873

Re: AHK: Замена "Window Spy"

teadrinker пишет:

Не великоват?

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

874 (изменено: serzh82saratov, 2017-12-08 16:19:52)

Re: AHK: Замена "Window Spy"

TransColor оказалось что может мелькать, поэтому лучше без него.
Интересно можно как то сделать инверсию цвета полупрозрачного окна относительно того что под ним.


#SingleInstance Force
#NoEnv
CoordMode, Mouse
Global hMarkerCross

Gui, Cr: Margin, 0, 0
Gui, Cr: -DPIScale +AlwaysOnTop +HWNDhMarkerCross +E0x08000000 +E0x20 -Caption +Owner +0x40000000 -0x80000000
Gui, Cr: Color, FFFFFF

Loop 
{
	MouseGetPos, MXS, MYS 
	ShowMarkerCross(MXS - 25, MYS - 25)
	Sleep 10
}
Return
ShowMarkerCross(x, y, s := 51, a := 5, b := 3) {
	Static IsStart
	If !IsStart && (IsStart := 1) { 
		WinSet, TransParent, 150, ahk_id %hMarkerCross%
		DllCall("SetClassLong", "Ptr", hMarkerCross, "int", -26
		, "int", DllCall("GetClassLong", "Ptr", hMarkerCross, "int", -26) | 0x20000)
	sp := (s - b) / 2
	WinSet, Region, %  ""
				. " " sp+b "-" sp
				. " " sp "-" sp
				. " " sp "-" 0
				. " " sp+b "-" 0
				. " " sp+b "-" sp
				
				. " " sp+b "-" sp
				. " " sp+b "-" sp+b
				. " " s "-" sp+b
				. " " s "-" sp
				. " " sp+b "-" sp
				
				. " " sp+b "-" sp+b
				. " " sp+b "-" s
				. " " sp "-" s
				. " " sp "-" sp+b
				. " " sp+b "-" sp+b
				
				. " " sp "-" sp+b
				. " " sp "-" sp
				. " " 0 "-" sp
				. " " 0 "-" sp+b
				. " " sp+b "-" sp+b 				
				, ahk_id %hMarkerCross%
	}
	Gui, Cr: Show, NA x%x% y%y% w%s% h%s%
	Gui, Cr: +AlwaysOnTop
}

+ или так


#SingleInstance Force
#NoEnv
CoordMode, Mouse
Global hMarkerCross

Gui, Cr: Margin, 0, 0
Gui, Cr: -DPIScale +AlwaysOnTop +HWNDhMarkerCross +E0x08000000 +E0x20 -Caption +Owner +0x40000000 -0x80000000
Gui, Cr: Color, FFFFFF

Loop
{
	MouseGetPos, MXS, MYS 
	ShowMarkerCross(MXS - 20, MYS - 20)
	Sleep 10
}
Return

ShowMarkerCross(x, y, s := 41, b := 3) {
	Static IsStart
	If !IsStart && (IsStart := 1) { 
		WinSet, TransParent, 150, ahk_id %hMarkerCross%
		; DllCall("SetClassLong", "Ptr", hMarkerCross, "int", -26
		; , "int", DllCall("GetClassLong", "Ptr", hMarkerCross, "int", -26) | 0x20000)
		sp := (s - b) / 2
		Gui, Cr: Add, Progress, % "x" 0 " y" 0 " w" sp+1 " h" sp+1 " Background000000"
		Gui, Cr: Add, Progress, % "x" 0 " y" sp+b-1 " wp hp Background000000"
		Gui, Cr: Add, Progress, % "x" sp+b-1 " y" 0 " wp hp Background000000" 
		Gui, Cr: Add, Progress, % "x" sp+b-1 " y" sp+b-1 " wp hp Background000000" 
		WinSet, Region, % ""
		. " " sp+b "-" sp	;  Up
		. " " sp "-" sp
		. " " sp "-" 0
		. " " sp+b "-" 0
		. " " sp+b "-" sp
		
		. " " sp+b "-" sp  ;  Right
		. " " sp+b "-" sp+b
		. " " s "-" sp+b
		. " " s "-" sp
		. " " sp+b "-" sp
		
		. " " sp+b "-" sp+b  ;  Down
		. " " sp+b "-" s
		. " " sp "-" s
		. " " sp "-" sp+b
		. " " sp+b "-" sp+b
		
		. " " sp "-" sp+b  ;  Left
		. " " sp "-" sp
		. " " 0 "-" sp
		. " " 0 "-" sp+b
		. " " sp+b "-" sp+b 				
		, ahk_id %hMarkerCross%
	}
	Gui, Cr: Show, NA x%x% y%y% w%s% h%s%
	Gui, Cr: +AlwaysOnTop
}

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


http://images.vfl.ru/ii/1512723732/cf589bb6/19730415.png

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

875 (изменено: serzh82saratov, 2017-12-11 08:48:58)

Re: AHK: Замена "Window Spy"

А HTMLFile можно визуализировать?

#SingleInstance Force
#NoEnv

oDoc := ComObjCreate("HTMLFile")

Gui, Show 
html =
(
<span class='title'>Title Text</span>
<script type="text/javascript">
alert(document.querySelector(".title").innerText);
</script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=9""></head>" html)
oDoc.Close()

MsgBox % oDoc.querySelector(".title").innerText
msgbox % oDoc.documentMode
return 


Escape:: 
	ExitApp 

Вроде тут что то похожее.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

876

Re: AHK: Замена "Window Spy"

Не понимаю, что значит визуализировать?

877

Re: AHK: Замена "Window Spy"

Я там ссылку перепутал. Вот.

Ну объект HTMLFile есть, показать его в контроле.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

878

Re: AHK: Замена "Window Spy"

Сомневаюсь, что можно вставлять свой хендл на объект документа в гуи.

879

Re: AHK: Замена "Window Spy"

Можно так:

#SingleInstance Force
#NoEnv

oDoc := ComObjCreate("HTMLFile")

html =
(
<div class='title'>Title Text</div><br>
<button onclick = "clickHandler()">Press me</button>
<script>function clickHandler () { alert(document.querySelector(".title").innerText) } </script>
)
oDoc.Write("<!DOCTYPE html><head><meta http-equiv=""X-UA-Compatible"" content=""IE=9""></head>" html)
oDoc.Close()

Gui, Add, ActiveX, x0 y0 w200 h100 vWB , WebBrowser
WB.navigate("about:blank")
WB.document.write( oDoc.body.innerHtml )
Gui, Show, w200 h100
return 

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

880

Re: AHK: Замена "Window Spy"

Режим эмуляции нужно указывать во время создания контрола.
Поэтому это:

WB.navigate("about:blank")

стоит заменить на это:

WB.navigate("about:<!DOCTYPE html><meta http-equiv='X-UA-Compatible' content='IE=9'>")

881

Re: AHK: Замена "Window Spy"

Режим эмуляции нужно указывать во время создания контрола

Вообще-то, когда выполняется команда «navigate», контрол уже создан.

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

882

Re: AHK: Замена "Window Spy"

Опечатался, при создании документа.

883

Re: AHK: Замена "Window Spy"

Можно и здесь:

WB.document.write( "<!DOCTYPE html><meta http-equiv='X-UA-Compatible' content='IE=9'>" . oDoc.body.innerHtml )

Разницы не заметил.

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

884

Re: AHK: Замена "Window Spy"

Наверное у тебя в реестре пропмисан emulation mode для autohotkey.exe.

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

Посмотреть текущий режим эмуляции можно через:

f1::
msgbox % WB.document.documentMode

885 (изменено: serzh82saratov, 2017-12-12 16:42:41)

Re: AHK: Замена "Window Spy"

teadrinker пишет:

WB.document.write

Так мне не надо WebBrowser, мне надо HTMLFile.

Зачем в примере HTMLFile, если в итоге:


#SingleInstance Force
#NoEnv 

html =
(
<div class='title'>Title Text</div><br>
<button onclick = "clickHandler()">Press me</button>
<script>function clickHandler () { alert(document.querySelector(".title").innerText) } </script>
) 

Gui, Add, ActiveX, x0 y0 w200 h100 vWB, WebBrowser
WB.navigate("about:<!DOCTYPE html><meta http-equiv='X-UA-Compatible' content='IE=9'>")
WB.document.write(html)
WB.document.Close()

Gui, Show, w200 h100
  ;	msgbox % WB.document.documentMode
return 

Escape:: 
   ExitApp  
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

886

Re: AHK: Замена "Window Spy"

serzh82saratov пишет:

Зачем в примере HTMLFile, если в итоге

Я так понял, что тебе нужно визуализировть уже имеющийся htmlfile.

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

887

Re: AHK: Замена "Window Spy"

Нужно работать в окне с HTMLFile в режиме совместимости 9.000, WebBrowser не нужен.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

888

Re: AHK: Замена "Window Spy"

А почему не 11?

889

Re: AHK: Замена "Window Spy"

Так мы же обсуждали, для поддержки ХР.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

890

Re: AHK: Замена "Window Spy"

А нужно ли?
У ypppu, например, IE 6 стоит.
У него с IE9 не пойдет.

891

Re: AHK: Замена "Window Spy"

Так у него и с IE8 не пойдёт, а следующая версия на нём будет.
ypppu частный случай, а поддержку ХР думаю надо оставить.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

892 (изменено: Malcev, 2017-12-13 14:45:39)

Re: AHK: Замена "Window Spy"

Как я понимаю, HTMLFile подгружается в гуи через Mshtml.dll.
https://msdn.microsoft.com/en-us/librar … s.85).aspx
Попробуй спросить на оффоруме, почему при подключении к гуи у mshtml.dll нельзя выставить режим совместимости IE-9,10.
Может есть какой-то ключ в реестре...

893

Re: AHK: Замена "Window Spy"

Может ты спросишь, а то мне там тяжело без инглиша.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

894

Re: AHK: Замена "Window Spy"

А что там такого есть, чего нельзя сделать без HTML-штук? Стандартным набором GUI.

895

Re: AHK: Замена "Window Spy"

ypppu
Это уже +10 вопрос на эту тему.
http://forum.script-coding.com/viewtopi … 70#p121970
http://forum.script-coding.com/viewtopi … 46#p121546

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

896

Re: AHK: Замена "Window Spy"

Новая версия, тест.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

897

Re: AHK: Замена "Window Spy"

Как по мне вертикальная прокрутка в вертикальной прокрутке не совсем удобно.
И отвлекают дергающиеся надписи ---Mouse---PixelGetColor---.

898

Re: AHK: Замена "Window Spy"

Malcev пишет:

Как по мне вертикальная прокрутка в вертикальной прокрутке не совсем удобно.

Это сделано по заявкам любетелей класического вида, отключается - Big text overflow hide.

Malcev пишет:

И отвлекают дергающиеся надписи ---Mouse---PixelGetColor---.

Отключается - Moving titles.
Как лупа работает, не зависает при перемещении, она теперь встроена в код.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

899

Re: AHK: Замена "Window Spy"

Лупа зависает.
Если во время использования ее двинуть гуи, то окно не перерисовывается.

900

Re: AHK: Замена "Window Spy"

А отдельно работает?
У тебя же какой то упрощенный вид?

#NoEnv
#SingleInstance Force
#KeyHistory 0
ListLines Off
SetBatchLines,-1
OnExit("ZoomOnClose")
Try Menu, Tray, Icon, Shell32, 23
OnMessage(0xF, "WM_Paint")
OnMessage(0x214, "WM_SIZING")
OnMessage(0x0020, "WM_SETCURSOR")
Global oZoom := {}

oZoom.Zoom := 4
oZoom.Mark := "Cross"		; Cross, Square, Grid, None

WinX := 1
WinY := 1
WinW := 300
WinH := 360

Gui, Zoom: +AlwaysOnTop +Resize -DPIScale +hwndhGui +LabelZoomOn
Gui, Zoom: Font, s12
Gui, Zoom: Color, F0F0F0
Gui, Zoom: Add, Slider, vSliderZoom gSliderZoom x8 Range1-50 w176 Center AltSubmit NoTicks, % oZoom.Zoom
Gui, Zoom: Add, Text, vTextZoom Center x+10 yp+3 w36, % oZoom.Zoom
Gui, Zoom: Font
Gui, Zoom: Add, Button, gChangeMark vChangeMark x+10 yp w52, % oZoom.Mark
Gui, Dev: +HWNDhDev -Caption -DPIScale +Parent%hGui%
Gui, Dev: Add, Pic, hwndhDevCon
Gui, Dev: Show, NA
Gui, Dev: Color, ffffff

; Gui, Zoom: Show, x%WinX% y%WinY% w%WinW% h%WinH%, Magnify
Gui, Zoom: Show, NA w%WinW% h%WinH%, Magnify
Gui, Zoom: +MinSize

oZoom.hdcSrc := DllCall("GetDC", "Ptr", 0)
oZoom.hdcDest := DllCall("GetDC", "Ptr", hDevCon, "Ptr")
oZoom.hdcMemory := DllCall("CreateCompatibleDC", "Ptr", 0)
DllCall("Gdi32.Dll\SetStretchBltMode", "Ptr", oZoom.hdcDest, "Int", 4)
oZoom.hGui := hGui
oZoom.hDev := hDev
oZoom.hDevCon := hDevCon
Return

#If !oZoom.Minimize

+Up::MouseStep(0, -1)
+Down::MouseStep(0, 1)
+Left::MouseStep(-1, 0)
+Right::MouseStep(1, 0)

^Up::
^DoWn::
^WheelUp::
^WheelDown::ChangeZoom(InStr(A_ThisHotKey, "Up") ? oZoom.Zoom + 1 : oZoom.Zoom - 1)

Pause::
+1:: oZoom.Pause := !oZoom.Pause

#If

Magnify() {
	If (!oZoom.Pause && !oZoom.Minimize && !oZoom.Sizing)
	{
		MouseGetPos, , , WinID
		If (WinID != oZoom.hGui)
		{
			SetTimer, Memory, Off
			DllCall("GetCursorPos", "int64P", pt)
			oZoom.MouseX := pt << 32 >> 32, oZoom.MouseY := pt >> 32
			StretchBlt(oZoom.hdcDest, 0, 0, oZoom.nWidthDest, oZoom.nHeightDest
				, oZoom.hdcSrc, oZoom.MouseX - oZoom.nXOriginSrcOffset, oZoom.MouseY - oZoom.nYOriginSrcOffset, oZoom.nWidthSrc, oZoom.nHeightSrc)
			For k, v In oZoom.oMarkers[oZoom.Mark]
				StretchBlt(oZoom.hdcDest, v.x, v.y, v.w, v.h, oZoom.hdcDest, v.x, v.y, v.w, v.h, 0x5A0049)	; PATINVERT
			SetTimer, Memory, -30
		}
	}
	SetTimer, Magnify, -10
}

Memory() {
	SysGet, VirtualScreenX, 76
	SysGet, VirtualScreenY, 77
	SysGet, VirtualScreenWidth, 78
	SysGet, VirtualScreenHeight, 79
	oZoom.nXOriginSrc := oZoom.MouseX - VirtualScreenX, oZoom.nYOriginSrc := oZoom.MouseY - VirtualScreenY
	hBM := DllCall("Gdi32.Dll\CreateCompatibleBitmap", "Ptr", oZoom.hdcSrc, "Int", VirtualScreenWidth, "Int", VirtualScreenHeight)
	DllCall("Gdi32.Dll\SelectObject", "Ptr", oZoom.hdcMemory, "Ptr", hBM), DllCall("DeleteObject", "Ptr", hBM)
	BitBlt(oZoom.hdcMemory, 0, 0, VirtualScreenWidth, VirtualScreenHeight, oZoom.hdcSrc, VirtualScreenX, VirtualScreenY)
	oZoom.VirtualScreenWidth := VirtualScreenWidth, oZoom.VirtualScreenHeight := VirtualScreenHeight
}

Redraw() {
	StretchBlt(oZoom.hdcDest, 0, 0, oZoom.nWidthDest, oZoom.nHeightDest
		, oZoom.hdcMemory, oZoom.nXOriginSrc - oZoom.nXOriginSrcOffset, oZoom.nYOriginSrc - oZoom.nYOriginSrcOffset, oZoom.nWidthSrc, oZoom.nHeightSrc)
	For k, v In oZoom.oMarkers[oZoom.Mark]
		StretchBlt(oZoom.hdcDest, v.x, v.y, v.w, v.h, oZoom.hdcDest, v.x, v.y, v.w, v.h, 0x5A0049)	; PATINVERT
}

SetSize() {
	Critical
	Static Top := 60, Left := 0, Right := 0, Bottom := 0
	SetTimer, Magnify, Off
	GetClientPos(oZoom.hGui, GuiWidth, GuiHeight)
	Width := GuiWidth - Left - Right
	Height := GuiHeight - Top - Bottom
	Zoom := oZoom.Zoom
	conW := Mod(Width, Zoom) ? Width - Mod(Width, Zoom) + Zoom : Width
	conW := Mod(conW // Zoom, 2) ? conW : conW + Zoom
	conH := Mod(Height, Zoom) ? Height - Mod(Height, Zoom) + Zoom : Height
	conH := Mod(conH // Zoom, 2) ? conH : conH + Zoom
	conX := ((conW - Width) // 2) * -1
	conY := ((conH - Height) // 2) * -1

	oZoom.nWidthSrc := conW // Zoom
	oZoom.nHeightSrc := conH // Zoom
	oZoom.nXOriginSrcOffset := oZoom.nWidthSrc // 2
	oZoom.nYOriginSrcOffset := oZoom.nHeightSrc // 2
	oZoom.nWidthDest := nWidthDest := conW
	oZoom.nHeightDest := nHeightDest := conH
	xCenter := conW / 2 - Zoom / 2
	yCenter := conH / 2 - Zoom / 2

	oZoom.oMarkers["Cross"] := [{x:0,y:yCenter - 1,w:nWidthDest,h:1}
		, {x:0,y:yCenter + Zoom,w:nWidthDest,h:1}
		, {x:xCenter - 1,y:0,w:1,h:nHeightDest}
		, {x:xCenter + Zoom,y:0,w:1,h:nHeightDest}]

	oZoom.oMarkers["Square"] := [{x:xCenter - 1,y:yCenter,w:Zoom + 2,h:1}
		, {x:xCenter - 1,y:yCenter + Zoom + 1,w:Zoom + 2,h:1}
		, {x:xCenter - 1,y:yCenter + 1,w:1,h:Zoom}
		, {x:xCenter + Zoom,y:yCenter + 1,w:1,h:Zoom}]

	oZoom.oMarkers["Grid"] := Zoom = 1 ? oZoom.oMarkers["Square"]
		: [{x:xCenter - Zoom,y:yCenter - Zoom,w:Zoom * 3,h:1}
		, {x:xCenter - Zoom,y:yCenter,w:Zoom * 3,h:1}
		, {x:xCenter - Zoom,y:yCenter + Zoom,w:Zoom * 3,h:1}
		, {x:xCenter - Zoom,y:yCenter + Zoom * 2,w:Zoom * 3,h:1}
		, {x:xCenter - Zoom,y:yCenter - Zoom,w:1,h:Zoom * 3}
		, {x:xCenter,y:yCenter - Zoom,w:1,h:Zoom * 3}
		, {x:xCenter + Zoom,y:yCenter - Zoom,w:1,h:Zoom * 3}
		, {x:xCenter + Zoom * 2,y:yCenter - Zoom,w:1,h:Zoom * 3}]

	SetWindowPos(oZoom.hDevCon, conX, conY, conW, conH)
	SetWindowPos(oZoom.hDev, Left, Top, Width, Height)
	Redraw()
	SetTimer, Magnify, -10
}

SetWindowPos(hWnd, x, y, w, h) {
	Static SWP_ASYNCWINDOWPOS := 0x4000, SWP_DEFERERASE := 0x2000, SWP_NOACTIVATE := 0x0010, SWP_NOCOPYBITS := 0x0100
		, SWP_NOOWNERZORDER := 0x0200, SWP_NOREDRAW := 0x0008, SWP_NOSENDCHANGING := 0x0400
		, uFlags := SWP_ASYNCWINDOWPOS|SWP_DEFERERASE|SWP_NOACTIVATE|SWP_NOCOPYBITS|SWP_NOOWNERZORDER|SWP_NOREDRAW|SWP_NOSENDCHANGING
	DllCall("SetWindowPos"
		, "Ptr", hWnd
		, "Ptr", 0
		, "Int", x
		, "Int", y
		, "Int", w
		, "Int", h
		, "UInt", uFlags)
}

ZoomOnSize() {
	If A_EventInfo != 1
	{
		oZoom.Minimize := 0
		SetTimer, SetSize, -10
	}
	Else
		oZoom.Minimize := 1
}

SliderZoom() {
	GuiControlGet, SliderZoom, Zoom:
	ChangeZoom(SliderZoom)
}

ChangeZoom(Val) {
	If (Val < 1 || Val > 50)
		Return
	SetTimer, Magnify, Off
	GuiControl, Zoom:, TextZoom, % oZoom.Zoom := Val
	If A_GuiControl =
		GuiControl, Zoom:, SliderZoom, % oZoom.Zoom
	SetTimer, SetSize, -10
}

ChangeMark() {
	oZoom.Mark := ["Cross","Square","Grid","None"][{"Cross":2,"Square":3,"Grid":4,"None":1}[oZoom.Mark]]
	GuiControl, Zoom:, ChangeMark, % oZoom.Mark
	Redraw()
}

ZoomOnClose() {
	ZoomOnEscape:
		DllCall("Gdi32.Dll\DeleteDC", "Ptr", oZoom.hdcDest)
		DllCall("Gdi32.Dll\DeleteDC", "Ptr", oZoom.hdcSrc)
		DllCall("Gdi32.Dll\DeleteDC", "Ptr", oZoom.hdcMemory)
		RestoreCursors()
		ExitApp
}

GetClientPos(hwnd, ByRef W, ByRef H)  {
	VarSetCapacity(pwi, 60, 0), NumPut(60, pwi, 0, "UInt")
	DllCall("GetWindowInfo", "Ptr", hwnd, "UInt", &pwi)
	W := NumGet(pwi, 28, "Int") - NumGet(pwi, 20, "Int")
	H := NumGet(pwi, 32, "Int") - NumGet(pwi, 24, "Int")
}

WM_Paint() {
	If A_GuiControl =
		SetTimer, Redraw, -30
}

WM_SIZING() {
	SetTimer, Magnify, Off
	oZoom.Sizing := 1
	SetTimer, NoSizing, 10
}

NoSizing() {
	If GetKeyState("LButton", "P")
		Return
	oZoom.Sizing := 0
	SetTimer, NoSizing, Off
	SetTimer, Magnify, -10
}

BitBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, Raster = 0xC000CA) {
	Return DllCall("Gdi32.Dll\BitBlt"
		, "Ptr", dDC
		, "Int", dx
		, "Int", dy
		, "Int", dw
		, "Int", dh
		, "Ptr", sDC
		, "Int", sx
		, "Int", sy
		, "Uint", Raster)
}

StretchBlt(ddc, dx, dy, dw, dh, sdc, sx, sy, sw, sh, Raster = 0xC000CA) {
	Return DllCall("Gdi32.Dll\StretchBlt"
		, "Ptr", dDC
		, "Int", dx
		, "Int", dy
		, "Int", dw
		, "Int", dh
		, "Ptr", sDC
		, "Int", sx
		, "Int", sy
		, "Int", sw
		, "Int", sh
		, "Uint", Raster)
}

	; _________________________________________________ MoveHand _________________________________________________

WM_SETCURSOR(W, L, M, H) {
	If (oZoom.SIZING)
		Return
	If (oZoom.Pause && W = oZoom.hDev && GetKeyState("LButton", "P"))
	{
		SetTimer, Hand, -1
		Return oZoom.SIZING := 1
	}
}

Hand() {
	SetTimer, Magnify, Off
	DllCall("GetCursorPos", "int64P", pt)
	oZoom.MoveHandX := pt << 32 >> 32, oZoom.MoveHandY := pt >> 32
	oZoom.MoveXSrc := oZoom.nXOriginSrc, oZoom.MoveYSrc := oZoom.nYOriginSrc
	SetSystemCursor("HAND")
	SetTimer, MoveHand, 10
	KeyWait, LButton
	SetTimer, MoveHand, Off
	RestoreCursors()
	oZoom.SIZING := 0
	SetTimer, Magnify, -10
}

MoveHand() {
	Static PrnXOriginSrc, PrnYOriginSrc
	PrnXOriginSrc := oZoom.nXOriginSrc
	PrnYOriginSrc := oZoom.nYOriginSrc
	DllCall("GetCursorPos", "int64P", pt)
	MouseX := pt << 32 >> 32, MouseY := pt >> 32
	XOdds := oZoom.MoveHandX - MouseX
	XOff := XOdds > 0 ? Floor(XOdds / oZoom.Zoom) : Ceil(XOdds / oZoom.Zoom)
	oZoom.nXOriginSrc := oZoom.MoveXSrc + XOff
	YOdds := oZoom.MoveHandY - MouseY
	YOff := YOdds > 0 ? Floor(YOdds / oZoom.Zoom) : Ceil(YOdds / oZoom.Zoom)
	oZoom.nYOriginSrc := oZoom.MoveYSrc + YOff
	If (PrnXOriginSrc <> oZoom.nXOriginSrc || PrnYOriginSrc <> oZoom.nYOriginSrc)
		LimitsOriginSrc(), Redraw()
}

MoveStep(StepX, StepY) {
	oZoom.nXOriginSrc += StepX
	oZoom.nYOriginSrc += StepY
	LimitsOriginSrc(), Redraw()
}

LimitsOriginSrc() {
	X := oZoom.nXOriginSrc
	oZoom.nXOriginSrc := X < 0 ? 0 : X > oZoom.VirtualScreenWidth - 1 ? oZoom.VirtualScreenWidth - 1 : X
	Y := oZoom.nYOriginSrc
	oZoom.nYOriginSrc := Y < 0 ? 0 : Y > oZoom.VirtualScreenHeight - 1 ? oZoom.VirtualScreenHeight - 1 : Y
}

MouseStep(x, y) {
	If !oZoom.Pause
		MouseMove, x, y, 0, R
	Else
		MoveStep(x, y)
}

SetSystemCursor(CursorName, cx = 0, cy = 0) {
	Static SystemCursors := {ARROW:32512, IBEAM:32513, WAIT:32514, CROSS:32515, UPARROW:32516, SIZE:32640, ICON:32641, SIZENWSE:32642
					, SIZENESW:32643, SIZEWE:32644 ,SIZENS:32645, SIZEALL:32646, NO:32648, HAND:32649, APPSTARTING:32650, HELP:32651}
    Local CursorHandle, hImage, Name, ID
	If (CursorHandle := DllCall("LoadCursor", Uint, 0, Int, SystemCursors[CursorName]))
		For Name, ID in SystemCursors
			hImage := DllCall("CopyImage", Ptr, CursorHandle, Uint, 0x2, Int, cx, Int, cy, Uint, 0)
			, DllCall("SetSystemCursor", Ptr, hImage, Int, ID)
}

RestoreCursors() {
	Static SPI_SETCURSORS := 0x57
	DllCall("SystemParametersInfo", UInt, SPI_SETCURSORS, UInt, 0, UInt, 0, UInt, 0)
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui