Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Как загрузить через CreateProcess ярлык (*.lnk)   Найти похожие ветки 

 
Viktor Kushnir ©   (2004-02-15 12:55) [0]

а то возвращает Error 193 - не правильный EXE.
Может кто расскажет как из ярлыка имя файла вытащить?

ShellExecute и прочее не предлагать, я знаю, с ними работает, но мне надо получть TProcessInformation запущенного процесса.


 
Бином Ньютоныч   (2004-02-15 15:02) [1]

http://delphimaster.net/view/1-1076794581/


 
Viktor Kushnir ©   (2004-02-16 08:54) [2]

Спасибо конечно, но это не то. У меня уже есть линк созданный виндой и он работает, если его вручную запустить. Но надо запустить его через CreateProcess. А вот тут то и траблы. Обычная программа запускается, а линки не хотят.

Вообще - конечная цель запустить программу через ярлык и получить ее TProcessInformation, чтобы затем отследить время её работы.

Есть идеи?


 
Dimka Maslov ©   (2004-02-16 12:37) [3]

http://delphibase.endimus.com/?action=viewfunc&topic=filelink&id=10059


 
Opuhshii ©   (2004-02-16 17:06) [4]

через Process не загрузить, не правильный EXE - правильно пишет,
используй ShellExecuteEx


 
Opuhshii ©   (2004-02-16 17:07) [5]

добавить слово Create вторым

:o)


 
Бином Ньютоныч   (2004-02-16 17:09) [6]

>Viktor Kushnir ©   (16.02.04 08:54) [2]
Получуние имени отличается от создания ярлыка одной-двумя буквами в названиях методов, блин


 
Wizard_Ex ©   (2004-02-17 14:35) [7]

Лови, а то я смотрю никто не помогает - только издеваются

uses
 ShlObj,
 ComObj,
 ActiveX,
 CommCtrl;

type
 PShellLinkInfoStruct = ^TShellLinkInfoStruct;
 TShellLinkInfoStruct = record
   FullPathAndNameOfLinkFile: array[0..MAX_PATH] of Char;
   FullPathAndNameOfFileToExecute: array[0..MAX_PATH] of Char;
   ParamStringsOfFileToExecute: array[0..MAX_PATH] of Char;
   FullPathAndNameOfWorkingDirectroy: array[0..MAX_PATH] of Char;
   Description: array[0..MAX_PATH] of Char;
   FullPathAndNameOfFileContiningIcon: array[0..MAX_PATH] of Char;
   IconIndex: Integer;
   HotKey: Word;
   ShowCommand: Integer;
   FindData: TWIN32FINDDATA;
 end;

procedure GetLinkInfo(lpShellLinkInfoStruct: PShellLinkInfoStruct);
var
 ShellLink: IShellLink;
 PersistFile: IPersistFile;
 AnObj: IUnknown;
begin
 // access to the two interfaces of the object
 AnObj       := CreateComObject(CLSID_ShellLink);
 ShellLink   := AnObj as IShellLink;
 PersistFile := AnObj as IPersistFile;

 // Opens the specified file and initializes an object from the file contents.
 PersistFile.Load(PWChar(WideString(lpShellLinkInfoStruct^.FullPathAndNameOfLinkFile)), 0);
 with ShellLink do
 begin
   // Retrieves the path and file name of a Shell link object.
   GetPath(lpShellLinkInfoStruct^.FullPathAndNameOfFileToExecute,
     SizeOf(lpShellLinkInfoStruct^.FullPathAndNameOfLinkFile),
     lpShellLinkInfoStruct^.FindData,
     SLGP_UNCPRIORITY);

   // Retrieves the description string for a Shell link object.
   GetDescription(lpShellLinkInfoStruct^.Description,
     SizeOf(lpShellLinkInfoStruct^.Description));

   // Retrieves the command-line arguments associated with a Shell link object.
   GetArguments(lpShellLinkInfoStruct^.ParamStringsOfFileToExecute,
     SizeOf(lpShellLinkInfoStruct^.ParamStringsOfFileToExecute));

   // Retrieves the name of the working directory for a Shell link object.
   GetWorkingDirectory(lpShellLinkInfoStruct^.FullPathAndNameOfWorkingDirectroy,
     SizeOf(lpShellLinkInfoStruct^.FullPathAndNameOfWorkingDirectroy));

   // Retrieves the location (path and index) of the icon for a Shell link object.
   GetIconLocation(lpShellLinkInfoStruct^.FullPathAndNameOfFileContiningIcon,
     SizeOf(lpShellLinkInfoStruct^.FullPathAndNameOfFileContiningIcon),
     lpShellLinkInfoStruct^.IconIndex);

   // Retrieves the hot key for a Shell link object.
   GetHotKey(lpShellLinkInfoStruct^.HotKey);

   // Retrieves the show (SW_) command for a Shell link object.
   GetShowCmd(lpShellLinkInfoStruct^.ShowCommand);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
 br = #13#10;
var
 LinkInfo: TShellLinkInfoStruct;
 s: string;
begin
 FillChar(LinkInfo, SizeOf(LinkInfo), #0);
 LinkInfo.FullPathAndNameOfLinkFile := "C:\WINNT\Profiles\user\Desktop\FileName.lnk";
 GetLinkInfo(@LinkInfo);
 with LinkInfo do
   s := FullPathAndNameOfLinkFile + br +
     FullPathAndNameOfFileToExecute + br +
     ParamStringsOfFileToExecute + br +
     FullPathAndNameOfWorkingDirectroy + br +
     Description + br +
     FullPathAndNameOfFileContiningIcon + br +
     IntToStr(IconIndex) + br +
     IntToStr(LoByte(HotKey)) + br +
     IntToStr(HiByte(HotKey)) + br +
     IntToStr(ShowCommand) + br +
     FindData.cFileName + br +
     FindData.cAlternateFileName;
 Memo1.Lines.Add(s);
end;


 
Viktor Kushnir ©   (2004-02-18 17:07) [8]

О, спасибо, щас попробую.


 
juiceman ©   (2004-02-18 22:28) [9]


> Wizard_Ex ©   (17.02.04 14:35) [7]

Пост №1, Пост №5 - это разве не помощь?



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
14-1080983615
Chahpa
2004-04-03 13:13
2004.04.25
Мышь


11-1064995894
chuckloon
2003-10-01 12:11
2004.04.25
OLEAutomation server + KOL клиент


1-1081402526
Ш-К
2004-04-08 09:35
2004.04.25
Создание компонента.


14-1080731754
}|{yk
2004-03-31 15:15
2004.04.25
Может кто помнит как bat-файлы писать?


11-1064310091
Vadim S
2003-09-23 13:41
2004.04.25
KOLDataModule