gpt4 book ai didi

c# - 我必须使用哪个 Win32 函数将文件复制到智能手机文件夹?

转载 作者:太空狗 更新时间:2023-10-29 19:46:29 26 4
gpt4 key购买 nike

使用 WindowsForms 技术,我尝试将本地存储在硬盘驱动器 (C:\) 上的文件复制到通过 USB 连接的智能手机设备上存储的文件夹中。

文件夹“路径”使用友好名称表示为 MyPCName\MyName\Card\Android在 Explorer 导航栏中,显示为 ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_04e8&pid_6860&ms_comp_mtp&samsung_android#6&612ff8b&1&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{20002,SECZ9519043CHOHB01,31426543616}\{01A00139-011B-0124-3301-29011C013501}在 Windows 内部。

我通过使用 COM Shell.BrowseForFolder 获得了“内部路径” 方法然后检查 FolderItem.Path 返回对象的属性。

然后在获得路径后我尝试了 CopyFile CopyFileEx Win32 可以复制文件,但没有用。他们似乎无法识别目录路径。

我使用的语法是这样的:

Dim dirPath As String = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_04e8&pid_6860&ms_comp_mtp&samsung_android#6&612ff8b&1&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}\SID-{20002,SECZ9519043CHOHB01,31426543616}\{01A00139-011B-0124-3301-29011C013501}"
NativeMethods.CopyFile("C:\MyFile.ext", dirPath & "\MyFile.ext", failIfExists:=True)

在该代码中 CopyFile()函数返回 FalseMarshal.GetLastWin32Error()函数返回 0x3 Win32 错误代码。

我使用的 CopyFile/CopyFileEx 定义与 Pinvoke.net 网站上发布的相同(C# 版本):


如果用户只需将文件从 Explorer 实例拖到智能手机目录即可复制文件,那么我认为很明显可以通过编程方式复制文件,只需找到并使用 Windows 自身使用的相同 Win32 函数即可执行此类操作从 UI 端复制操作。那我做错了什么?为什么CopyFile/CopyFileEx不能复制文件?我该如何复制它?

请注意,我正在寻找一种用 C# 或 VB.NET 编写的解决方案,它可以仅使用托管代码或使用非托管代码来解决 P/调用 Win32 函数,除了使用 COM 库,如 Shell COM对象(提供 CopyHere() 方法)。我想学习并了解如何使用 Win32 API 成员执行此类文件复制操作。

最佳答案

您正在寻找 Windows 便携设备 API。

https://msdn.microsoft.com/en-us/library/windows/desktop/dd388998(v=vs.85).aspx

编辑:我已经成功地使用这个 API,在 C# 中使用 COM Interop,在我的 Android Galaxy S3 上读取/写入文件。

您还可以在以下博客中找到有关在 C# 中使用此 API 的有用信息:https://github.com/geersch/WPD

关于c# - 我必须使用哪个 Win32 函数将文件复制到智能手机文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42606459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com