【发布时间】:2013-04-01 15:59:40
【问题描述】:
就像在谷歌浏览器中一样,当你下载一些东西时,你可以点击“在资源管理器中打开”或其他东西,它会打开 exlplorer 并突出显示该文件。 我将编写一个程序(可能是一个 c cmd 程序),在给定位置搜索文件,然后我希望能够直接从程序中单击并打开文件。 你有什么方法可以推荐我吗?它不必是 c 甚至是 cmd 程序。
【问题讨论】:
标签: c++ c windows visual-c++ cmd
就像在谷歌浏览器中一样,当你下载一些东西时,你可以点击“在资源管理器中打开”或其他东西,它会打开 exlplorer 并突出显示该文件。 我将编写一个程序(可能是一个 c cmd 程序),在给定位置搜索文件,然后我希望能够直接从程序中单击并打开文件。 你有什么方法可以推荐我吗?它不必是 c 甚至是 cmd 程序。
【问题讨论】:
标签: c++ c windows visual-c++ cmd
要打开一个文件夹并选择文件夹中的一个或多个项目,SHOpenFolderAndSelectItems 函数就是您要找的。p>
【讨论】:
如果你下载的文件路径是downloadFilePath
然后
Process.Start(downloadFilePath)
会做正确的事。根据文件扩展名的打开动词路径,它应该启动文件扩展名的默认应用程序
【讨论】:
Process.Start 既不是 C 也不是标准 C++ 函数。这是什么语言?
我对 c++ 了解不多,但是 VB 和 youtube 对我有很大帮助:)
感谢克里斯的链接!
ShellExecute(handle, "find", <fully_qualified_path_to_folder>, NULL, NULL, 0);
也感谢其他人提供链接!
【讨论】:
你没有提到你正在使用什么框架,所以我会给你我使用的 Qt 选项。这将适用于 Windows 或 Qt 支持的任何操作系统。我在使用 Visual Studio 构建的 Qt 应用程序中使用它。
QDesktopServices::openUrl(QUrl::fromLocalFile("myfile.xls"));
QDesktopServices::openUrl(QUrl::fromLocalFile("myfile.doc"));
QDesktopServices::openUrl(QUrl::fromLocalFile("myfile.txt"));
【讨论】:
您可以使用 WinAPI 中的CreateProcess() 函数。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx
例子:
#include <iostream>
#include <Windows.h>
using namespace std;
int wmain()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
//open C:\Windows in Explorer
CreateProcess
(
TEXT("c:\\WINDOWS\\system32\\explorer.exe"),
" C:\\Windows",NULL,NULL,FALSE,
CREATE_NEW_CONSOLE,
NULL,NULL,
&si,
&pi
);
return 0;
}
【讨论】:
system()的做事方式:
#include <stdlib.h>
int main() {
system("explorer /select,C:\\Windows\\notepad.exe");
return 0;
}
【讨论】: