На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Файл LNK, получение всех полей.
    Помогите плс.. получить все поля от *.lnk файла на Delphi 7.

    Полный путь к файлу; (хотя бы)

    Большое спасибо!
      iShellLink в хэлпе смотреть.
        Мне нужен кусок кода, который бы продемонстрировал это....
        (рабочий)
          Всем кусок кода нужен..
          Но нужно его научиться самому делать
            А ты умеешь?
            Для меня это не так просто как пройти дерево по реестру или файлам.
            Извините.
            Прошу помощи.....
            Пожалуйста.....
            sad.gif..
              умеет wink.gif
                Ну хорошо, делать ты не умеешь.
                Но пользоваться-то интернетом ты умеешь?
                Вот я тебе подсказал уже ! Вот бы ты и зарядил слово iShellLink в яндекс, ты найдёшь вопрос на свой ответ 100%
                Неужели вот такую ерунду нужно рассказывать?
                  Пусть подскажет....
                  unsure.gif

                  Добавлено в
                  Не нашел....
                  Я ничего....
                  Поэтому и спрашиваю..
                  (в GOOGLE тоже искал)
                    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;  




                    Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php


                    Добавлено в
                    Цитата
                    moonlight, 23.12.03, 09:24
                    Не нашел....
                    Я ничего....
                    Поэтому и спрашиваю..
                    (в GOOGLE тоже искал)



                    Скачай наш FAQ: http://forum.sources.ru/index.php?showtopic=40026

                    Там и это есть и ещё много чего smile.gif
                      Пишет ERROR:
                      ---------- cut here ---------------------
                      Exception EOleSysError in module Project1.exe at 000521BD.
                      CoInitialize has not been called.
                      ---------- cut here ---------------------
                        Таки Song прав - надо всё-таки самому разбираться, код, даже работающий не помогает, потому как применить его пытаются бездумно - просто влепить абы как... Программирование это не исскуство чужую процедуру в свой код влепить и кнопки на форму побросать - тут ещё и знания кое-какие нужны! Вот вы что сделали чтобы решить эту проблему?

                        1) Посмотрели что делают ComObj, ActiveX, CommCtrl?
                        2) Выяснили как работает COM/ActiveX?
                        3) Разобрались что такое упомянутые IShellLink, IPersistFile, IUnknown?
                        4) Узнали для чего нужна функция CreateComObject?
                        5) И в конце концов заглянули в наш FAQ?
                        Сообщение отредактировано: Vit -
                          Надо было добавить в процедуру:

                          CoInitialize(nil);
                          ......... <код выше>........
                          CoUnInitialize;

                          ВСЕ ЗАРАБОТАЛО!!!!



                          КАК ВЫ МНЕ ПОМОГЛИ!!!!

                          ВСЕМ УЧАСТНИКАМ БОЛЬШОЕ

                          С П А С И Б О !!!!

                            Прошу прощения у модераторов за флейм:
                            Прямо такая классная пьеса в трех лицах получилась, о том какую пользу приносят форумы, и кто на них всегда прав smile.gif
                            Супер!
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0367 ]   [ 16 queries used ]   [ Generated: 27.04.24, 09:17 GMT ]