Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как изменить цвет фона в html странице? [D7, WinXP]


Неумный ©   (2005-03-10 19:15:00) 

Сабж.Вопрос, правда, немного не потеме.Но как то надо.Ессно, станица на компе, а не в сети.И другой вопрос: возможно ли это вообще? На яве я это видел.Если вопрос глупый, скажите.


ShimON   (2005-03-12 21:50:00) [1]

:) Специально для ленивых :)
Пример исполнения ява скрипта в TWebBrowser
uses
 MSHTML_TLB, SHDocVw, ShellAPI;

// function to execute a script function

function ExecuteScript(doc: IHTMLDocument2; script: string; language: string):
 Boolean;
var
 win: IHTMLWindow2;
 Olelanguage: Olevariant;
begin
 if doc <> nil then
 begin
   try
     win := doc.parentWindow;
     if win <> nil then
     begin
       try
         Olelanguage := language;
         win.ExecScript(script, Olelanguage);
       finally
         win := nil;
       end;
     end;
   finally
     doc := nil;
   end;
 end;
end;

// 2 Examples how to login to gmx homepage

procedure FillInGMXForms(WB: ShDocVW_TLB.IWebbrowser2; IDoc1: IHTMLDocument2;
 Document: Variant; AKennung, APasswort: string);
const
 IEFields: array[1..4] of string = ('INPUT', 'text', 'INPUT', 'password');
var
 IEFieldsCounter: Integer;
 i: Integer;
 m: Integer;
 ovElements: OleVariant;
begin
 if Pos('GMX - Homepage', Document.Title) <> 0 then

   while WB.ReadyState <> READYSTATE_COMPLETE do
     Application.ProcessMessages;

 // count forms on document and iterate through its forms
 IEFieldsCounter := 0;
 for m := 0 to Document.forms.Length - 1 do
 begin
   ovElements := Document.forms.Item(m).elements;

   // iterate through elements
   for i := ovElements.Length - 1 downto 0 do
   begin
     try
       // if input fields found, try to fill them out
       if (ovElements.item(i).tagName = IEFields[1]) and
         (ovElements.item(i).type = IEFields[2]) then
       begin
         ovElements.item(i).Value := AKennung;
         Inc(IEFieldsCounter);
       end;

       if (ovElements.item(i).tagName = IEFields[3]) and
         (ovElements.item(i).type = IEFields[4]) then
       begin
         ovElements.item(i).Value := APasswort;
         Inc(IEFieldsCounter);
       end;
     except
       // failed...
     end;
   end; { for i...}
 end; { for m }
 // if the fields are filled in, submit.
 if IEFieldsCounter = 3 then
   ExecuteScript(iDoc1, 'document.login.submit()',
     'JavaScript');
end;

function LoginGMX_IE(AKennung, APasswort: string): Boolean;
var
 ShellWindow: IShellWindows;
 WB: ShDocVW_TLB.IWebbrowser2;
 spDisp: IDispatch;
 IDoc1: IHTMLDocument2;
 Document: Variant;
 k: Integer;
begin
 ShellWindow := CoShellWindows.Create;
 // get the running instance of Internet Explorer
 for k := 0 to ShellWindow.Count do
 begin
   spDisp := ShellWindow.Item(k);
   if spDisp = nil then
     Continue;
   // QueryInterface determines if an interface can be used with an object
   spDisp.QueryInterface(iWebBrowser2, WB);
   if WB <> nil then
   begin
     WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
     if iDoc1 <> nil then
     begin
       WB := ShellWindow.Item(k) as ShDocVW_TLB.IWebbrowser2;
       Document := WB.Document;
       // if GMX page...
       FillInGMXForms(WB, IDoc1, Document, AKennung, APasswort);
     end; { idoc <> nil }
   end; { wb <> nil }
 end; { for k }
end;

// Example 1: Navigate to the gmx homepage in the IE browser an login

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShellExecute(Handle,
   'open',
   ' http://www.gmx.ch',
   nil,
   nil,
   SW_SHOW);
 Sleep(2000);
 LoginGMX_IE('user@gmx.net', 'pswd');
end;

// Example 2: navigate to the gmx homepage in the Webbrowser an login

procedure TForm1.Button2Click(Sender: TObject);
var
 IDoc1: IHTMLDocument2;
 Web: ShDocVW_TLB.IWebBrowser2;
begin
 Webbrowser1.Navigate(' http://www.gmx.ch');
 while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
   Application.ProcessMessages;
 Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc1);
 Web := WebBrowser1.ControlInterface;
 FillInGMXForms(Web, iDoc1, Webbrowser1.Document, 'user@gmx.net', 'pswd');
end;


Fenik   (2005-03-12 21:47:00) [2]

Мне лень.


ShimON   (2005-03-12 21:46:00) [3]

Лень по-моему тебе - разоьраться. Тебе это надо или кому??


Неумный   (2005-03-12 21:37:00) [4]

Все лень что ли?


Неумный   (2005-03-11 18:41:00) [5]

Посмотрел, поискал...это вроде надо как-то через ком делать, а у меня с этом туго...может, кто даст пример скрипта, изменяющий цвет фона страницы?


Zeqfreed   (2005-03-10 20:39:00) [6]

Неумный   (10.03.05 20:09) [3]

uses MSHTML_TLB
TWebBrowser.Document
http://msdn.rambler.ru/srch?words=IHTMLDocument2&set=msdn

http://search.rambler.ru/srch?old_q=HTML+%F6%E2%E5%F2+%F4%EE%ED%E0&words=HTML+%E7%E0%E4%E0%F2%FC+%F6%E2%E5%F2+%F4%EE%ED%E0&set=www

p.s. если ссылка не будет работать, попробуй её "склеить"


Неумный   (2005-03-10 20:10:00) [7]

В TWebBrowser


Неумный   (2005-03-10 20:09:00) [8]

Можешь использовать IHTMLDocument2, TWebBrowser с закладки Internet может предоставить данный интерфейс.
Что до меня недоперло... вроде я там такой переменной "фон" не нашел...как использовать-то?


Zeqfreed   (2005-03-10 19:38:00) [9]

Неумный   (10.03.05 19:15)
Можешь использовать IHTMLDocument2, TWebBrowser с закладки Internet может предоставить данный интерфейс.


nes   (2005-03-10 19:22:00) [10]

Ум...не доганяю, тебе програмно это нада или через нотепаде тоже можно=) Конкретней...


Наверх

Титульная страница Поиск, карта сайта Написать письмо