Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eintrag unter Startmenü\Programme (https://www.delphipraxis.net/35319-eintrag-unter-startmenue%5Cprogramme.html)

dreamweaver 5. Dez 2004 15:13


Eintrag unter Startmenü\Programme
 
Hallo!

Wie kann ich einen Eintrag unter \Startmenü\Programme machen???



:???:

fkerber 5. Dez 2004 15:16

Re: Eintrag unter Startmenü\Programme
 
Hi!

Herzlich Willkommen in der DP.

Bestimmt hilft dir das hier weiter:
http://www.delphipraxis.net/internal...fung+erstellen

Zum Startmenü:
Such mal nach Hier im Forum suchenspecial folder



Ciao Frederic

DP-Maintenance 5. Dez 2004 15:16

DP-Maintenance
 
Dieses Thema wurde von "Daniel" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.

dreamweaver 5. Dez 2004 16:50

Re: Eintrag unter Startmenü\Programme
 
Danke für deinen Tipp!! :xmas:

Leider hilft mir das nicht weiter.

:coder2:

fkerber 5. Dez 2004 16:51

Re: Eintrag unter Startmenü\Programme
 
Hi!

Wo hängst du denn?


Ciao Frederic

dreamweaver 5. Dez 2004 17:01

Re: Eintrag unter Startmenü\Programme
 
Ic hab mir einfach mal den code von der seite (http://www.delphipraxis.net/topic242...rknuepfung+ers ... +erstellen ) die mir angegeben hast genommen und eingefügt.

bei
var psl: IShellLink;

gibts eine Fehlermedlung

[Error] Unit1.pas(29): Undeclared identifier: 'IShellLink'
[Error] Unit1.pas(30): Undeclared identifier: 'IPersistFile'
[Error] Unit1.pas(40): Undeclared identifier: 'CoCreateInstance'
[Error] Unit1.pas(40): Undeclared identifier: 'CLSID_ShellLink'
[Error] Unit1.pas(42): Undeclared identifier: 'CLSCTX_INPROC_SERVER'
[Error] Unit1.pas(43): Undeclared identifier: 'IID_IShellLinkA'

teebee 5. Dez 2004 17:05

Re: Eintrag unter Startmenü\Programme
 
Lies Dir das posting nochmal genau durch: benötigt wird die unit ShlObj...

Gruß, teebee

dreamweaver 5. Dez 2004 17:08

Re: Eintrag unter Startmenü\Programme
 
Danke habs auch grad gelesen :idea: !! Danke

dreamweaver 5. Dez 2004 17:20

Re: Eintrag unter Startmenü\Programme
 
Muß nochmal kurz nerven. Schuldigung muss aber sein.

kann mir mal einer die zeile erklären:???

if CreateLink('d:\Datei.exe', 'c:\Verknüpfung.exe', 'Verknüpfung')

verstehe den aufbau nicht ganz :(

Dazu kommt das ich da noch den Fehler:

[Error] Unit1.pas(59): Declaration expected but 'IF' found
[Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'

bekomme.

fkerber 5. Dez 2004 17:22

Re: Eintrag unter Startmenü\Programme
 
Hi!

Zeig mal noch etwas mehr, um die Zeile herum. Der Fehler liegt anscheinend vor der besagten Zeile.


Ciao Frederic

dreamweaver 5. Dez 2004 17:31

Re: Eintrag unter Startmenü\Programme
 
Ich geb mal den ganzen Code preis


Code:
unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  activex, comobj, shlobj, StdCtrls;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}




function CreateLink(lpszPathObj,lpszPathLink,
  lpszDesc: string):Boolean;
var
  psl: IShellLink;
  ppf: IPersistFile;

const
  IID_IPersistFile:
     TGUID = (D1:$0000010B;
              D2:$0000;
              D3:$0000;
              D4:($C0,$00,$00,$00,$00,$00,$00,$46));
begin
  result := False;
  if SUCCEEDED(CoCreateInstance(CLSID_ShellLink,
                                nil,
                                CLSCTX_INPROC_SERVER,
                                IID_IShellLinkA,
                                psl)) then
    begin
      psl.SetPath(PChar(lpszPathObj));
      psl.SetDescription(PChar(lpszDesc));
      if SUCCEEDED(psl.QueryInterface(IID_IPersistFile,
                   ppf)) then
        begin
          ppf.Save(StringToOLEStr(lpszPathLink),TRUE);
          Result := true;
          ppf._Release; //---> Runtime-Error wenn aktiv
        end;
    end;
  psl._Release; // ---> Runtime-Error wenn aktiv
end;

//Aufruf:
  if CreateLink('d:\Datei.exe', 'c:\Verknüpfung.exe', 'Verknüpfung') then
    MessageDlg('Verknüpfung angelegt', mtInformation, [mbOk], 0);
end.

Ich hoffe das reciht aus?!

fkerber 5. Dez 2004 17:33

Re: Eintrag unter Startmenü\Programme
 
HI!

Du hast den Aufruf (also deine If-Anweisung) einfach so irgendwo hingeschrieben. Dann weiß er ja nicht, wann er sie ausführen soll etc. Also schreibe diese Zeile mal z.B. in eine Button-Click-Prozedur.


Ciao Frederic

dreamweaver 5. Dez 2004 17:48

Re: Eintrag unter Startmenü\Programme
 
:shock: is heut nich mein tag!

danke!!!!!!!


komme aber immernoch nicht mit der zeile klar!!!
Code:
if CreateLink('d:\Datei.exe', 'c:\Verknüpfung.exe', 'Verknüpfung') then

glkgereon 5. Dez 2004 17:56

Re: Eintrag unter Startmenü\Programme
 
ins blaue hinein, ohne den quelltext durchgeelesen zu haben:

CreateLink( ZuVerlinkendeDatei, DateiNameDesLinks, Beschreibung/Typ ): HatsGeklappt?

sprich du übergibst ihm den namen der exe-datei, den namen des zu erstekllenden links, und 'verknüpfung', wenn hinten true rauskommt hats geklappt...

dreamweaver 5. Dez 2004 18:13

Re: Eintrag unter Startmenü\Programme
 
Jo funktioniert soweit. Es wird aber nichst verknüpft. Die neue Datei startet nicht das gewünschte Programm. Das Programm zum erstellen der Linkdatei gibt ein fehler aus.

fkerber 5. Dez 2004 18:14

Re: Eintrag unter Startmenü\Programme
 
Hi!

Zitat:

Zitat von dreamweaver
Das Programm zum erstellen der Linkdatei gibt ein fehler aus.

Verrätst du uns auch bitte, welchen Fehler es denn ausgibt?


Ciao Frederic

glkgereon 5. Dez 2004 18:15

Re: Eintrag unter Startmenü\Programme
 
welchen zum beispiel? :roll:

dreamweaver 5. Dez 2004 18:43

Re: Eintrag unter Startmenü\Programme
 
acces violation at adress A7663168 <---Fehlermeldung

fkerber 5. Dez 2004 19:17

Re: Eintrag unter Startmenü\Programme
 
Hi!

Schonmal mit F7 durchgegangen, um herrauszufinden, an welcher Stelle der Fehler auftritt?


Ciao Frederic

dreamweaver 5. Dez 2004 21:23

Re: Eintrag unter Startmenü\Programme
 
ne Fehlermeldung bringt der pc mir nicht mit F7. Aber solbalt ich auch den Button klicke kommt ein error. Starte ich das Programm aus Delphi raus stürtzt mit Delphi ab!
Zitat:

Bin ich nur zu blöde oder is da ein Fehler den bis her alle übersehen haben????
:wiejetzt:

glkgereon 5. Dez 2004 21:28

Re: Eintrag unter Startmenü\Programme
 
also, an sonem blauen punkt links neben dem quelltext klickst du, dann wird die zeile markiert (haltepunkt)

nun führst du das programm aus, und kannst mit F7 alle folgenden befehle einzeln durchgehen
-> debugger

damit kannst du uns wenigstens die zeile/den befehl sagen wo der fehler auftritt..

weil nur mit der AV kann hier(denke ich) keiner was anfangen

dreamweaver 5. Dez 2004 21:35

Re: Eintrag unter Startmenü\Programme
 
in der Zeile 66 bei
Code:
if CreateLink('......
bleibt der ablauf stehen sobald ich den button betätige. Hoffe das hilft weiter???

glkgereon 5. Dez 2004 21:37

Re: Eintrag unter Startmenü\Programme
 
hast du das mit dem debugger gemacht?

lad mal bitte das komplette projekt hoch

dreamweaver 5. Dez 2004 21:47

Re: Eintrag unter Startmenü\Programme
 
hier das ganze script

Delphi-Quellcode:
unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  activex, comobj, shlobj, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}




function CreateLink(lpszPathObj,lpszPathLink,
  lpszDesc: string):Boolean;
var
  psl: IShellLink;
  ppf: IPersistFile;

const
  IID_IPersistFile:
     TGUID = (D1:$0000010B;
              D2:$0000;
              D3:$0000;
              D4:($C0,$00,$00,$00,$00,$00,$00,$46));
begin
  result := False;
  if SUCCEEDED(CoCreateInstance(CLSID_ShellLink,
                                nil,
                                CLSCTX_INPROC_SERVER,
                                IID_IShellLinkA,
                                psl)) then
    begin
      psl.SetPath(PChar(lpszPathObj));
      psl.SetDescription(PChar(lpszDesc));
      if SUCCEEDED(psl.QueryInterface(IID_IPersistFile,
                   ppf)) then
        begin
          ppf.Save(StringToOLEStr(lpszPathLink),TRUE);
          Result := true;
          ppf._Release; //---> Runtime-Error wenn aktiv
        end;
    end;
  psl._Release; // ---> Runtime-Error wenn aktiv
end;

//Aufruf:

procedure TForm1.Button1Click(Sender: TObject);
begin
     if CreateLink('C:\Programme\Borland\Delphi6\Projects\system\winxpbeenden\ausschalten.exe', 'C:\projekt_verknüpfung.exe', 'Verknüpfung') then
    MessageDlg('Verknüpfung angelegt', mtInformation, [mbOk], 0);
end;

end.

glkgereon 5. Dez 2004 21:50

Re: Eintrag unter Startmenü\Programme
 
also, der fehler kommt bei
psl._Release;

wo passenderweise hintersteht
// ---> Runtime-Error wenn aktiv

wird seinen sinn haben ;)

also hast du falsche parameter übergeben....

dreamweaver 5. Dez 2004 21:56

Re: Eintrag unter Startmenü\Programme
 
aha und was kann ich dagegen machen???

gibts denn noch andere Möglichkeiten ein Eintrag unter start/programme zumachen???

glkgereon 6. Dez 2004 13:59

Re: Eintrag unter Startmenü\Programme
 
du könntest dir ein programm schreiben, welches die programme aufruft, und das in den autostart tun....


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz