|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Drag&Drop файлов: Shift - вырезаем, Alt - делаем ярлык. КАК?
Drag&Drop-нуть файлы из своей программы в проводник или из проводника в свою программу можно с помощью вот этих модулей: kuDrag и kuDrop
Скачать Demo можно здесь: http://kuzduk.ru/delphi Подскажите пожалйста, как допрограммировать чтоб: при перетаскивании при удержании Shift - вырезалось, а при Alt - ярлык содавался? Последний раз редактировалось kuzduk, 22.03.2024 в 00:08. |
#2
|
||||
|
||||
Очевидно в момент перетаскивания отслеживать состояние клавиш-модификаторов
Код:
... var State : TKeyboardState; ... GetKeyboardState(State); if ((State[vk_Shift] and 128) <> 0) then ... // Shift if ((State[vk_Control] And 128) <> 0) then ... // Ctrl if ((State[vk_Menu] and 128) <> 0) then ... // Alt ... Код:
if ((Word(GetKeyState(VK_LSHIFT{VK_RSHIFT})) and $8000) <> 0) then ... Создать ярлык для файла Код:
uses ShlObj, ActiveX, ComObj; procedure CreateShortCut(ShortCutName, Parameters, FileName: string); var ShellObject: IUnknown; ShellLink: IShellLink; PersistFile: IPersistFile; FName: WideString; begin ShellObject := CreateComObject(CLSID_ShellLink); ShellLink := ShellObject as IShellLink; PersistFile := ShellObject as IPersistFile; with ShellLink do begin SetArguments(PChar(Parameters)); SetPath(PChar(FileName)); SetWorkingDirectory(PChar(extractfilepath(FileName))); FName := ShortCutName; PersistFile.Save(PWChar(FName), False); end; end; Код:
... var Struct: TSHFileOpStruct; Err: HRESULT; begin with Struct do begin Wnd := Handle; wFunc := FO_DELETE; pFrom := 'c:\1.txt'; pTo := nil; fFlags := FOF_ALLOWUNDO; fAnyOperationsAborted := True; hNameMappings := nil; lpszProgressTitle := nil; end; Err := SHFileOperation(Struct); if Err <> S_OK then ShowMessage(SysErrorMessage(Err)); ... Я не понял Вашего вопроса, но всё же Вам на него отвечу! |