Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 德尔菲:DragQueryFile和ThunderBird_Delphi_Drag And Drop_Temporary Files_Thunderbird - Fatal编程技术网

Delphi 德尔菲:DragQueryFile和ThunderBird

Delphi 德尔菲:DragQueryFile和ThunderBird,delphi,drag-and-drop,temporary-files,thunderbird,Delphi,Drag And Drop,Temporary Files,Thunderbird,我们将此代码用于获取拖动的文件: if Msg.Message = WM_DROPFILES then begin for fnum := 0 to DragQueryFile(Msg.WParam, FileIndex, NIL, 255) - 1 do begin DragQueryFile(Msg.WParam, fnum, buffer, 255); fname := StrPas(buffer); ... end;

我们将此代码用于获取拖动的文件:

if Msg.Message = WM_DROPFILES then
begin
    for fnum := 0 to DragQueryFile(Msg.WParam, FileIndex, NIL, 255) - 1 do
    begin
        DragQueryFile(Msg.WParam, fnum, buffer, 255);
        fname := StrPas(buffer);
        ...
    end;
    ...
    DragFinish(Msg.WParam);
    Handled := true;
我们将这些文件名用作数据库中的链接(只是路径,而不是内容)

它使用的是真实的文件名,拖动正常

但现在我们需要处理从雷鸟那里拖来的电子邮件。 这很有趣,因为如果有人从ThunderBird中拖出一封电子邮件并将其放入我们的表单中,eml文件将变成“临时的”。 该文件由Thunderbird创建为“User\Local Settings\Temp”,包含电子邮件主题和eml内容

在很短的时间内,文件是可访问的、存在的。 我可以在本程序中阅读,也可以在本程序结束时(在DragFinish之后)阅读

该文件不是真正的临时文件,Attrs=32(而不是256)

我试图启动一个毫秒长的计时器来检查何时删除,但它在消息处理后仍然存在

但当我试着调试这段代码时,或者我按下一个按钮检查文件是否存在——它已经不存在了。所以它被雷鸟暂时保存了下来

所以我不能确定它是一个永久文件,否则它会被真正的所有者删除,我需要复制到某个地方来保存它

我可能有两点:eml扩展和本地临时目录

另一种解决方案可能是OLE拖动,但我不知道扩展名,只知道文件内容

如果我能从源应用程序中获取源应用程序的句柄或信息,以便我能决定该做什么,那就更好了

这个问题有什么解决办法吗? 你知道我可以从拖动的文件中获取信息的函数吗

谢谢你的帮助

dd