Gruß und Bitte an alle Experten.
Ich ruf aus dem Hauptprogramm den als Standard eingestellten
Internet Browser mit einer bestimmten URL auf (mit function ExecuteApp).
Von der Seite hole ich mir die Information, die ich brauche.
Dann möchte ich den Browser wieder beenden und mein Programm soll die
Info verarbeiten.
Ablauf wäre also wie folgt (PSEUDO CODE)
Get URL von Liste
Call Browser mit URL
Get Info von Webseite
Close Browser
Get Next URL von Liste, und so fort bis Ende der Liste
Alles funktioniert bis auf: Close Browser
Anschließend Testcode vom Aufruf des Browsers und den Versuchen
ihn wieder zu schließen.
Button3 funktioniert, aber ist für mich unbrauchbar: Ich weiß ja
nicht, welchen Browser der User benutzt und habe daher auch
keinen Window Titel für FindWindow verfügbar.
Ich bitte um Hilfe:
4 StundenSuche in Foren und googeln haben mir keine Lösung gebracht.
-----------------------------------
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellApi;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
AppHandle: LongWord;
function ExecuteApp(fn: string): LongWord;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.ExecuteApp(fn: string): LongWord;
var
SHELLEXECUTEINFO: TSHELLEXECUTEINFO;
begin
result:= 0;
with SHELLEXECUTEINFO do begin
cbSize:= SizeOf(SHELLEXECUTEINFO);
fMask:= SEE_MASK_NOCLOSEPROCESS;
Wnd:= Application.Handle;
lpVerb:= 'Open';
lpFile:= PChar(fn);
lpParameters:= '';
lpDirectory:= '';
nShow:= SW_ShowNormal;
hInstApp:= 0;
end;
ShellExecuteEx(@SHELLEXECUTEINFO);
if (SHELLEXECUTEINFO.hInstApp > 32) then begin
result := SHELLEXECUTEINFO.hProcess;
// result := SHELLEXECUTEINFO.hInstApp; // geht auch nicht
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AppHandle := ExecuteApp('http://www.google.de');
// Browser erscheint, aber AppHandle ist unbrauchbar
end;
{ FUNKTIONIERT NICHT }
procedure TForm1.Button2Click(Sender: TObject);
begin
PostMessage(AppHandle,WM_Close,0,0);
end;
{ FUNKTIONIERT }
procedure TForm1.Button3Click(Sender: TObject);
begin
AppHandle := FindWindow(nil,'Firefox PC-Welt-Edition');
PostMessage(AppHandle,WM_Close,0,0);
end;
end.
[/FONT]
Ich ruf aus dem Hauptprogramm den als Standard eingestellten
Internet Browser mit einer bestimmten URL auf (mit function ExecuteApp).
Von der Seite hole ich mir die Information, die ich brauche.
Dann möchte ich den Browser wieder beenden und mein Programm soll die
Info verarbeiten.
Ablauf wäre also wie folgt (PSEUDO CODE)
Get URL von Liste
Call Browser mit URL
Get Info von Webseite
Close Browser
Get Next URL von Liste, und so fort bis Ende der Liste
Alles funktioniert bis auf: Close Browser
Anschließend Testcode vom Aufruf des Browsers und den Versuchen
ihn wieder zu schließen.
Button3 funktioniert, aber ist für mich unbrauchbar: Ich weiß ja
nicht, welchen Browser der User benutzt und habe daher auch
keinen Window Titel für FindWindow verfügbar.
Ich bitte um Hilfe:
4 StundenSuche in Foren und googeln haben mir keine Lösung gebracht.
-----------------------------------
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellApi;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
AppHandle: LongWord;
function ExecuteApp(fn: string): LongWord;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.ExecuteApp(fn: string): LongWord;
var
SHELLEXECUTEINFO: TSHELLEXECUTEINFO;
begin
result:= 0;
with SHELLEXECUTEINFO do begin
cbSize:= SizeOf(SHELLEXECUTEINFO);
fMask:= SEE_MASK_NOCLOSEPROCESS;
Wnd:= Application.Handle;
lpVerb:= 'Open';
lpFile:= PChar(fn);
lpParameters:= '';
lpDirectory:= '';
nShow:= SW_ShowNormal;
hInstApp:= 0;
end;
ShellExecuteEx(@SHELLEXECUTEINFO);
if (SHELLEXECUTEINFO.hInstApp > 32) then begin
result := SHELLEXECUTEINFO.hProcess;
// result := SHELLEXECUTEINFO.hInstApp; // geht auch nicht
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AppHandle := ExecuteApp('http://www.google.de');
// Browser erscheint, aber AppHandle ist unbrauchbar
end;
{ FUNKTIONIERT NICHT }
procedure TForm1.Button2Click(Sender: TObject);
begin
PostMessage(AppHandle,WM_Close,0,0);
end;
{ FUNKTIONIERT }
procedure TForm1.Button3Click(Sender: TObject);
begin
AppHandle := FindWindow(nil,'Firefox PC-Welt-Edition');
PostMessage(AppHandle,WM_Close,0,0);
end;
end.
[/FONT]