- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过使用这段代码将当前的可执行路径获取到一个字符串中(我也尝试过它的其他几个版本,但它们都没有真正起作用,我总是在某些时候遇到访问冲突)
char *filename = new char[MAX_PATH + 1];
GetModuleFileName(NULL, filename, MAX_PATH);
string exe = filename;
由于某种原因,这在第一行出现访问冲突而失败。我错过了什么?
最佳答案
此版本进行错误检查,并且还尊重 GetModuleFileName
与 TCHAR 的
一起工作(第二个参数是 LPTSTR
,这是一个指向 TCHAR
的指针。
#include <windows.h>
#include <string>
typedef std::basic_string<TCHAR> TCharString;
int main()
{
TCHAR filename[MAX_PATH + 1];
if ( GetModuleFileName(NULL, filename, MAX_PATH) != 0 )
{
TCharString strExe = filename;
}
}
请注意,由于 GetModuleFileName
与 TCHAR
一起使用,因此盲目使用 std::string
作为字符串类型是不正确的。相反,创建一个基于 TCHAR
的字符串类型。
其次,进行错误检查以确保我们不会将无效字符串分配给字符串对象。
关于C++ GetModuleFileName 访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25831101/
我试图通过使用这段代码将当前的可执行路径获取到一个字符串中(我也尝试过它的其他几个版本,但它们都没有真正起作用,我总是在某些时候遇到访问冲突) char *filename = new char[MA
MSDN docs状态: lpFilename [out] A pointer to a buffer that receives the fully qualified path of the mo
为什么下面的代码不打印调用程序的路径名? #include int main() { TCHAR buffer[MAX_PATH]; GetModuleFileName(NULL,bu
我正在尝试使用 VS c++ 获取 win7 下的当前目录,但是 TCHAR pBuf[MAX_PATH]; int bytes = GetModuleFileName(NULL, pBuf, MAX
以下代码: #include #include using namespace std; int main () { LPWSTR buffer; //or wchar_t * buffer;
这是我的代码。我有一个缓冲区来保存输出,但它返回数字。有人可以解释一下吗?我怎样才能得到我的 exe 文件? wchar_t buffer[MAX_PATH]; GetModuleFileName(N
你好,我正在尝试从当前进程中检索路径...这是我的第一个代码: #include #include using namespace std; int CALLBACK WinMain( H
GetModuleFileName()将缓冲区和缓冲区大小作为输入;然而它的返回值只能告诉我们复制了多少个字符,以及大小是否不够(ERROR_INSUFFICIENT_BUFFER)。 如何确定为 G
这两者之间有什么区别(如果有的话)? MSDN 很不清楚。 这里听起来它们是等价的: https://msdn.microsoft.com/en-us/library/windows/desktop/
我正在为 COM 创建一个对象 Set FM_L = CreateObject("FMInterface.FMDebug") 在 VBScript 中。在 Fmdebug 中,我有一个调用 GetMo
我正在尝试获取位于我的 C# 2.0 应用程序之外的窗口的可执行文件的名称。我的应用程序当前使用来自“user32.dll”的 GetForegroundWindow() 调用获取窗口句柄 (hWnd
我创建了这个方法,它应该返回完整路径和文件名,以便我可以唯一地标识一个程序。但是,它只返回 C:\Program Files (x86)\Java\jre6\bin\javaw.exe或空字符串,而不
我调用这个函数来获取 exe 的路径。 GetModuleFileName(NULL, ...问题是有时它会返回短路径 (8.3) 而不是正常的长路径。 MSDN指定 The string retur
我尝试找出使用跨平台 POCO c++ lib 获取应用程序的 exe 文件名的方法。 尝试过: char* FileName ; FileName = const_cast(Application
我完全不知道这是怎么发生的。我正在尝试使用 GetModuleFileName 获取可执行文件(cmd.exe)的实际全名。调试显示 GetModuleFileName 输出了正确的路径,但就在调用
我在我的应用程序中使用 libeay32.dll/ssleay32.dll 库来支持 https。库在 Windows 7 上成功加载(不是通过我的应用程序,通过 Qt 库),但是我在 Windows
我是一名优秀的程序员,十分优秀!