Re: AHK: Замена "Window Spy"
Всё равно не понял.
Win10x64 AhkSpy, Hotkey, ClockGui
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы Назад 1 … 7 8 9 10 11 … 19 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Всё равно не понял.
В 796 посте:
demoItem3.style.top = -y + 50 + "px";
Вместо 50 передавать текущее положение элемента.
Не знаю как это будет на практике.
Буду пока пробовать с onscroll и onresize, fixed по по моему больше проблем создаёт, но его всё равно нет. Думаю корректировать ширину полос и сдвиг title, так как мелькание справа не так бросаются в глаза, в сравнении чем менять left.
Что то получилось, никак не могу побороть чтобы не было переноса, тут если окно уменьшить по ширине, то кнопка съезжает.
Или на 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
Gui, Add, ActiveX, x0 y-5 w140 h50 vDocument, MSHTML:%html%
Это просто в начале, в сабже идёт вставка каждые 150 - 200мс.
Вроде работает.
Черновик пока из 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
Если запустить скрипт и нажать на скролл вниз, то идет дерганье.
Имеешь ввиду нажать на стрелку внизу скролла?
Тогда да, если за сам скролл дёргать, то вроде нет дерганья. Почему так...
Ещё интересно, в 804 всё дёргается, но если зажать ЛКМ где то в середине верхней строки с текстом, и поводить мышью влево право, то дерганий нет, тоже не ясно с чего бы.
На 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
Тогда да, если за сам скролл дёргать, то вроде нет дерганья. Почему так...
Если за сам скролл тянуть то сначала выполняется процедура onscroll, а потом уже визуально смещается, а если нажимать то сначала смещается, и только после выполняется процедура onscroll.
Если в IE убрать опцию use smooth scrolling, то код из 796 поста перестает дергаться.
Твой код продолжает, но только при нажатии на горизонтальный скролл.
Возможно, дело в том, что ты запускаешь через HTMLFile.
Апдейт. Дело не в этом - проверил. Надо пересмотреть алгоритм привязки по вертикали.
А как оключить use smooth scrolling в 8?
Возможно, дело в том, что ты запускаешь через HTMLFile.
Нет, тоже самое.
Если за сам скролл тянуть то сначала выполняется процедура onscroll, а потом уже визуально смещается, а если нажимать то сначала смещается, и только после выполняется процедура onscroll.
Ну это не вариант.
Ну через реестр можно.
Можно пробовать блокировать клики по скроллбару и ссамому потом опускать-поднимать страницу:
event.preventDefault();
или если не сработает:
event.returnValue = false;
Если за сам скролл тянуть то сначала выполняется процедура onscroll, а потом уже визуально смещается, а если нажимать то сначала смещается, и только после выполняется процедура onscroll.
Похоже это тоже баг ИЕ https://jsfiddle.net/9qa9d22w/ в других браузерах норм.
Можно пробовать блокировать клики по скроллбару
Можешь попробовать? Я мало что понял.
Похоже событие скролл нельзя прекратить.
А почему не хочешь через реестр отключать smooth scrolling?
Ключ вроде такой, только не пойму что писать, видел что для включения 0 надо.
RegWrite, REG_DWORD, HKCU, Software\Microsoft\Internet Explorer\MAIN\SmoothScroll, ?, ?
Только не понял что это даёт.
1 - включен.
0 - выключен.
Как я понял, выключать нужно только при создании webbrowser, а потом можно менять на дефалтную установку.
Только не понял что это даёт.
Код из 806 поста перестает дергаться.
RegWrite, REG_DWORD, HKCU, Software\Microsoft\Internet Explorer\MAIN\SmoothScroll, , 0
Всё тоже самое, жмёшь верт. скролл, сначала всё уезжает, а потом полосы смещаются.
Так неправильно.
Надо так:
RegWrite, REG_DWORD, HKCU, Software\Microsoft\Internet Explorer\MAIN, SmoothScroll, 0
В этом режиме код из 796 поста у меня вообще не дергается, а код из 806 дергается толко при горизонтальном скролле.
Код из 809 поста не дергается при любом режиме smoothscroll и не крашится.
Да, окей. На вызов 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
Сейчас по горизонтали скачет.
Код из 809 поста - пока самый оптимальный. И не надо реестр править.
Не понял, если 809 то надо реестр править.
У меня с SmoothScroll = 0 по горизонтали не скачет.
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
Оба крашатся.
У тебя какая версия интернет эксплорера?
Version: 11.0.9600.18837
Update Versions: 11.0.48
Версия: 11.0.9600.17843IS
Версии обновления: 11.0.20
64bit, пишет что самая последняя.
пишет что самая последняя.
Думаю врет:
https://www.catalog.update.microsoft.co … =kb4047206
Спасибо, обновил.
Я теперь запутался, 826 вроде норм (ну если не считать что есть ещё стрелочка по MButton), ты вроде говорил что у тебя тоже мелькало, потом говорили про SmoothScroll = 0, а теперь со SmoothScroll = 1 не мелькает, что изменилось?
Начиная с ИЕ-9 ввели новую фичу smooth scroll.
Поставь в 826 код
If Value != 11000
RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 11000
и начнет снова мелькать.
Так все те примеры на 8.
806 на IE11.
Мы же про 823, 809, 826.
Когда я писал про реестр, я имел в виду код 806.
А 823 у меня при нажатии на горизонтальный скролл дергается.
О, у меня тут теперь не мелькает. Он попроще, и стрелочка по 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
Проверил на 5 компах.
ХР на них не было?
Не, только win7 и на win10.
А 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
}
}
Может это ввести опционально, а то при постоянной работе это мелькание может отвлекать или раздражать.
Не сказать что это очень мне нравится, но варианты с fixed заработали только после обновления 11, неизвестно как это работает на 9 ХР, да и обновление стоит не у всех, как показал мой же случай. И по MButton выглядит тоже плохо, даже 837 выглядит лучше, но тоже только с обновлением.
Можно делать 3 варианта выбора гуи:
1-ый как сейчас, 2-ой - 837 пост, 3-ий - 840.
Ну это будет раздутый код, надо на чём то одном остановится. С fixed ты уже не рассматриваешь?
Не. Просто запутался в вариантах.
Мне больше всего нравится из 826 - fixed.
Можно сделать его и если он у кого-то не заработает, то оставить возможность использовать гуи в таком виде как сейчас.
Другие варианты гуи мне не нравятся из-за мельтешения.
Ну это будет раздутый код, надо на чём то одном остановится
Зато 100% у всех работающий.
Как мы заметили IE весьма капризный инструмент - неизвестно, как он себя поведет при установленных каких-либо плагинах.
Можно сделать его и если он у кого-то не заработает, то оставить возможность использовать гуи в таком виде как сейчас.
Всё равно слишком сложно.
неизвестно, как он себя поведет при установленных каких-либо плагинах.
Ну такое не предусмотреть и в текущей версии сабжа.
Ок, 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
Можно на body поставить overflow-x: hidden;.
И уменьшить margin чтобы все кнопки и title вмещались в одну строку.
Там пользователь размер шрифта может увеличивать, хочется чтобы в блоке по ширине окна его содержимое обрезалось, а чтобы пользователь мог нажать скрытую "по его вине" кнопку, нужно было бы растянуть окно.
На такой случай можно задавать минимальную ширину окна в зависимости от размера шрифта.
Ну это костыль, хочется на хтмл, вроде хотелка пустяковая.
Возможно ли получить Accinfo не с под указателя мышки а с ClasNN??
Сделал новый вид, пока только для режима Window. Отпишитесь по тестам. Перенос слов, изменение размера шрифта, горизонтальная прокрутка - названия заголовков и кнопки в линии с ними, должны оставатся на месте относительно окна.
https://raw.githubusercontent.com/serzh … y_Test.ahk
Ещё вроде шрифт как то хуже стал выглядеть.
По шрифтам изменений не заметил, но дергающаяся красная линия отвлекает.
А как дергается? У меня норм. Или ты про надписи заголовков.
Надписи тоже иногда подергиваются.
Но больше отвлекает, что красная линия при горизонтальной прокрутке тоже движется вместе с текстом.
Надписи тоже иногда подергиваются.
После обновления IE у меня не наблюдается.
красная линия при горизонтальной прокрутке тоже движется вместе с текстом
Так она и в текущей версии также движется вместе с текстом.
Сделаю опционально чтобы заголовки с кнопками не двигались при прокрутке, а только при растягивании окна.
Ещё думаю про опцию, чтобы поля в которых возможны большие объёмы обрезались, см. Window Text.
https://raw.githubusercontent.com/serzh … hkSpy1.ahk
Есть кто проверить, с ХР или 10...
А fixed ты не захотел из-за невозможности запуска без обновленного IE?
Заметил такую особенность:
1) Активируем какое-нибудь окно.
2) Активируем AhkSpy и сдвигаем горизонтальный ползунок вправо.
3) Активируем какое-нибудь окно.
В результате красные линии обрезаются.
В результате красные линии обрезаются.
Это фиаско... Как я мог не заметить.
А fixed ты не захотел из-за невозможности запуска без обновленного IE?
Это показалось лучше, по MButton норм, ну и так по мелочи. И да, обновление сильнее сгладило "шероховатости", но всё равно с fixed осталось больше косяков. Вообщем тут на примерах надо.
Сорри за ламерский вопрос, но какие новые возможности дает IE, которые трудно или нельзя достичь стандартными контролами?
Если допустим пункты сделать вкладками, а содержимое Edit-ами. И редактирование-изменение некоторых свойств можно прикрутить.
Windows XP SP3. Internet Explorer 6.0.2900.5512.
Нужен 8 ие.
stealzy
В Edit большое содержимое тупит.
А какие свойства?
В результате красные линии обрезаются.
Хотя можно ведь перед вставкой HTML делать scrollLeft := 0, думаю это выглядит нормально и логично.
https://raw.githubusercontent.com/serzh … hkSpy1.ahk
stealzy
А какие такие стили нельзя поменять в HTML?
Не получится на анк даже близко добится такой статичной картинки при обновлении инфой или размера окна, нет кучи фишек, разноцветный текст, кнопки прямо в тексте, на HTML верстать намного легче, практически всё из коробки. На анк как минимум надо написать всё позиционирование, это куча кода, и будет всё мелькать как ни старайся. Плюс HTML и javascript это ещё один поток.
Хотя можно ведь перед вставкой HTML делать scrollLeft := 0, думаю это выглядит нормально и логично.
Да. Логично.
На Вин10 вроде всё ок.
Поиск по странице поломался, надо будет не забыть поправить.
Кстати почему то через объект в АНК не работает например querySelector - неизвестное имя. Хотя через javascript работает, с чего бы так?
И работа через объект идентична javascript, или javascript может быть более низкоуровневым или просто производительнее?
Странно, должен работать.
Попробуй на каком-нибудь простом примере.
#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
Наверное глюк HTMLFile.
Так как querySelector поддерживается, начиная с 8 версии, то через js он работает.
А через HTMLFile работает только почему-то начиная с 9-ой.
Мда, ну хоть костыль можно соорудить.
#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
У всех нормально крест выглядит? Хочу добавить в сабж.
#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
}
Не великоват? Можно системным курсором воспользоваться:
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)
}
Он и цвет меняет на контрастный к тому, который под ним.
Не великоват?
Вроде в самый раз.
Я хочу для слежения в координатах сделать, и чтоб оставался в этой точке, плюс чтобы в центре отверстие было чтобы определять цвет пикселя и для наглядности. Контраст может и не помешает, но не критично, ещё тень добавил в пример.
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
}
Думаю использоватся это чаще всего будет как то так, либо глядя на координаты.
А 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
Не понимаю, что значит визуализировать?
Я там ссылку перепутал. Вот.
Ну объект HTMLFile есть, показать его в контроле.
Сомневаюсь, что можно вставлять свой хендл на объект документа в гуи.
Можно так:
#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
Режим эмуляции нужно указывать во время создания контрола.
Поэтому это:
WB.navigate("about:blank")
стоит заменить на это:
WB.navigate("about:<!DOCTYPE html><meta http-equiv='X-UA-Compatible' content='IE=9'>")
Режим эмуляции нужно указывать во время создания контрола
Вообще-то, когда выполняется команда «navigate», контрол уже создан.
Опечатался, при создании документа.
Можно и здесь:
WB.document.write( "<!DOCTYPE html><meta http-equiv='X-UA-Compatible' content='IE=9'>" . oDoc.body.innerHtml )
Разницы не заметил.
Наверное у тебя в реестре пропмисан emulation mode для autohotkey.exe.
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
Посмотреть текущий режим эмуляции можно через:
f1::
msgbox % WB.document.documentMode
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
Зачем в примере HTMLFile, если в итоге
Я так понял, что тебе нужно визуализировть уже имеющийся htmlfile.
Нужно работать в окне с HTMLFile в режиме совместимости 9.000, WebBrowser не нужен.
А почему не 11?
Так мы же обсуждали, для поддержки ХР.
А нужно ли?
У ypppu, например, IE 6 стоит.
У него с IE9 не пойдет.
Так у него и с IE8 не пойдёт, а следующая версия на нём будет.
ypppu частный случай, а поддержку ХР думаю надо оставить.
Как я понимаю, HTMLFile подгружается в гуи через Mshtml.dll.
https://msdn.microsoft.com/en-us/librar … s.85).aspx
Попробуй спросить на оффоруме, почему при подключении к гуи у mshtml.dll нельзя выставить режим совместимости IE-9,10.
Может есть какой-то ключ в реестре...
Может ты спросишь, а то мне там тяжело без инглиша.
А что там такого есть, чего нельзя сделать без HTML-штук? Стандартным набором GUI.
ypppu
Это уже +10 вопрос на эту тему.
http://forum.script-coding.com/viewtopi … 70#p121970
http://forum.script-coding.com/viewtopi … 46#p121546
Новая версия, тест.
Как по мне вертикальная прокрутка в вертикальной прокрутке не совсем удобно.
И отвлекают дергающиеся надписи ---Mouse---PixelGetColor---.
Как по мне вертикальная прокрутка в вертикальной прокрутке не совсем удобно.
Это сделано по заявкам любетелей класического вида, отключается - Big text overflow hide.
И отвлекают дергающиеся надписи ---Mouse---PixelGetColor---.
Отключается - Moving titles.
Как лупа работает, не зависает при перемещении, она теперь встроена в код.
Лупа зависает.
Если во время использования ее двинуть гуи, то окно не перерисовывается.
А отдельно работает?
У тебя же какой то упрощенный вид?
#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)
}