Вверх ↑
Этот топик читают: Гость
Ответов: 34
Рейтинг: 0
#1: 2018-12-17 15:05:52 ЛС | профиль | цитата
Подскажите, через компонент браузер открывается сайт, на нем всего 2 поля для ввода данных, логин и пароль, необходимо ввести данные логина и пароля и нажать войти.
Искал примеры на сайте, но что то подходящее для меня не нашел. Пробовал через Keyevent
Add(WebBrowser,12817503,217,77)
{
Left=5
Top=10
Width=600
Height=585
URL="http:\\localhost\activity.jsp"
Point(Handle)
Point(PHandle)
Point(onDblClick)
link(onDblClick,11268724:doEvent1,[])
}
Add(KeyEvent,10574315,343,203)
{
Code=49
}
Add(KeyEvent,8784944,406,203)
{
Code=53
}
Add(KeyEvent,15293427,469,203)
{
Code=57
}
Add(KeyEvent,1736518,525,203)
{
Code=55
}
Add(KeyEvent,468601,574,203)
{
Code=53
}
Add(KeyEvent,4033373,623,203)
{
Code=51
}
Add(Hub,11268724,308,105)
{
OutCount=6
link(onEvent1,10574315:doPress,[(315,111)(315,209)])
link(onEvent2,8784944:doPress,[(367,118)(367,209)])
link(onEvent3,15293427:doPress,[(399,125)(399,209)])
link(onEvent4,1736518:doPress,[(427,132)(427,209)])
link(onEvent5,468601:doPress,[(451,139)(451,209)])
link(onEvent6,4033373:doPress,[(476,146)(476,209)])
}


Поидее если я в окне браузера дважды клацну мышкой по полю, то в это поле он должен ввести пароль 159753, но это не происходит, почему?)

И даже если заработает, как реализовать переход на второе поле логина(операцией mouseevent?) но он не двигает мышкой и не клацает почемуто, как и с клавишами клавиатуры, может это в бразуере неработает?

Sendmessage нашел, но так и не понял как с помощью него отправлять логин и пароль в поля, может кто подскажет? где брать W и L параметры и какой номер сообщения выбирать?

Вообщем вроде простая операция, а сделать немогу, через ahk там просто это делается, а тут вроде должно быть просто а не работает))

Редактировалось 2 раз(а), последний 2018-12-17 15:53:16
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 34
Рейтинг: 0
#2: 2018-12-17 16:08:45 ЛС | профиль | цитата
C keyevent разобрался, оказалось что событие двойного клика почему то не отрабатывалось как и все другие доп события, привязался пока к смене страницы.
проблема в том что он почему то выдает нажатие кнопки на клаве, но не учитывает язык, т.е. вместо английской A он мне пишет русскую Ф.
Как можно заставить напечатать нужный текст, не привязываясь к раскладке?

И как можно сделать эффект нажатия кнопки TAB что бы фокус перешел на второе поле пароля? при нажатии на TAB ничего не происходит, при открытии страницы фокус автоматом ставится на поле логина, и его никаким комбинациями клавиши не удается перевести на следующее поле.

Если не получится то надо будет каким то образом переместить мышку и нажать левой кнопкой мыши,но к чему привязыватся? ведь разрешения экрана у всех разное, а необходимо что бы этот способ был более универсален.

Редактировалось 2 раз(а), последний 2018-12-17 16:42:02
карма: 0

0
Разработчик
Ответов: 25329
Рейтинг: 2070
#3: 2018-12-17 16:43:33 ЛС | профиль | цитата
ZloiDed писал(а):
Подскажите, через компонент браузер открывается сайт, на нем всего 2 поля для ввода данных, логин и пароль, необходимо ввести данные логина и пароля и нажать войти.

Вот так, через Dom и больше никак нормально работать не будет

Схема


Add(MainForm,1351679,98,175)
{
Width=1010
Height=561
}
Add(WebBrowser,15563951,378,168)
{
Left=5
Top=80
Width=985
Height=435
URL="http://forum.hiasm.com/guilogin/"
Silent=0
Point(PHandle)
Point(doFromText)
}
Add(Edit,15375584,161,175)
{
Left=705
Top=5
Width=135
Text="login"
}
Add(Edit,12692327,203,175)
{
Left=845
Top=5
Width=135
Text=""
}
Add(Button,3488175,98,238)
{
Left=850
Top=55
Width=130
TabOrder=-1
Caption="Войти"
link(onClick,3134972:doAdd,[])
}
Add(Edit,3057939,280,252)
{
Left=705
Top=30
Width=135
Text="pass"
}
Add(Edit,6191608,322,252)
{
Left=845
Top=30
Width=135
Text=""
Password=0
}
Add(InlineCode,10977955,392,238)
{
WorkPoints=#16:doSetValueByName|20:doSetFocusByName |17:doSetFocusByValue|13:doClickByName|15:doClickByValue |
EventPoints=#10:onSetValue|10:onSetFocus|
DataPoints=#2:ph|4:name|5:value|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug,ActiveX,KOLSHDocVw;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|18: ph: THI_Event;|20: name: THI_Event;|21: value: THI_Event;|26: onSetValue: THI_Event;|26: onSetFocus: THI_Event;|27: onClick: THI_Event; |0:|57: procedure doSetValueByName(var dt:TData; index:word);|61: procedure doSetFocusByName(var dt:TData; index:word); |58: procedure doSetFocusByValue(var dt:TData; index:word);|58: procedure doClickByName(var dt:TData; index:word); |64: procedure doClickByValue(var dt:TData; index:word); |0:|5: end;|0:|14:implementation|0:|4:type|31: TKOLWebBrowser = PWebBrowser;|31: PKOLWebBrowser = PWebBrowser;|0:|74:function FindIdx(pc: PControl; val: string; FindByName: boolean): Integer;|3:var|13: i: integer;|5:begin|15: Result := -1;|85: for i := 0 to PKOLWebBrowser(pc).OleObject.Document.all.tags('input').length - 1 do|22: if FindByName then|13: begin |88: if PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(i).name = val then|11: begin|20: Result := i;|15: break; |10: end;|7: end|12: else |9: begin|89: if PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(i).value = val then|11: begin|20: Result := i;|15: break; |10: end;|8: end;|6:end; |0:|39:procedure THiAsmClass.doSetValueByName;|3:var|15: pc: PControl;|19: txt, val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, name);|33: val := ReadString(dt, value); |32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |81: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).value := val;|26: _hi_onEvent(onSetValue);|4:end;|0:|39:procedure THiAsmClass.doSetFocusByName;|3:var|15: pc: PControl;|14: txt: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, name);|32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).focus;|26: _hi_onEvent(onSetFocus);|4:end;|0:|40:procedure THiAsmClass.doSetFocusByValue;|3:var|15: pc: PControl;|14: val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|33: val := ReadString(dt, value); |33: idx := FindIdx(pc, val, false);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).focus;|26: _hi_onEvent(onSetFocus);|4:end;|0:|36:procedure THiAsmClass.doClickByName;|3:var|15: pc: PControl;|14: txt: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, name);|32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).click;|23: _hi_onEvent(onClick);|4:end;|0:|37:procedure THiAsmClass.doClickByValue;|3:var|15: pc: PControl;|14: val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|33: val := ReadString(dt, value); |33: idx := FindIdx(pc, val, false);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).click;|23: _hi_onEvent(onClick);|4:end;|0:|4:end.|
link(ph,15563951:PHandle,[])
}
Add(MT_AddData,3134972,161,238)
{
link(onAdd,3087097:doEvent1,[])
link(Data1,15375584:Text,[])
link(Data2,12692327:Text,[(174,215)(209,215)])
}
Add(MT_AddData,1475487,280,315)
{
link(onAdd,3095249:doWork3,[(368,321)])
link(Data1,3057939:Text,[])
link(Data2,6191608:Text,[(293,292)(328,292)])
}
Add(HubEx,3095249,364,238)
{
link(onEvent,10977955:doSetValueByName,[])
}
Add(DoData,5921312,280,357)
{
Data=String(Войти)
link(onEventData,10977955:doClickByValue ,[(375,363)(375,272)])
}
Add(Hub,3087097,210,238)
{
OutCount=3
link(onEvent1,3095249:doWork2,[])
link(onEvent2,1475487:doAdd,[(270,251)(270,321)])
link(onEvent3,5921312:doData,[(263,258)(263,363)])
}


Для работы необходимо знать имена полей ввода и точный текст кнопки входа. Для нашего сайта это -- login, pass и "Войти"
карма: 19

0
Ответов: 34
Рейтинг: 0
#4: 2018-12-17 17:17:13 ЛС | профиль | цитата
nesco писал(а):

Add(MainForm,1351679,98,175)
{
Width=1010
Height=561
}
Add(WebBrowser,15563951,378,168)
{
Left=5
Top=80
Width=985
Height=435
URL="http://forum.hiasm.com/guilogin/"
Silent=0
Point(PHandle)
Point(doFromText)
}
Add(Edit,15375584,161,175)
{
Left=705
Top=5
Width=135
Text="login"
}
Add(Edit,12692327,203,175)
{
Left=845
Top=5
Width=135
Text=""
}
Add(Button,3488175,98,238)
{
Left=850
Top=55
Width=130
TabOrder=-1
Caption="Войти"
link(onClick,3134972:doAdd,[])
}
Add(Edit,3057939,280,252)
{
Left=705
Top=30
Width=135
Text="pass"
}
Add(Edit,6191608,322,252)
{
Left=845
Top=30
Width=135
Text=""
Password=0
}
Add(InlineCode,10977955,392,238)
{
WorkPoints=#16:doSetValueByName20:doSetFocusByName |17:doSetFocusByValue|13:doClickByName|15:doClickByValue |
EventPoints=#10nSetValue|10nSetFocus|
DataPoints=#2:ph|4:name|5:value|
Code=#15:unit HiAsmUnit;|09:interface|040:uses kol,Share,Debug,ActiveX,KOLSHDocVw;|04:type|28: THiAsmClass = class(TDebug)|10: private|09: public|18: ph: THI_Event;|20: name: THI_Event;|21: value: THI_Event;|26: onSetValue: THI_Event;|26: onSetFocus: THI_Event;|27: onClick: THI_Event; |057: procedure doSetValueByName(var dt:TData; index:word);|61: procedure doSetFocusByName(var dt:TData; index:word); |58: procedure doSetFocusByValue(var dt:TData; index:word);|58: procedure doClickByName(var dt:TData; index:word); |64: procedure doClickByValue(var dt:TData; index:word); |05: end;|014:implementation|04:type|31: TKOLWebBrowser = PWebBrowser;|31: PKOLWebBrowser = PWebBrowser;|074:function FindIdx(pc: PControl; val: string; FindByName: boolean): Integer;|3:var|13: i: integer;|5:begin|15: Result := -1;|85: for i := 0 to PKOLWebBrowser(pc).OleObject.Document.all.tags('input').length - 1 do|22: if FindByName then|13: begin |88: if PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(i).name = val then|11: begin|20: Result := i;|15: break; |10: end;|7: end|12: else |9: begin|89: if PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(i).value = val then|11: begin|20: Result := i;|15: break; |10: end;|8: end;|6:end; |039:procedure THiAsmClass.doSetValueByName;|3:var|15: pc: PControl;|19: txt, val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, name);|33: val := ReadString(dt, value); |32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |81: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).value := val;|26: _hi_onEvent(onSetValue);|4:end;|039:procedure THiAsmClass.doSetFocusByName;|3:var|15: pc: PControl;|14: txt: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, name);|32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).focus;|26: _hi_onEvent(onSetFocus);|4:end;|040:procedure THiAsmClass.doSetFocusByValue;|3:var|15: pc: PControl;|14: val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|33: val := ReadString(dt, value); |33: idx := FindIdx(pc, val, false);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).focus;|26: _hi_onEvent(onSetFocus);|4:end;|036:procedure THiAsmClass.doClickByName;|3:var|15: pc: PControl;|14: txt: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, name);|32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).click;|23: _hi_onEvent(onClick);|4:end;|037:procedure THiAsmClass.doClickByValue;|3:var|15: pc: PControl;|14: val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|33: val := ReadString(dt, value); |33: idx := FindIdx(pc, val, false);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).click;|23: _hi_onEvent(onClick);|4:end;|04:end.|
link(ph,15563951Handle,[])
}
Add(MT_AddData,3134972,161,238)
{
link(onAdd,3087097:doEvent1,[])
link(Data1,15375584:Text,[])
link(Data2,12692327:Text,[(174,215)(209,215)])
}
Add(MT_AddData,1475487,280,315)
{
link(onAdd,3095249:doWork3,[(368,321)])
link(Data1,3057939:Text,[])
link(Data2,6191608:Text,[(293,292)(328,292)])
}
Add(HubEx,3095249,364,238)
{
link(onEvent,10977955:doSetValueByName,[])
}
Add(DoData,5921312,280,357)
{
Data=String(Войти)
link(onEventData,10977955:doClickByValue ,[(375,363)(375,272)])
}
Add(Hub,3087097,210,238)
{
OutCount=3
link(onEvent1,3095249:doWork2,[])
link(onEvent2,1475487:doAdd,[(270,251)(270,321)])
link(onEvent3,5921312:doData,[(263,258)(263,363)])
}

|

Спасибо, через это все взлетело в раз)) я столько с ним промучился)
2.3.2. Максимальный размер изображений или видео без спойлера не должен превышать по большей стороне 600 пикселей.

карма: 0

0
Разработчик
Ответов: 25329
Рейтинг: 2070
#5: 2018-12-17 17:48:21 ЛС | профиль | цитата
ZloiDed писал(а):
Спасибо, через это все взлетело в раз)) я столько с ним промучился)

Ну и нафига ты мой пост скопировал, только портянку растянул и коды попортил, просто бы ответил, этого бы хватило.
карма: 19

0
Ответов: 16406
Рейтинг: 1209
#6: 2018-12-17 18:15:59 ЛС | профиль | цитата
ZloiDed писал(а):
Спасибо
Спасибо - здесь это "пальчик вверх".
карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8254
Рейтинг: 773
#7: 2018-12-17 18:34:03 ЛС | профиль | цитата
Tad писал(а):
"пальчик вверх"

Ага, средний
карма: 14

0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)