【发布时间】:2014-01-17 19:54:16
【问题描述】:
我使用以下代码在按下按钮时打开可执行文件:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
TCHAR buffer[MAX_PATH];
GetModuleFileName(NULL,buffer,sizeof(buffer));
ShellExecuteW(NULL, L"Open", buffer, NULL, NULL, SW_SHOWNORMAL);
}
我现在正尝试通过将 NULL 替换为 PDF 文件名来打开 PDF 文件,如下所示:
GetModuleFileName(_T("testt.pdf"),buffer,sizeof(buffer));
当我编译这个时,我得到以下错误:
error C2664: 'GetModuleFileNameW' : cannot convert parameter 1 from 'const wchar_t [10]' to 'HMODULE'
一旦成功,exe 文件将与 PDF 一起保存在一个文件夹中,但此文件的目录可能会更改,由于我使用了 GetModuleFileName,此代码是否会自动更新以适应这种情况?另外,有人可以向我解释一下我将如何修复此代码吗?
谢谢。
【问题讨论】:
-
要调用 shell 命令(Windows 资源管理器),您应该使用 Shell 函数,如 ShellExecute。
GetModuleFileName完全不同 -
使用 System::Diagnostics::Process::Start("testt.pdf") 代替。
标签: c++ visual-c++ window