Что нового

х64 и ControlGetText() не работает

royalfint

Трейдер, Программист, Игродел, Веб-Мастер
Сообщения
74
Репутация
0
Всем привет! Скрипт должен вытаскивать текст из окна:
Код:
Local $sText = ControlGetText("[CLASS:#32770]", "", "[CLASS:Edit; INSTANCE:1]")

но на Win 7 х64 он его не видит вообще никак(в режиме совместимости пробовал). у меня стоит win7 х86. Что подскажете господа? использовать другую функцию или эту как то подправить ? или что не так делаю?
Всем заранее спс! :IL_AutoIt_1:
P.S. ох уж сколько эта проблема мне нервов вытрепала
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
royalfint,
ИМХО, Вам надо окно конкретнее задавать. У меня, например, следующий код на Win7x86 выдает 12 скрытых окон:
Код:
#include <Array.au3>

$aList = WinList('[CLASS:#32770]')
_ArrayDisplay($aList)
 
Автор
royalfint

royalfint

Трейдер, Программист, Игродел, Веб-Мастер
Сообщения
74
Репутация
0
спасибо, исправил, но проблему это не решает. всё равно не работает
 
Автор
royalfint

royalfint

Трейдер, Программист, Игродел, Веб-Мастер
Сообщения
74
Репутация
0
нет я сейчас подробно всё опишу. не думал, что так сразу ответите и поэтому надеялся на то, что успею.


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

Вот вы говорите, что у вас 12 скрытых окон. Я не знаю откуда у вас столько их взялось так как класс окна уникальный и используется программой MetaTrader4. Я написал скрипт для теста и запустил на х64 и она просто не нашла окна. Я использовал WinList а массив оказался пустой. Что то тут не ладное


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

Всем спасибо за ответы. решил всё вот так:
Код:
$aList = WinList('[CLASS:#32770]')
		;_ArrayDisplay($aList)

		For $i = 1 To $aList[0][0]
			If $aList[$i][0] <> "" And BitAND(WinGetState($aList[$i][1]), 2) Then
				If Func_GetData(ControlGetText($aList[$i][1], "", "[CLASS:Edit; INSTANCE:1]")) Then
					$Got_Signal=1
				EndIf
			EndIf
		Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
royalfint,
Посмотрите классы этого окна, если есть возможность, в x86 и в х64, может, они разные?



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

royalfint [?]
решил всё вот так:
А что делает функция Func_GetData, если не секрет?
 
Автор
royalfint

royalfint

Трейдер, Программист, Игродел, Веб-Мастер
Сообщения
74
Репутация
0
нет, одинаковые. там же просто в х64 меняется архитектура построения памяти откуда мы и берем текст) из за этого скорей всего не работало изначально
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
royalfint [?]
класс окна уникальный
Это стандартный класс, который использует куча разных программ, в том числе и Windows. Посмотрите, например, класс стандартного
Код:
MsgBox(64, 'Info', 'My Class = #32770')
Или InputBox.
 
Автор
royalfint

royalfint

Трейдер, Программист, Игродел, Веб-Мастер
Сообщения
74
Репутация
0
по секрету: проверяет соответствует ли шаблону текст окна


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

что на счет уникальности класса то не знал и думал то что основной класс уникален то и дети тоже будут такими, но оказался не прав
 
Верх