Перетащите в приложение в сеансе удаленного рабочего стола
Пример кода, который работает в обычном (локальном) сеансе:
constructor TForm1.Create(AOwner: TComponent);
begin
inherited;
ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYGLOBALDATA, MSGFLT_ADD);
DragAcceptFiles(Handle, True);
end;
destructor TForm1.Destroy;
begin
DragAcceptFiles(Handle, False);
inherited;
end;
procedure TForm1.GetDropFilenames(const ADropHandle: HDROP);
var
I, LFileCount, LLength: integer;
LFilename: string;
begin
LFileCount := DragQueryFile(ADropHandle, $FFFFFFFF, nil, 0);
for I := 0 to LFileCount - 1 do
begin
LLength := DragQueryFile(ADropHandle, I, nil, 0) + 1;
SetLength(LFilename, LLength);
DragQueryFile(ADropHandle, I, PChar(LFilename), LLength);
LLength := Pos(#0, LFileName);
if LLength > 0 then
LFilename := LFilename.Substring(0, LLength - 1);
LogMemo.Lines.Add('Filename Copied To Clipboard: ' + LFilename);
end;
end;
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
begin
GetDropFilenames(Msg.Drop);
Msg.Result := 0;
inherited;
end;
т.е. добавление некоторых файлов в приложение приводит к добавлению имен файлов в заметку.
Я хочу, чтобы приложение работало на удаленном компьютере, и перетаскивал файлы с локального компьютера в приложение в сеансе удаленного рабочего стола. Мне просто нужно, чтобы он работал с помощью перетаскивания и имел имена файлов, доступные в соответствии с тем, когда он запускается локально; то, что я на самом деле делаю с именами файлов, не имеет значения.
Кто-то предположил, что заставить приложение работать с повышенными привилегиями заставит его работать, за исключением того, что (для меня) это не так.
Удаленный компьютер работает под управлением Windows Server 2019.
Есть ли что-то еще, что мне нужно сделать, чтобы сделать эту работу?