当 iPhone 连接到 Win7 计算机时,可以使用资源管理器(以及我的应用程序的打开文件对话框)查看图像。但是,文件位置不包含驱动器号。
例如 Computer\Apple iPhone\Internal Storage\DCIM\800AAAAA\IMG_0008.JPG
而不是 E:\DCIM\800AAAAA\IMG_0008.JPG
这是常见的SD 卡、USB 驱动器等...
我曾尝试使用 CreateFileW 从 iPhone 读取图像,但失败并显示“(错误代码:3)系统找不到指定的路径。”我也尝试过使用 Chrome 访问它们,但也失败了。
有什么建议吗?
最佳答案
该文件夹实际上是所谓的“虚拟文件夹”,在文件系统上没有完整路径。您将需要使用从打开的对话框返回的 shell 项来获取文件的内容,而不是使用 CreateFile。
数据应该是可访问的,但您应该按照 the MSDN documentation 中的说明进行操作.我确信可能有更好的示例(因为这仅提供指导)。
编辑 粗略的过程是从 IFileOpenDialog 获取 IShellItem,然后绑定(bind)到流,然后读取流(假设只读)——记住这段代码几乎没有错误处理或检查或安全:
if (pitem->GetDisplayName(SIGDN_NORMALDISPLAY, &destName) == S_OK) {
std::cout << destName << std::endl;
CoTaskMemFree(destName);
}
IStream *pistream;
if (pitem->BindToHandler(0, BHID_Stream, IID_PPV_ARGS(&pistream)) == S_OK) {
char input[1024];
long to_read = 1024;
unsigned long read;
while (S_OK == pistream->Read(input, to_read, &read)) {
std::cout << input << std::endl;
}
pistream->Release();
}
pitem->Release();
关于iphone - 可以在 Windows 中使用 CreateFile 以编程方式从 iPhone 读取图像吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017615/