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

Вниз

Прямой запуск файла из TWebBrowser1 ..   Найти похожие ветки 

 
Solidol   (2005-04-06 08:46) [0]

я уже 2а года не могу найти ответ...ни накаких форумах мне не могут дать ответ....суть вопроса такова:
Имеется компонент TWebBrowser1 на Form1....в TWebBrowser1 загружается страница index.html...на этой странице расположены ссылки на exe файл...но когда нажимаешь на эти ссылки винда хочет его сохранить...а как запустить сам файл на исполнение я незнаю...мне это надо для autorun’a....прошу помощи в этом вопросе


 
easy ©   (2005-04-06 09:31) [1]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, OleCtrls, SHDocVw;

type
 TForm1 = class(TForm)
   WebBrowser1: TWebBrowser;
   procedure WebBrowser1BeforeNavigate2(Sender: TObject;
     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
     Headers: OleVariant; var Cancel: WordBool);
   procedure FormCreate(Sender: TObject);
   procedure WebBrowser1DocumentComplete(Sender: TObject;
     const pDisp: IDispatch; var URL: OleVariant);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
   FNewWndProc, FOldWndProc: Pointer;
   h: HWND;
   def:boolean;
   procedure NewWndProc(var Message: TMessage);
   procedure DefineWndProc;

 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DefineWndProc;
begin
 h := GetWindow(GetWindow(WebBrowser1.Handle, GW_CHILD), GW_CHILD); // This was level 1
 FNewWndProc := Classes.MakeObjectInstance(NewWndProc);
 FOldWndProc := Pointer(GetWindowLong(h, GWL_WNDPROC));
 SetWindowLong(h, GWL_WNDPROC, Longint(FNewWndProc));
 def:=true;
end;

procedure TForm1.NewWndProc(var Message: TMessage);
var
 Doc,elem: oleVariant;
begin
 case Message.Msg of
   WM_LBUTTONDOWN: begin
       Doc := WebBrowser1.OleObject.document;
       try
         elem := Doc.elementFromPoint(Message.LParamLo, Message.LParamHi);
         if elem.tagName="A" then  begin
           ShellExecute(0, "open", pchar(elem.href), "", "", 0);
           exit;
         end;
       except
       end;
     end;
 end;
 Message.Result := CallWindowProc(FOldWndProc, h, Message.Msg,
   Message.WParam, Message.LParam);

end;

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
 Headers: OleVariant; var Cancel: WordBool);
begin
if def then
 SetWindowLong(h, GWL_WNDPROC, Longint(FOldWndProc));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 WebBrowser1.Navigate("index.html");
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
begin
 DefineWndProc;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if def then
 SetWindowLong(h, GWL_WNDPROC, Longint(FOldWndProc));
end;

end.


 
Solidol   (2005-04-07 09:29) [2]

выдаёт ошибку в
ShellExecute (0, "open", pchar(elem.href), "", "", 0);
[Error] Unit1.pas(57): Undeclared identifier: "ShellExecute"
----
смешно...но я забыл что где прописывать


 
Solidol   (2005-04-07 09:43) [3]

вспомнил...но появилась ошибка с нулём (0, "open",........


 
Solidol   (2005-04-07 09:44) [4]

и вообще со всей строчкой что-то не то (((


 
Rouse_ ©   (2005-04-07 10:55) [5]

uses ShellAPI

ShellExecute(Handle, "open", pchar(elem.href), nil, nil, SW_SHOW);


 
Solidol   (2005-04-07 11:51) [6]

уже разобрался...но пишет
[Error] Unit1.pas(56): Invalid typecast
ShellExecute(Handle, "open", pchar(elem.href),ошибка ShellExecute(Handle, "open", pchar(elem.href),


 
Solidol   (2005-04-07 11:52) [7]

не то...вот
[Error] Unit1.pas(56): Invalid typecast
ShellExecute(Handle, "open", pchar(elem.href), (тут ошибка)nil, nil, SW_SHOW);


 
Solidol   (2005-04-07 21:42) [8]

так и не разобрался в чём дело...пишет ошибка и всё тут...


 
Solidol   (2005-04-07 21:42) [9]

так и не разобрался в чём дело...пишет ошибка и всё тут...


 
Solidol   (2005-04-08 12:04) [10]

помогите разобратся...я после армии подзабыл...


 
easy ©   (2005-04-08 13:03) [11]

http://dfc.com.ru/shell.zip


 
Solidol   (2005-04-08 14:35) [12]

большое спасибо...буду заново всё вспоминать...



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

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

Наверх





Память: 0.48 MB
Время: 0.038 c
6-1112691724
_Andrey
2005-04-05 13:02
2005.07.11
popup сообщение


14-1118599120
cyborg
2005-06-12 21:58
2005.07.11
Удалённый доступ к файлам в виндовс ХР


14-1118188805
Crazy_Diman
2005-06-08 04:00
2005.07.11
работа с DrawDrid


14-1118329155
_tmp
2005-06-09 18:59
2005.07.11
Помогите настроить справку Windows SDK


6-1112097854
Laboris
2005-03-29 16:04
2005.07.11
Поиск компов с открытым портом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский