Visual C ++ GetModuleFileName()问题

时间:2014-01-17 19:54:17

标签: c++ visual-c++ window

按下按钮时,我使用以下代码打开可执行文件:

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?另外,有人可以向我解释如何修复此代码吗?

谢谢。

1 个答案:

答案 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
);