Вверх ↑
Этот топик читают: Гость
Ответов: 34
Рейтинг: 6
#1: 2009-09-29 23:14:10 ЛС | профиль | цитата
Web Browser не понимает простых простых нажатий, к примеру Ctrl+Enter и т.д
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 314
Рейтинг: 8
#2: 2017-09-23 22:24:58 ЛС | профиль | цитата
И ctrl + V, и он dblclick не реагирует и keyDown =(

Редактировалось 1 раз(а), последний 2017-09-23 22:26:58
карма: 1

0
Ответов: 1836
Рейтинг: 161
#3: 2017-09-25 04:29:02 ЛС | профиль | цитата
Где-то в интернете видел, как это лечится, но у меня не помогло (в коде какие-то замены производятся, т.к. в дельфийском компоненте тоже эти сочетания не работают).
карма: 6
0
Ответов: 314
Рейтинг: 8
#4: 2017-09-25 18:21:19 ЛС | профиль | цитата
3042, вот твое сообщение http://forum.hiasm.com/post/281317 (тема 2008 года, но она безумно крутая).
Если можно работать с html кодом, внося в input данные, то можно ли удалить например background картинку сайта или даже целые блоки, которые мне не нужны ?!

Редактировалось 1 раз(а), последний 2017-09-25 18:22:29
карма: 1

0
Ответов: 1836
Рейтинг: 161
#5: 2017-09-26 16:42:51 ЛС | профиль | цитата
Master4eG, конечно можно. Вот хорошая статья: http://parsing-and-i.blogspot.fr/2009/06/twebbrowser-oleobject.html.
карма: 6
0
Ответов: 314
Рейтинг: 8
#6: 2017-09-26 20:13:19 ЛС | профиль | цитата
3042, спасибо большое за наводку. Вот он, тот самый момент когда строчки, не кубики hiasm
3042, если осталось в голове что-то и если не трудно, поправь пожалуйста точки.

У меня 5 FieldName:
Account[username]
Account[password]
Account[password2]
Account[email]
Account[captcha_result]

Из них - 2 поля паролей статические (на них не обязательно выводить data-точки, можно внутри оставить), остальные динамические. То есть как я понимаю нужно...
Нужно добавить data-точки, это вроде легко. И добавить еще строк))
  begin
FormItem := PKOLWebBrowser(wb).OleObject.Document.forms.Item(i);
for k:=0 to FormItem.length-1 do
if FormItem.Item(k).Name = ToStringEvent(FieldName1) then FormItem.Item(k).Value := ToStringEvent(FieldValue1);
if FormItem.Item(k).Name = ToStringEvent(FieldName2) then FormItem.Item(k).Value := ToStringEvent(FieldValue2);
if FormItem.Item(k).Name = ToStringEvent(FieldName3) then FormItem.Item(k).Value := ToStringEvent(FieldValue3);
if FormItem.Item(k).Name = ToStringEvent(FieldName4) then FormItem.Item(k).Value := ToStringEvent(FieldValue4);
if FormItem.Item(k).Name = ToStringEvent(FieldName5) then FormItem.Item(k).Value := ToStringEvent(FieldValue5);
end;
Первое поле заполняется, далее runtime ошибка и программа вылетает...

--- Добавлено в 2017-09-26 20:19:00

Еще интересно следующее, это получается Delphi ?! Какой синтаксис выбирать в notepad++ ?!
Выбираю pascal и становиться что-то более не менее понятно, это насколько помню почти одно и тоже.
_______________________________________
Кликаем по кнопке
unit HiAsmUnit;

interface

uses kol,Share,Debug,KOLSHDocVw;

type
THiAsmClass = class(TDebug)
private
wb:PControl;
public
h:THI_Event;
FieldID:THI_Event;
FieldValue:THI_Event;

procedure doSet(var dt:TData; index:word);

end;

implementation

type
TKOLWebBrowser = PWebBrowser;
PKOLWebBrowser = PWebBrowser;

procedure THiAsmClass.doSet;
var i,k:integer;
FormItem:Variant;
begin
if not assigned (wb) then wb := PControl(ToIntegerEvent(h));
if PKOLWebBrowser(wb).OleObject.Document.all.tags('FORM').Length = 0 then exit;
for i:=0 to PKOLWebBrowser(wb).OleObject.Document.forms.Length-1 do
begin
FormItem := PKOLWebBrowser(wb).OleObject.Document.forms.Item(i);
for k:=0 to FormItem.length-1 do
if FormItem.Item(k).id = ToStringEvent(FieldID) then begin FormItem.Item(k).click end;
end;
end;

end.

_______________________________________
Меняем поле input
unit HiAsmUnit;

interface

uses kol,Share,Debug,KOLSHDocVw;

type
THiAsmClass = class(TDebug)
private
wb:PControl;
public
h:THI_Event;
FieldName:THI_Event;
FieldValue:THI_Event;

procedure doSet(var dt:TData; index:word);

end;

implementation

type
TKOLWebBrowser = PWebBrowser;
PKOLWebBrowser = PWebBrowser;

procedure THiAsmClass.doSet;
var i,k:integer;
FormItem:Variant;
begin
if not assigned (wb) then wb := PControl(ToIntegerEvent(h));
if PKOLWebBrowser(wb).OleObject.Document.all.tags('FORM').Length = 0 then exit;
for i:=0 to PKOLWebBrowser(wb).OleObject.Document.forms.Length-1 do
begin
FormItem := PKOLWebBrowser(wb).OleObject.Document.forms.Item(i);
for k:=0 to FormItem.length-1 do
if FormItem.Item(k).Name = ToStringEvent(FieldName) then FormItem.Item(k).Value := ToStringEvent(FieldValue);
end;
end;

end.

2 примера и в них всего 1 строка различается
Нужны комментарии =(
_______________________________________
Столько примеров в интернете все темы 2000х годов, видимо Delphi реально умирает, или это никому не нужно...
_______________________________________
if not assigned (wb) then wb := PControl(ToIntegerEvent(h)); //(*если документ получен*)
нашел только 1 комментарий к этой строке (правда какой документ и кем получен не понятно) и понял что такое THI_Event :oops:
Редактировалось 8 раз(а), последний 2017-09-26 20:50:07
карма: 1

0
Ответов: 1836
Рейтинг: 161
#7: 2017-09-27 06:34:57 ЛС | профиль | цитата
Master4eG писал(а):
Первое поле заполняется, далее runtime ошибка и программа вылетает...


Попробуй так:

begin
FormItem := PKOLWebBrowser(wb).OleObject.Document.forms.Item(i);
for k:=0 to FormItem.length-1 do
begin
if FormItem.Item(k).Name = ToStringEvent(FieldName1) then FormItem.Item(k).Value := ToStringEvent(FieldValue1);
if FormItem.Item(k).Name = ToStringEvent(FieldName2) then FormItem.Item(k).Value := ToStringEvent(FieldValue2);
if FormItem.Item(k).Name = ToStringEvent(FieldName3) then FormItem.Item(k).Value := ToStringEvent(FieldValue3);
if FormItem.Item(k).Name = ToStringEvent(FieldName4) then FormItem.Item(k).Value := ToStringEvent(FieldValue4);
if FormItem.Item(k).Name = ToStringEvent(FieldName5) then FormItem.Item(k).Value := ToStringEvent(FieldValue5);
end;
end;
Т.е. после цикла for составной оператор begin/end, т.к. без него выполняется только одна команда - до точки с запятой.

Master4eG писал(а):
2 примера и в них всего 1 строка различается

Код, по сути, тот же самый = перебор форм и их элементов. А различие в имени атрибута для проверки и вызываемом методе или свойстве (Value или Click).

Master4eG писал(а):
нашел только 1 комментарий к этой строке (правда какой документ и кем получен не понятно) и понял что такое THI_Event

Это означает, что если переменная wb не назначена, то происходит назначение её. ToIntegerEvent - эта функция возвращает число с верхней точки компонента, а PControl - просто приведение к типу PControl (он тоже числовой, но Object Pascal строго следит за точным соответствием типов).

Master4eG писал(а):
Столько примеров в интернете все темы 2000х годов, видимо Delphi реально умирает, или это никому не нужно...

Просто всё, что можно было разобрать, уже разобрали тогда. Ничего принципиально нового тут не появилось. Помню, нужно было работать с мультимедиа в интерфейсе MCI, так читал книгу Фролова аж за 1994 год! И всё с тех пор работает, те же функции. Хотя в восьмёрках-десятках, может, что изменилось.
карма: 6
0
Ответов: 314
Рейтинг: 8
#8: 2017-09-27 15:40:01 ЛС | профиль | цитата
3042, спасибо еще раз, не буду пожалуй не себе не людям мозги пудрить. Ошибка выходит...
ActiveKOL.pas(564) Warning: Return value of function 'TEnumPropDesc.StringToValue' might be undefined
C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiInlineCode_3EB56D0.pas(52) Error: ';' expected but '.' found
C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiInlineCode_3EB56D0.pas(54) Error: Declaration expected but end of file found
C:\Program Files (x86)\Hiasm\Elements\delphi\code\hiMainForm_463EFA0.pas(10) Fatal: Could not compile used unit 'hiInlineCode_3EB56D0.pas'
Сборка завершена.

___________________________________________________________________
Ой, стоп, рааааботает
...
Так, получается можно добавить и строчку для клика на кнопку в конце.
___________________________________________________________________
3042,
Ваших очков не достаточно для голосования странная система рейтинга...
___________________________________________________________________

Надо сделать компонент
Пусть это будет мой первый компонент, попробую сделать простенький, даже иконку нарисую

Редактировалось 5 раз(а), последний 2017-09-27 16:15:40
карма: 1

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