Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Как загрузить через 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.052 c
3-1080209320
Zilog
2004-03-25 13:08
2004.04.25
глюк!? Не могу изменить записи в таблице после сортировки..


1-1081513836
ivan
2004-04-09 16:30
2004.04.25
рисование поверх компонентов


11-1063785981
<Falcon>
2003-09-17 12:06
2004.04.25
Текст в несколько строк в mdvXLGrid - КАК?


3-1080559478
Ivan
2004-03-29 15:24
2004.04.25
Вычисляемое поле в отчете


3-1080199108
Rio
2004-03-25 10:18
2004.04.25
DBLookupComboBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский