Показать полную графическую версию : AutoIt DllCall неправильно водит логин или пароль
BERGAMOD
03-04-2013, 09:05
Установлена 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
Проблема в следующим: в !AutoPassword.ini написан логин Df5qQq211233qaZ, а когда вбивает получается Df5qQq2112qaZ33 »
>предположение из метода научного тыка>
Попробуйте в !AutoPassword.ini записать пароль Df5qQq2112aZ33q. Тогда, следуя его странной логике, при вводе он переставит символы aZ в конец и получит правильную комбинацию.
BERGAMOD
Предупреждение за нарушение правил форума, пункт 2.7 (http://forum.oszone.net/rules.html#2.7) и пункт 3.19 (http://forum.oszone.net/rules.html#3.19):
2.7: В заголовке темы обязательно обозначайте название предмета, которого касается вопрос, а в теле сообщения максимально подробно опишите проблему (приведите аппаратную/программную конфигурацию, а также изложите ситуацию, в которой возникает проблема)...
Подробнее о принципах создания тем читайте в этом документе (http://forum.oszone.net/faq.php?faq=vb_read_and_post#faq_thread) и Правилах форумов.
3.19: Запрещается... Создавать темы, имеющие неинформативные или состоящие из заглавных букв заголовки (например, "Помогите!", "HELP!", "У меня проблема"). Такие темы будут закрыты или перенесены в Тест-форум. Если вы хотите вернуть перенесенную тему обратно, пока ее не закрыли в Тест-форуме, измените ее заголовок на осмысленный (http://forum.oszone.net/faq.php?faq=vb_board_usage#faq_rename_thread) и напишите об этом в теме.
Переименуйте пожалуйста тему (Как переименовать свою тему? (http://forum.oszone.net/faq.php?faq=vb_board_usage#faq_rename_thread)).
BERGAMOD
03-04-2013, 13:03
предположение из метода научного тыка>
Попробуйте в !AutoPassword.ini записать пароль Df5qQq2112aZ33q. Тогда, следуя его странной логике, при вводе он переставит символы aZ в конец и получит правильную комбинацию. »
Попробовал не работает
LehaMechanic
03-04-2013, 13:16
А что он вводит на этот раз?
BERGAMOD
03-04-2013, 13:31
А что он вводит на этот раз? »
DfqQq5211aZq233
LehaMechanic
03-04-2013, 14:31
А если немного переделать команды:
ControlSend($hWnd2, "", "", IniRead("!AutoPassword.ini", GUICtrlRead($List1), "Login", "None"), [1])
ControlSend($hWnd2, "", "", IniRead("!AutoPassword.ini", GUICtrlRead($List1), "Password", "None"), [1])
И ещё я бы переделал на всякий случай !AutoPassword.ini, так чтобы у него ни в имени, ни внутри в именах разделов не было всяких спецсимволов вроде восклицательных знаков и долларов. Возможно AutoIt из-за них сходит с ума.
BERGAMOD, Leha Ares,
Код следует заключать в соответствующий тег.
BERGAMOD
03-04-2013, 15:48
И ещё я бы переделал на всякий случай !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: »
Это не моя цитата.
BERGAMOD, вся фишка ControlSend - указывать идентификатор элемента в который текст отправляется, у вас пустая строка. Указать идентификатор и попробовать ControlSetText.
BERGAMOD
04-04-2013, 08:31
вся фишка ControlSend - указывать идентификатор элемента в который текст отправляется, у вас пустая строка. Указать идентификатор и попробовать ControlSetText. »
попробовал сменить ControlSend на ControlSendText вообще нечего не водит
ControlSetText($hWnd2, "", "", IniRead("logpas.ini", GUICtrlRead($List1), "Login", "None"))
А можно пример? я не особа шарю в Autoit.
А можно пример? я не особа шарю в Autoit. »
ControlSetText($hWnd2, "", "",
Открываете справку и смотрите пример.
у вас пустая строка. Указать идентификатор
BERGAMOD
04-04-2013, 17:26
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
Народ! есть еще идеи? буду рад любой помощи
Да, есть. Попробовать разбить строку пароля в массив и отправлять по одной букве в цикле, с задержкой 10 мсек. Потом увеличивать задержку, добиваясь стабильного ввода попорядку.
Попробовать перед отправкой вывести результат чтения ini-файла, чтобы выяснить главного виновника.
BERGAMOD
15-04-2013, 09:11
Да, есть. Попробовать разбить строку пароля в массив и отправлять по одной букве в цикле, с задержкой 10 мсек. Потом увеличивать задержку, добиваясь стабильного ввода попорядку.
Попробовать перед отправкой вывести результат чтения ini-файла, чтобы выяснить главного виновника. »
А можно пример, я как бы учусь и не шарю сильно
BERGAMOD
18-04-2013, 12:04
Есть люди которые могут помочь?
LehaMechanic
18-04-2013, 13:23
Попробовать перед отправкой вывести результат чтения 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-файла, где расположены параметры логин и пароль? Было бы интересно взглянуть на ваш файл, можете выложить?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.