Как обновить рабочий стол??? ЛЮДИ ПОМОГИТЕ!
Как обновить рабочий стол програмно???
Эта тема уже обсуждалась, но у меня так и не получается написать.
Я пишу просто строку:
WinExec("rundll32 user,repaintscreen", SW_HIDE);
Всё компилируется....
Но при выполнении функции выдаёт ошибку, что мол ошибка при загрузке user'а и что не может найти Модуль.
Что делать? ПОМОГИТЕ!!!!
ЛЮДИ ПОМОГИТЕ!
Как обновить рабочий стол програмно???
Эта тема уже обсуждалась, но у меня так и не получается написать.
Я пишу просто строку:
WinExec("rundll32 user,repaintscreen", SW_HIDE);
Всё компилируется....
Но при выполнении функции выдаёт ошибку, что мол ошибка при загрузке user'а и что не может найти Модуль.
Что делать? ПОМОГИТЕ!!!!
Это должно быть как то так: ShellExecute(Application->Handle,"open","D:\WinXP\Rundll32.exe",
"rundll32 user,repaintscreen", "D:\WinXP",SW_SHOWNORMAL);
Это должно быть как то так: ShellExecute(Application->Handle,"open","D:\WinXP\Rundll32.exe",
"rundll32 user,repaintscreen", "D:\WinXP",SW_SHOWNORMAL);
Здравствуйте!
Попробовал, как вы сказали. Компилирует, ошибок не выдаёт. Но к сожалению не работает. Программа выполняется, но никаких реакций на рабочем столе...
Подскажите, что делать?
Заранее благодарен
Здравствуйте!
Попробовал, как вы сказали. Компилирует, ошибок не выдаёт. Но к сожалению не работает. Программа выполняется, но никаких реакций на рабочем столе...
Подскажите, что делать?
Заранее благодарен
А какой у тя виндовс..??
А какой у тя виндовс..??
А вообще возьми утилиту Spy.exe (мелко мягких, ну или какую еще), и поисследуй по эксперементируй с рабочем столом..
А вообще возьми утилиту Spy.exe (мелко мягких, ну или какую еще), и поисследуй по эксперементируй с рабочем столом..
У меня XP
Не мучайся:
RedrawWindow (NULL,0,0,0x181);
Мда, зачем такие сложности с шеллекзекуте? Вам что - скучно??
Не мучайся:
RedrawWindow (NULL,0,0,0x181);
Попробовал RedrawWindow (NULL,0,0,0x181);
При выполнении вроде-бы чуть-чуть рабочий стол мигает, как при обновлении, но к сожалению не обновляется...
Подскажи, в чём тут проблема???
Попробовал RedrawWindow (NULL,0,0,0x181);
При выполнении вроде-бы чуть-чуть рабочий стол мигает, как при обновлении, но к сожалению не обновляется...
Подскажи, в чём тут проблема???
Попробуй другую комбинацию флагов, не 0х181, а
0x284
Вообще посмотри на флаги, ф-и, если не получится с этим
Попробуй другую комбинацию флагов, не 0х181, а
0x284
Вообще посмотри на флаги, ф-и, если не получится с этим
Не знаю, не получается...
Может ещё какой-то способ есть?
Не знаю, не получается...
Может ещё какой-то способ есть?
А как именно ты загаживаешь раб. стол?
Не знаю, не получается...
Может ещё какой-то способ есть?
Есть и другой способ, я им пользуюсь с недавних пор, тоже долго морочился пока нашёл
InvalidateRect(NULL,NULL,True);
Заставляет перерисоваться все окна, в том числе и рабочий стол.
Есть и другой способ, я им пользуюсь с недавних пор, тоже долго морочился пока нашёл
InvalidateRect(NULL,NULL,True);
Заставляет перерисоваться все окна, в том числе и рабочий стол.
Слушай, и InvalidateRect(NULL,NULL,True); также не работает... Тоже, вроде бы всё мигает, но обои на рабочем столе не меняются :-(
Не знаю, что и делать. Я просто программой в регистре меняю Wallpaper каждый день. Но при загрузке прога срабатывает позже чем виндовс загружает обои с регистра... И картинка появляется старая. помогает только F5 для того, что бы обновить Desktop. Может кто ещё знает как это программно написать или почему все это не помогает???
С уважением Сергей.
Слушай, и InvalidateRect(NULL,NULL,True); также не работает... Тоже, вроде бы всё мигает, но обои на рабочем столе не меняются :-(
Не знаю, что и делать. Я просто программой в регистре меняю Wallpaper каждый день. Но при загрузке прога срабатывает позже чем виндовс загружает обои с регистра... И картинка появляется старая. помогает только F5 для того, что бы обновить Desktop. Может кто ещё знает как это программно написать или почему все это не помогает???
С уважением Сергей.
Мог бы сразу сказать что тебе обои нужно динамически поменять ...
Для этого обновление и не нужно...
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, "C:\\Windows\\лес.bmp", (SPIF_SENDWININICHANGE + SPIF_UPDATEINIFILE));
Пользуйся вот такой командой и в реестре поменяется и на экране...
:D
Мог бы сразу сказать что тебе обои нужно динамически поменять ...
Для этого обновление и не нужно...
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, "C:\\Windows\\лес.bmp", (SPIF_SENDWININICHANGE + SPIF_UPDATEINIFILE));
Пользуйся вот такой командой и в реестре поменяется и на экране...
:D
О! Теперь всё работает! Спасибо тебе большое!!!:D
Мог бы сразу сказать что тебе обои нужно динамически поменять ...
Для этого обновление и не нужно...
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, "C:\\Windows\\лес.bmp", (SPIF_SENDWININICHANGE + SPIF_UPDATEINIFILE));
Пользуйся вот такой командой и в реестре поменяется и на экране...
:D
Ребят, подскажите чайнику, куда эту строку надо вводить?
Заранее благодарю.
У самого такая трабла...
Ребят, подскажите чайнику, куда эту строку надо вводить?
Заранее благодарю.
У самого такая трабла...
Как на счет - вопрос нормально сформулировать?
На дату посмотреть?
Как на счет - вопрос нормально сформулировать?
На дату посмотреть?
Что делать с этим:
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, "C:\\Windows\\лес.bmp", (SPIF_SENDWININICHANGE + SPIF_UPDATEINIFILE)); ?
Куда вводить эту командную строку?
В Start>Run?
Что делать с этим:
SystemParametersInfo (SPI_SETDESKWALLPAPER, 0, "C:\\Windows\\лес.bmp", (SPIF_SENDWININICHANGE + SPIF_UPDATEINIFILE)); ?
Куда вводить эту командную строку?
В Start>Run?
Кто здесь? :o
Вообще-то это строка программного кода, и вводить ее надо в какой-нибудь редактор (например в билдеровский - см.название форума), а потом еще компилировать, а потом еще полученный файл запускать (если файл получится конечно). Короче, тебе наверное проще мышкой на столе правой кнопкой щелкнуть и там обои поменять :D