Hi everybody. I'm trying to write a script that'll change desktop
wallpaper every time its run. Heres what I've gotten so far:
#random wallpaper changer!
import _winreg
from os import walk
from os.path import exists
from random import randint
#first grab a registry handle.
handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Control Panel
\Desktop',_winreg.KEY_SET_VALUE)
def GenerateListOfWallpapers():
targetDir = 'C:\Documents and Settings\Enrico Jr\My Documents\Jr
\'s Wallpapers'
fileNames = []
filePaths = []
if exists(targetDir):
#proceed to make the list of files
for x,y,z in walk(targetDir):
for name in z:
fileNames.append(name)
for item in fileNames:
filePaths.append(targetDir + '\\' + item)
return filePaths
def RandomlySelectWallpaper(filePaths):
index = randint(0,len(filePaths)-1)
RandomlySelectedWallpaper = filePaths[index]
return RandomlySelectedWallpaper #it should be a string...
#now to edit the wallpaper registry key
newWallpaper = RandomlySelectWallpaper(GenerateListOfWallpapers() )
print "Registry Handle Created."
print "Random wallpaper selected."
_winreg.SetValueEx(handle,'ConvertedWallpaper',
0,_winreg.REG_SZ,newWallpaper)
print "New wallpaper value set."
The problem is, every time I run it, I get an "Access Denied" error
when it tries to execute
_winreg.SetValueEx(), even though i've opened the key with the
KEY_SET_VALUE mask like it said in the help docs. Could there be
another problem or a better way to do this? 5 2432
On Jun 25, 9:48 pm, teh_sAbEr <teh.sa...@gmail.comwrote:
Hi everybody. I'm trying to write a script that'll change desktop
wallpaper every time its run. Heres what I've gotten so far:
#random wallpaper changer!
import _winreg
from os import walk
from os.path import exists
from random import randint
#first grab a registry handle.
handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Control Panel
\Desktop',_winreg.KEY_SET_VALUE)
def GenerateListOfWallpapers():
targetDir = 'C:\Documents and Settings\Enrico Jr\My Documents\Jr
\'s Wallpapers'
fileNames = []
filePaths = []
if exists(targetDir):
#proceed to make the list of files
for x,y,z in walk(targetDir):
for name in z:
fileNames.append(name)
for item in fileNames:
filePaths.append(targetDir + '\\' + item)
return filePaths
def RandomlySelectWallpaper(filePaths):
index = randint(0,len(filePaths)-1)
RandomlySelectedWallpaper = filePaths[index]
return RandomlySelectedWallpaper #it should be a string...
#now to edit the wallpaper registry key
newWallpaper = RandomlySelectWallpaper(GenerateListOfWallpapers() )
print "Registry Handle Created."
print "Random wallpaper selected."
_winreg.SetValueEx(handle,'ConvertedWallpaper',
0,_winreg.REG_SZ,newWallpaper)
print "New wallpaper value set."
The problem is, every time I run it, I get an "Access Denied" error
when it tries to execute
_winreg.SetValueEx(), even though i've opened the key with the
KEY_SET_VALUE mask like it said in the help docs. Could there be
another problem or a better way to do this?
Note the line
#first grab a registry handle.
handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, 'Control Panel
\Desktop', _winreg.KEY_SET_VALUE)
OpenKey() takes four arguments: (1) The Registry key handle or one of
the predefined constants, (2) the string containing the subkey to
open, (3) the 'res' (which I don't know what is :), and the 'sam',
which is the access mask (KEY_SET_VALUE, in this case). You are only
passing three arguments, so the access mask is going to the 'res'
argument instead of the 'sam' argument. Pass instead 0 as the res:
handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,
'Control Panel\Desktop',
0,
_winreg.KEY_SET_VALUE)
Regards,
Sebastian
teh_sAbEr wrote:
Hi everybody. I'm trying to write a script that'll change desktop
wallpaper every time its run. Heres what I've gotten so far:
#random wallpaper changer!
import _winreg
from os import walk
from os.path import exists
from random import randint
#first grab a registry handle.
handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Control Panel
\Desktop',_winreg.KEY_SET_VALUE)
def GenerateListOfWallpapers():
targetDir = 'C:\Documents and Settings\Enrico Jr\My Documents\Jr
\'s Wallpapers'
fileNames = []
filePaths = []
if exists(targetDir):
#proceed to make the list of files
for x,y,z in walk(targetDir):
for name in z:
fileNames.append(name)
for item in fileNames:
filePaths.append(targetDir + '\\' + item)
return filePaths
def RandomlySelectWallpaper(filePaths):
index = randint(0,len(filePaths)-1)
RandomlySelectedWallpaper = filePaths[index]
return RandomlySelectedWallpaper #it should be a string...
#now to edit the wallpaper registry key
newWallpaper = RandomlySelectWallpaper(GenerateListOfWallpapers() )
print "Registry Handle Created."
print "Random wallpaper selected."
_winreg.SetValueEx(handle,'ConvertedWallpaper',
0,_winreg.REG_SZ,newWallpaper)
print "New wallpaper value set."
The problem is, every time I run it, I get an "Access Denied" error
when it tries to execute
_winreg.SetValueEx(), even though i've opened the key with the
KEY_SET_VALUE mask like it said in the help docs. Could there be
another problem or a better way to do this?
Common error. You have to open the key so that it can be written as follows:
reg = _winreg.HKEY_CURRENT_USER
key = r'Control Panel\Desktop'
handle = _winreg.OpenKey(reg, key, 0, _winreg.KEY_WRITE)
Note: be careful with backslashes (\) in non-raw strings they will be
interpreted as escaped sequences. You were lucky because \D doesn't
represent anything escaped. You should either use r's\gg\gg' or use double
backslashes 's\\gg\\gg'.
-Larry
On Jun 25, 10:48*pm, teh_sAbEr <teh.sa...@gmail.comwrote:
Hi everybody. I'm trying to write a script that'll change desktop
wallpaper every time its run. Heres what I've gotten so far:
#random wallpaper changer!
import _winreg
from os import walk
from os.path import exists
from random import randint
#first grab a registry handle.
handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Control Panel
\Desktop',_winreg.KEY_SET_VALUE)
You're missing the third parameter to OpenKey. Try:
handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,
'Control Panel\Desktop',_0, winreg.KEY_SET_VALUE)
The problem is, every time I run it, I get an "Access Denied" error
when it tries to execute
_winreg.SetValueEx(), even though i've opened the key with the
KEY_SET_VALUE mask like it said in the help docs. Could there be
another problem or a better way to do this?
Great! It works properly now but I have one more question, would
anyone know how to get the changes to take effect immediately? Like
some sort of Python way to force the desktop to reload? AFAIK the only
way that'll happen is if I use the Display Properties dialog box. The
Registry value is changed properly, its just I don't think the changes
will take effect until I restart.
teh_sAbEr <te*******@gmail.comwrote:
>Hi everybody. I'm trying to write a script that'll change desktop wallpaper every time its run. Heres what I've gotten so far:
#random wallpaper changer! import _winreg from os import walk from os.path import exists from random import randint
#first grab a registry handle. handle = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Control Panel \Desktop',_winreg.KEY_SET_VALUE)
def GenerateListOfWallpapers():
targetDir = 'C:\Documents and Settings\Enrico Jr\My Documents\Jr \'s Wallpapers'
You are fortunate that your name is not "Tim" or "Ian" or "Nathan", because
this would not have worked as you have written it.
You either need to double the backslashes:
... 'C:\\Documents and Settings\\Enrico...'
or use forward slashes:
... 'C:/Documents and Settings/Enrico...'
or use the "r" modifier:
... r'C:\Documents and Settings\Enrico...'
However, as a general practice, it's probably better to get the special
directories from the environment:
targetDir = os.environ['USERPROFILE'] + '\\My Documents\\Jr\'s
Wallpapers'
Remember that it's not called "Documents and Settings" on Vista...
--
Tim Roberts, ti**@probo.com
Providenza & Boekelheide, Inc. This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Paul Rubin |
last post by:
As what must be penance for something or other, I'm needing to release
a Python app for use under Windows XP. Please be gentle with me since
I'm a Un*x weenie and the only thing I've had much...
|
by: glenn |
last post by:
I am trying to write to the registry and the objects that are suppose to be
handling this function are not working. Here is what is happening.
I am issuing the following commands:
RegistryKey...
|
by: Richard |
last post by:
All,
I have coded an Outlook automation Addin in C# and .NET.
I created the project using the Extensibility wizard. The
Addin installs and runs Ok on my machine.
However I am unable to...
|
by: Dhilip Kumar |
last post by:
Hi All,
I'm writing a Windows Service app using C#. I need to read some
configuration settings before the service starts up. These settings will be
used by the service in its operation. ...
|
by: vighnesh |
last post by:
Hi All
I have to develop an application, which has to scan the windows registry and
fix the bugs if any.
Please let me know whether it is possible to develop that application in
VB.NET/C#.NET?...
|
by: Benny Raymond |
last post by:
I get the following error message when trying to use the Excel Interop
on my wife's machine however I don't get it on my own - we have the same
version of Office installed - what could be the...
|
by: JohnB111 |
last post by:
Hi
Environment:
Windows XPPRO SP2
IIS 5.1
AVG Anti Virus (Not script Blocking)
The following code used to work perfectly on my local development machine
and still does on my web server.
|
by: chitra g |
last post by:
Hi,
I tried all the options below but did not work.
Your suggestions please.
|
by: AmberJain |
last post by:
Windows Autorun FAQs: Description
NOTE- If you are unfamiliar with the concept of autoruns, then read "Windows Autorun FAQs: Overview".
Que-1: How can I safely remove or edit the autorun...
|
by: Kemmylinns12 |
last post by:
Blockchain technology has emerged as a transformative force in the business world, offering unprecedented opportunities for innovation and efficiency. While initially associated with cryptocurrencies...
|
by: antdb |
last post by:
Ⅰ. Advantage of AntDB: hyper-convergence + streaming processing engine
In the overall architecture, a new "hyper-convergence" concept was proposed, which integrated multiple engines and...
|
by: Matthew3360 |
last post by:
Hi there. I have been struggling to find out how to use a variable as my location in my header redirect function.
Here is my code.
header("Location:".$urlback);
Is this the right layout the...
|
by: Matthew3360 |
last post by:
Hi, I have a python app that i want to be able to get variables from a php page on my webserver. My python app is on my computer. How would I make it so the python app could use a http request to get...
|
by: AndyPSV |
last post by:
HOW CAN I CREATE AN AI with an .executable file that would suck all files in the folder and on my computerHOW CAN I CREATE AN AI with an .executable file that would suck all files in the folder and...
|
by: WisdomUfot |
last post by:
It's an interesting question you've got about how Gmail hides the HTTP referrer when a link in an email is clicked. While I don't have the specific technical details, Gmail likely implements measures...
|
by: Matthew3360 |
last post by:
Hi,
I have been trying to connect to a local host using php curl. But I am finding it hard to do this. I am doing the curl get request from my web server and have made sure to enable curl. I get a...
|
by: Carina712 |
last post by:
Setting background colors for Excel documents can help to improve the visual appeal of the document and make it easier to read and understand. Background colors can be used to highlight important...
|
by: BLUEPANDA |
last post by:
At BluePanda Dev, we're passionate about building high-quality software and sharing our knowledge with the community. That's why we've created a SaaS starter kit that's not only easy to use but also...
| |