1 (изменено: serzh82saratov, 2014-02-01 18:43:38)

Тема: AHK: Использование - GUI Control Types ActiveX

Собственно в справке написано:

.... , Shell.Explorer  ; The final parameter is the name of the ActiveX component.

Интересует, какие ещё есть компоненты ActiveX? Например возможно-ли проиграть видео файл:

Link = file://localhost/Путь к flv файлу
Gui Add, ActiveX, w980 h640 vWB, Shell.Explorer  ; The final parameter is the name of the ActiveX component.
WB.Navigate(Link)  ; This is specific to the web browser control.
Gui Show
Return

И что значит "WB.Navigate" в коде?

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

2

Re: AHK: Использование - GUI Control Types ActiveX

Link = http://forum.script-coding.com/viewtopic.php?pid=71065#p71065
Gui Add, ActiveX, w980 h640 vWB, Shell.Explorer  ; The final parameter is the name of the ActiveX component.
WB.Navigate(Link)  ; This is specific to the web browser control.
Gui Show
Return

GuiClose:
   WB := ""
   ExitApp
file := "C:\Windows\Media\tada.wav"
Gui, Add, ActiveX, w980 h640 vMP, WMPlayer.OCX  ; The final parameter is the name of the ActiveX component.
MP.url := file
Gui Show
WP.Play
Return

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

3

Re: AHK: Использование - GUI Control Types ActiveX

Ну вообще хорошо. Спасибо! А что ещё интересного есть на вскидку? И где почитать что-то можно, чтобы найти самому нужный компонент?

WMPlayer.OCX - проигрывает видимо неиспользуя установленных кодеков.
WP.Play - WP непонятно. Play видимо команда WMPlayer.OCX.
MP.url - MP это переменная ActiveX контрола. url непонятно

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

4

Re: AHK: Использование - GUI Control Types ActiveX

WP и MP — просто названия объектов, которые им даны в коде:

Gui Add, ActiveX, w980 h640 vWB, Shell.Explorer

Play и url — их методы. Полный список свойств и методов данных объектов можно найти, если погуглить Shell.Explorer и WMPlayer.OCX.
Частичный список COM-объектов, доступных для скриптов.

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

5 (изменено: serzh82saratov, 2013-04-03 23:09:06)

Re: AHK: Использование - GUI Control Types ActiveX

Спасибо. Хоть что-то становится ясно.

Ещё вопрос.
Отправляю через адресную строку любого браузера запрос: "http://localhost:8080/xbmcCmds/xbmcHttp?command=SendKey(61569)", результат моментальный. А через:

Request := "http://localhost:8080/xbmcCmds/xbmcHttp?command=SendKey(61569)"
WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
WebRequest.Open("GET", Request) 
WebRequest.Send()
ToolTip % WebRequest.ResponseText
WebRequest := ""

ждать надо 1.5 - 2 секунды, что не так? Может вместо "WinHttp.WinHttpRequest.5.1" нужно что-то другое?

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

6

Re: AHK: Использование - GUI Control Types ActiveX

Я не в курсе, что это за запрос.

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

7

Re: AHK: Использование - GUI Control Types ActiveX

Ну это обычный Http запрос, как и все остальные. Просто непонятно, почему он через приведённый код работает очень долго.

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

8

Re: AHK: Использование - GUI Control Types ActiveX

Можно попробовать UserAgent указать:

Request := "http://localhost:8080/xbmcCmds/xbmcHttp?command=SendKey(61569)"
WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
WebRequest.Open("GET", Request) 
UserAgent := "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
WebRequest.Option(WinHttpRequestOption_UserAgentString := 0) := UserAgent
WebRequest.Send()
ToolTip % WebRequest.ResponseText
WebRequest := ""
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Использование - GUI Control Types ActiveX

Можно попробовать UserAgent указать:

Увы, без изменений.

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

10

Re: AHK: Использование - GUI Control Types ActiveX

Никак не пойму, как изменять первую строку:


Gui, Add, ActiveX, w380 h230 vActiveX, shell explorer
ActiveX.Navigate("about:blank"), I := 0
Gui, show 
Return

1::    
    ++I
    html = <html><center>%I%</center></html>
    ActiveX.document.write(html)
    Return

То есть чтоб не добавлялось каждый раз в новую строку как тут, а изменялось значение первой строки как:


I := 0
Gui, Add, Text, Center vText w380 h230, 0
Gui, show 
Return

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

11

Re: AHK: Использование - GUI Control Types ActiveX

Gui, Add, ActiveX, w380 h230 voIE, Shell.Explorer
oIE.navigate("about:blank"), i:=0, oIE.document.write(`"
(
   <!DOCTYPE HTML>
   <html>
      <body>
         <center>"i "</center>
      </body>
   </html>
)`")
Gui, Show

1::
   ++i, oIE.document.close, oIE.document.write(`"
   (
      <!DOCTYPE HTML>
      <html>
         <body>
            <center>"i "</center>
         </body>
      </html>
   )`")
   Return

2::
   ++i, oIE.document.getElementsByTagName("center")[0].childNodes[0].nodeValue:=i
   Return

GuiClose:
   oIE:=""
   ExitApp

12

Re: AHK: Использование - GUI Control Types ActiveX

Grey
Большое спасибо.

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

13

Re: AHK: Использование - GUI Control Types ActiveX

2 вопроса:

- Почему тут не работает свойство white-space, пробелы не учитываются. Просто тэг pre неподходит из за смены шрифта на моноширинный.

- Как получить выделенный пользователем текст, в переменную АНК?

 
 
OnExit HTMLGuiClose 
 
Gui HTML: -DPIScale  
Gui, HTML: Margin, 0, 0 
Gui, HTML: Add, ActiveX, w333 h111 vIE, HTMLFile   
Gui, HTML: Show   
  
html =
(        
    <html>
    <body contenteditable="true">
    <p>Тут>      <несколько пробелов. Перенос слов отключен.</p>
    </body>
    
    <style>
    p  { 
    white-space: "pre"  
    }
    body  {
    background-color: "27419B"`;  
    color: "ffffff"`;
    font-size: "33"`;
    font-family: "Times New Roman"`; 
    }
    </style>
    </html>
)    
IE.Write(html)  
return

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

14

Re: AHK: Использование - GUI Control Types ActiveX

Честно говоря, не знаю / не помню, можно ли с помощью CSS задать преформатирование в обычных элементах. Но:
1) можно использовать неразрывный пробел (&nbsp;), который всегда сохраняется:

Тут&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;несколько пробелов

2) на самом деле для PRE можно явно задать любой шрифт.

serzh82saratov пишет:

Как получить выделенный пользователем текст, в переменную АНК?

text := IE.selection.createRange().text

(в данном случае IE обозначает HTMLDocument, а не WebBrowser!)

15

Re: AHK: Использование - GUI Control Types ActiveX

wisgest
Большое спасибо что откликнулись.

text := IE.selection.createRange().text

Ооо!! Огроммное спасибо, никак не мог найти. Работает.

1) можно использовать неразрывный пробел (&nbsp;), который всегда сохраняется:

Не удобно в контексте...

2) на самом деле для PRE можно явно задать любой шрифт.

Подскажите как? И остальные стили CSS.

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

16

Re: AHK: Использование - GUI Control Types ActiveX

serzh82saratov пишет:

2) на самом деле для PRE можно явно задать любой шрифт.

Подскажите как? И остальные стили CSS.

Также, как и для других элементов (только white-space, как помню, изменить не нельзя):

<pre style="font-family: serif; font-size: 1em;">Тут>      &lt;несколько пробелов.</pre>

— ещё пришлось font-size подправить, иначе высота текста составляла приблизительно 80% высоты остального текста с таким же шрифтом.
Ещё:

<html>
<head>
<style>
body  {
background-color: #27419B;  
color: #ffffff;
font-size: 33px;
font-family: Times New Roman;
}
pre  { 
font-family: Times New Roman;
font-size: 1em;
}
</style>
</head>
<body contenteditable="true">
<pre>Тут&gt;      &lt;несколько пробелов. Перенос слов отключен.</pre>
</body>
</html>

17

Re: AHK: Использование - GUI Control Types ActiveX

wisgest
Спасибо, вроде как всё получилось.

Ещё есть желание настроить попроще обратную связь с HTML кодом. Нашёл совсем непонятный мне - такой пример. Как бы вы организовали например обработку события "onclick" для вызова действия АНК? Есть идея с запуском скрипта в коде HTML, который передавал бы оконное сообщение в свой скрипт АНК через A_ScriptHwnd, возможно ли такое?
 


OnExit HTMLGuiClose 
OnMessage(0xC, "WM_SETTEXT")   
Gui HTML: -DPIScale 
Gui, HTML: margin, 20, 20 
Gui, HTML: Add, ActiveX, w333 h111 vIE, HTMLFile   
Gui, HTML: show   
  
html =
(  
<html> 
 <body> 
  <p onclick="alert('Скрипт передаёт в сообщении WM_SETTEXT слово button')" style="text-align: center"><button>Кнопка с текстом</button></p>
 </body>
</html>
)   
IE.Close()
IE.Write(html)  
return

WM_SETTEXT(wParam, lParam, msg, hwnd) {         
    Message := StrGet(lParam)                 
    If Message = button                     
        ToolTip button 
    Return True 
}   

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

18 (изменено: wisgest, 2013-10-11 03:11:00)

Re: AHK: Использование - GUI Control Types ActiveX

serzh82saratov пишет:

Есть идея с запуском скрипта в коде HTML, который передавал бы оконное сообщение в свой скрипт АНК через A_ScriptHwnd, возможно ли такое?

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

serzh82saratov пишет:

Как бы вы организовали например обработку события "onclick" для вызова действия АНК?

Конечно, если бы можно было передать скрипту в HTML ссылку на функцию или объект AHK, то задача решалась бы совсем просто, но у меня получилось передать только простое значение (число), иначе пишет «undefined». Возможно, можно использовать COM-обёртки, но я в этом не разбираюсь.

Но решение всё-таки есть:

serzh82saratov пишет:

Нашёл совсем непонятный мне - такой пример.

— в этом примере главное — ComObjConnect():

OnExit HTMLGuiClose
Gui HTML: -DPIScale
Gui, HTML: margin, 20, 20
Gui, HTML: Add, ActiveX, w333 h111 vIE, HTMLFile
Gui, HTML: show

html =
(
<html>
 <body>
  <p style="text-align: center"><button>Кнопка с текстом</button></p>
 </body>
</html>
)
IE.Write(html)
IE.Close()
; получаем ссылку на объект кнопки:
but := IE.getElementsByTagName("button").item(0)
; связываем функции с именами, начинающимися с "but_"
;  с событиями кнопки:
ComObjConnect(but, "but_")
return

; и назначаем обработчик события onclick кнопки:
but_onclick(but) {
  MsgBox % "Вызван AHK-обработчик события HTML-кнопки.`nА на кнопке написано '"
    . but.value . "'."
}

HTMLGuiClose:
    IE := ""
    ExitApp

19

Re: AHK: Использование - GUI Control Types ActiveX

wisgest круто! ComObjConnect за гранью моих познаний.
А тут есть вариант чтобы несколько разных событий вызывали одну функцию, и уже в ней проверять какое это событие.

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

20 (изменено: wisgest, 2013-10-11 05:17:24)

Re: AHK: Использование - GUI Control Types ActiveX

serzh82saratov пишет:

А тут есть вариант чтобы несколько разных событий вызывали одну функцию, и уже в ней проверять какое это событие.

Если это вопрос:
1)

wisgest пишет:

если бы можно было передать скрипту в HTML ссылку на функцию или объект AHK, то задача решалась бы совсем просто

Уточню: можно ли COM-объектам передавать функции обратного вызова написанные на AHK?

2) Для событий клавиатуры и мыши можно обработчик повесить на родительский элемент вплоть до самого document и в обработчике проверять в каком элементе (event.srcElement) произошло событие, но это не совсем «несколько разных событий», это — событие одного и того же вида для разных элементов).

3) Еще один и тот же обработчик для разных элементов можно повесить связав один и тот же префикс с разными объектами:

html =
(
<html>
 <body>
  <p style="text-align: center"><button>Кнопка с текстом</button>
  <button>Ещё кнопка</button></p>
 </body>
</html>
)
IE.Write(html)
IE.Close()
but1 := IE.getElementsByTagName("button").item(0)
but2 := IE.getElementsByTagName("button").item(1)
ComObjConnect(but1, "but_")
ComObjConnect(but2, "but_")
return

but_onclick(but) {
  MsgBox % "На кнопке написано '" . but.value . "'."
}

Но как повесить один и тот же обработчик на разные события (например, mousedown и mouseup), если нельзя сделать (1), мне в голову не приходит.
Попробовал ещё

ComObjConnect(but, "but_")
but_onmousedown := Func("Handler")
but_onmouseup := Func("Handler")
Handler(but) {
    ; ...
}

— не пошло.

Пока только могу предложить из множества коротких обработчиков вызывать одну большую функцию (узнать вид события — event.type).

Нет, всё-таки можно извратится: создать скрытый элемент и для всех событий скриптом в HTML-документе возбуждать в нём событие click, а в AHK обрабатывать уже это единственное событие…

21

Re: AHK: Использование - GUI Control Types ActiveX

Нет, всё-таки можно извратится: создать скрытый элемент и для всех событий скриптом в HTML-документе возбуждать в нём событие click, а в AHK обрабатывать уже это единственное событие…

Интересно, а на примере можно, если оно не сложно?
И заодно не подскажете, как вставлять текст в место где курсор или выделенный текст, как по Ctrl+V.

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

22 (изменено: wisgest, 2013-10-13 12:53:46)

Re: AHK: Использование - GUI Control Types ActiveX

serzh82saratov пишет:

а на примере можно

А можно уточнить, какого рода события (только мыши, только клавиатуры, мыши и клавиатуры, другие) и каких элементов (разные события одного элемента, разные события разных элементов) предполагается обрабатывать одной функцией?

В примере совмесместно обрабатываются события btn1.onclick, p1.ondblclick, p1.onmouseout (возможно, есть лучшие решения):

OnExit HTMLGuiClose
Gui HTML: -DPIScale
Gui, HTML: margin, 20, 20
Gui, HTML: Add, ActiveX, w333 h222 vIE, HTMLFile
Gui, HTML: show

html =
(
<html>
 <body>
  <p id='p1'>Обрабатываются события двойного щелчка по этому абзацу
  и выхода указателя мыши за его пределы,
  а также щелчка по кнопке ниже.</p>
  <button id='btn1'>Кнопка</button>
  
  <script id='capturer' language='JavaScript'>
   var saved_event_context = null;
   function EventsCommonHandler() {
     saved_event_context = document.createEventObject(window.event);
     capturer.click();
   }
   
// Обрабатываемые события:
   p1.ondblclick =
   p1.onmouseout =
   btn1.onclick = EventsCommonHandler;
  </script>
 </body>
</html>
)
IE.Write(html)
IE.Close()
capturer := IE.getElementById("capturer")
ComObjConnect(capturer, "capturer_")
return

capturer_onclick() {
  global IE
  event := IE.Script.saved_event_context
  MsgBox % "Произошло событие '" . event.type . "'"
      . " в элементе '" . event.srcElement.id . "'."
}

HTMLGuiClose:
    capturer := ""
    IE := ""
    ExitApp

serzh82saratov пишет:

как вставлять текст в место где курсор или выделенный текст, как по Ctrl+V.

объект_документа.execCommand("Paste")
объект_документа.selection.createRange().execCommand("Paste")

23

Re: AHK: Использование - GUI Control Types ActiveX

В примере совмесместно обрабатываются события btn1.onclick, p1.ondblclick, p1.onmouseout

Спасибо, вроде исчерпывающий пример.

объект_документа.execCommand("Paste")

Отлично. У меня вот вопрос, как сделать в текстовой зоне (или скорее это просто текст) полнофункцианальный ввод текста? То есть Enter - новая строка, Ctrl+C - копирование, Ctrl+V - вставка и.т.п. Для этого есть какой то стиль? Или можно только повесить на каждую кнопку нужную функцию? execCommand("Paste") вставляет буфер обмена, есть ли возможность вставлять свой текст, то есть из переменной АНК?


html =
(  
<html> 
 <body contenteditable="true"> 
  <p>текст</p>
 </body>
</html>
)  
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

24

Re: AHK: Использование - GUI Control Types ActiveX

serzh82saratov пишет:

execCommand("Paste") вставляет буфер обмена, есть ли возможность вставлять свой текст, то есть из переменной АНК?

объект_документа.selection.createRange().text := "какой-то текст"

serzh82saratov пишет:

как сделать в текстовой зоне (или скорее это просто текст) полнофункцианальный ввод текста?

Если «текстовая зона» — это TEXTAREA, то она и так поддерживает полнофункциональный ввод текста; если нет, то самым, на мой взгляд, разумным будет использовать именно TEXTAREA.

25

Re: AHK: Использование - GUI Control Types ActiveX

объект_документа.selection.createRange().text := "какой-то текст"

Спасибо!

Если «текстовая зона» — это TEXTAREA, то она и так поддерживает полнофункциональный ввод текста; если нет, то самым, на мой взгляд, разумным будет использовать именно TEXTAREA.

Нет, планируется не TEXTAREA. Но TEXTAREA тоже не поддерживает у меня почему то Энтер, Таб, Ctrl+С, Ctrl+V...

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

26 (изменено: wisgest, 2013-10-18 07:52:06)

Re: AHK: Использование - GUI Control Types ActiveX

serzh82saratov
Как я понял, проблема возникает, если HTMLDocument или WebBrowser находятся на AHK GUI и именно для её решения используется в вышеуказанном примере код (как он действует, я не имею понятия):

OnMessage(WM_KEYDOWN, "WM_KeyDown")

WM_KEYDOWN(wParam, lParam, nMsg, hWnd) {
    . . .
}

Но кое-какие сложности существуют в IE сами по себе и должны остаться после этого исправления:
1) с вводом Tab в TEXTAREA, но для этого существует решение: перехватываются события клавиатуры (точно не помню: onkeypress или, более вероятно, onkeydown) и, если нажата Tab (event.keyCode=9), то поведение события по умолчанию отменяется и символ табуляции в положение ввода вставляется программно.
(

serzh82saratov пишет:

Нет, планируется не TEXTAREA.

Планируется возможность ввода текста с форматированием?
)
2) с вводом Tab и Enter в остальных элементах: Tab вставляется (тоже программно) как пробел даже в PRE; Enter в .text вообще не виден, а в .htmlText вставляется как новый абзац (<P></P>) или при вводе через Shift-Enter или вставку (в том числе программную) — как <BR>.

27

Re: AHK: Использование - GUI Control Types ActiveX

Спасибо.

HTMLDocument или WebBrowser

Кстати в чём их отличие?

и, если нажата Tab (event.keyCode=7)

А если Tab вставлено?

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

28

Re: AHK: Использование - GUI Control Types ActiveX

serzh82saratov пишет:

и, если нажата Tab (event.keyCode=7)

А если Tab вставлено?

Извиняюсь, event.keyCode=9.
Да, в TEXTAREA Tab програмно вставлеятся через свойство .text объекта TextRange (TextRange=document.selection.createRange()).
Впрочем, вполне возможно, что Enter и Tab можно вставить программно и в PRE, в том числе перехватывая пользовательский ввод, но не через TextRange.text, а через .innerText или .innerHTML предварительно вычислив место вставки, но над этим надо думать.

serzh82saratov пишет:

HTMLDocument или WebBrowser

Кстати в чём их отличие?

Признаюсь, вопрос, в силу моего дремучего дилетантизма, поставил меня в тупик.
Попробую, как понимаю.
HTMLDocument предоставляет возможность для разбора и отображения html-документов, извиняюсь за тавтологию.
WebBrowser, в свою очередь, позволяет загрузить в себя html-документ и обратившись к нему через своё свойство .Document работать с ним тем же образом,
но также позволяет загружать и другие объекты, например, FolderWiew, документы MS-Word, pdf… (если установлены соответствующие расширения) и предоставляет дополнительные свойства, методы, события, позволяющие работать с контролом и загруженным в него документом, как-бы извне, помимо объектной модели самого документа.

29 (изменено: serzh82saratov, 2013-10-19 01:04:20)

Re: AHK: Использование - GUI Control Types ActiveX

Спасибо за ответы.

Впрочем, вполне возможно, что Enter и Tab можно вставить программно и в PRE, в том числе перехватывая пользовательский ввод, но не через TextRange.text, а через .innerText или .innerHTML предварительно вычислив место вставки, но над этим надо думать.

Да, хотелось бы знать как... Наивно попробовал вставить спец символ HTML переноса строки

ActiveX.selection.createRange().text := "&shy;"

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

30 (изменено: wisgest, 2013-10-19 11:40:49)

Re: AHK: Использование - GUI Control Types ActiveX

serzh82saratov пишет:

попробовал вставить спец символ HTML переноса строки

ActiveX.selection.createRange().text := "&shy;"
ActiveX.selection.createRange().text := "`n" ; или
ActiveX.selection.createRange().text := "`r" ; или
ActiveX.selection.createRange().pasteHTML("<br>")

Но при копировании текста и вставке в текстовый редактор все вставленные таким образом переводы строк пропадают.
В третьем случае вставляется лишь один перевод, даже если указать несколько <br> подряд (но это можно обойти: "<br>&nbsp;<br>&nbsp;<br>").

31

Re: AHK: Использование - GUI Control Types ActiveX

В третьем случае вставляется лишь один перевод, даже если указать несколько <br> подряд (но это можно обойти: "<br>&nbsp;<br>&nbsp;<br>").

Так же как и:

ActiveX.selection.createRange().text := " `n"
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

32 (изменено: pant-79, 2013-11-06 19:59:51)

Re: AHK: Использование - GUI Control Types ActiveX

teadrinker пишет:

WP и MP — просто названия объектов, которые им даны в коде:

Gui Add, ActiveX, w980 h640 vWB, Shell.Explorer

Play и url — их методы. Полный список свойств и методов данных объектов можно найти, если погуглить Shell.Explorer и WMPlayer.OCX.
Частичный список COM-объектов, доступных для скриптов.

Вот тут не до конца понятно. К примеру COM-объект ScriptControl каким образом можно запихнуть в окно gui? В документации к компоненту указан лишь способ использования одного кода внутри другого.

33

Re: AHK: Использование - GUI Control Types ActiveX

А зачем? Какой ожидается эффект от запихивания ScriptControl'a в окно Gui?

34 (изменено: pant-79, 2013-11-06 20:35:54)

Re: AHK: Использование - GUI Control Types ActiveX

Предположим, в окне имеется контрол типа поля edit, в который прописываешь код vbs, а потом он выполняется по клику какой-либо кнопки. Хотя, это, конечно, можно и простым editом реализовать, но так вышло бы поизящнее. Вопрос в том, что этот самый "широкофункциональный" ActiveX-контрол на поверку стоило бы назвать каким-нибудь IE-контролом и не путать людей. А то ведь COM-объектов много, однако же тот же лист excel или рабочее поле документа Word на окно закинуть уже не получится (а иногда хотелось бы)...

35

Re: AHK: Использование - GUI Control Types ActiveX

Но у СкриптКонтрола никаких полей ввода нет, ему просто передаётся текст скрипта.

36 (изменено: pant-79, 2013-11-06 21:35:30)

Re: AHK: Использование - GUI Control Types ActiveX

А у листа Excel? Да и название такое звучащее - ScriptControl. В общем, я просто пример неудачный привел. Так то мне бы хотелось Excelем и Wordом прям в окне рулить...

37

Re: AHK: Использование - GUI Control Types ActiveX

Про Эксель и Ворд не знаю.

38

Re: AHK: Использование - GUI Control Types ActiveX

Хочу сделать авторизацию на нескольких сайтах (например QIWI):


QIWI_LogIn("+79112224455","123456789")
 
QIWI_LogIn(UserName,Password) {
    Wb := ComObjCreate( "InternetExplorer.Application")
    Wb.Visible := True, wbHWND := wb.HWND
    WinMaximize ahk_id %wbHWND%
    Wb.Navigate( "https://visa.qiwi.com/main.action")
    While, (wb.ReadyState <> 4)
        Sleep, 100
    Wb.document.all.login.value := UserName
    Wb.document.all.password.value := Password 
    ; Вставили логин и пароль, как далее авторизоватся?
}

В опере подсмотрел значение "Name" поля login и Password.
Но как кликнуть кнопку "Войти"? Думал что получится Wb.document.all.submit.click, но у кнопки нет параметра "Name". Подскажите как можно кликнуть по такой кнопке методами объекта.

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

39

Re: AHK: Использование - GUI Control Types ActiveX

Думал что получится Wb.document.all.submit.click, но у кнопки нет параметра "Name".

Зато у всех элементов есть порядковый номер в коллекции all и других коллекциях объектов документа. Можно указать его в круглых или квадратных скобках.

Забыл пароль и потерял e-mail.

40 (изменено: Grey, 2013-11-13 16:28:18)

Re: AHK: Использование - GUI Control Types ActiveX

#KeyHistory, 0
; #Warn
ListLines, Off
SetBatchLines, -1
ListLines, On

`(oIE:=ComObjCreate("InternetExplorer.Application"))
.navigate("https://visa.qiwi.com/main.action")
oIE.top:=oIE.left:=0, oIE.width:=A_ScreenWidth, oIE.height:=A_ScreenHeight

While, oIE.busy
   Sleep, 500

oIE.document.querySelector("#phone").value:="+79112224455"
oIE.document.querySelector("#password").value:="123456789"

ListLines, Off
SoundBeep, 12500, 250
oIE.visible:=True
KeyWait, XButton2, % "D"
ListLines, On

oIE.document.querySelector(".submit").click()

ListLines, Off
ListLines
SendEvent, % "#{Right}"
KeyWait, XButton2, % "L"
KeyWait, XButton2, % "D"
oIE.quit
; oIE:=""

41

Re: AHK: Использование - GUI Control Types ActiveX

shiz пишет:

Думал что получится Wb.document.all.submit.click, но у кнопки нет параметра "Name".

Зато у всех элементов есть порядковый номер в коллекции all и других коллекциях объектов документа. Можно указать его в круглых или квадратных скобках.

Пробовал так:

Wb.document.all.submit[0].click()  
Wb.document.getElementsByTagName("button").click() 

неполучилось.
---
Grey
Спасибо в сотый раз!
Можете рассказать про "querySelector"?
Судя по префиксам # это id, точка это class, то есть обращения как и в CSS.

Ещё вопрос, как убедится в наличии\отсутствии конкретного элемента управления.
Знаю что можно в html коде искать кусок кода соответствующий контролу, но видимо можно проще.
Я про то что например если я уже был авторизован, то страница "https://visa.qiwi.com/main.action" уже выглядит по другому, и значит действия не требуются.

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

42 (изменено: shiz, 2013-11-14 02:31:12)

Re: AHK: Использование - GUI Control Types ActiveX

serzh82saratov пишет:

Пробовал так:

Wb.document.all.submit[0].click()  
Wb.document.getElementsByTagName("button").click()

неполучилось.

Закономерно.
1) Всё проще:

Wb.document.all[777].click()
Wb.document.all(777).click()
Wb.document.all.item(777).click()

2) А по коллекции зачем щёлкать? Сперва надо выбрать из неё элемент

Wb.document.getElementsByTagName("button")[666].click()
Wb.document.getElementsByTagName("button")(666).click()
Wb.document.getElementsByTagName("button").item(666).click()

Ну а по мне лучше было бы добираться до кнопки (и полей ввода) через содержащую её форму (числовые индексы в отличии от примеров выше - настоящие):

Wb.document.forms[0].elements[3].click()
Wb.document.forms[0].getElementsByTagName("button")[0].click()
Wb.document.forms[0].tags("button")[0].click()
Забыл пароль и потерял e-mail.

43

Re: AHK: Использование - GUI Control Types ActiveX

shiz
Тут используются неочевидные (для меня) индексы контролов, querySelector мне понравился больше, проинспектировал в опере элемент, скопировал всю писанину, и усё.

oIE.document.querySelector("a[href=""#""][class=""button""][data-name=""sign-in-button""]").click()
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

44

Re: AHK: Использование - GUI Control Types ActiveX

Ещё возник вопрос: как установить свою иконку кнопки в панели задач, для InternetExplorer запускаемого таким образом:


oIE := ComObjCreate("InternetExplorer.Application") 
oIE.visible := True
return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

45

Re: AHK: Использование - GUI Control Types ActiveX

Установить иконку для окна с помощью WM_SETICON, такая же будет и в панели задач.

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

46

Re: AHK: Использование - GUI Control Types ActiveX

teadrinker
Спасибо, нашёл только подобные примеры:


Icon = C:\Users\sergey\Desktop\32.ico
oIE := ComObjCreate("InternetExplorer.Application") 
oIEHWND := oIE.HWND 

hIcon := DllCall("LoadImage", uint, 0, str, Icon, uint, 1, int, 0, int, 0, uint, 0x10)  
SendMessage, 0x80, 0, hIcon, , ahk_id %oIEHWND% 
SendMessage, 0x80, 1, hIcon, , ahk_id %oIEHWND% 
oIE.visible := True 
return

не работает

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

47

Re: AHK: Использование - GUI Control Types ActiveX

Сейчас проверить не могу, но точно нужно DetectHiddenWindows on перед SendMessage.

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

48

Re: AHK: Использование - GUI Control Types ActiveX

DetectHiddenWindows on не помогает.

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

49

Re: AHK: Использование - GUI Control Types ActiveX

Icon = C:\Users\sergey\Desktop\32.ico
oIE := ComObjCreate("InternetExplorer.Application") 
IEHWND := oIE.HWND

hIcon := ExtractIcon(Icon, 0, 16)
DetectHiddenWindows, On
PostMessage, WM_SETICON := 0x80,, hIcon,, ahk_id %IEHWND%

oIE.Visible := true
return

ExtractIcon(sFile, IconNumber, IconSize)     ; возвращает хэндл иконки из dll, exe, cur, ico файлов
{
   coding := A_IsUnicode ? "W" : "A"
   
   SplitPath, sFile,,, ext
   if !(ext ~= "exe|dll|cpl")
      IconNumber := 0
   
   if PrivateExtractIcons := DllCall("GetProcAddress"
                              , Ptr, DllCall("LoadLibrary", Str, "User32", Ptr)
                              , A_IsUnicode ? "AStr" : "Str", "PrivateExtractIcons" . coding, Ptr)
   {                           
      Result := DllCall(PrivateExtractIcons, Str, sFile, Int, IconNumber-1
                  , Int, IconSize, Int, IconSize, PtrP, hIcon, UIntP, 0, UInt, 1, UInt, 0)
      if !Result
         MsgBox, 16,, % "Не удалось извлечь икону.`nОшибка " A_LastError "."
      else if (Result = 0xFFFFFFFF || Result = -1)
         MsgBox, 16,, Указанный файл не найден!
   }
   
   else
   {
      if !DllCall("Shell32\ExtractIconEx" . coding, Str, sFile, Int, IconNumber-1, PtrP, hIconLarge, PtrP, hIconSmall, UInt, 1)
      {
         MsgBox, 16,, % "Не удалось извлечь иконку.`nОшибка " A_LastError "."
         return
      }
      SysGet, SmallIconSize, % SM_CXSMICON
      if (IconSize <= SmallIconSize)
         DllCall("DestroyIcon", Ptr, hIconLarge)
         , hIcon := hIconSmall
      else
         DllCall("DestroyIcon", Ptr, hIconSmall)
         , hIcon := hIconLarge
         
      hIcon := DllCall("CopyImage", Ptr, hIcon, UInt, IMAGE_ICON
         , Int, IconSize, Int, IconSize, UInt, LR_COPYRETURNORG|LR_COPYDELETEORG, Ptr)
   }
   
   Return hIcon
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

50

Re: AHK: Использование - GUI Control Types ActiveX

Так почему-то тоже, иконка в панели задач не изменяется.

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

51

Re: AHK: Использование - GUI Control Types ActiveX

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

hIcon := ExtractIcon("Shell32.dll", 77, 16)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

52

Re: AHK: Использование - GUI Control Types ActiveX

Проверь, правильно ли код скопирован

Проверил.

можно ещё попробовать другую иконку, например,

MsgBox

Указанный файл не найден!

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

53

Re: AHK: Использование - GUI Control Types ActiveX

Чудеса, у меня работает и на 32 и на 64-битной версии AHK.

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

54

Re: AHK: Использование - GUI Control Types ActiveX

Значит я что-то накосячил, отпишусь если найду свою ошибку.

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

55 (изменено: serzh82saratov, 2014-05-22 22:38:47)

Re: AHK: Использование - GUI Control Types ActiveX

Сделал себе такой Google переводчик:


#SingleInstance Force  
#NoEnv  
SetBatchLines -1
ListLines Off
OnExit, ExitApp
Menu, Tray, Icon, Shell32.dll, 239
Menu, Tray, NoStandard
Menu, Tray, Click, 1 
Menu, Tray, Add, Hide/Show, GuiClose
Menu, Tray, Add, ExitApp
Menu, Tray, Default, Hide/Show
URL = https://translate.google.ru/#auto/en/
TrayTip, GoogleTranslater, Запуск 
Gui +ReSize -DPIScale +HWNDhGui +Owner
Gui Add, ActiveX, w815 h436 voIE HWNDhoIE, Shell.Explorer   
oIE.Silent := 1, ComObjError(false)
  
Update:
    oIE.Navigate(URL), IEBusy(oIE)
    oIE.document.querySelector("#gt-appbar").style.display := "none"  
    oIE.document.querySelector("#ft-r").style.display := "none" 
    oIE.document.querySelector("#gt-ft-mkt").style.display := "none" 
    oIE.document.querySelector("#gb").style.display := "none"  
    oIE.document.querySelector("#gt-logo").style.display := "none"  
    
    oIE.document.querySelector("#gt-lang-left").style.display := "none"
    oIE.document.querySelector("#gt-lang-tgt").style.display := "none"  

    Gui Show, , GoogleTranslater
    TrayTip 
    GoSub Paste  
    PostMessage, 0x50,, 0x4190419,, ahk_id %hoIE% ; Russian 
    Return  

+f1::  
    Gui Show
    GoTo Paste 
    
#If WinActive("ahk_id " hGui)

Volume_Up::
^vk43:: Clipboard := oIE.document.selection.createRange().text 

Volume_Down::
^vk56::  oIE.document.selection.createRange().execCommand("Paste") 
 
Paste:
f1::   
    If Clipboard ~= "^http(.)*://"
    {
        Run http://translate.google.com/translate?act=url&depth=1&hl=ru&ie=UTF8&prev=_t&rurl=translate.google.ru&sl=auto&tl=ru&u=%Clipboard%
        Gui Hide
        Return
    }
    If (oIE.document.querySelector("#gt-logo").style.display != "none" || !InStr(oIE.document.Url, URL))
        GoTo Update 
    oIE.document.querySelector("#source").value := Clipboard
    Return
    
f2::
f5:: GoTo Update

#If
 
GuiSize: 
    If A_EventInfo = 1
        GoTo GuiClose 
    WinMove, ahk_id %hoIE%, , 0, 0, A_GuiWidth, A_GuiHeight 
    Return
    
GuiClose:
GuiEscape:   
    Gui, % DllCall("IsWindowVisible", "uint", hGui) ? "Hide" : "Show" 
    Return 

ExitApp: 
    oIE.Quit(), oIE := ""
    ExitApp
    
IEBusy(O)  {  
    While !(O.readyState=4 && O.document.readyState="complete" && !O.busy)
        Sleep, 50
} 

Почему тут при нажатии на аудио воспроизведение текста, нет звука?
При использовании сайта в IE, есть.

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

56

Re: AHK: Использование - GUI Control Types ActiveX

Все эти вопросы к AHK не имеют отношения, пиши в JavaScript .

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

57

Re: AHK: Использование - GUI Control Types ActiveX

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

Возможно позже попробую, но в этой ветке тоже были посвящённые.

Все эти вопросы к AHK не имеют отношения

Ну например вопрос со звуком, возможно именно использование ActiveX Shell.Explorer в AHK создаёт проблему, пока это неизвестно...

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

58

Re: AHK: Использование - GUI Control Types ActiveX

Я там вообще не вижу кнопки воспроизведения:

+ открыть спойлер

http://i.imgur.com/xiC6q4U.jpg

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

59

Re: AHK: Использование - GUI Control Types ActiveX

+ А у меня так

http://i.imgur.com/TumfzqL.png

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

60

Re: AHK: Использование - GUI Control Types ActiveX

Ну вот, значит нужно ещё выяснять, от чего это зависит.

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

61

Re: AHK: Использование - GUI Control Types ActiveX

И наверняка проблема имеет отношение к АНК .

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

62

Re: AHK: Использование - GUI Control Types ActiveX

Если только косвенное. В справке нигде не написано, что и как должно отображаться в окне IE. Это скорее в компетенции HTML и JavaScript.

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

63

Re: AHK: Использование - GUI Control Types ActiveX

Насколько я помню по экспериментам, АНК использует установленный на ПК IE?
Сейчас у меня IE 11.
Но видимо как-то не до конца, ведь в IE 11 у меня звук проигрывается. Возможно АНК надо "попросить ActiveX" использовать его на полную. Возможно сразу после создания контрола Shell.Explorer разрешить ему чем то пользоваться.

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

64 (изменено: Malcev, 2014-02-01 01:04:58)

Re: AHK: Использование - GUI Control Types ActiveX

Я там вообще не вижу кнопки воспроизведения

Проапдейть (установи) флеш-плеер.

65

Re: AHK: Использование - GUI Control Types ActiveX

Да ладно, я IE практически не пользуюсь, как браузером.

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

66

Re: AHK: Использование - GUI Control Types ActiveX

То же самое можно сказать про 99% пользователей пк, по крайней мере про тех, кто посещает подобные ресурсы.
Просто без IE не будут нормально работать множество программ (Кэп не дремлет  )

67

Re: AHK: Использование - GUI Control Types ActiveX

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

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

68

Re: AHK: Использование - GUI Control Types ActiveX

+ Офф


Есть у меня пару личных кабинетов (в банке и в игре), так вот не работали в опере. Поставил лису но и там не лучше. Желания ставить хромого и иже с ними уже пропало. В IE через АНК, запуск, авторизация (Повтор авторизации при неудаче. Есть проблема на определённом сайте с этим, и периодический отказ автозаполнения форм через другие браузёрЫ), вообщем красота. Но не суть.

Вопрос по использованию GUI Control Types ActiveX.
Можно ли воспринимать Internet Explorer Control в АНК как полноценный IE без GUI плюшек оного? Если нет, то чего не хватает?

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

69

Re: AHK: Использование - GUI Control Types ActiveX

Похоже не только IE, но и Проводник в одном флаконе.

70

Re: AHK: Использование - GUI Control Types ActiveX

Полагаю, как «WebBrowser Control».

71

Re: AHK: Использование - GUI Control Types ActiveX

Кстати поднимался тут и такой вопрос HTMLDocument или WebBrowser.

Полагаю, как «WebBrowser Control».

Спасибо, посмотрел тут, выводов пока не сделал.

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

72

Re: AHK: Использование - GUI Control Types ActiveX

Спасибо, посмотрел тут, выводов пока не сделал.

Это не COM, это уже .Net. Правильную ссылку — WebBrowser Objectприводил выше wisgest.

73

Re: AHK: Использование - GUI Control Types ActiveX

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

Это не COM, это уже .Net.

Вот тут увы дела мои совсем плохи. Если COM я ещё немного понимаю, то .Net для меня вообще загадка, что это?

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

74

Re: AHK: Использование - GUI Control Types ActiveX

Wb.document.all[777].click()
Wb.document.all(777).click()
Wb.document.all.item(777).click()

Зато у всех элементов есть порядковый номер в коллекции all и других коллекциях объектов документа. Можно указать его в круглых или квадратных скобках.

А как можно узнать этот порядковый номер, может через какой то браузер?

Как сказал мой дед - Я твой дед

75

Re: AHK: Использование - GUI Control Types ActiveX

Присоединяюсь к вопросу.

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

76 (изменено: bWRmeA, 2014-03-13 21:21:02)

Re: AHK: Использование - GUI Control Types ActiveX

iWB2 Learner (iWebBrowser2) на самом деле гугла и яндекса не существует.

77

Re: AHK: Использование - GUI Control Types ActiveX

Она не показывает порядковый номер.

Как сказал мой дед - Я твой дед

78 (изменено: sergeiplugatyr, 2014-03-14 23:30:41)

Re: AHK: Использование - GUI Control Types ActiveX

Вот такой я написал код для получения порядкового номера элемента(так же Class и ID элемента):

elements := com.document.body.all
Loop % elements.length
{
MsgBox, % "Порядковый номер: " elements[A_Index-1].sourceIndex "`n" "Элемент: "elements[A_Index-1].InnerText "`n" "Его класс: " elements[A_Index-1].ClassName "`n" "Его ID: " elements[A_Index-1].ID
}
Как сказал мой дед - Я твой дед

79

Re: AHK: Использование - GUI Control Types ActiveX

Установил событие onclick для кнопки "Поиск в Google", работает.
Кто может подсказать почему несрабатывает событие onload для body?


oIE := ComObjCreate("InternetExplorer.Application") 
oIE.visible := True, oIEHWND := oIE.HWND  
WinActivate ahk_id %oIEHWND%  
WinMaximize ahk_id %oIEHWND%  

Input:
    oIE.navigate("www.google.com")     
    ReadyState(oIE), oDoc := oIE.document
    ComObjConnect(but_ := oDoc.getElementById("gbqfba"), "but_") 
    ComObjConnect(body_ := oDoc.body, "body_") 
    Return
 
body_onload(o) {  
    ToolTip body_onload
}      

but_onclick(o) {  
    ToolTip but_onclick
}     

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

80 (изменено: serzh82saratov, 2014-04-26 14:53:37)

Re: AHK: Использование - GUI Control Types ActiveX

wisgest пишет:

В примере совмесместно обрабатываются события btn1.onclick, p1.ondblclick, p1.onmouseout (возможно, есть лучшие решения):

Придумал такой способ обработки событий от всех элементов:


Gui, Color, 696969
OnExit HTMLGuiClose
Gui -DPIScale 
Gui Add, ActiveX, w333 h333 vIE, HTMLFile
Gui show

html =
( 
<body id='body'>
    <p id='text'>Обрабатываются события двойного 
    щелчка, выхода указателя мыши за пределы элементов,
    щелчков мыши.</p>
    <button id='button'>Кнопка</button>  
    <p><textarea rows=3 id='textarea'>А также нажатия кнопок и наведения на элементы</textarea></p>
</body> 
)
global IE 
IE.body.innerHTML := html, ComObjConnect(IE, eventsclass)
return

class eventsclass  { 
    onmouseout()  { 
        ToolTip % "onmouseout`n" IE.parentWindow.event.srcElement.id,1,1,2
    }
    onmouseover()  {  
        ToolTip % "onmouseover`n" IE.parentWindow.event.srcElement.id,111,1,3
    }
    ondblclick()  {
        ToolTip % "ondblclick`n" IE.parentWindow.event.srcElement.id
    }
    onclick()  {
        ToolTip % "onclick`n" IE.parentWindow.event.srcElement.id
    } 
    onkeypress()  {  
        ToolTip % "onkeypress`n" IE.parentWindow.event.srcElement.id
    }
}

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

81

Re: AHK: Использование - GUI Control Types ActiveX

Но вот как таким образом отлавливливать эти события:



    onfocus()  { 
        MsgBox % "onfocus`n" IE.parentWindow.event.srcElement.id 
    }
    onblur()  { 
        MsgBox % "onblur`n" IE.parentWindow.event.srcElement.id 
    }

Загадка.

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

82 (изменено: sergeiplugatyr, 2014-07-26 15:01:24)

Re: AHK: Использование - GUI Control Types ActiveX

Если никто не против, выложу пример клика по элементу, ищет по тексту:

IE := ComObjCreate("InternetExplorer.Application")
IE.Visible := true
IE.Navigate("site.ru")
while IE.busy || IE.readystate <> 4
    continue
str = Зарегистрироваться
Loop % ie.document.all.length {
    itm:=ie.document.all.item[A_Index-1]
    If InStr(itm.innertext, str) {
                itm.click()
            }    
}
Как сказал мой дед - Я твой дед

83

Re: AHK: Использование - GUI Control Types ActiveX

В общем возникла такая проблема,есть сайт.
На сайте есть поле для ввода данных(авторизация) и кнопка регистрации.
Если начать регистрироваться то появится дополнительно окно и уже там надо указать свои данные.
Всё-бы нечего если бы не маленькая проблема:
Когда ввожу пароль

ie.document.getElementById("password").value := "test"

Он вводится не в то окно которое мне надо а в поля для авторизации.
С помощью iWB2 Learner узнал у этих элементов одинаковое Имя(password) но у первого(то которое мне не надо)в обще нет ID'a.
Пробывал так

ie.document.getElementsByName("password").value := "test"

или

ie.document.all.password.value := "test"

Выдаёт ошибку на

value

Притом что у другого человека всё нормально,работает как надо.
У меня:
Версия IE:8
Windows XP 32'bit

84

Re: AHK: Использование - GUI Control Types ActiveX

Что никто не знает как решить проблему?

85 (изменено: serzh82saratov, 2014-10-18 17:19:30)

Re: AHK: Использование - GUI Control Types ActiveX

Пример взят отсюда - http://msdn.microsoft.com/en-us/library … s.85).aspx. Вылезает ошибка.
Собственно, кто знает как в HTMLFile выделить нужный фрагмент текста, как будто он выделен пользователем?


html = 
(   
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" /> <!--Force IE9 mode -->
<title>Example of setSelectionRange()</title>
    <script type="text/javascript">
        function SelectSomeText () {
            var input = document.getElementById ("Textbox");
                input.setSelectionRange (4,13);          
        }
    </script>
</head>
<body>
    <p><input type="text" id="Textbox" size="40" value="The text selection appears here"/></p>
    <p><button onclick="SelectSomeText ()">See selection</button></p>
    
</body>
</html> 
)   
  
Gui, -DPIScale +ReSize 
Gui, Margin, 0, 0 
Gui, Add, ActiveX, w450 h350 vDoc, HTMLFile     
Gui, Show 
Doc.body.innerHTML := html
return  
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

86

Re: AHK: Использование - GUI Control Types ActiveX

Doc.write(html)

вместо

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

87

Re: AHK: Использование - GUI Control Types ActiveX

И так тоже пробовал.
http://savepic.net/6106855.png

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

88

Re: AHK: Использование - GUI Control Types ActiveX

Версия IE какая?

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

89

Re: AHK: Использование - GUI Control Types ActiveX

Версия: 11.0.9600.16428

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

90

Re: AHK: Использование - GUI Control Types ActiveX

Должно работать. Ну, можно ещё фокус установить и клавиши посылать.

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

91

Re: AHK: Использование - GUI Control Types ActiveX

Ну, можно ещё фокус установить и клавиши посылать

Ну это совсем - лютое волшебство.

Должно работать.

То есть Ты у себя проверил, и всё работает?

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

92

Re: AHK: Использование - GUI Control Types ActiveX

Да, у меня работает на Win7 IE 11.

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

93

Re: AHK: Использование - GUI Control Types ActiveX

Вообщем с этими html-ями, дело тёмное.

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

94

Re: AHK: Использование - GUI Control Types ActiveX

Попробуй запустить на 64-битной версии AHK.

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

95

Re: AHK: Использование - GUI Control Types ActiveX

Тоже самое.

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

96

Re: AHK: Использование - GUI Control Types ActiveX

Ещё так можно:

Gui Add, ActiveX, w450 h350 vWB, Shell.Explorer
WB.Navigate("about:blank")
WB.document.write(html)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

97

Re: AHK: Использование - GUI Control Types ActiveX

Тоже самое.

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

98

Re: AHK: Использование - GUI Control Types ActiveX

Ещё так:

html = 
(   
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" /> <!--Force IE9 mode -->
<title>Example of setSelectionRange()</title>
    <script type="text/javascript">
        function SelectSomeText () {
            var input = document.getElementById ("Textbox");
            var range = input.createTextRange(); 
            range.collapse(true);
            range.moveEnd('character', 13);
            range.moveStart('character', 4);
            range.select();            
        }
    </script>
</head>
<body>
    <p><input type="text" id="Textbox" size="40" value="The text selection appears here"/></p>
    <p><button onclick="SelectSomeText ()">See selection</button></p>
    
</body>
</html> 
)   
  
Gui, -DPIScale +ReSize 
Gui, Margin, 0, 0 
Gui, Add, ActiveX, w450 h350 vDoc, HTMLFile     
Gui, Show 
Doc.write(html)
return  
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

99

Re: AHK: Использование - GUI Control Types ActiveX

О, а вот это работает!

Но вот если текст надо выделить в span-е, то снова таже ошибка.

<body> 
    <p><button onclick="SelectSomeText ()">See selection</button></p>
    <span id="Textbox">The text selection appears here</span> 
</body>
+ открыть спойлер
html = 
(   
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9" /> <!--Force IE9 mode -->
<title>Example of setSelectionRange()</title>
    <script type="text/javascript">
        function SelectSomeText () {
            var input = document.getElementById ("Textbox");
            var range = input.createTextRange(); 
            range.collapse(true);
            range.moveEnd('character', 13);
            range.moveStart('character', 4);
            range.select();            
        }
    </script>
</head>
<body> 
    <p><button onclick="SelectSomeText ()">See selection</button></p>
    <span id="Textbox">The text selection appears here</span> 
</body>
</html> 
)   
  
Gui, -DPIScale +ReSize 
Gui, Margin, 0, 0 
Gui, Add, ActiveX, w450 h350 vDoc, HTMLFile     
Gui, Show 
Doc.write(html)
return  
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

100

Re: AHK: Использование - GUI Control Types ActiveX

Ну да, он не поддерживает ни то, ни другое. Тут нужно у знатоков html спрашивать.

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