我目前正在学习 C++,想要更改我的桌面壁纸。但是我收到上面这个错误。
#include <string>
#include <iostream>
#include <Windows.h>
using namespace std; 
int main() {
LPWSTR test = L"C:\\Users\\user\\Pictures\\minion.png";
int result = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, 
test, SPIF_UPDATEINIFILE);
}
Run Code Online (Sandbox Code Playgroud)
“Const wchar_t*”类型的值不能用于初始化 LPWSTR 类型的实体
有任何想法吗?
谢谢
我试图找到替代LPWSTR将项目移植到gcc.
typedef __nullterminated WCHAR *NWPSTR, *LPWSTR, *PWSTR;
Run Code Online (Sandbox Code Playgroud)
什么是null终止?如果我这样做的话会安全吗
typedef WCHAR   *LPWSTR 
Run Code Online (Sandbox Code Playgroud) 好的,我的程序有问题.我之前提出过一个问题,但没有人真正理解我的问题,所以我这次尝试一种新方法.
如果你很好奇,这是我的问题:
我的程序以形式接受参数
char* argv[],并且我无法指向正在argv[1]使用的任何东西LPWSTR,因为它只指向const wchar_t*对象.
这是一个新的事情,我试图解决我的问题(我已经尝试了多种东西,但我需要知道如何做我想的,或者如果可能的话)
基本上,我的想法是#define某种功能,它可以接受任何内容,argv[1]并const wchar_t*使用该值定义a .
像这样的东西:
#define path       ((const wchar_t*)argv[1])
Run Code Online (Sandbox Code Playgroud)
我不确定这是正确的方式(或者即使这是可能的)做我想做的事......
如果你有一个更好的方法来解决我的问题,请(请)告诉我如何帮助我,我一直在考虑这个很长的时间!
我的计划说明:
我正在制作一个接受争论的程序.参数是驱动器的名称,例如"F:".然后它使用
CreateFile带驱动器号的函数.如果你去这里,看看函数的第一个参数,我想你会看到我的意思....问题是,对于我来说,制作一个LPWSTR,我需要一个const wchat_t*对象....我希望这一次我的问题很清楚,上次人们真的不明白我想要做什么.
无论如何,谢谢!编辑1:这里是解决我的程序的行(这是我必须做的工作,没有参数)(我在这里使用固定值)
int main()
{
HANDLE device;
device = CreateFile(L"\\\\.\\F:",    // Drive to open
    GENERIC_READ | GENERIC_WRITE,       // Access mode
    FILE_SHARE_READ | FILE_SHARE_WRITE, // Share Mode
    NULL,                   // Security Descriptor
    OPEN_EXISTING,          // How to create
    0,                      // File attributes
    NULL);  
}
Run Code Online (Sandbox Code Playgroud)
这是有参数(不起作用)
int main(int …Run Code Online (Sandbox Code Playgroud)