Что нового

Получить строку из SysListView32

mikzin

Новичок
Сообщения
80
Репутация
0
Доброго дня,
никак не могу вроде простую задачу решить:

Код:
$hWin = WinGetHandle("WotWeb 1.08 - Robin Keir - keir.net")
$LWin = ControlGetHandle($hWin, "SysListView32", "")
$Text =  ControlGetText($LWin, "Line1", "")
ConsoleWrite($Text)
ConsoleWrite(@CRLF)

на выходе получаю не выделенную строку (айпи адрес),
а почему-то строку с заголовком окна ((
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: Получить строку из List в другой программе

mikzin,
1. У Вас не List, а SysListView32. Поправьте в названии темы.
2. У Вас ошибка в аргументах функции ControlGetHandle()ControlGetText()). Смотрите справку.
3. Для SysListView32 есть функция
Код:
ControlListView()

4. Всегда проверяйте значение, которое возвращает функция или флаг @error:
Код:
$hWin = WinGetHandle("WotWeb 1.08 - Robin Keir - keir.net")
If Not $hWin Then Exit ConsoleWrite('Нет такого окна!' & @LF)
;~ и т.д.
;~ ...



Добавлено:
Сообщение автоматически объединено:

Код:
$hWin = WinGetHandle('[Title:WotWeb 1.08 - Robin Keir - keir.net; Class:WotWeb]')
If Not $hWin Then Exit ConsoleWrite('No window!' & @LF)
$hLV = ControlGetHandle($hWin, '', '[CLASS:SysListView32; INSTANCE:2]')
If Not $hLV Then Exit ConsoleWrite('No SysListView32!' & @LF)
$iColumn = ControlListView($hWin, '', $hLV, 'GetSubItemCount')
ConsoleWrite('Колонок: ' & $iColumn & @LF)
 

Cornet

Знающий
Сообщения
41
Репутация
6
как-то так:
Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=temp32.exe
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
$hWin = WinGetHandle("WotWeb 1.08 - Robin Keir - keir.net")
If Not @error Then
	If ControlListView($hWin, "", "SysListView322", "IsSelected") Then
		$SelectedItem =  ControlListView($hWin, "", "SysListView322", "GetSelected", 0)
		MsgBox(1, "$SelectedItem", $SelectedItem)
		$SubCount = ControlListView($hWin, "", "SysListView322", "GetSubItemCount")
		$Text = ControlListView($hWin, "", "SysListView322", "GetText", $SelectedItem, 0); 0 - это текст из первого столбца
		MsgBox(1, "$Text", $Text)
	Else
		MsgBox(1, "", "Ничего не выделено")
	EndIf
EndIf

Только откомпилируйте в 32 бита, из под 64 текст не увидите.
 
Автор
M

mikzin

Новичок
Сообщения
80
Репутация
0
одна загвоздка, возвращает не выделенную строку, а первую..

Код:
$ip = ControlListView($hWin, '', $hLV, 'GetText', 'GetSelected')


как получить выделенную?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Автор
M

mikzin

Новичок
Сообщения
80
Репутация
0
всем спасибо, разобрался.


Добавлено:
Сообщение автоматически объединено:

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

Код:
#include <Misc.au3>

$hWin = WinGetHandle('[Title:WotWeb 1.08 - Robin Keir - keir.net; Class:WotWeb]')
If Not $hWin Then
	Exit
EndIf

$hLV = ControlGetHandle($hWin, '', '[CLASS:SysListView32; INSTANCE:2]')
If Not $hLV Then
	Exit
EndIf

$iSelect = ControlListView($hWin, "", $hLV, "GetSelected")
$ip = ControlListView($hWin, "", $hLV, "GetText", $iSelect)


While 1
    Sleep (250)
    If WinActive($hWin) and _IsPressed('01') Then
  ConsoleWrite($ip)
  ConsoleWrite(@CRLF)
       
        EndIf
WEnd


возвращает айпи не тот, на который идет нажатие в окне "вотвэб".
что здесь не так?
 

Cornet

Знающий
Сообщения
41
Репутация
6
так что же вы не в цикле данные из окна берете.
Код:
#include <Misc.au3>

$hWin = WinGetHandle('[Title:WotWeb 1.08 - Robin Keir - keir.net; Class:WotWeb]')
If Not $hWin Then
	Exit
EndIf

$hLV = ControlGetHandle($hWin, '', '[CLASS:SysListView32; INSTANCE:2]')
If Not $hLV Then
	Exit
EndIf

While 1
	Sleep(250)
	If WinActive($hWin) And _IsPressed('01') Then
		$iSelect = ControlListView($hWin, "", $hLV, "GetSelected")
		$ip = ControlListView($hWin, "", $hLV, "GetText", $iSelect)
		ConsoleWrite($ip)
		ConsoleWrite(@CRLF)
	EndIf
WEnd
 
Верх