|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.01.2011, 01:30 | #1 |
Пользователь
Регистрация: 04.01.2011
Сообщений: 66
|
Как на Delphi создать ярлык для сторонней программы?
Здравствуйте!
Хотел поинтересоваться. Сижу бьюсь, весь вечер, перелопатил весь интернет, что нашел - у меня не пашет. Собственно, имеется файл, на диске D, для него нужно создать ярлык, на рабочем столе. Кто сможет показать как это? |
07.01.2011, 01:57 | #2 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
Да, запросто...
Код:
|
07.01.2011, 02:03 | #3 |
Очень суровый
Участник клуба
Регистрация: 17.12.2009
Сообщений: 1,988
|
На изучение...
Ненавижу быть как все, но люблю, чтобы все были как я.
|
07.01.2011, 11:10 | #4 |
Пользователь
Регистрация: 04.01.2011
Сообщений: 66
|
[Error] Unit1.pas(178): Undeclared identifier: 'GetFolderLocation'? вот что выдает((
Создает ярлык, все ОК. НО!!!!!!!!!!! Третий раз все смотрел, ничего не понял. В общем ситуация такая, абсолютно непонятная и идиотская. Мой инсталлятор, копирует 3 файла. 1 ехе и 2 с настройками. Так вот. После того как он создает ярлык этой вот функцией, что я взял отсюда, получается следующее. ЕСЛИ, я запускаю программу, через создавшийся ярлык - сама программа НЕ видит своих 2 тхт файлов с настройками. Если тупо щелкаю по ехе - все работает. В чем может быть причина? Создаю ярлык руками - все работает. Сам инсталлятор когда создает ярлык - программа не видит своих файлов настроек Последний раз редактировалось Stilet; 07.01.2011 в 11:56. |
07.01.2011, 19:22 | #5 |
Пользователь
Регистрация: 04.01.2011
Сообщений: 66
|
Ммм, кто нибудь попробует глянуть почему такая ситуация с ярлыком?
Сейчас приведу немного урезанный код, ток не смейтесь - поя первая программка инсталлятор. [code] uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, ComCtrls, Buttons, ShlObj, FileCtrl,ActiveX, ComObj, Registry ; const SFolderKey = '\Software\Microsoft\Windows\Curren tVersion\' + 'Explorer\Shell Folders'; var Form1: TForm1; inst : string; implementation {$R *.dfm} function Getloka(const FolderType: string): string; begin with TRegistry.Create do try RootKey := HKEY_CURRENT_USER; if not OpenKey(SFolderKey, False) then raise ERegistryException.CreateFmt('Êëþ÷ "%s" íå íàéäåí', [SFolderKey]); Result := ReadString(FolderType); if Result = '' then raise ERegistryException.CreateFmt('"%s" íå íàéäåí â ðååñòðå', [FolderType]); CloseKey; finally Free; end; end; procedure TForm1.Label1Click(Sender: TObject); begin application.Terminate; end; procedure TForm1.FormCreate(Sender: TObject); begin pagecontrol1.Visible := false; end; procedure TForm1.Label2Click(Sender: TObject); begin pagecontrol1.Visible:=true; pagecontrol1.ActivePageIndex :=0; end; procedure TForm1.Label4Click(Sender: TObject); begin pagecontrol1.Visible := false end; procedure TForm1.Label5Click(Sender: TObject); begin if checkbox1.Checked then pagecontrol1.ActivePageIndex :=1; end; procedure TForm1.Label7Click(Sender: TObject); begin pagecontrol1.ActivePageIndex :=0; end; function ShowChooseDirDialog: String; const TitleName = 'Óêàæèòå ïàïêó íàçíà÷åíèÿ'; // ýòî ïîäñêàçêà var lpItemID: PItemIDList; BrowseInfo: TBrowseInfo; DisplayName: array[0..MAX_PATH] of Char; TempPath: array[0..MAX_PATH] of Char; begin Result := ''; FillChar(BrowseInfo, sizeof(TBrowseInfo), 0); //Çäåñü íóæíî èñïîëüçîâàòü èìåííî Application.Handle BrowseInfo.hwndOwner := Application.Handle; BrowseInfo.pszDisplayName := @DisplayName; BrowseInfo.lpszTitle := @TitleName[1]; // NEWDIALOGSTYLE - áóäåò äîáàâëåíà êíîïêà "Ñîçäàòü ïàïêó" BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE; lpItemID := SHBrowseForFolder(BrowseInfo); if lpItemID <> nil then begin SHGetPathFromIDList(lpItemID, TempPath); Result := String(TempPath); GlobalFreePtr(lpItemID); end; end; procedure TForm1.Button1Click(Sender: TObject); var path : string; var inst : string; begin edit1.Text := ShowChooseDirDialog(); path := edit1.Text+'\wow.exe'; inst := edit1.Text; if fileexists(path) then begin label8.Visible := true; end else application.MessageBox('Ê ñîæàëåíèþ â äàííîé ïàïêå, íå íàéäåí ôàéë wow.exe','Çëî!'); end; procedure TForm1.TabSheet2Show(Sender: TObject); begin progressbar1.Visible :=false; label8.Visible :=false; end; procedure installsoft(inst:string); var SL: IShellLink; PF: IPersistFile; LnkName: WideString; AppName : string; var exeshka : string; var sets : string; var realms : string; i: integer; links : string; begin inst :=form1.Edit1.Text; exeshka := inst+'\realms.exe'; sets := inst+'\set.ini'; realms := inst+'\realms.txt'; CopyFile(pchar('shell.dll'),pchar(e xeshka),true); CopyFile(pchar('set.dll'),pchar(set s),true); CopyFile(pchar('realms.dll'),pchar( realms),true); form1.Edit1.Visible :=false; form1.ProgressBar1.Visible :=true; form1.ProgressBar1.Min :=1; form1.ProgressBar1.Max :=20; for i:=1 to 20 do begin form1.ProgressBar1.Position :=i; sleep(50); end; appname := exeshka; //ftgdftdft OleCheck(CoCreateInstance(CLSID_She llLink, nil, CLSCTX_INPROC_SERVER,IShellLink, SL)); PF := SL as IPersistFile; OleCheck(SL.SetPath(PChar(AppName)) ); LnkName := Getloka('Desktop') + '\' + ChangeFileExt(ExtractFileName(AppNa me), '.lnk'); PF.Save(PWideChar(LnkName), True); //ertertert form1.PageControl1.ActivePageIndex: =2; end; procedure TForm1.Label8Click(Sender: TObject); begin installsoft(inst); end; procedure TForm1.Label9Click(Sender: TObject); begin application.Terminate(); end; end. |
07.01.2011, 19:22 | #6 |
Пользователь
Регистрация: 04.01.2011
Сообщений: 66
|
Слегка урезал, т.к. не влезает в поле более 5000 символов, срезал блок Type
|
07.01.2011, 19:25 | #7 |
Пользователь
Регистрация: 04.01.2011
Сообщений: 66
|
Собственно, косяк начинается в procedure installsoft(inst:string);,
с коммента //ftgdftdft |
07.01.2011, 20:00 | #8 |
Подтвердите свой е-майл
Регистрация: 19.12.2010
Сообщений: 808
|
OFFTOP, но все же...
alexusankov, вы кнопкой "Правка" пользоваться не умеете ? Или ждете, когда кто-нибудь из модеров "даст вам по башке" ? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как создать чудо кнопку для программы складского учета в Excel | Фиштрех | Microsoft Office Excel | 4 | 05.04.2010 23:14 |
Создать ярлык => выбор файла => Открыть файл как папку??? | Alex Cones | Windows | 6 | 05.10.2009 10:47 |
Как создать ярлык на сайт в интернете | Levhik | Общие вопросы Delphi | 4 | 03.03.2009 10:56 |
Как определить момент запуска сторонней программы? | NioTo | Win Api | 2 | 17.12.2007 16:40 |
Как создать программы для КПК на Delphi? | kuzmich | Общие вопросы Delphi | 3 | 30.10.2007 06:36 |