Показать сообщение отдельно
  #2  
Старый 14.03.2014, 00:57
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Очевидно в момент перетаскивания отслеживать состояние клавиш-модификаторов
Код:
...
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));

...
Ответить с цитированием