Перетащите в приложение в сеансе удаленного рабочего стола

Пример кода, который работает в обычном (локальном) сеансе:

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.

Есть ли что-то еще, что мне нужно сделать, чтобы сделать эту работу?

0 ответов

Другие вопросы по тегам