tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
13
ZUGRIFFE
1607
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Nov 2002
    Beiträge
    983
    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!
     

  2. #2
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Zum Öffnen einer URL im Standardbrowser:
    Code :
    1
    2
    3
    
    uses ShellApi;
    // ...
    ShellExecute(Handle, 'open', 'http://www.tutorials.de', '', '', 0);
     

  3. #3
    Registriert seit
    Nov 2002
    Beiträge
    983
    Gibt es so auch eine Möglichkeit, beispielsweise den CD-Rom-Ordner zu öffnen?
     

  4. #4
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Klar geht das auch, das müsste dann aber (logischerweise) etwas anders aussehen:
    Code :
    1
    2
    3
    4
    5
    6
    
    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/de...ellexecute.asp
     

  5. #5
    Registriert seit
    Nov 2002
    Beiträge
    983
    Vielen Dank!
    Der von dir gepostete Code setzt aber vorraus, dass die exe bereits auf der CD ist, oder?
     

  6. #6
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    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.
     

  7. #7
    Registriert seit
    Nov 2002
    Beiträge
    983
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    
    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!
     

  8. #8
    Registriert seit
    Aug 2003
    Ort
    Berlin
    Beiträge
    1.362
    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
     

  9. #9
    Registriert seit
    Apr 2001
    Ort
    Hamburg
    Beiträge
    1.309
    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.
     
    --
    GNU/Linux - Weil man echte Freunde nicht kaufen kann

  10. #10
    Registriert seit
    Aug 2003
    Ort
    Berlin
    Beiträge
    1.362
    jo das stimmt wohl ... ich such das mal bzw. versuch es mal zu rekonstroieren. bis gleich.

    Andy.C
     

  11. #11
    Registriert seit
    Aug 2003
    Ort
    Berlin
    Beiträge
    1.362
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Form2.ShowModal;
    end;

    procedure TForm1.Button3Click(Sender: TObject);
    begin
    Form3.Show;
    end;


    procedure TForm1.Button4Click(Sender: TObject);
    begin
    uses ShellApi;
    // ...
    ShellExecute(Handle, 'open', 'http://www.tutorials.de', '', '', 0);
    end;

    end.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ bei den ersten zwei buttons funktioniert alles nur eben beim dritten nicht mit dem uses shellApi etc.
    ich bin kommpletter anfänger und wüsst jetzt nur zu gern wo liegt mein gehler.


    Andy.C
     

  12. #12
    Registriert seit
    Aug 2003
    Ort
    Berlin
    Beiträge
    1.362
    jo ich habs selber hinbekommen.

    das uses ShellApi; kommt ohne das uses in die obere kategorie bei uses rein
    der rest eben wie beim mir im fehler zu sehen bei dem button.
    für all die jenigen die intresse haben wie das geht!
    ~~~~~~~~~~~~~~~
    unit liquid;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, InvokeRegistry, Rio, SOAPHTTPClient, OleCtrls, SHDocVw,
    MPlayer, ExtCtrls, ToolWin, ComCtrls, ShellApi;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel; ........ // rest abgeschnitten
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    der button
    ~~~~~~~~~~~~~~~~~~~
    procedure TForm1.Button4Click(Sender: TObject);
    begin
    ShellExecute(Handle, 'open', 'http://www.tutorials.de', '', '', 0);
    end;

    end.
    ~~~~~~~~~~~~~~~~~~~

    soo der fehler ist behoben--

    danke trtzodem für die versuchte hilfe.

    Andy.C
     

  13. #13
    freakone_media Tutorials.de Gastzugang
    hallo ich habe den code
    Code :
    1
    2
    
    cd_dir := ExtractFilePath(Application.ExeName); // erst holst Du Dir den Pfad der eigenen Anwendung
    ShellExecute(Handle, 'open', PChar(cd_dir), nil, nil, SW_SHOWNORMAL);
    auch einmal ausprobiert.
    Er funktioniert einwandfrei. Kann mir noch jemand sagen, wie ich den Pfad weiter führen kann?
    Denn wenn die Datei im Hauptverzeichnis der CD liegt (wäre bei mir E:\) müsste ich um bestimmte Dateien zu öffnen noch in ein Anderes Verzeichnis wechseln.
    Wie funktioniert das?

    edit: habs schon gefunden. Die Variable cd_rom hat ja den Datentyp string.
    Geändert von freakone_media (10.12.03 um 22:48 Uhr)
     

  14. #14
    SiegfriedXX SiegfriedXX ist offline Grünschnabel
    Registriert seit
    Apr 2007
    Beiträge
    1
    Hallo.. gehört zwar nicht ganz zum thema aber ich find leider nu nirgens im netz eine antwort auf diese frage...


    ich würde gern in Delphi 6 oder höher (Benutz Delphi 7) abfragen, ob ein exe (Anwendung) bereits gestartet ist... der wert der zurück gegeben werden soll ist halt 0 für nicht gestartet und 1 für gestartet...

    eigendlich ganz einfach aber wohl so eifnach das man an der lösung jedesmal vorbei rennt..

    weiß da jemand wie ichd as hinbekomm mit funktion oder wie auch imemr

    ich weiß das shellexecute eine anwendung ausführt aber wie fragt man diese dann ab..



    Sinn der sache ist.. ein programm was die ganze zeit im Hintergrund laufen soll und jede minute oder sekunde (wie auch immer per timer ja zu lösen) abfragt ob sichd as programm nciht beendet hat durhc einen fehler.. falls ja dies wieder startet aber ich interessiere mich nur für die abfrage der anwendung die gestartet ist (sein soll)


    Danke für hilfen



    ____

    EDIT:

    hat sich erledigt...
    wer wissen will wie sollte heir gucken:

    http://www.delphipraxis.net/topic309...ng+laeuft.html
    Geändert von SiegfriedXX (25.06.07 um 18:15 Uhr)
     

Ähnliche Themen

  1. Windows XP - Link in eMail öffnet falschen Browser
    Von tombe im Forum Microsoft Windows
    Antworten: 2
    Letzter Beitrag: 18.11.10, 14:03
  2. Antworten: 6
    Letzter Beitrag: 03.10.06, 21:04
  3. HTML-Formular öffnet falschen Browser.
    Von cameeel im Forum Coders Talk
    Antworten: 7
    Letzter Beitrag: 24.05.05, 09:31
  4. Mein Browser öffnet manche seiten nicht
    Von Cadillac im Forum Internet, DSL & Flatrate
    Antworten: 3
    Letzter Beitrag: 05.07.03, 13:49
  5. Pop up Menü öffnet sich nicht im Browser
    Von sunshineworld im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 26.06.02, 11:04