按下按钮时,我使用以下代码打开可执行文件:
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);
}
我现在尝试通过将CSV替换为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?另外,有人可以向我解释如何修复此代码吗?
谢谢。
答案 0 :(得分:0)
为什么你认为打电话:
GetModuleFileName(_T("testt.pdf"),buffer,sizeof(buffer));
会打开PDF文件吗?
此功能定义如下:
DWORD WINAPI GetModuleFileName(
_In_opt_ HMODULE hModule,
_Out_ LPTSTR lpFilename,
_In_ DWORD nSize
);
评论的例子:
ShellExecuteW(
NULL, L"open",
L"C:\\my.pdf",
NULL,
NULL,
SW_SHOWNORMAL
);