Button öffnet Browser.

Moritz123

Erfahrenes Mitglied
Hallo!

ich möchte in Delphi eine *.exe schreiben, die später auf CD gebrannt ein Autorun darstellen soll. In diese exe will ich lediglich einen Button einbauen, der dann eine html-datei im Standard-Browser öffnet.
Wie bekomme ich das hin?
Vielen Dank!
 

Dario Linsky

Erfahrenes Mitglied
Zum Öffnen einer URL im Standardbrowser:
Code:
uses ShellApi;
// ...
ShellExecute(Handle, 'open', 'http://www.tutorials.de', '', '', 0);
 

Dario Linsky

Erfahrenes Mitglied
Klar geht das auch, das müsste dann aber (logischerweise) etwas anders aussehen:
Code:
var
  cd_dir: String;
begin
  // ...
  cd_dir := ExtractFilePath(Application.ExeName); // erst holst Du Dir den Pfad der eigenen Anwendung
  ShellExecute(Handle, 'explore', PChar(cd_dir), '', '', 0);
Damit öffnest Du dann den Windows Explorer mit dem angegebenen Verzeichnis.

Mehr über ShellExecute findest Du unter http://msdn.microsoft.com/library/d...rm/shell/reference/functions/shellexecute.asp
 

Dario Linsky

Erfahrenes Mitglied
Der Code von mir öffnet den Explorer mit dem Verzeichnis, in dem die Anwendung selbst liegt. Wenn Du unabhängig davon immer das CDROM-Laufwerk haben willst, müsstest Du erst noch mit diesem Tipp den Buchstaben des Laufwerks rausfinden. Das kannst Du dann über ShellExecute wie gehabt öffnen.
 

Moritz123

Erfahrenes Mitglied
Das heißt, es sollte sich bei deiner lösung in jedem fall das verzeichnis öffnen, indem die datei liegt - egal ob cdrom oder nicht.
Wenn ja, dann hab ich was falsch gemacht - bei mir passiert nichts.
Hier mal der Quellcode:
Code:
unit autostarter;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, ShellApi;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  cd_dir: String;


implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', 'index.html', '', '', 0);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
cd_dir := ExtractFilePath(Application.ExeName);
ShellExecute(Handle, 'explore', PChar(cd_dir), '', '', 0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
halt;
end;

end.

Vielen Dank auch für die bisherige Hilfe!
 

liquidbeats

Erfahrenes Mitglied
ich würde gerne wissen warum bei mir der shell ececute nicht funktioniert.
also ich hab gegoogelt und diverse sachen finden können ( ich such nen tut wo mir beschrieben wird wie ich bei delphi einen button erstelle der per knopfdruck eine mir virgegebene url öffnet) mit unter waren da schon fertige quell texte für buttons.
das problem war nur wenn ich es getestet habe hat er shellexecute nicht akzeptiert oder uses etc.
warum is das so und wo mach ich da fehler ?
würde mich freuen wenn mir daraufhin jemand antwortet ..

Gruß Andy.C
 

Patrick Kamin

Erfahrenes Mitglied
-

Ohne deinen Code können wir da nicht viel tun, da hier bestimmt keiner hellsehen kann ;)

Um Shellexecute() zu nutzen, muss zuvor die Unit ShellApi eingebunden werden. Sowas sollte aber auch in der Delphi-Hilfe stehen.