Entwickler-Ecke

Windows API - shortcut vom desktop löschen


juergen - Do 31.03.05 11:47
Titel: shortcut vom desktop löschen
Hallo

wie kann ich einen bestimmten shortcut vom desktop löschen oder die verknüpfung ändern

danke
juergen


Stübi - Do 31.03.05 11:50

Löschen: mit DeleteFile(C:\Desktoppfad\Verknüpfungsname.inc);
Ändern: wie meinst du ändern? eifach den Pfad ändern? den Namen ändern?

Gruss Stübi


retnyg - Do 31.03.05 12:27

verknüpfungen haben die extension .lnk
angenommen du hast ne verknüpfung namens leetMP3 auf dem desktop
den pfad zum desktop kriegst du so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
uses sysutils;
...
var desktop, link: string;
begin
  link := 'leetMP3.lnk'; desktop := '';
  desktop := getenvironmentvariable('USERPROFILE'); 
  if desktop <> '' then desktop := desktop + '\desktop\' // betriebssystem ist >= NT
  else desktop := getenvironmentvariable('WINDIR') + '\desktop\'// windows 9x
  if fileexists(desktop + link) then deletefile(desktop + link);
end;


juergen - Do 31.03.05 20:07

OK !

Vielen Dank
juergen


Delete - Do 31.03.05 20:30

Also, @retnyg, wenn du weißt, dass es evtl. Probleme mit Nicht-NT-Systemen geben kann:
user profile iconretnyg hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
  desktop := getenvironmentvariable('USERPROFILE'); 
  if desktop <> '' then desktop := desktop + '\desktop\' // betriebssystem ist >= NT
  else desktop := getenvironmentvariable('WINDIR') + '\desktop\'// windows 9x

dann frage ich mich, warum du nicht gleich die passenden Shell-Funktionen zum Ermitteln des Desktop-Ordners nimmst? Dieses Rumhantieren mit den Umgebungsvariablen kann auch in die Hose gehen. Und das OS stellt mit Suche in: Delphi-Library SHGETSPECIALFOLDERLOCATION schon passende Funktionen bereit. :roll:


retnyg - Do 31.03.05 22:24

ich bin nunmal mit DoS aufgewachsen, deswegen hänge ich auch an Dingen wie den Umgebungsvariablen...
ausserdem kenne ich die hier passenden API-befehle nicht, da ich mit den Umgebungsvariablen nie Probleme hatte.


Delete - Do 31.03.05 23:15

Ich bin auch mit DOS aufgewachsen, aber trotzdem nehme ich Umgebungsvariablen nur, wenn sie möglichst breit gefächert unterstützt werden. Aktuell verwende ich sie bspw. nur in meinen Build-Batches, um Pfade zu Delphi zu setzen, damit ich den ganzen Kram nicht ständig angeben muss:

Quelltext
1:
2:
3:
4:
5:
6:
7:
@echo off
setlocal
set dcc32="k:\programme\...\dcc32.exe"

%dcc32% MeinProgramm

set dcc32=

Du siehst, ich hänge auch noch an der alten Zeit. :) Trotzdem kenne ich die API-Befehle, bzw. ich weiß, wo ich sie finden kann. ;)


Jakane - Mi 18.05.11 12:39

user profile iconretnyg hat folgendes geschrieben Zum zitierten Posting springen:
verknüpfungen haben die extension .lnk
angenommen du hast ne verknüpfung namens leetMP3 auf dem desktop
den pfad zum desktop kriegst du so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
uses sysutils;
...
var desktop, link: string;
begin
  link := 'leetMP3.lnk'; desktop := '';
  desktop := getenvironmentvariable('USERPROFILE'); 
  if desktop <> '' then desktop := desktop + '\desktop\' // betriebssystem ist >= NT
  else desktop := getenvironmentvariable('WINDIR') + '\desktop\'// windows 9x
  if fileexists(desktop + link) then deletefile(desktop + link);
end;


Ich hab das mal probiert...
und bekomme dabei Fehlermeldungen

[Fehler] X1_01.pas(177): Nicht genügend wirkliche Parameter
[Fehler] X1_01.pas(179): Nicht genügend wirkliche Parameter
[Fehler] X1_01.pas(179): Inkompatible Typen: 'String' und 'Cardinal'