如何在VFP中粘贴剪贴板中的文件?

时间:2014-08-22 10:37:49

标签: file clipboard copy-paste visual-foxpro

我有一个屏幕,可以将文件从Windows文件夹拖放到列表框中。拖放文件后,列表框将显示文件路径。

我希望能够直接从Outlook / Gmail拖放文件。如果拖放失败,我希望复制和粘贴选项可用。

是否可以从剪贴板粘贴文件,假设它已被Outlook / Gmail复制选项填充?

我想读取复制的文件路径(可在剪贴板中找到),并将其显示给用户。

4 个答案:

答案 0 :(得分:2)

查看VFP通过OLE拖放提供的数据对象,特别是其GetFormat和SetFormat方法。

答案 1 :(得分:1)

可以从剪贴板粘贴。 Windows剪贴板存储在名为_cliptext 的VFP系统变量中。 你可以做这个非常简单的测试来看它的实际效果:

  1. 从问题中选择文字,然后按Ctrl + C将其复制到剪贴板。
  2. 从VFP类型的命令窗口:? _CLIPTEXT
  3. 您的问题将打印到VFP屏幕。

答案 2 :(得分:1)

如果是原始文本,则Ed是正确的,例如电子邮件的邮件正文。你可以只分配像..

这样的东西
thisform.yourEditBox.Text = _cliptext

但是,如果您指的是剪辑是电子邮件附件的文件名,那就不同了。什么是文件内容......是IT文本文件,Word文档,图像,PDF等。您唯一能够轻松获得的是文本文件。如果是这种情况,并且您的剪贴板具有要显示给用户的文件的完整路径和名称,那么请执行..

thisform.yourEditBox.Text = filetostr( _cliptext )

答案 3 :(得分:1)

要检索复制到剪贴板的文件的文件路径和文件名,可以使用此基本例程。您可以根据需要对其进行增强。

* filenames on clipboard

Declare integer OpenClipboard in user32 integer
Declare integer CloseClipboard in user32
Declare integer GetClipboardData in user32 integer
Declare integer DragQueryFile in shell32 integer, integer, string @, integer

private dh,nof,tt,fn

if OpenClipboard(0)=1
    * handle
    dh=GetClipboardData(15)
    * number of files
    nof=DragQueryFile(dh,-1,chr(0),0)

    * filenames
    for tt=1 to nof
         fn=space(1024)
         DragQueryFile(dh,tt-1,@fn,1024)
         ? strtran(alltrim(fn),chr(0),'')
    next
endif
CloseClipboard()