Форум: "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