Criar Atalho no menu de contexto da Área de Trabalho..

Delphi

04/10/2007

Olá pessoal estou aqui de novo presizando de uma ajudinha. Meu programinha de trocar o papel de parede do windows já estar quaze pronto falta pouco. A minha duvida é o seguinte como colocar um Atalho NO MENU de CONTESTO da Área de Trabalho exemplo:(quando clicamos com o botão direito do mause na área de trabalho aparece um menu =Organizar Íncones, novo, Propriedade) quero colocar um atalho do meu programinha ai.

mais uma pergunta, tambem quero colocar um atalho no painel de controle será se isto é possivel ou tenho de criar um aplicativo para painel de controle e mandar ele buscar onde o meu programinha estar instalado. Como que faço isto.

Veja a procedure abaixo de como coloco atalhos em ´Menu iniciar, Menu Iniciar\Programa, DESKTOP, Menu Iniciar\Programa\Iniciar e Menu Iniciar All Usuários´.


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShlObj, ActiveX, ComObj, StdCtrls;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure CriaShortCut(aNome, aFileName: string; aLocation: integer);
var
IObject : IUnknown;
ISLink : IShellLink;
IPFile : IPersistFile;
PIDL : PItemIDList;
InFolder : array[0..MAX_PATH] of Char;
TargetName : String;
LinkName,s : WideString;
begin
TargetName := aFileName;

IObject := CreateComObject(CLSID_ShellLink);
ISLink := IObject as IShellLink;
IPFile := IObject as IPersistFile;

with ISLink do
begin
SetPath(pChar(TargetName));
SetWorkingDirectory(pChar(ExtractFilePath
(TargetName)));
end;

SHGetSpecialFolderLocation
(0, aLocation, PIDL);
SHGetPathFromIDList(PIDL, InFolder);

s := InFolder;
LinkName := s + ´\´ + aNome + ´.LNK´;

if FileExists(LinkName) then
ShowMessage(´Atalho já existe!´)
else
IPFile.Save(PWChar(LinkName), false);

end;

procedure TForm1.Button1Click(Sender: TObject);
begin                              //aqui busca o atalho do programa que ta instaldo em c:\arquivos de programs\tex
CriaShortCut(´Wallpaper´, GetEnvironmentVariable(´PROGRAMFILES´)
+ ´\tex\Wall_2007.exe´ , CSIDL_COMMON_STARTMENU);
end;
{CSIDL_STARTMENU =Menu iniciar
 CSIDL_PROGRAMS  =Menu Iniciar\Programa
 CSIDL_DESKTOP   =DESKTOP
 CSIDL_STARTUP   =Menu Iniciar\Programa\Iniciar
 CSIDL_COMMON_STARTMENU  = Menu Iniciar All Usuários}

end.



Cgm2k7

Cgm2k7

Curtidas 0

Respostas

Cgm2k7

Cgm2k7

04/10/2007

ai pessoal sera se ninguem sabe como


GOSTEI 0
POSTAR