我有一个屏幕,可以将文件从Windows文件夹拖放到列表框中。拖放文件后,列表框将显示文件路径。
我希望能够直接从Outlook / Gmail拖放文件。如果拖放失败,我希望复制和粘贴选项可用。
是否可以从剪贴板粘贴文件,假设它已被Outlook / Gmail复制选项填充?
我想读取复制的文件路径(可在剪贴板中找到),并将其显示给用户。
答案 0 :(得分:2)
查看VFP通过OLE拖放提供的数据对象,特别是其GetFormat和SetFormat方法。
玛
答案 1 :(得分:1)
可以从剪贴板粘贴。 Windows剪贴板存储在名为_cliptext 的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()