|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Как получить(узнать) путь откуда взята текущая обоина? |
|
Как получить(узнать) путь откуда взята текущая обоина?
|
Новый участник Сообщения: 42 |
Профиль | Отправить PM | Цитировать
Я хочу добавить в контекстное меню возможность удаления текущего изображения рабочего стола при включенной функции "Показ слайдов". Может кто знает хотя бы как узнать путь текущей обоины? Не тот, что записан в реестре HKEY_CURRENT_USER\Control Panel \Desktop\ Dword Wallpaper, а реальный, откуда эта обоина взята?
Вот, где хранится путь к файлу, который является источником для текущей обоины HKCU\Software\Microsoft\Internet Explorer\Desktop\General ключ dword WallpaperSource |
|
Отправлено: 13:04, 07-09-2010 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Dark Ange1,
Попробуйте так: $sKeyName = 'HKEY_CURRENT_USER\Control Panel\Desktop' ;Для Windows XP: $sValue_1 = 'Wallpaper' $sValue_2 = 'ConvertedWallpaper' MsgBox(0, '', RegRead($sKeyName, $sValue_1) & @CRLF & RegRead($sKeyName, $sValue_2)) ;Для Windows 7: MsgBox(0, '', RegRead($sKeyName, $sValue_1)) #RequireAdmin ;Проверял только на Windows XP и Windows 7 $iDel = _DelWallpaper() If $iDel = -2 Then MsgBox(0, '', 'Не поддерживается') Exit ElseIf $iDel = 1 Then Sleep(3000) $iSet = _SetWallpaper() EndIf Func _DelWallpaper() If @OSVersion <> 'WIN_XP' And @OSVersion <> 'WIN_7' Then Return SetError(1, 0, -2) EndIf Local Const $SPIF_UPDATEINIFILE = 0x0001 Local Const $SPIF_SENDCHANGE = 0x0002 Local Const $SPI_SETDESKWALLPAPER = 0x0014 Local $hImage, $sCLSID, $tBuffer $tBuffer = DllStructCreate("char Text[""]") DllStructSetData($tBuffer, "Text", "") RegWrite('HKCU\Control Panel\Desktop', 'Wallpaper', 'REG_SZ', "") DllCall("User32.dll", "int", "SystemParametersInfo", "int", $SPI_SETDESKWALLPAPER, "int", 0, _ "ptr", DllStructGetPtr($tBuffer), "int", BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDCHANGE)) Return 1 EndFunc ;==>_DelWallpaper Func _SetWallpaper() Local Const $SPIF_UPDATEINIFILE = 0x0001 Local Const $SPIF_SENDCHANGE = 0x0002 Local Const $SPI_SETDESKWALLPAPER = 0x0014 Local $hImage, $sCLSID, $tBuffer, $sTemp_File If @OSVersion = 'WIN_XP' Then $sTemp_File = @UserProfileDir & "\Local Settings\Application Data\Microsoft\Wallpaper1.bmp" ElseIf @OSVersion = 'WIN_7' Then $sTemp_File = @AppDataDir & "\Microsoft\Windows\Themes\TranscodedWallpaper.jpg" Else Return SetError(1, 0, -2) EndIf If Not FileExists($sTemp_File) Then Return SetError(1, 0, -1) $tBuffer = DllStructCreate("char Text[" & StringLen($sTemp_File) + 1 & "]") DllStructSetData($tBuffer, "Text", $sTemp_File) RegWrite('HKCU\Control Panel\Desktop', 'Wallpaper', 'REG_SZ', $sTemp_File) DllCall("User32.dll", "int", "SystemParametersInfo", "int", $SPI_SETDESKWALLPAPER, "int", 0, _ "ptr", DllStructGetPtr($tBuffer), "int", BitOR($SPIF_UPDATEINIFILE, $SPIF_SENDCHANGE)) Return 1 EndFunc ;==>_SetWallpaper |
Последний раз редактировалось madmasles, 07-09-2010 в 18:38. Отправлено: 13:45, 07-09-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Это конечно, хорошо, а если обои расположены, например, на D:\Обои? и в реестре вроде нигде нет указания, какой именно файл из D:\Обои в данную минуту используется...
|
Отправлено: 13:09, 08-09-2010 | #3 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Вобщем, потратил на поиск решения не один день, тоже нужно было удалять картинки, которые не нравились Вобщем, как-то случайно нарыл путь, ковыряясь в реестре Ну и спасибо Oszone, мне тут помогли с пакетным файлом, который я "доработал напильником" под свои нужды. Вобщем, я изгольнулся так - написал батник, конвертировал его в EXE Этой прогой, потом при помощи любого (Я пользовался Windows 7 manager) редактора контекстного меню создал пункт, ссылающийся на созданный экзешник. Пункт нужно создавать для контекстного меню рабочего стола. Ну, это мелочи. Главное - это батник (хоть оно и CMD, хе-хе)
Вот мой вариант: 1) Для удаления chcp 1251 For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKCU\Software\Microsoft\Internet Explorer\Desktop\General"^|Find /I "WallpaperSource"`) Do Set Wallpath=%%~J del "%wallpath%" ЗЫ. Возможно, в начало кода придется добавить CHCP 866 или CHCP 1251 (не помню что именно), чтобы в текстовый файл выводились не кракозябры, если имена файлов картинок будут кириллицей. Ну, это мелочи, я думаю. |
Последний раз редактировалось Dark Ange1, 17-03-2011 в 16:50. Отправлено: 16:44, 17-03-2011 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать не работает для папки по умолчанию: C:\Windows\Web\Wallpaper
и картинка с экрана исчезает с задержкой секунд 5-10 |
|
Отправлено: 07:15, 09-12-2011 | #5 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Как получить файл картинку на Windows 10?
|
Отправлено: 17:26, 24-01-2017 | #6 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать не работает под Windows 8.1
|
Отправлено: 18:07, 28-02-2017 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Что «не работает»? Под какой именно «Windows 8.1»?
|
Отправлено: 19:20, 28-02-2017 | #8 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Win 10 pro x64 15063
Индусы всё сломали. Удаляет картинку по адресу %userprofile%\AppData\Local\Temp\*.png На superuser это обсуждали, там решение через vbscript и часть уже не работает. |
Отправлено: 13:53, 15-10-2017 | #9 |
Новый участник Сообщения: 5
|
Профиль | Сайт | Отправить PM | Цитировать https://youtu.be/tmaVEk-zhRE вот может поможет.
|
Отправлено: 13:24, 03-12-2017 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - как получить путь из ярлыка ? | mitiya | Скриптовые языки администрирования Windows | 2 | 08-07-2009 15:09 | |
CMD/BAT - [решено] Как получить путь к профилю другого пользователя ? | mitiya | Скриптовые языки администрирования Windows | 6 | 27-04-2009 03:18 | |
Прочее - как узнать откуда идут сетевые запросы | -Serega- | Сетевые технологии | 12 | 04-03-2009 09:24 | |
Как узнать путь в реестре | Rigiy | Хочу все знать | 4 | 18-01-2007 02:50 | |
Как получить путь к файлу в виде строки на Visual Basic .NET | Igor Laptev | Программирование и базы данных | 1 | 14-10-2003 00:50 |
|