Re: AHK: Замена "Window Spy"
serzh82saratov
Оверквотинг запрещён. Удалено.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы Назад 1 … 5 6 7 8 9 … 19 Далее
Чтобы отправить ответ, вы должны войти или зарегистрироваться
serzh82saratov
Оверквотинг запрещён. Удалено.
Off:
Глючит у меня эта фича с цитированием, выделяешь фрагмент, а вставляется иногда весь пост, не посмотрел.
Она у всех глючит. Запрос на исправление подтверждённого бага я писал давным давно.
Можно скриншот Window Spy с таким параметром. И что за другие скрипты?
Собственно в сабже URL: в CHM есть, чем не устраивает.
Скриншот с таким параметром есть на странице Window Spy в Коллекции — в новых версиях, видимо, произошли изменения)). Другие скрипты — это скрипты для получения путей, стандартные.
Добавил точку. /ypppu/
А вы не путаете Window Spy с AhkSpy? Если да, то изменений в этом плане не было.
скрипты для получения путей, стандартные
?
GetCommandLine также заодно и ProcessPath возвращает:
А нельзя сделать чтобы возвращало также как и WinGet ProcessPath или ProcessName, в плане регистра букв. Например твой код возвращает "Explorer.EXE", а WinGet и диспетчер задач в колонке "Имя образа" - "explorer.exe". Или как пример у меня"ASUSAUDIOCENTER.EXE" и "AsusAudioCenter.exe". Путь до процесса в твоём отображается нормально.
Точно, попутал)). Он ведь тоже из этой темы? Скрипты имелись в виду типа GetCommandLine() и такие прочие. Плюс команда StatusBarGetText не тянула вполне видимый в строке состояния Universal Viewer'а путь — тогда как AhkSpy 1.98, при наведении в центр основного окна, его откуда-то достаёт. Так вот мне б на этот кодик посмотреть)).
Добавил точку. /ypppu/
DD, точки в двух своих последний сообщениях добавьте.
А ещё более предметно? Universal Viewer у меня нет, AhkSpy 1.98 тоже. Почему именно в центр основного окна, и что достаёт не ясно.
Плюс команда StatusBarGetText не тянула вполне видимый в строке состояния
До этого кто то не тянула, 1.98 тянет, сейчас что не понятно...
serzh82saratov, ну зачем тебе предметно? Он делает то, чего не делают те, которыми располагаю, включая команду StatusBarGetText. Вопрос я задавал тем, у кого AhkSpy, умение и желание извлечь из него фрагмент кода, есть.
serzh82saratov, ну зачем тебе предметно?
Вот теперь всё предельно ясно, уважаемый.
Все время забываю про точки, которыми заканчиваются предложения после скобок. Раньше The gray Cardinal напоминал своими сообщениями, а теперь не просто приходится)).
serzh82saratov
Более предметно, чем уже объяснял ситуацию, не вижу смысла объяснять.
ypppu
А Вы свое последнее сообщение исправьте — а то малость искаженная русская речь глаз режет))
DD, я могу исправить за Вас, но тогда включу счётчик нарушений. На исправление три дня.
OFF: ypppu, так я два последние исправил, и тут же в следующем точку не нарочно пропустил)). У меня кстати таких сообщений без точек много здесь)). Исправлю конечно я сам — довольно с Вас, что Вы их отслеживаете.
serzh82saratov, сейчас вспомнил, что ты мне как-то сам любезно привёл эту функцию из кода AhkSpy)). Работает, спасибо.
ProcessImageFileName
27
Retrieves a UNICODE_STRING value containing the name of the image file for the process.
It is best to use the QueryFullProcessImageName or GetProcessImageFileName function to obtain this information.
serzh82saratov
Вместо цитаты всего поста всегда есть возможность привести ссылку на него. Оверквотинг в очередной раз удалён.
А, забыл ответить. Всё правильно, если нужно получить только путь к исполнимому файлу, то достаточно воспользоваться более простой функцией QueryFullProcessImageName или Winget, ProcessPath. Просто NtQueryInformationProcess заодно возвращает и то, и другое, что менее ресурсоёмко. А уж в каком регистре букв — то как есть, вариантов не предлагается.
teadrinker
Вообщем вернул Winget, хочется как в проводнике имя процесса.
Обновление.
Параметры подсвечиваются при наведении мыши.
Теперь по RButton копируется то что подсвечено при наведении мыши, или выделено пользователем.
Shift+RButton - Добавляет текст к буферу обмена. В режиме "Hotkey" - удержание RButton.
Кто пользуется инклудом:
ColorSelMouseHover := "#96C3DC" ; Цвет фона элемента при наведении мыши
ClipAdd_Delimiter разделитель (по умолчанию "`r`n") буфера обмена и копируемого.
Если ClipAdd_Before равно true (по умолчанию false), то копируемое добавляется перед буфером обмена.
В Button - Command syntax добавил кнопку вывода кодов печатных клавиш, по vk коду, sc коду, или по имени.
По идее клавиши 1234567890-= тоже надо кодами выводить?
В каком смысле — надо? Кодами лучше выводить клавиши, имена которых могут меняться, а у перечисленных вроде не меняются.
Во французкой меняется. Только "=" остаётся.
А, ну тогда да. Собственно, как выводить клавиши, решает кодер, а твоё приложение должно определять любые.
Есть приложение в котором не определяются ни имена контролов, ни их HWND. Но AhkSpy успешно выводит часть информации из контрола в поле "Name". Помогите, пожалуйста, выделить часть кода, отвечающего за поле "Name" в отдельный скрипт, чтобы можно было добыть и сохранить все данные из этого контрола. Хорошо бы, чтобы выдало сразу всё, но если поштучно при наведении на каждый участок, как в AhkSpy сейчас, то тоже нормально.
Хочу добавить красный цвет кнопки в панели задач при паузе. На 7 работает, протестируйте на ХР и 10 данный код. При запуске, кнопка должна быть красной, на ХР интересует - будет ли ошибка.
ComObjError(false)
Gui, +HWNDhGui
Gui, Show, NA
TaskbarProgress(4, hGui, 100)
Return
TaskbarProgress(state, hwnd, pct = "") {
static tbl := ComObjCreate("{56FDF344-FD6D-11d0-958A-006097C9A090}", "{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}")
DllCall(NumGet(NumGet(tbl+0)+10*A_PtrSize), "ptr", tbl, "ptr", hwnd, "uint", state)
if pct !=
DllCall(NumGet(NumGet(tbl+0)+9*A_PtrSize), "ptr", tbl, "ptr", hwnd, "int64", pct, "int64", 100)
}
Win XP sp3.
&Да
&Нет
Error: 0x80004002 - Интерфейс не поддерживаетсяLine#
---> 008: tbl := ComObjCreate("{56FDF344-FD6D-11d0-958A-006097C9A090}", "{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}")
001: ComObjError(false)
002: Gui,+HWNDhGui
003: Gui,Show,NA
004: TaskbarProgress(4, hGui, 100)
005: Return
007: {
009: DllCall(NumGet(NumGet(tbl+0)+10*A_PtrSize), "ptr", tbl, "ptr", hwnd, "uint", state)Continue running the script?
При запуске, кнопка должна быть красной
Если имеется в виду цвет фона, то на 10 работает.
YMP всё верно, спасибо.
ypppu а так нет ошибки:
ComObjError(false)
Gui, +HWNDhGui
Gui, Show, NA
loop 3
TaskbarProgress(4, hGui, 100)
Return
TaskbarProgress(state, hwnd, pct = "") {
static tbl
if !tbl {
try tbl := ComObjCreate("{56FDF344-FD6D-11d0-958A-006097C9A090}", "{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}")
catch
tbl := "error"
}
if tbl = error
Return
DllCall(NumGet(NumGet(tbl+0)+10*A_PtrSize), "ptr", tbl, "ptr", hwnd, "uint", state)
if pct !=
DllCall(NumGet(NumGet(tbl+0)+9*A_PtrSize), "ptr", tbl, "ptr", hwnd, "int64", pct, "int64", 100)
}
Так просто ничего не происходит. Стандартная кнопка на панели задач.
Хорошо, добавил.
В каком формате нужно подставлять переменные для x и y в первой строке?
Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "", y = "")
{
Acc_Init()
If DllCall("oleacc\AccessibleObjectFromPoint", "Int64", x==""||y==""?0*DllCall("GetCursorPos","Int64*",pt)+pt:x&0xFFFFFFFF|y<<32, "Ptr*", pacc, "Ptr", VarSetCapacity(varChild,8+2*A_PtrSize,0)*0+&varChild)=0
Return ComObjEnwrap(9,pacc,1), _idChild_:=NumGet(varChild,8,"UInt")
}
Допустим есть координаты
xx := 200 и yy := 100
Пробовал и убирать
x = "",
и подставлять имя переменной в кавычки, и без кавычек, и в окружении процентов, но ничего не добился.
Помогите, пожалуйста!
Kurskador, что вам надо, где ваш код и самое главное — причем здесь AhkSpy?
Создавайте новую тему и нормально распишите все.
Нашёл открытую подходящую тему. http://forum.script-coding.com/viewtopic.php?id=12053 Название говорящее: "AHK: Acc_ObjectFromPoint без наведения мыши в скрытом окне."
Но там ответа так и не дали.
Мне достаточно понять как подставлять координаты нужного элемента в Acc_ObjectFromPoint. Не цифрами, а через переменную меняющую значение.
Например
Acc_ObjectFromPoint(ByRef _idChild_ = "", x = "var1", y = "var2")
Устроит и для активного окна. Написал в той теме: http://forum.script-coding.com/viewtopi … 99#p115899
serzh82saratov, нет желания добавить опцию "перенос по словам" (word wrap)?
В смысле чтобы текст за границу не уходил?
Желания не возникало, но если скажешь как, то может быть добавлю.
В AhkSpy. По типу, как в блокноте.
Это может быть удобно при анализе страниц IE.
Так как сделать? Что за опция для HTMLFile?
Не знаю, как нибудь попробую.
Malcev
Пока не пробовал, но не выйдет, полоски из красных точек, длинные, будут тогда в несколько строк складыватся.
Я пробовал сделать их как то по ширине окна, но у меня не вышло.
Чтобы не разбивались на несколько строк можно им вписать таг <nobr>.
<nobr>Текст</nobr>
Либо:
<span style="white-space: nowrap">Long line with no breaks</span>
Пробовал для body и pre, не получилось.
<body id='body'`; word-wrap: 'break-word'>
Попробуй сам, линии это:
D2 := "<span id='Delimiter' style='color: " ColorDelimiter "'>" D2 "</span>"
В твоём коде для меня всё мудрёно.
Вот пример, который у меня работает:
Gui, HTML: Add, ActiveX, w333 h111 vIE, HTMLFile
Gui, HTML: show
html =
(
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>word-break</title>
<style>
.col {
background: #f0f0f0; /* Цвет фона */
width: 180px; /* Ширина блока */
padding: 10px; /* Поля */
word-break: break-all; /* Перенос слов */
}
</style>
</head>
<body>
<div class="col">
<p>Cуществительное</p>
<p>высокопревосходительство</p>
<p>Одушевленное существительное</p>
<p>одиннадцатиклассница</p>
<p>Химическое вещество</p>
<p><nobr>метоксихлордиэтиламинометилбутиламиноакридин</nobr></p>
</div>
</body>
</html>
)
IE.Close()
IE.Write(html)
return
У меня не получается добится того же в коде AhkSpy.
Ну я ж говорю - там мудрёно.
Должно переноситься либо так:
white-space: pre-wrap;
word-wrap: break-word;
Либо так:
word-break: break-all;
А что там мудрёно, например в режиме Window на 472 строке формируется HTML, на 511 применяется. Я заменял весь HTML на код из 646, слова не переносятся.
Я не нашел где у тебя в коде пишется html.
Если заменить
oDoc.body.innerHTML := HTML_Win
на
oDoc.Write(HTML_Win)
то переносит.
С oDoc.Write сильно тормозит.
Я не нашел где у тебя в коде пишется html.
Я же написал, на 472 строке создаётся переменная HTML_Win которая содержит html.
Всё, понял.
Метод oDoc.body.innerHTML := HTML_Win требует FixIE(1).
Если не использовать подгонку слов под разметку html блока, а подгонять под размер окна, то так работает:
gui, HTML: Add, ActiveX, w200 h111 vIE, HTMLFile
Gui, HTML: show
html =
(
<html>
<body>
Одушевленное существительное
<nobr>Одушевленное существительное</nobr>
</body>
</html>
)
IE.body.innerhtml := html
return
А где перенос.
А что у тебя не переносит?
Если делать перенос внутри слов, то можно так:
gui, HTML: Add, ActiveX, w50 h111 vIE, HTMLFile
Gui, HTML: show
html =
(
Одушевленноесуществительное
)
html := RegexReplace(html, "s).", "$0<wbr>")
IE.body.innerhtml := html
return
А что у тебя не переносит?
Ничего.
Код из 656 поста не переносит по буквам?
У меня на нескольких машинах переносит.
Из 654.
А так?
FixIE(0)
gui, HTML: Add, ActiveX, w50 h111 vIE, HTMLFile
Gui, HTML: show
html =
(
Одушевленноесуществительное
)
html := RegexReplace(html, "s).", "$0<wbr>")
IE.body.innerhtml := html
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
If Fix
RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 0
Else
RegDelete, HKCU, %Key%, %ExeName%
}
С 656 и без FixIE переносило. К чему это?
У меня на 10 разных компьютерах (не сетка) код из 654 поста переносит 2 слова.
Получается так:
Одушевленное
существительное
Одушевленное существительное
Пробовал менять всевозможные настройки IE security settings - чтобы не менял - переносит.
Код из 656 поста работает только с FixIE(0), так как иначе с FixIE(1), видно, таг <wbr> не понятен.
А, да первые 2 переносит. Но выводов из этого у меня нет.
Если в простом примере гуи перенос есть, а в ахкспай гуи нету, значит надо смотреть, что переносу мешает.
Может быть красные точки, может еще чего.
Мешает то что всё в pre.
Без него некоторые данные неккоректно отображаются.
Надо узнать как в pre осуществить перенос.
pre {word-wrap: break-word;}
Работает:
word-wrap: break-word;
А это не работает:
D2 := "<span id='Delimiter' style='color: " ColorDelimiter "'><nobr>" D2 "</nobr></span>"
D2 := "<span id='Delimiter' style='white-space: nowrap'>" D2 "</span>"
#Delimiter {white-space: 'nowrap'}
Так работает:
#Delimiter {
word-wrap: normal;
}
Но глючит, например пропадает полоса после заголовка Window Text в блокноте.
У меня нормально показывает если убрать <a></a>.
Для чего там эти таги?
У меня нормально показывает если убрать <a></a>.
У меня не помогает. Пропадает в Notepad++, в остальных нормально.
Для чего там эти таги?
Shift+Wheel(Down|Up) или F1 и F2 - Навигация по заголовкам (удобно если много данных).
Якоря для перемещений.
Глюк из за StatusBarText, не пойму что там мешает.
У меня после other нет полосы - лечится стиранием <a></a>.
А чтобы после WinText показывало - %SBText%`n%WinText%.
Я это видел, но `n там не в тему, и не ясно почему так.
У меня после other нет полосы - лечится стиранием <a></a>.
Лечится ещё, опять же почему то, переносом в конец строки.
%D1% <span id='title'>( Other )</span> %D2%<a></a>
Удалять якоря тоже не хочется, и вообще это всё похоже на метод ненаучного тыка.
Я это видел, но `n там не в тему, и не ясно почему так.
Думаю это глюки IE.
Нет, там мой косяк, решил.
Как перенос переключать, через меню?
Думаю да.
Сделал.
Ещё бы линии красные подрезать как нибудь по ширине окна, бесит скролл снизу.
Можно использовать text-overflow.
http://htmlbook.ru/css/text-overflow
Это видел, но у меня не вышло.
Можно прописать overflow-x:hidden в body.
Это понятно, но бесит не сам скролл, а то что он отматывает и показывает до конца последней линии, а надо чтобы только текст учитывал. Ну вроде как c <hr>, оно всегда до края, но на скролл не влияет.
Я пытался заключить всю строку с %D2% в span с width 100% и так чтобы содержимое его дочерних не выходило за пределы родителя, но при растягивании окна, ширина такого элемента оставалась прежней.
Вот то что нужно, но не устраивает перенос строки после Word, и contenteditable='false' в pre.
; http://shpargalkablog.ru/2012/01/css-overflow-word-wrap-text-overflow.html
FixIE(0)
Gui, +ReSize
Gui, Add, ActiveX, w200 h111 HWNDhActiveX vIE, HTMLFile
Gui, Show
ColorDelimiter := "E14B30"
Loop 1124
D1 .= "▪"
D2 := "<span id='Delimiter' style='color: " ColorDelimiter "'>" D1 "</span>"
html =
(
<body>
<pre contenteditable='false'>
<span id='con'> Word %D2%</span>
TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText 000
</pre>
</body>
<style>
#con {
width: 100`%;
overflow: hidden;
}
</style>
)
IE.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
If Fix
RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 0
Else
RegDelete, HKCU, %Key%, %ExeName%
}
АП не знаю что было с contenteditable, сейчас с true работает. Сначала с true было:
при растягивании окна, ширина такого элемента оставалась прежней.
Еще косяк, при наведении появляется крест, и можно перенести элемент.
АП с FixIE(1) недостатки уходят, но скролл снова "длинный", до конца линии, и под FixIE(1) я сабж не переделаю.
не устраивает перенос строки после Word,
Можно использовать неразрывный пробел.
под FixIE(1) я сабж не переделаю
А с FixIE(1) было бы проще:
body {
overflow-x: hidden;
-ms-scroll-limit-x-max: 0;
}
В смысле проще?
Ты сабж запускал с 1?
В смысле проще?
Проще добиться поставленной задачи, хотя бы с помощью джаваскриптов.
Ты сабж запускал с 1?
Запускал. Просто надо переписать хтмл код.
Не знаю насколько просто, ещё onmouseover отваливается, шрифт не тот...
Ну я и говорю, что надо переписывать.
Наверняка, переписать будет непросто, но потом добавлять что-либо новое - возможностей будет больше.
Пример - с FixIE(0) картинка вниз опущена и появляется вертикальная прокрутка.
Спрашивается, зачем она здесь нужна?
html =
(
<script>
function bigImg(x) {
x.style.height = "64px";
x.style.width = "64px";
}
function normalImg(x) {
x.style.height = "32px";
x.style.width = "32px";
}
</script>
<body>
<img onmouseover="bigImg(this)" onmouseout="normalImg(this)" border="0" src="C:\Windows\Web\Wallpaper\Windows\img0.jpg" width="32" height="32">
</body>
)
Gui, Add, ActiveX, w100 h100 vWB, HTMLFile
wb.write(html)
Gui, Show
return
Или так:
html =
(
<body>
<img onmouseover="bigImg(this)" onmouseout="normalImg(this)" border="0" src="C:\Windows\Web\Wallpaper\Windows\img0.jpg" width="32" height="32">
</body>
)
Gui, Add, ActiveX, w100 h100 vWB, HTMLFile
wb.body.innerhtml := html
wb.parentWindow.execScript("function bigImg(x) {x.style.height = ""64px""; x.style.width = ""64px""; }")
wb.parentWindow.execScript("function normalImg(x) {x.style.height = ""32px""; x.style.width = ""32px""; }")
Gui, Show
return
body {
overflow-x: hidden;
-ms-scroll-limit-x-max: 0;
}
Так скролла нет вообще.
Спрашивается, зачем она здесь нужна?
Не знаю... Мне бы как onmouseover вызывает функцию анк.
Так скролла нет вообще.
А разве он при word wrap нужен?
Мне бы как onmouseover вызывает функцию анк.
А чем не устраивает как сейчас через ComObjConnect?
html =
(
<body>
<img src="C:\Windows\Web\Wallpaper\Windows\img0.jpg" width="32" height="32" id="Picture">
</body>
)
Gui, Add, ActiveX, w100 h100 vWB, HTMLFile
wb.body.innerhtml := html
Picture := wb.All.Picture
ComObjConnect(Picture, "Picture_")
Gui, Show
Return
Picture_onmouseover() {
tooltip, Picture
}
Picture_onmouseout() {
tooltip
}
А разве он при word wrap нужен?
А без него?
А чем не устраивает как сейчас через ComObjConnect?
На каждое id функцию делать.
А без него?
А без него разве как сейчас плохо?
Просто если ты хочешь устанавливать width и overflow на span, то тебе его нужно показывать, как inline-block.
И если эти стили установлены, то IE назначает элементу hasLayout = "true".
Из-за которого в купе с contenteditable = "true" при наведении появляется крест, и можно перенести элемент.
На каждое id функцию делать.
Как у тебя через класс, по-моему, оптимальный вариант.
А по-другому, наверное, никак.
А без него разве как сейчас плохо?
Вообще без него, плохо.
Как у тебя через класс, по-моему, оптимальный вариант.
Ну так как сейчас с FixIE(1), onmouseover не вызывается.
И зачем сейчас нам FixIE(1), если и с ним нет решения про полосы.
Я предлагал при word-wrap в body прописывать:
body {
overflow-x: hidden;
-ms-scroll-limit-x-max: 0;
}
При снятии word wrap, эти стили из body убирать.
Чем тебя такое решение не устраивает?
Ну так как сейчас с FixIE(1), onmouseover не вызывается.
В 691 посту вызывается, значит надо копать, что ahkspy этому препятствует.
Чем тебя такое решение не устраивает?
Я уже ничего не понимаю, решение с полосами без word wrap, есть, код, на примере 684?
Так чего непонятного?
Сейчас AhkSpy нормально же работает без word wrap? Правильно?
А с word-wrap бесят длинные красные полосы? Так?
Вот так их можно убрать с FixIE(1):
FixIE(1)
Gui, +ReSize
Gui, Add, ActiveX, w200 h111 HWNDhActiveX vIE, HTMLFile
Gui, Show
ColorDelimiter := "E14B30"
Loop 1124
D1 .= "▪"
D2 := "<span id='Delimiter' style='color: " ColorDelimiter "'>" D1 "</span>"
html =
(
<body>
<pre contenteditable='true'>
<span id='con'>Word %D2%</span>TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText 000
</pre>
</body>
<style>
body {
overflow-x: hidden;
-ms-scroll-limit-x-max: 0;
}
pre{
word-wrap: break-word;
}
#con {
display: block;
word-wrap: normal;
}
</style>
)
IE.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
If Fix
RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 1
Else
RegDelete, HKCU, %Key%, %ExeName%
}
Сейчас AhkSpy нормально же работает без word wrap? Правильно?
Нет:
решение с полосами без word wrap, есть, код, на примере 684?
Например так:
Понажимай f1, f2.
FixIE(1)
Gui, +ReSize
Gui, Add, ActiveX, w200 h111 HWNDhActiveX vIE, HTMLFile
Gui, Show
ColorDelimiter := "E14B30"
Loop 1124
D1 .= "▪"
D2 := "<span id='Delimiter' style='color: " ColorDelimiter "'>" D1 "</span>"
html =
(
<body>
<pre contenteditable='true'>
<span id='con'>Word %D2%</span><span id='con1'>TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText 000</span>
</pre>
</body>
<style>
body {
overflow-x: hidden;
-ms-scroll-limit-x-max: 0;
}
pre {
word-wrap: break-word;
}
#con {
display: block;
word-wrap: normal;
}
</style>
)
Global IE
IE.body.innerhtml := html
return
GuiSize:
WinMove, ahk_id %hActiveX%, , 0, 0, A_GuiWidth, A_GuiHeight
return
f1::
IE.getElementsByTagName("pre")[0].style.wordWrap := "normal"
width := IE.getElementById("con1").offsetWidth
WinGetPos,,, GuiWidth,, ahk_id %hActiveX%
if (width - GuiWidth) > -17 ; ширина скроллбара в ие
{
IE.body.style.msScrollLimitXMax := width - GuiWidth+30
IE.body.style.overflowX := "auto"
}
else
{
IE.body.style.msScrollLimitXMax := 0
IE.body.style.overflowX := "hidden"
}
return
f2::
IE.body.style.msScrollLimitXMax := 0
IE.body.style.overflowX := "hidden"
IE.getElementsByTagName("pre")[0].style.wordWrap := "break-word"
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
If Fix
RegWrite, REG_DWORD, HKCU, %Key%, %ExeName%, 1
Else
RegDelete, HKCU, %Key%, %ExeName%
}
Неа.