Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   AutoIt DllCall неправильно водит логин или пароль (http://forum.oszone.net/showthread.php?t=257746)

BERGAMOD 03-04-2013 09:05 2124759

AutoIt DllCall неправильно водит логин или пароль
 
Установлена OS Win 7 64 bit
Вод логина и пароля в неактивное окно.

Код:

$ret=DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", "00000409", "int", 0)
 DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd2, "int", "0x50", "int", 1, "int", $ret[0])

Есть ini файл откуда берет логин и пароль и водит в неактивное окно
ControlSend($hWnd2, "", "", IniRead("!AutoPassword.ini", GUICtrlRead($List1), "Login", "None"))
ControlSend($hWnd2, "", "", IniRead("!AutoPassword.ini", GUICtrlRead($List1), "Password", "None"))

Проблема в следующим: в !AutoPassword.ini написан логин Df5qQq211233qaZ, а когда вбивает получается Df5qQq2112qaZ33, кто знает как можно исправить? буду рад любой помощи.

Спасибо.

LehaMechanic 03-04-2013 09:55 2124787

Цитата:

Цитата BERGAMOD
Проблема в следующим: в !AutoPassword.ini написан логин Df5qQq211233qaZ, а когда вбивает получается Df5qQq2112qaZ33 »

>предположение из метода научного тыка>
Попробуйте в !AutoPassword.ini записать пароль Df5qQq2112aZ33q. Тогда, следуя его странной логике, при вводе он переставит символы aZ в конец и получит правильную комбинацию.

Creat0R 03-04-2013 11:44 2124845

BERGAMOD
Предупреждение за нарушение правил форума, пункт 2.7 и пункт 3.19:

Цитата:

2.7: В заголовке темы обязательно обозначайте название предмета, которого касается вопрос, а в теле сообщения максимально подробно опишите проблему (приведите аппаратную/программную конфигурацию, а также изложите ситуацию, в которой возникает проблема)...
Подробнее о принципах создания тем читайте в этом документе и Правилах форумов.

3.19: Запрещается... Создавать темы, имеющие неинформативные или состоящие из заглавных букв заголовки (например, "Помогите!", "HELP!", "У меня проблема"). Такие темы будут закрыты или перенесены в Тест-форум. Если вы хотите вернуть перенесенную тему обратно, пока ее не закрыли в Тест-форуме, измените ее заголовок на осмысленный и напишите об этом в теме.
Переименуйте пожалуйста тему (Как переименовать свою тему?).

BERGAMOD 03-04-2013 13:03 2124901

Цитата:

Цитата Leha Ares
предположение из метода научного тыка>
Попробуйте в !AutoPassword.ini записать пароль Df5qQq2112aZ33q. Тогда, следуя его странной логике, при вводе он переставит символы aZ в конец и получит правильную комбинацию. »



Попробовал не работает

LehaMechanic 03-04-2013 13:16 2124905

А что он вводит на этот раз?

BERGAMOD 03-04-2013 13:31 2124913

Цитата:

Цитата Leha Ares
А что он вводит на этот раз? »


DfqQq5211aZq233

LehaMechanic 03-04-2013 14:31 2124947

А если немного переделать команды:

Код:

ControlSend($hWnd2, "", "", IniRead("!AutoPassword.ini", GUICtrlRead($List1), "Login", "None"), [1])
ControlSend($hWnd2, "", "", IniRead("!AutoPassword.ini", GUICtrlRead($List1), "Password", "None"), [1])

И ещё я бы переделал на всякий случай !AutoPassword.ini, так чтобы у него ни в имени, ни внутри в именах разделов не было всяких спецсимволов вроде восклицательных знаков и долларов. Возможно AutoIt из-за них сходит с ума.

Creat0R 03-04-2013 15:10 2124985

BERGAMOD, Leha Ares,

Код следует заключать в соответствующий тег.

BERGAMOD 03-04-2013 15:48 2125015

Цитата:

Цитата Creat0R
И ещё я бы переделал на всякий случай !AutoPassword.ini, так чтобы у него ни в имени, ни внутри в именах разделов не было всяких спецсимволов вроде восклицательных знаков и долларов. Возможно AutoIt из-за них сходит с ума. »

Код:

Изменил !AutoPassword.ini на logpas.ini
Попробовал

Код:

ControlSend($hWnd2, "", "", IniRead("logpas.ini", GUICtrlRead($List1), "Login", "None"), [1])
ControlSend($hWnd2, "", "", IniRead("logpas.ini", GUICtrlRead($List1), "Login", "None", [1])
 ControlSend($hWnd2, "", "", IniRead("logpas.ini", GUICtrlRead($List1), "Login", "None", [1]))
Ошибка
ControlSend($hWnd2, "", "", IniRead("logpas.ini", GUICtrlRead($List1), "Login", "None"), ^ ERROR


Creat0R 04-04-2013 02:36 2125377

Цитата:

Цитата BERGAMOD
Цитата Creat0R: »

Это не моя цитата.

AZJIO 04-04-2013 02:54 2125383

BERGAMOD, вся фишка ControlSend - указывать идентификатор элемента в который текст отправляется, у вас пустая строка. Указать идентификатор и попробовать ControlSetText.

BERGAMOD 04-04-2013 08:31 2125443

Цитата:

Цитата AZJIO
вся фишка ControlSend - указывать идентификатор элемента в который текст отправляется, у вас пустая строка. Указать идентификатор и попробовать ControlSetText. »

Код:

попробовал сменить ControlSend на ControlSendText вообще нечего не водит
ControlSetText($hWnd2, "", "", IniRead("logpas.ini", GUICtrlRead($List1), "Login", "None"))

А можно пример? я не особа шарю в Autoit.

AZJIO 04-04-2013 16:42 2125688

Цитата:

Цитата BERGAMOD
А можно пример? я не особа шарю в Autoit. »

ControlSetText($hWnd2, "", "",
Открываете справку и смотрите пример.
Цитата:

у вас пустая строка. Указать идентификатор

BERGAMOD 04-04-2013 17:26 2125715

Цитата:

Цитата AZJIO
ControlSetText($hWnd2, "", "",
Открываете справку и смотрите пример. »

не водит нечего
Код:

ControlSetText($hWnd2, "", "l2UnrealWWindowsViewportWindow", IniRead("logpas.ini", GUICtrlRead($List1), "Login", "None"))
и про ID,
Код:

>>>> Window <<<<
Title:        Lineage II:*Overworld *
Class:        l2UnrealWWindowsViewportWindow
Position:        0, 24
Size:        1292, 1000
Style:        0x14CF0000
ExStyle:        0x00040100
Handle:        0x00200926

>>>> Control <<<<
Class:       
Instance:       
ClassnameNN:       
Name:       
Advanced (Class):       
ID:       
Text:       
Position:       
Size:       
ControlClick Coords:       
Style:       
ExStyle:       
Handle:       

>>>> Mouse <<<<
Position:        469, 680
Cursor ID:        0
Color:        0xA24356

Я же писал что окно неактивное

BERGAMOD 05-04-2013 13:29 2126222

Народ! есть еще идеи? буду рад любой помощи

AZJIO 05-04-2013 16:08 2126318

Да, есть. Попробовать разбить строку пароля в массив и отправлять по одной букве в цикле, с задержкой 10 мсек. Потом увеличивать задержку, добиваясь стабильного ввода попорядку.
Попробовать перед отправкой вывести результат чтения ini-файла, чтобы выяснить главного виновника.

BERGAMOD 15-04-2013 09:11 2132820

Цитата:

Цитата AZJIO
Да, есть. Попробовать разбить строку пароля в массив и отправлять по одной букве в цикле, с задержкой 10 мсек. Потом увеличивать задержку, добиваясь стабильного ввода попорядку.
Попробовать перед отправкой вывести результат чтения ini-файла, чтобы выяснить главного виновника. »


А можно пример, я как бы учусь и не шарю сильно

BERGAMOD 18-04-2013 12:04 2134998

Есть люди которые могут помочь?

LehaMechanic 18-04-2013 13:23 2135045

Цитата:

Цитата AZJIO
Попробовать перед отправкой вывести результат чтения ini-файла, чтобы выяснить главного виновника. »

Это можно сделать, например, так
Код:

$sRead = IniRead("C:\AutoPassword.ini", GUICtrlRead($List1), "login", "none")
$sRead2 = IniRead("C:\AutoPassword.ini", GUICtrlRead($List1), "password", "none")
MsgBox(4096, "", "Значение параметров: " & $sRead &" и " & $sRead2)

Где вместо C:\AutoPassword.ini введите свой путь и имя файла.
Ещё я не вполне понимаю, чтодолжна делать конструкция GUICtrlRead($List1), когда вместо неё достаточно вбить имя секции ini-файла, где расположены параметры логин и пароль? Было бы интересно взглянуть на ваш файл, можете выложить?


Время: 02:34.

Время: 02:34.
© OSzone.net 2001-