<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Парсинг веб ссылок]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13268&amp;type=atom" />
	<updated>2017-12-09T01:37:58Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=13268</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Парсинг веб ссылок]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=122087#p122087" />
			<content type="html"><![CDATA[<p>Автор: <strong>serzh82saratov</strong><br />Зашарю может кому пригодится в таких же поисках.</p><p><strong>Url parser</strong><br /></p><div class="codebox"><pre><code>
URLLogin = https://example.com/?a=login

Login = 
Pass = 

Debug = 		            ;	указать имя секции для обработки ошибок, иначе должно быть пусто
CountProc = 4				;	кол-во браузеров
MinRange = 1				;	от
MaxRange = 55				;	до

Add = 0  					;	Add = 1 то прибавлять, если 0 то отнимать
ErrorTime := 30000			;	Период в мс с момента последнего сообщения от скрипта, через который он считается нерабочим
CheckTime := 2000			;	Период в мс обновления инфо
	

#SingleInstance Force
#NoEnv
SetBatchLines -1
ListLines Off
DetectHiddenWindows, On
SetWorkingDir, %A_ScriptDir%
ThisPID := DllCall(&quot;GetCurrentProcessId&quot;)

Menu, Tray, UseErrorLevel 
Menu, Tray, Click, 1
Menu, Tray, NoStandard
Menu, Tray, Add, Min/Max, MinMax
Menu, Tray, Default, Min/Max
Menu, Tray, Disable, Min/Max
Try Menu, Tray, Icon, Shell32.dll, 239
Menu, Tray, Add, ExitApp

Global oIE, CurrentURL, ThisPID, oAll := [], oCLV, HLV, IniSection, IEMode, StartTime
, ErrorCount := 0, ErrorRest := 0, CountLink := 0, CheckTime, ErrorTime, FullComplete


OnExit, ExitApp 
Gui, IE:+ReSize -DPIScale +HWNDhGui 
Gui, IE:Add, Edit, w830 r1 vURLGui
Gui, IE:Add, Button, x+6 yp w44 gButtonGo, Go
Gui, IE:Add, ActiveX, xm w880 h640 voIE HWNDhoIE, Shell.Explorer 

oIE.Silent := 1, IEMode := 1
ComObjError(false)
ComObjConnect(oIE, WB_events) 
Gui, IE:Show

oIE.Navigate(CurrentURL := URLLogin)
IEBusy()
MsgBox, 4160, Url parser, Ввести логин

oIE.document.querySelector(&quot;#username&quot;).value := Login
oIE.document.querySelector(&quot;#password&quot;).value := Pass
oIE.document.querySelector(&quot;input[class=&#039;home-btn form-submit&#039;]&quot;).click()
Sleep 444
IEBusy()

MsgBox, 4132, Url parser, Начать работу?
IfMsgBox No
	GoTo ExitApp2 
IEMode := 0
oIE.Stop(), oIE.Close(), oIE.Quit()
oIE := &quot;&quot;, DllCall(&quot;DestroyWindow&quot;, &quot;Ptr&quot;, hoIE)
Gui, IE:Destroy

Gui, -DPIScale +HWNDhGui
Gui, Add, Text, xm ym w630 r1 vTextInfo cBlue
Gui, Add, Text, wp y+20 r1 vTextProgress cGreen
									  ;	 1       2        3          4        5        6
Gui, Add, ListView, r20 wp hwndHLV Grid, №  |Диапазон|Количество|Выполнено|Осталось|Прогресс| |
Gui, Font, s12
Gui, Add, Text, Border xp y+10 vButtonView gButtonView, % &quot; Показать окно &quot;
Gui, Add, Text, Border x+30 gManualCheck vManualCheck, % &quot; Проверить &quot;
Gui, Add, Text, Border x+60 gCloseScript vCloseScript, % &quot; Закрыть &quot;
Gui, Show, , Url parser

oCLV := New LV_Colors(HLV)
StartTime := A_TickCount
FormatTime, IniSection, , yyyy_MM_dd_HH_mm_ss 
FormatTime, StrTime, , HH:mm:ss  d - MMMM

If Debug
{
	IniRead, str, Log.ini, %Debug%, All
	Add := StrSplit(str, &quot;|&quot;)[3]
	IniRead, Section, Log.ini, %Debug%
	IniWrite(&quot;Debug|Debug|&quot; Add &quot;|Debug|&quot; Debug, &quot;All&quot;)
	CountProc := 0
	Loop, Parse, Section, `n
	{
		If A_Index = 1
			Continue
		Index := A_Index - 1, Field := A_LoopField, ++CountProc
		Gui, Add, Edit, Hidden +ReadOnly w0 h0 HwndhControl, 0|%A_TickCount%   ;	gEvent   Hidden w0 h0   w111, 0
		Min := StrSplit(Field, &quot;|&quot;)[2]
		Max := StrSplit(Field, &quot;|&quot;)[3]
		Cmp := StrSplit(Field, &quot;=&quot;)[2]
		If Add
			Min := Min + Cmp  
		Else
			Max := Max - Cmp 
		Count := Max - Min + 1
		CountLink += Count
		LV_Add(Index, Index, Min &quot; - &quot; Max, Count, 0, Count, &quot;0`%&quot;)
		Run, &quot;Url parser child.ahk&quot; &quot;%Index%&quot; &quot;%Min%&quot; &quot;%Max%&quot; &quot;%Add%&quot; &quot;%ThisPID%&quot; &quot;%hControl%&quot;, , Hide, PID
		
		oAll[Index] := {PID:PID,Index:Index,Min:Min,Max:Max,Time:A_TickCount
		,Count:Count,Item:0,hControl:hControl,IniKey:Index &quot;|&quot; Min &quot;|&quot; Max &quot;|&quot;}
		IniWrite(0, oAll[Index].IniKey)
		WinWait, % &quot;ahk_pid &quot; PID, , 5
		Sleep 111
		; MsgBox, 4160, Url parser,  % Field &quot;`n&quot; Min &quot;`n&quot; Max &quot;`n&quot; Cmp &quot;`n&quot; Count
	}
	GuiControl, , TextInfo, % &quot;Запущено в: &quot; StrTime &quot;    \\    DEBUG MODE!!!&quot; 
		. &quot;    \\    Запущено в &quot; CountProc &quot; скриптах.    \\    &quot;  (Add ? &quot;Плюсовать&quot; : &quot;Минусовать&quot;)
		
	GuiControl, , TextProgress, % &quot;Всего адресов: &quot; CountLink &quot;    \\    Выполнено: &quot; 0
		. &quot;    \\    Прогресс: &quot; 0 &quot;`%    \\    Всего ошибок: &quot; 0
}
Else
{
	CountLink := MaxRange - MinRange + 1
	step := CountLink // CountProc
	rest := CountLink - (step * CountProc)
	prevmax := MinRange
	
	GuiControl, , TextInfo, % &quot;Запущено в: &quot; StrTime &quot;    \\    Диапазон: &quot; MinRange &quot; - &quot; MaxRange 
		. &quot;    \\    Запущено в &quot; CountProc &quot; скриптах.    \\    &quot;  (Add ? &quot;Плюсовать&quot; : &quot;Минусовать&quot;)
		
	GuiControl, , TextProgress, % &quot;Всего адресов: &quot; CountLink &quot;    \\    Выполнено: &quot; 0
		. &quot;    \\    Прогресс: &quot; 0 &quot;`%    \\    Всего ошибок: &quot; 0
	 ;          1             2         3          4             5
	IniWrite(MinRange &quot;|&quot; MaxRange &quot;|&quot; Add &quot;|&quot; CountLink &quot;|&quot; CountProc, &quot;All&quot;)
	
	Loop % CountProc
	{ 
		Gui, Add, Edit, Hidden +ReadOnly w0 h0 HwndhControl, 0|%A_TickCount%   ;	gEvent   Hidden w0 h0   w111, 0
		Min := prevmax
		Max := prevmax + step + (!!rest) - 1
		prevmax := Max + 1
		(rest &amp;&amp; (--rest))  
		Count := Max - Min + 1
		LV_Add(A_Index, A_Index, Min &quot; - &quot; Max, Count, 0, Count, &quot;0`%&quot;)
		Run, &quot;Url parser child.ahk&quot; &quot;%A_Index%&quot; &quot;%Min%&quot; &quot;%Max%&quot; &quot;%Add%&quot; &quot;%ThisPID%&quot; &quot;%hControl%&quot;, , Hide, PID
		oAll[A_Index] := {PID:PID,Index:A_Index,Min:Min,Max:Max,Time:A_TickCount
		,Count:Count,Item:0,hControl:hControl,IniKey:A_Index &quot;|&quot; Min &quot;|&quot; Max &quot;|&quot;}
		IniWrite(0, oAll[A_Index].IniKey)
		WinWait, % &quot;ahk_pid &quot; PID, , 5
		Sleep 111
	}
}
Loop % LV_GetCount(&quot;Col&quot;)
	LV_ModifyCol(A_Index, &quot;AutoHdr&quot;)
SetTimer, Check, -500
Return

^+Delete::
	MsgBox, 4404, Url parser, Точно закрыть все скрипты?
	IfMsgBox No
		Return
	CloseAllChild()
	Return

ManualCheck:
	SetTimer, Check, -1
	GuiControl, +Redraw, %HLV%
	Return

Check() {
	GuiControl, Disable, ManualCheck
	
	For Index, arr in oAll.Clone() {
		If (arr.Complete || arr.Error)
			Continue
		GuiControlGet, Text, , % arr.hControl
		oP := StrSplit(Text, &quot;|&quot;) 
		for k, v in [&quot;Item&quot;,&quot;Time&quot;]
			%v% := oP[k]
		If (Item + 0 = &quot;&quot;) &amp;&amp; !oAll[Index].Item
			oAll[Index].Item := (Item := 0)
		Else If (Item + 0 = &quot;&quot;)
			Item := oAll[Index].Item
		If (Time + 0 != &quot;&quot;)
			arr.Time := Time
		Else
			Time := arr.Time
		If (Item = arr.Count) {
			oCLV.Row(Index, 0x34CC06, 0xFFFFFF)  
			oAll[Index].Complete := 1
			IniDelete(arr.IniKey)
		}
		Else If !WinExist(&quot;ahk_pid &quot; arr.PID) || ((A_TickCount - Time) &gt; ErrorTime) {   
			++ErrorCount, ErrorRest += arr.Count - Item
			oCLV.Row(Index, 0xEA5E2C, 0xFFFFFF)
			oAll[Index].Error := 1
			Process, Close, % arr.PID
		}
		If LV__ModifyCell(Index, 4, Item) &amp;&amp; !oAll[Index].Complete
			IniWrite(Item, arr.IniKey)
		LV__ModifyCell(Index, 5, arr.Count - Item)
		LV__ModifyCell(Index, 6, Percent(arr.Count, Item) &quot;`%&quot;)
	}
	Loop % LV_GetCount() + (AllLinkCheck := 0)
	{
		LV_GetText(Text, A_Index, 4)
		AllLinkCheck += Text
	}
	GuiControl, +Redraw, %HLV%
	SetTimer, Redraw, -333
	GuiControl, , TextProgress, % &quot;Всего адресов: &quot; CountLink &quot;    \\    Выполнено: &quot; AllLinkCheck
		. &quot;    \\    Прогресс: &quot; Percent(CountLink, AllLinkCheck) &quot;`%    \\    Всего ошибок: &quot; ErrorCount &quot;    \\    Невыполнено: &quot; ErrorRest
	GuiControl, Enable, ManualCheck
	
	If ((AllLinkCheck + ErrorRest) = CountLink) &amp;&amp; (FullComplete := 1) 
		MsgBox, 4160, Url parser,  % &quot;Работа завершена!&quot; (ErrorCount ? &quot;`n`nЕсть ошибки!!!&quot; : &quot;&quot;) &quot;`n`nВыполнено за: &quot; FormatTime(A_TickCount - StartTime) 
	Else
		SetTimer, Check, -%CheckTime%
}

Redraw:
	DllCall(&quot;RedrawWindow&quot;, &quot;Ptr&quot;, HLV, &quot;Uint&quot;, 0, &quot;Uint&quot;, 0, &quot;Uint&quot;, 0x1|0x4)
	Return
	
Event(CtrlHwnd) {
 	; GuiControlGet, Text,, %CtrlHwnd%
	Return 1
}

LV__ModifyCell(Row, Col, Text) {
	LV_GetText(GetText, Row, Col)
	If (GetText != Text)
		LV_ModifyCell(Row, Col, Text), bool := 1
	Return bool
}

Percent(whole, part) {
	Return Round(100 / (whole / part), 1)
}

ButtonView() {
	Loop % LV_GetCount(&quot;S&quot;) + (sRow := 0)
	{
		sRow := LV_GetNext(sRow)
		LV_GetText(Text, sRow, 1)
		WinShow, % &quot;AHK_pid&quot; oAll[Text].PID &quot; ahk_class AutoHotkeyGUI&quot;
	}
}

CloseScript() {
	MsgBox, 4404, Url parser, Точно закрыть все выделенные скрипты?
	IfMsgBox No
		Return
	Loop % LV_GetCount(&quot;S&quot;) + (sRow := 0)
	{
		sRow := LV_GetNext(sRow)
		LV_GetText(Text, sRow, 1)
		Process, Close, % oAll[Text].PID
	}
}

CloseAllChild() {
	Query := &quot;SELECT * FROM Win32_Process WHERE Caption = &#039;AutoHotkey.exe&#039; AND ProcessId != &quot; DllCall(&quot;GetCurrentProcessId&quot;)
	For Proc In ComObjGet(&quot;winmgmts:&quot;).ExecQuery(Query)
	{ 
		RegExMatch(Proc.CommandLine, &quot;Si).*&quot;&quot;(?&lt;Name&gt;.*)\.ahk&quot;&quot;&quot;, _) 
		If _Name = %A_ScriptDir%\Url parser child
			Proc.Terminate()
	}
}

IniRead(Key, Error := &quot; &quot;) {
	IniRead, Value, Log.ini, %IniSection%, %Key%, %Error%
	Return Value
}

IniWrite(Value, Key) {
	IniWrite, %Value%, Log.ini, %IniSection%, %Key%
	Return Value
}

IniDelete(Key) {
	IniDelete, Log.ini, %IniSection%, %Key%
	Return Value
}

FormatTime(Time) {
	Local Rest, Hours, Min, Sec, MSec
	If Time &lt; 0
		Return &quot;00:00:00&quot;
	Rest := Mod(Time, 3600000)
	Hours := Format(&quot;{:02d}&quot;, Time // 3600000)
	Min := Format(&quot;{:02d}&quot;, Rest // 60000)
	Sec := Format(&quot;{:02d}&quot;, Mod(Rest, 60000) // 1000)
	; MSec := Format(&quot;{:03d}&quot;, Mod(Rest, 1000))
	Return Hours &quot;:&quot; Min &quot;:&quot; Sec
}


IEGuiSize:
	If A_EventInfo = 1
		GoTo GuiClose
	If IEMode
		WinMove, ahk_id %hoIE%, , 0, 30, A_GuiWidth, A_GuiHeight-31
	Return
	
MinMax:
	Gui, % (IEMode ? &quot;IE:&quot; : &quot;&quot;) &quot;Show&quot;, % !DllCall(&quot;IsWindowVisible&quot;, &quot;Ptr&quot;, hGui) ? &quot;&quot; : &quot;Hide&quot;
	Return

ButtonGo:
	Gui, IE:Submit, NoHide
	oIE.Navigate(URLGui)
	Return

GuiClose:
GuiEscape: 
	Gui, % (IEMode ? &quot;IE:&quot; : &quot;&quot;) &quot;Hide&quot;
	Return
	
ExitApp: 
	MsgBox, 4404, Url parser, Точно закрыть?
	IfMsgBox No
		Return
ExitApp2:
	Try oIE.Quit(), oIE := &quot;&quot;
	OnExit
	Gui, IE:Destroy
	Gui, Destroy
	CloseAllChild()
	ExitApp

IEBusy()  {
	While !(oIE.readyState=4 &amp;&amp; oIE.document.readyState=&quot;complete&quot; &amp;&amp; !oIE.busy)
		Sleep, 50
}

class WB_events
{
    NavigateComplete2(IE, NewURL)
    {
        GuiControl, IE:, URLGui, % oIE.LocationURL  ; Update the URL edit control.
        ; GuiControl,, URLGui, % NewURL  ; Update the URL edit control.
    }
    BeforeNavigate2(pDsip, url, flags, TargetFrameName, PostData, headers, cancel)
    {
		; If (CurrentURL != url)
			; cancel[] := true ; NumPut(-1, ComObjValue(cancel), &quot;Short&quot;)
    }
}

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

IESoundsOff() {
	Static Key := &quot;Software\Microsoft\Internet Explorer\Main&quot;, _ := IESoundsOff() 
	RegRead, Value, HKCU, %Key%, Play_Background_Sounds
	If Value != no
		RegWrite, REG_SZ, HKCU, %Key%, Play_Background_Sounds, no  ;	no || yes
}

#If IEMode &amp;&amp; WinActive(&quot;ahk_id &quot; hGui)

^vk43:: oIE.document.selection.createRange().execCommand(&quot;COPY&quot;)    ; Ctrl + C 
  
^vk56:: oIE.document.selection.createRange().execCommand(&quot;PASTE&quot;)    ; Ctrl + V

Enter:: rng := oIE.document.selection.createRange(), rng.text := &quot;`n&quot;, rng.select()

Del::   rng := oIE.document.selection.createRange()
	  , (rng.text = &quot;&quot; &amp;&amp; rng.moveEnd(&quot;character&quot;, 1))
	  ,  rng.execCommand(&quot;DELETE&quot;)
^vk41:: oIE.document.execCommand(&quot;SELECTALL&quot;)   ; Ctrl + A
^vk58:: oIE.document.selection.createRange().execCommand(&quot;CUT&quot;)      ; Ctrl + X
^vk59:: oIE.document.execCommand(&quot;REDO&quot;)        ; Ctrl + Y
^vk5A:: oIE.document.execCommand(&quot;UNDO&quot;)        ; Ctrl + Z

F5:: oIE.document.execCommand(&quot;Refresh&quot;)

#If

LV_ModifyCell(Row, Col, Text) {
	If (Row &gt; LV_GetCount())
		LV_Insert(Row, &quot;Col&quot; Col, Text)
	Else
		LV_Modify(Row, &quot;Col&quot; Col, Text)
}  

; ======================================================================================================================
; Namespace:      LV_Colors
; Function:       Individual row and cell coloring for AHK ListView controls.
; Tested with:    AHK 1.1.23.05 (A32/U32/U64)
; Tested on:      Win 10 (x64)
; Changelog:
;     1.1.04.01/2016-05-03/just me - added change to remove the focus rectangle from focused rows
;     1.1.04.00/2016-05-03/just me - added SelectionColors method
;     1.1.03.00/2015-04-11/just me - bugfix for StaticMode
;     1.1.02.00/2015-04-07/just me - bugfixes for StaticMode, NoSort, and NoSizing
;     1.1.01.00/2015-03-31/just me - removed option OnMessage from __New(), restructured code
;     1.1.00.00/2015-03-27/just me - added AlternateRows and AlternateCols, revised code.
;     1.0.00.00/2015-03-23/just me - new version using new AHK 1.1.20+ features
;     0.5.00.00/2014-08-13/just me - changed &#039;static mode&#039; handling
;     0.4.01.00/2013-12-30/just me - minor bug fix
;     0.4.00.00/2013-12-30/just me - added static mode
;     0.3.00.00/2013-06-15/just me - added &quot;Critical, 100&quot; to avoid drawing issues
;     0.2.00.00/2013-01-12/just me - bugfixes and minor changes
;     0.1.00.00/2012-10-27/just me - initial release
; ======================================================================================================================
; CLASS LV_Colors
;
; The class provides six public methods to set individual colors for rows and/or cells, to clear all colors, to
; prevent/allow sorting and rezising of columns dynamically, and to deactivate/activate the message handler for
; WM_NOTIFY messages (see below).
;
; The message handler for WM_NOTIFY messages will be activated for the specified ListView whenever a new instance is
; created. If you want to temporarily disable coloring call MyInstance.OnMessage(False). This must be done also before
; you try to destroy the instance. To enable it again, call MyInstance.OnMessage().
;
; To avoid the loss of Gui events and messages the message handler might need to be set &#039;critical&#039;. This can be
; achieved by setting the instance property &#039;Critical&#039; ti the required value (e.g. MyInstance.Critical := 100).
; New instances default to &#039;Critical, Off&#039;. Though sometimes needed, ListViews or the whole Gui may become
; unresponsive under certain circumstances if Critical is set and the ListView has a g-label.
; ======================================================================================================================
Class LV_Colors {
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; META FUNCTIONS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; ===================================================================================================================
   ; __New()         Create a new LV_Colors instance for the given ListView
   ; Parameters:     HWND        -  ListView&#039;s HWND.
   ;                 Optional ------------------------------------------------------------------------------------------
   ;                 StaticMode  -  Static color assignment, i.e. the colors will be assigned permanently to the row
   ;                                contents rather than to the row number.
   ;                                Values:  True/False
   ;                                Default: False
   ;                 NoSort      -  Prevent sorting by click on a header item.
   ;                                Values:  True/False
   ;                                Default: True
   ;                 NoSizing    -  Prevent resizing of columns.
   ;                                Values:  True/False
   ;                                Default: True
   ; ===================================================================================================================
   __New(HWND, StaticMode := False, NoSort := True, NoSizing := True) {
      If (This.Base.Base.__Class) ; do not instantiate instances
         Return False
      If This.Attached[HWND] ; HWND is already attached
         Return False
      If !DllCall(&quot;IsWindow&quot;, &quot;Ptr&quot;, HWND) ; invalid HWND
         Return False
      VarSetCapacity(Class, 512, 0)
      DllCall(&quot;GetClassName&quot;, &quot;Ptr&quot;, HWND, &quot;Str&quot;, Class, &quot;Int&quot;, 256)
      If (Class &lt;&gt; &quot;SysListView32&quot;) ; HWND doesn&#039;t belong to a ListView
         Return False
      ; ----------------------------------------------------------------------------------------------------------------
      ; Set LVS_EX_DOUBLEBUFFER (0x010000) style to avoid drawing issues.
      SendMessage, 0x1036, 0x010000, 0x010000, , % &quot;ahk_id &quot; . HWND ; LVM_SETEXTENDEDLISTVIEWSTYLE
      ; Get the default colors
      SendMessage, 0x1025, 0, 0, , % &quot;ahk_id &quot; . HWND ; LVM_GETTEXTBKCOLOR
      This.BkClr := ErrorLevel
      SendMessage, 0x1023, 0, 0, , % &quot;ahk_id &quot; . HWND ; LVM_GETTEXTCOLOR
      This.TxClr := ErrorLevel
      ; Get the header control
      SendMessage, 0x101F, 0, 0, , % &quot;ahk_id &quot; . HWND ; LVM_GETHEADER
      This.Header := ErrorLevel
      ; Set other properties
      This.HWND := HWND
      This.IsStatic := !!StaticMode
      This.AltCols := False
      This.AltRows := False
      This.NoSort(!!NoSort)
      This.NoSizing(!!NoSizing)
      This.OnMessage()
      This.Critical := &quot;Off&quot;
      This.Attached[HWND] := True
   }
   ; ===================================================================================================================
   __Delete() {
      This.Attached.Remove(HWND, &quot;&quot;)
      This.OnMessage(False)
      WinSet, Redraw, , % &quot;ahk_id &quot; . This.HWND
   }
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; PUBLIC METHODS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; ===================================================================================================================
   ; Clear()         Clears all row and cell colors.
   ; Parameters:     AltRows     -  Reset alternate row coloring (True / False)
   ;                                Default: False
   ;                 AltCols     -  Reset alternate column coloring (True / False)
   ;                                Default: False
   ; Return Value:   Always True.
   ; ===================================================================================================================
   Clear(AltRows := False, AltCols := False) {
      If (AltCols)
         This.AltCols := False
      If (AltRows)
         This.AltRows := False
      This.Remove(&quot;Rows&quot;)
      This.Remove(&quot;Cells&quot;)
      Return True
   }
   ; ===================================================================================================================
   ; AlternateRows() Sets background and/or text color for even row numbers.
   ; Parameters:     BkColor     -  Background color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; default background color
   ;                 TxColor     -  Text color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; default text color
   ; Return Value:   True on success, otherwise false.
   ; ===================================================================================================================
   AlternateRows(BkColor := &quot;&quot;, TxColor := &quot;&quot;) {
      If !(This.HWND)
         Return False
      This.AltRows := False
      If (BkColor = &quot;&quot;) &amp;&amp; (TxColor = &quot;&quot;)
         Return True
      BkBGR := This.BGR(BkColor)
      TxBGR := This.BGR(TxColor)
      If (BkBGR = &quot;&quot;) &amp;&amp; (TxBGR = &quot;&quot;)
         Return False
      This[&quot;ARB&quot;] := (BkBGR &lt;&gt; &quot;&quot;) ? BkBGR : This.BkClr
      This[&quot;ART&quot;] := (TxBGR &lt;&gt; &quot;&quot;) ? TxBGR : This.TxClr
      This.AltRows := True
      Return True
   }
   ; ===================================================================================================================
   ; AlternateCols() Sets background and/or text color for even column numbers.
   ; Parameters:     BkColor     -  Background color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; default background color
   ;                 TxColor     -  Text color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; default text color
   ; Return Value:   True on success, otherwise false.
   ; ===================================================================================================================
   AlternateCols(BkColor := &quot;&quot;, TxColor := &quot;&quot;) {
      If !(This.HWND)
         Return False
      This.AltCols := False
      If (BkColor = &quot;&quot;) &amp;&amp; (TxColor = &quot;&quot;)
         Return True
      BkBGR := This.BGR(BkColor)
      TxBGR := This.BGR(TxColor)
      If (BkBGR = &quot;&quot;) &amp;&amp; (TxBGR = &quot;&quot;)
         Return False
      This[&quot;ACB&quot;] := (BkBGR &lt;&gt; &quot;&quot;) ? BkBGR : This.BkClr
      This[&quot;ACT&quot;] := (TxBGR &lt;&gt; &quot;&quot;) ? TxBGR : This.TxClr
      This.AltCols := True
      Return True
   }
   ; ===================================================================================================================
   ; SelectionColors() Sets background and/or text color for selected rows.
   ; Parameters:     BkColor     -  Background color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; default selected background color
   ;                 TxColor     -  Text color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; default selected text color
   ; Return Value:   True on success, otherwise false.
   ; ===================================================================================================================
   SelectionColors(BkColor := &quot;&quot;, TxColor := &quot;&quot;) {
      If !(This.HWND)
         Return False
      This.SelColors := False
      If (BkColor = &quot;&quot;) &amp;&amp; (TxColor = &quot;&quot;)
         Return True
      BkBGR := This.BGR(BkColor)
      TxBGR := This.BGR(TxColor)
      If (BkBGR = &quot;&quot;) &amp;&amp; (TxBGR = &quot;&quot;)
         Return False
      This[&quot;SELB&quot;] := BkBGR
      This[&quot;SELT&quot;] := TxBGR
      This.SelColors := True
      Return True
   }
   ; ===================================================================================================================
   ; Row()           Sets background and/or text color for the specified row.
   ; Parameters:     Row         -  Row number
   ;                 Optional ------------------------------------------------------------------------------------------
   ;                 BkColor     -  Background color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; default background color
   ;                 TxColor     -  Text color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; default text color
   ; Return Value:   True on success, otherwise false.
   ; ===================================================================================================================
   Row(Row, BkColor := &quot;&quot;, TxColor := &quot;&quot;) {
      If !(This.HWND)
         Return False
      If This.IsStatic
         Row := This.MapIndexToID(Row)
      This[&quot;Rows&quot;].Remove(Row, &quot;&quot;)
      If (BkColor = &quot;&quot;) &amp;&amp; (TxColor = &quot;&quot;)
         Return True
      BkBGR := This.BGR(BkColor)
      TxBGR := This.BGR(TxColor)
      If (BkBGR = &quot;&quot;) &amp;&amp; (TxBGR = &quot;&quot;)
         Return False
      This[&quot;Rows&quot;, Row, &quot;B&quot;] := (BkBGR &lt;&gt; &quot;&quot;) ? BkBGR : This.BkClr
      This[&quot;Rows&quot;, Row, &quot;T&quot;] := (TxBGR &lt;&gt; &quot;&quot;) ? TxBGR : This.TxClr
      Return True
   }
   ; ===================================================================================================================
   ; Cell()          Sets background and/or text color for the specified cell.
   ; Parameters:     Row         -  Row number
   ;                 Col         -  Column number
   ;                 Optional ------------------------------------------------------------------------------------------
   ;                 BkColor     -  Background color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; row&#039;s background color
   ;                 TxColor     -  Text color as RGB color integer (e.g. 0xFF0000 = red) or HTML color name.
   ;                                Default: Empty -&gt; row&#039;s text color
   ; Return Value:   True on success, otherwise false.
   ; ===================================================================================================================
   Cell(Row, Col, BkColor := &quot;&quot;, TxColor := &quot;&quot;) {
      If !(This.HWND)
         Return False
      If This.IsStatic
         Row := This.MapIndexToID(Row)
      This[&quot;Cells&quot;, Row].Remove(Col, &quot;&quot;)
      If (BkColor = &quot;&quot;) &amp;&amp; (TxColor = &quot;&quot;)
         Return True
      BkBGR := This.BGR(BkColor)
      TxBGR := This.BGR(TxColor)
      If (BkBGR = &quot;&quot;) &amp;&amp; (TxBGR = &quot;&quot;)
         Return False
      If (BkBGR &lt;&gt; &quot;&quot;)
         This[&quot;Cells&quot;, Row, Col, &quot;B&quot;] := BkBGR
      If (TxBGR &lt;&gt; &quot;&quot;)
         This[&quot;Cells&quot;, Row, Col, &quot;T&quot;] := TxBGR
      Return True
   }
   ; ===================================================================================================================
   ; NoSort()        Prevents/allows sorting by click on a header item for this ListView.
   ; Parameters:     Apply       -  True/False
   ;                                Default: True
   ; Return Value:   True on success, otherwise false.
   ; ===================================================================================================================
   NoSort(Apply := True) {
      If !(This.HWND)
         Return False
      If (Apply)
         This.SortColumns := False
      Else
         This.SortColumns := True
      Return True
   }
   ; ===================================================================================================================
   ; NoSizing()      Prevents/allows resizing of columns for this ListView.
   ; Parameters:     Apply       -  True/False
   ;                                Default: True
   ; Return Value:   True on success, otherwise false.
   ; ===================================================================================================================
   NoSizing(Apply := True) {
      Static OSVersion := DllCall(&quot;GetVersion&quot;, &quot;UChar&quot;)
      If !(This.Header)
         Return False
      If (Apply) {
         If (OSVersion &gt; 5)
            Control, Style, +0x0800, , % &quot;ahk_id &quot; . This.Header ; HDS_NOSIZING = 0x0800
         This.ResizeColumns := False
      }
      Else {
         If (OSVersion &gt; 5)
            Control, Style, -0x0800, , % &quot;ahk_id &quot; . This.Header ; HDS_NOSIZING
         This.ResizeColumns := True
      }
      Return True
   }
   ; ===================================================================================================================
   ; OnMessage()     Adds/removes a message handler for WM_NOTIFY messages for this ListView.
   ; Parameters:     Apply       -  True/False
   ;                                Default: True
   ; Return Value:   Always True
   ; ===================================================================================================================
   OnMessage(Apply := True) {
      If (Apply) &amp;&amp; !This.HasKey(&quot;OnMessageFunc&quot;) {
         This.OnMessageFunc := ObjBindMethod(This, &quot;On_WM_Notify&quot;)
         OnMessage(0x004E, This.OnMessageFunc) ; add the WM_NOTIFY message handler
      }
      Else If !(Apply) &amp;&amp; This.HasKey(&quot;OnMessageFunc&quot;) {
         OnMessage(0x004E, This.OnMessageFunc, 0) ; remove the WM_NOTIFY message handler
         This.OnMessageFunc := &quot;&quot;
         This.Remove(&quot;OnMessageFunc&quot;)
      }
      WinSet, Redraw, , % &quot;ahk_id &quot; . This.HWND
      Return True
   }
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; PRIVATE PROPERTIES  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   Static Attached := {}
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; PRIVATE METHODS +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   On_WM_NOTIFY(W, L, M, H) {
      ; Notifications: NM_CUSTOMDRAW = -12, LVN_COLUMNCLICK = -108, HDN_BEGINTRACKA = -306, HDN_BEGINTRACKW = -326
      Critical, % This.Critical
      If ((HCTL := NumGet(L + 0, 0, &quot;UPtr&quot;)) = This.HWND) || (HCTL = This.Header) {
         Code := NumGet(L + (A_PtrSize * 2), 0, &quot;Int&quot;)
         If (Code = -12)
            Return This.NM_CUSTOMDRAW(This.HWND, L)
         If !This.SortColumns &amp;&amp; (Code = -108)
            Return 0
         If !This.ResizeColumns &amp;&amp; ((Code = -306) || (Code = -326))
            Return True
      }
   }
   ; -------------------------------------------------------------------------------------------------------------------
   NM_CUSTOMDRAW(H, L) {
      ; Return values: 0x00 (CDRF_DODEFAULT), 0x20 (CDRF_NOTIFYITEMDRAW / CDRF_NOTIFYSUBITEMDRAW)
      Static SizeNMHDR := A_PtrSize * 3                  ; Size of NMHDR structure
      Static SizeNCD := SizeNMHDR + 16 + (A_PtrSize * 5) ; Size of NMCUSTOMDRAW structure
      Static OffItem := SizeNMHDR + 16 + (A_PtrSize * 2) ; Offset of dwItemSpec (NMCUSTOMDRAW)
      Static OffItemState := OffItem + A_PtrSize         ; Offset of uItemState  (NMCUSTOMDRAW)
      Static OffCT :=  SizeNCD                           ; Offset of clrText (NMLVCUSTOMDRAW)
      Static OffCB := OffCT + 4                          ; Offset of clrTextBk (NMLVCUSTOMDRAW)
      Static OffSubItem := OffCB + 4                     ; Offset of iSubItem (NMLVCUSTOMDRAW)
      ; ----------------------------------------------------------------------------------------------------------------
      DrawStage := NumGet(L + SizeNMHDR, 0, &quot;UInt&quot;)
      , Row := NumGet(L + OffItem, &quot;UPtr&quot;) + 1
      , Col := NumGet(L + OffSubItem, &quot;Int&quot;) + 1
      , Item := Row - 1
      If This.IsStatic
         Row := This.MapIndexToID(Row)
      ; CDDS_SUBITEMPREPAINT = 0x030001 --------------------------------------------------------------------------------
      If (DrawStage = 0x030001) {
         UseAltCol := !(Col &amp; 1) &amp;&amp; (This.AltCols)
         , ColColors := This[&quot;Cells&quot;, Row, Col]
         , ColB := (ColColors.B &lt;&gt; &quot;&quot;) ? ColColors.B : UseAltCol ? This.ACB : This.RowB
         , ColT := (ColColors.T &lt;&gt; &quot;&quot;) ? ColColors.T : UseAltCol ? This.ACT : This.RowT
         , NumPut(ColT, L + OffCT, &quot;UInt&quot;), NumPut(ColB, L + OffCB, &quot;UInt&quot;)
         Return (!This.AltCols &amp;&amp; !This.HasKey(Row) &amp;&amp; (Col &gt; This[&quot;Cells&quot;, Row].MaxIndex())) ? 0x00 : 0x20
      }
      ; CDDS_ITEMPREPAINT = 0x010001 -----------------------------------------------------------------------------------
      If (DrawStage = 0x010001) {
         ; LVM_GETITEMSTATE = 0x102C, LVIS_SELECTED = 0x0002
         If (This.SelColors) &amp;&amp; DllCall(&quot;SendMessage&quot;, &quot;Ptr&quot;, H, &quot;UInt&quot;, 0x102C, &quot;Ptr&quot;, Item, &quot;Ptr&quot;, 0x0002, &quot;UInt&quot;) {
            ; Remove the CDIS_SELECTED (0x0001) and CDIS_FOCUS (0x0010) states from uItemState and set the colors.
            NumPut(NumGet(L + OffItemState, &quot;UInt&quot;) &amp; ~0x0011, L + OffItemState, &quot;UInt&quot;)
            If (This.SELB &lt;&gt; &quot;&quot;)
               NumPut(This.SELB, L + OffCB, &quot;UInt&quot;)
            If (This.SELT &lt;&gt; &quot;&quot;)
               NumPut(This.SELT, L + OffCT, &quot;UInt&quot;)
            Return 0x02 ; CDRF_NEWFONT
         }
         UseAltRow := (Item &amp; 1) &amp;&amp; (This.AltRows)
         , RowColors := This[&quot;Rows&quot;, Row]
         , This.RowB := RowColors ? RowColors.B : UseAltRow ? This.ARB : This.BkClr
         , This.RowT := RowColors ? RowColors.T : UseAltRow ? This.ART : This.TxClr
         If (This.AltCols || This[&quot;Cells&quot;].HasKey(Row))
            Return 0x20
         NumPut(This.RowT, L + OffCT, &quot;UInt&quot;), NumPut(This.RowB, L + OffCB, &quot;UInt&quot;)
         Return 0x00
      }
      ; CDDS_PREPAINT = 0x000001 ---------------------------------------------------------------------------------------
      Return (DrawStage = 0x000001) ? 0x20 : 0x00
   }
   ; -------------------------------------------------------------------------------------------------------------------
   MapIndexToID(Row) { ; provides the unique internal ID of the given row number
      SendMessage, 0x10B4, % (Row - 1), 0, , % &quot;ahk_id &quot; . This.HWND ; LVM_MAPINDEXTOID
      Return ErrorLevel
   }
   ; -------------------------------------------------------------------------------------------------------------------
   BGR(Color, Default := &quot;&quot;) { ; converts colors to BGR
      Static Integer := &quot;Integer&quot; ; v2
      ; HTML Colors (BGR)
      Static HTML := {AQUA: 0xFFFF00, BLACK: 0x000000, BLUE: 0xFF0000, FUCHSIA: 0xFF00FF, GRAY: 0x808080, GREEN: 0x008000
                    , LIME: 0x00FF00, MAROON: 0x000080, NAVY: 0x800000, OLIVE: 0x008080, PURPLE: 0x800080, RED: 0x0000FF
                    , SILVER: 0xC0C0C0, TEAL: 0x808000, WHITE: 0xFFFFFF, YELLOW: 0x00FFFF}
      If Color Is Integer
         Return ((Color &gt;&gt; 16) &amp; 0xFF) | (Color &amp; 0x00FF00) | ((Color &amp; 0xFF) &lt;&lt; 16)
      Return (HTML.HasKey(Color) ? HTML[color] : Default)
   }
} 

</code></pre></div><p><strong>Url parser child</strong><br /></p><div class="codebox"><pre><code>

URLPref = https://example.com/&amp;id=


for k, v in [&quot;ThisIndex&quot;,&quot;MinRange&quot;,&quot;MaxRange&quot;,&quot;Add&quot;,&quot;ParentPID&quot;,&quot;hControl&quot;]
	%v% := %k%

#SingleInstance Off
#NoEnv
#NoTrayIcon
SetBatchLines -1
DetectHiddenWindows, On
ListLines Off
OnExit, ExitApp 
Global oIE, hGui, URL, ThisIndex

Gui Add, Edit, w830 r1 vURLGui
Gui Add, Edit, xp y+5 wp r1 vURLGuiTarg
Gui Add, Button, x+6 yp w44, Go 

Gui +ReSize -DPIScale +HWNDhGui  ;	 +Owner
Gui Add, ActiveX, xm w880 h640 voIE HWNDhoIE, Shell.Explorer
oIE.Silent := 1

ComObjError(false)
ComObjConnect(oIE, WB_events)
oIE.Navigate(URL := URLPref . Item)
Gui, Show, NA Hide, % &quot;Script &quot; ThisIndex

Item := Add ? MinRange - 1 : MaxRange + 1
Loop % Count := MaxRange - MinRange + 1
{
	Add ? ++Item : --Item
	If DllCall(&quot;IsWindowVisible&quot;, &quot;Ptr&quot;, hGui)
	{
		Gui, Show, NA, % &quot;Script &quot; ThisIndex &quot;   //   &quot;   MinRange &quot; - &quot; MaxRange &quot;   //   &quot; Item 
			. &quot;   //    Проход: &quot; A_Index &quot; из &quot; Count &quot;   //   Осталось: &quot; Count - A_Index
		GuiControl,, URLGuiTarg, % URL
	}
	oIE.Navigate(URL := URLPref . Item)
	IEBusy()
	
	SendStringToScript(hControl, A_Index &quot;|&quot; A_TickCount)
	Sleep 111
}
ExitApp
Return

class WB_events {
    NavigateComplete2(IE, NewURL) {
		If !DllCall(&quot;IsWindowVisible&quot;, &quot;Ptr&quot;, hGui)
			Return
		GuiControl,, URLGuiTarg, % oIE.LocationURL 
		GuiControl,, URLGui, % NewURL
    }
}

SendStringToScript(hControl, Text) {
	SendMessage, 0xC, 0, &amp;Text, , ahk_id %hControl%
}

GuiClose:
GuiEscape:
	Gui, Hide
	Return

GuiSize:
	If A_EventInfo = 1
		GoTo GuiClose
	WinMove, ahk_id %hoIE%, , 0, 60, A_GuiWidth, A_GuiHeight-61
	Return

ExitApp:
	oIE.Quit(), oIE := &quot;&quot;
	OnExit
	ExitApp
	
ButtonGo:
	Gui Submit, NoHide
	oIE.Navigate(URLGui)
	return

IEBusy()  {
	While !(oIE.readyState=4 &amp;&amp; oIE.document.readyState=&quot;complete&quot; &amp;&amp; !oIE.busy)
		Sleep, 100
}

WaitUrl(URL)  {
loop
	MsgBox % oIE.LocationURL
}

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2017-12-09T01:37:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=122087#p122087</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Парсинг веб ссылок]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121926#p121926" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Посмотреть куку на наличие id не пробовали?</p></blockquote></div><p>Я посмотрел через IE, авторизация не слетает если есть активность. Куки не нужны тут, ручной логин достаточен. Пробуем ACC вариант</p>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2017-12-03T19:45:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121926#p121926</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Парсинг веб ссылок]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121922#p121922" />
			<content type="html"><![CDATA[<p>ControlSend.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2017-12-03T17:43:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121922#p121922</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Парсинг веб ссылок]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121920#p121920" />
			<content type="html"><![CDATA[<p>А по ссылке контрол кликом переходить?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-12-03T17:26:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121920#p121920</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Парсинг веб ссылок]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121919#p121919" />
			<content type="html"><![CDATA[<p>Через ACC можно.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2017-12-03T17:22:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121919#p121919</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Парсинг веб ссылок]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121917#p121917" />
			<content type="html"><![CDATA[<p>Только на selenium driver.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-12-03T17:08:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121917#p121917</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Парсинг веб ссылок]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121916#p121916" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#NoEnv
#SingleInstance Force	
#Persistent

x = 388448

F1::
Loop {
x := x - 1
link := &quot;https://example.com/id=&quot; x
Run chrome.exe -new %link%
sleep, 750
ToolTip, % x
}
Return

F2::Pause</code></pre></div><p>Как реализовать в одном окне, при этом в фоновом режиме, чтобы пока страница полностью не загрузится не переходить на новый линк? Да и по времени, чтобы целые сутки не перебирать. Нужно сделать на Google Chrome, там кабинет пользователя авторизован, иначе не получится зайти.</p>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2017-12-03T17:07:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121916#p121916</id>
		</entry>
</feed>
