3

システムコマンドが悪いと何度も言われましたが、レジストリ値を変更する必要があり、私の強みはバッチであるため、それを行うコマンドを念頭に置いています。

system("REG ADD "HKCU\Control Panel\Desktop" /V Wallpaper /T REG_SZ /F /D "C:\background.bmp"");
system("REG ADD "HKCU\Control Panel\Desktop" /V WallpaperStyle /T REG_SZ /F /D 0");
system("REG ADD "HKCU\Control Panel\Desktop" /V TileWallpaper /T REG_SZ /F /D 2");
system("%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters");

ただし、これを使用すると、Visual C++ 2010 Express で HKCU と、パネルとデスクトップの間のスラッシュがエラーとして強調表示され、プログラムをコンパイルまたはデバッグできなくなります。システム コマンドを使用したくないので、C++ を使用して同じレジストリ コマンドを実行する方法を考えていました。WIN32 REGISTRY API がわかりません???

そして、これにシステムコマンドを使用しても大丈夫ですか

system("%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters");

C ++がそれなしで同じタスクを実行できるかどうか、またできる場合はどうすればよいかわかりません。

申し訳ありませんが、大きな質問であることは承知していますが、可能であればコードを含めていただけますか。私は始めたばかりで、他のフォーラムはどれも意味がなく、少なくとも 3 時間探していました (私はコンピューターに愚かではありません)!! !

前もって感謝します

4

2 に答える 2

5

Win32 レジストリ APIを使用してください!!!

于 2012-10-03T03:34:32.280 に答える
1

特殊文字を含む文字列リテラルを作成するには、追加の作業が必要です。たとえば、コードでは、"afterADDは文字列の終わりです。

各特殊文字(引用符とバックスペースを含む)の前にバックスペースを入れて、コンパイラーによって処理されるのではなく、文字列に入れられるようにする必要があります。これはエスケープと呼ばれます。

結果は次のようになります。

system("REG ADD \"HKCU\\Control Panel\\Desktop\" /V Wallpaper /T REG_SZ /F /D \"C:\\background.bmp\"");

もちろん、レジストリAPIを使用することはタスクに適したオプションですが、文字列リテラルを正しく記述する方法も知っておく必要があります。

于 2012-10-03T03:39:37.440 に答える