【发布时间】:2014-03-13 08:25:46
【问题描述】:
我想我的问题是 - 我如何将 exe 位置的目录作为 LPCWSTR 获取,以便我可以将其输入到我的代码中
#include <iostream>
#include <Windows.h>
int main(int argc, char **argv)
{
WIN32_FIND_DATA a;
HANDLE swap = FindFirstFile(/*(LPCWSTR)__exe_directory__*/,&a);
if (swap!=INVALID_HANDLE_VALUE)
{
do
{
char *sptn = new char [lstrlen(a.cFileName)+1];
for (int c=0;c<lstrlen(a.cFileName);c++)
{
sptn[c]=char(a.cFileName[c]);
}
sptn[lstrlen(a.cFileName)]='\0';
std::cout<<sptn<<std::endl;
}
while (FindNextFile(swap,&a));
}
else std::cout<<"undetected file\n";
FindClose(swap);
system("pause");
}
它会返回目录中列出的文件而不会出错。我知道我的代码在给定目录的情况下已经可以工作,我已经对其进行了测试。
【问题讨论】:
-
我想使用
GetModuleFileNameW并且稍微修剪一下是不可能的? -
我试过getmodulefilenamew ...你说的稍微修剪一下是什么意思,请详细说明?当我把它放在那里
GetModuleFileNameW(NULL,sptn,MAX_PATH)——首先,它不是一个LPCWSTR,当我输入cast它时,它会返回数字78作为输出? -
你不能使用 argv[0] 和 PATH 创建它吗?
-
@Jim 我只是在这个 int main(...) 环境中工作以测试我正在创建的函数,然后我只需将其复制并粘贴到我的主项目中。鉴于我的主项目中的函数是 void(),我将如何使用 argv[0]?即使那样,如果您无法在主函数中指定参数, __argv[0] 与 argv[0] 相同,但无论如何类型转换再次返回相同的数字 78,并且它首先不是 LPCWSTR。
-
将窄字符串转换为宽字符串:stackoverflow.com/questions/19715144/…