Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Управлени Explorer   Найти похожие ветки 

 
Sesh   (2003-08-31 23:20) [0]

Мастера, подскажите, в эксплорере есть эдит, как мне в этот эдит занести текст?


 
KosilkA   (2003-08-31 23:54) [1]

http://delphimaster.net/view/4-1062140243/


 
Sesh   (2003-08-31 23:59) [2]

Там непонятно что ....


 
KosilkA   (2003-09-01 00:54) [3]

странно а у меня работает))


 
Sesh   (2003-09-01 23:11) [4]

Да, я тоже попробовал, заработало, но ищет только в 1-ом фрейме, а вот как задат ему фрейм в котором искать?


 
Sesh   (2003-09-01 23:14) [5]

Писал Opuhshii © Следующее:
(29.08.03 23:24) [5]
"как мне найти открытый Internet Explorer "
IShellWindows - спасет отца русской демократии,..

"в input занести текст"
на то у IWebBrowser2 есть Document, тот что IHTMLDocument2,
структура самого HTML вам знакома?,. вот и хорошо,..
читайте о IHTML**** и в частности о IHTMLInputElement

а вот и пример к выше написаному бреду,. .)))

procedure TForm1.Button1Click(Sender: TObject);
var
SW:Variant;
WB:Variant;
Doc:Variant;
Inputs:Variant;
I,J:Integer;
begin
SW:=CoShellWindows.Create;
for I:=0 to SW.Count-1 do begin
WB:=SW.Item(I);
try
Doc:=WB.Document;
Inputs:=Doc.all.tags("INPUT");
for J:=0 to Inputs.Length-1 do begin
Inputs.item(J).value:="Hello World";
end;
except
// что-то не то.. много вариантов что может быть не то,. :)
end;
end;
end;

в данном примере,
SW - IShellWindows
WB - IWebBrowser2
Doc - IHTMLDocument2
Inputs - IHTMLElementCollection
где каждый item - IHTMLInputElement,...

да,.. в uses добавить: SHDocVw и MSHTML. и не просто дабывить, а изучить!

Как задат ему фрейм в котором происходит вставка Hello Word??? Может кто знает?


 
Opuhshii   (2003-09-02 11:22) [6]

знает конечно,..
посмотри IHTMLDocument2


 
int64   (2003-09-02 12:07) [7]

Sesh © (01.09.03 23:11) [4]

> а вот как задат ему фрейм в котором искать?

Вот функция, через которую можно получить доступ к фрейму документа как к IWebBrowser2:

function GetFrame(Document: IHTMLDocument2; FrameNo: Integer): IWebbrowser2;
var
OleContainer: IOleContainer;
enum: IEnumUnknown;
unk: IUnknown;
Fetched: PLongint;
begin
// while ReadyState <> READYSTATE_COMPLETE do
// Forms.Application.ProcessMessages;
if Assigned(Document) then
begin
Fetched := nil;
OleContainer := Document as IOleContainer;
OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum);
Enum.Skip(FrameNo);
Enum.Next(1, Unk, Fetched);
Result := Unk as IWebbrowser2;
end else Result := nil;
end;


 
Sesh   (2003-09-02 22:52) [8]

Ребят, тяжело жить бестолковым, как мне теперь объединиь эти функции, получается несовместимость типов, а если я в -ой ставлю что Doc - IHTMLDocument2 то в других вещях проблема, 2 дня уже мучаюсь и не домучаю, как это сделать?
Или может есть примеры на эту тему, киньте на sesh@ua.fm
Спасибо.


 
int64   (2003-09-03 04:26) [9]

Объявляй функцию так:

function GetFrame(Document: IDispatch; FrameNo: Integer): IWebbrowser2;

Юзай так:

while My_IWebbrowser2.ReadyState <> READYSTATE_COMPLETE do
Forms.Application.ProcessMessages;
New_My_IWebbrowser2:= GetFrame(My_IWebbrowser2.Document, 0);


Это как один из вариантов достуа к фрейму.
Можно "достучаться" через IHTMLWindow2 или через Variant-ы.

> Или может есть примеры на эту тему, киньте на sesh@ua.fm

Пол инета есть примеров.
Ты лучше покажи, что ты делаешь.


 
Sesh   (2003-09-03 08:55) [10]

int64 (03.09.03 04:26) [9]

>Ты лучше покажи, что ты делаешь.

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


 
KosilkA   (2003-09-03 14:08) [11]

посмотри в блокноте каким именем назван нужный тебе input (input type="text" name=" login" или чтото типа этого) , а дальше примерно так :

if Inputs.item(J).name:="login" then Inputs.item(J).value:="Василий Пукин"

у каждого обьекта в хтмл-форме есть своё имя , и есть также свойства и события , как и в дельфях .. кусок программы управляющий обьектом input у тебя уже есть ....ничего сложного))))


 
Sesh On Work   (2003-09-03 14:55) [12]

Да, оно-то все получилось, даже если не брать по имени, а по № инпута, но проблема с фреймом так и не решилась, оно все делает только в 1-ом фрейме, а в форме из 3 и вот надо перейти в 3-й, int64 дал пример про фрейм, но связать 2 части Opuhshii и int64 не получается, типы разные. Может знаешь как в примере, написанном Opuhshii (через варианты) достучаться до нужного фрейма?


 
Ihor Osov'yak   (2003-09-04 01:54) [13]

2 Sesh On Work




unit fIEFrames;

interface
uses Mshtml;

type
TOneStepSearchCondForHtmlDocWithFrames = function (iDoc:IHtmlDocument2; addPrm:integer):boolean;

function FinderFirstCondForHtmlDocWithFrames(iDoc: IHtmlDocument2;
addPrm: integer;
aDoer: TOneStepSearchCondForHtmlDocWithFrames): boolean;

function FinderLastCondForHtmlDocWithFrames(iDoc: IHtmlDocument2;
addPrm: integer;
aDoer: TOneStepSearchCondForHtmlDocWithFrames): boolean;

implementation

uses sysutils;

function FinderFirstCondForHtmlDocWithFrames(iDoc: IHtmlDocument2;
addPrm: integer;
aDoer: TOneStepSearchCondForHtmlDocWithFrames): boolean;
{ The procedure aDoer will be caused for each IHtmlDocument2, beginning
from main and finishing any level of frames
while aDoer will return false;
}
var frames: IHTMLFramesCollection2;
i: integer;
ov1: OleVariant;
iDisp: IDispatch;
IWindow2: IHTMLWindow2;
begin
result := false;
if not assigned(aDoer) then Exit;
result := aDoer(iDoc,addPrm);
if result then Exit;
frames := iDoc.frames;
if not assigned(frames) then exit;
if frames.length = 0 then exit;

for i := 1 to frames.length do begin
ov1 := i-1;
try
iDisp := frames.item(ov1);
iDisp.QueryInterface(IHTMLWindow2,IWindow2);
if assigned(IWindow2)
then begin
result := false;
try
if assigned(IWindow2.document)
then
result := FinderFirstCondForHtmlDocWithFrames(IWindow2.document,addPrm,aDoer);
except
end;
if result then exit;
end;
except
{ ShowMessage("Find error !!!");}
end;
end;
end;

function FinderLastCondForHtmlDocWithFrames(iDoc: IHtmlDocument2;
addPrm: integer;
aDoer: TOneStepSearchCondForHtmlDocWithFrames): boolean;
{ The procedure aDoer will be caused for each IHtmlDocument2, beginning
from main and finishing any level of frames
while aDoer will return false;
}
var frames: IHTMLFramesCollection2;
i: integer;
ov1: OleVariant;
iDisp: IDispatch;
IWindow2: IHTMLWindow2;
begin
result := false;
if not assigned(aDoer) then Exit;
result := aDoer(iDoc,addPrm);
if result then Exit;
frames := iDoc.frames;
if not assigned(frames) then exit;
if frames.length=0 then exit;

for i := frames.length downto 1 do begin
ov1 := i-1;
try
iDisp := frames.item(ov1);
iDisp.QueryInterface(IHTMLWindow2,IWindow2);
if assigned(IWindow2)
then begin
result := false;
try
if assigned(IWindow2.document)
then
result := FinderLastCondForHtmlDocWithFrames(IWindow2.document,addPrm,aDoer);
except
end;
if result then exit;
end;
except
{ ShowMessage("Find error !!!");}
end;
end;
end;

end.


Зы - но если фрейм с другого сайта - то такой переход по соображениям безопасности заблокирован.. Как его обойти, есть несколько способов, но это пока на уровне идеи, практически пока необходимость в реализации не возникала..



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.035 c
8-41738
miguel1
2003-07-15 16:54
2003.11.13
Проблема с записью WAV файла через MediaPlayer


1-41548
mabus
2003-10-27 18:52
2003.11.13
Экспорт TToolBar из Dll-ки


1-41450
незнайка
2003-10-29 10:39
2003.11.13
Tthread


14-41944
AAA3AAA
2003-10-20 14:13
2003.11.13
как деньги продавцу в штаты заслать?


14-41874
Думкин
2003-10-24 04:51
2003.11.13
С днем рождения! 24 октября.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский