Проблема установки обоев рабочего стола с помощью функции SystemParametersInfo - PullRequest
1 голос
/ 02 февраля 2011

Я только изучаю C ++ и пытаюсь написать небольшую программу для смены обоев рабочего стола. Используя документацию здесь , я написал эту программу:

#include <windows.h>
#include <stdio.h>
#pragma comment(lib, "user32.lib")

void main(){

    BOOL success = SystemParametersInfo(
    SPI_SETDESKWALLPAPER,   //iuAction
    0,                      //uiParam
    "C:\\test.jpg",         //pvParam
    SPIF_SENDCHANGE         //fWinIni
    );
    if (success){
        printf("Success!\n");
    }else
        printf("Failure =(\n");
}

Программа всегда терпит неудачу, когда я пытаюсь указать путь к файлу для pvParam. Он будет правильно очищать обои, если я установлю pvParam на "". Что я делаю не так?

Спасибо -Abhorsen

Ответы [ 2 ]

4 голосов
/ 02 февраля 2011

Это дополнение к комментарию Денниса о файлах JPEG, также важно, действительно ли вы компилируете с UNICODE. Если вы это сделаете, вам нужно будет указать файл как L "C: \ test.jpg". Обратите внимание на L перед строкой, что делает его широкой строкой. Или используйте SystemParametersInfoA (), отметьте A (но это архаично).

0 голосов
/ 02 февраля 2011

В зависимости от версии ОС, pvParam может не работать.

Если вы используете Windows XP в сочетании с файлом JPEG, который пытаетесь назначить в качестве обоев, обратите внимание на комментарий в документации:

Windows Server 2003 и Windows XP / 2000: параметр pvParam не может указать файл .jpg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...