以下是我需要做的事情:
当在远程文件资源管理器中手动完成时,复制/粘贴操作可以完美地工作,但是当我从远程会话以编程方式访问剪贴板内容时,我只能通过" FileGroupDescriptorW"来获取文件列表(没有本地路径)。格式。
我知道这是正常的,已经阅读了MSN" RDP - 剪贴板虚拟频道扩展"文件。
我认为唯一的解决方案是使用"格式内容请求PDU"来请求文件内容。和"格式内容响应PDU"来自剪贴板虚拟频道。
问题是我不知道如何在Delphi(或任何其他语言)中实现这一点,因为我无法在网上找到任何代码示例
那么我如何以编程方式从RD会话访问剪贴板虚拟通道并流式传输文件内容?代码示例将非常受欢迎(如果有Pascal / Delphi则更多)
谢谢!
答案 0 :(得分:0)
我用一个小的vb脚本面对(并解决了)这个问题。
此脚本可以由您的Delphi应用程序生成和启动。
My_Destination \ Folder 是目标文件夹,文件夹是打开的目标窗口的名称,正在复制... 是名称复制文件时显示的进度条窗口。
Set objshell = Wscript.CreateObject("WScript.Shell")
objshell.Run "cmd.exe /C start " & "My_Destination\Folder"
success = objshell.AppActivate("My_Destination\Folder")
WScript.Sleep 500
objshell.Sendkeys "%HV"
Set oShell = CreateObject("WScript.Shell")
WScript.Sleep 3000
Do
If (oShell.AppActivate("Copying...") = False) Then
If oShell.AppActivate("Folder") Then
WScript.Sleep 500
oShell.SendKeys "%{F4}"
End If
WScript.Sleep 3000
Exit Do
Else
WScript.Sleep 3000
End If
Loop
第一行打开目标文件夹的资源管理器窗口。 激活窗口后,您可以发送模拟粘贴操作的按键(粘贴:%HV)。
最后一部分等待复制操作的终止,然后关闭打开的窗口。
注意:复制... 窗口名称和击键序列(%HV )与语言有关。