代码之家  ›  专栏  ›  技术社区  ›  Dave Nottage

拖放到远程桌面会话中的应用程序

  •  3
  • Dave Nottage  · 技术社区  · 6 年前

    一些在常规(本地)会话中工作的示例代码:

    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;
    

    i、 e.将一些文件放到应用程序中会导致文件名被添加到备忘录中。

    我希望能够让应用程序在远程计算机上运行,并在远程桌面会话中将文件从本地计算机拖动到应用程序中。我只需要它通过拖放操作,并且在本地运行时可以访问文件名;我对文件名的实际操作与此无关。

    有人建议,让应用程序以提升的权限运行会让它运行起来,但(对我来说)不行。

    enter image description here

    远程计算机正在运行Windows Server 2019。

    我还需要做些什么来让这件事成功吗?

    0 回复  |  直到 6 年前