Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Launching Wordpad on Windows

Reply
Thread Tools

Launching Wordpad on Windows

 
 
Patrick L. Nolan
Guest
Posts: n/a
 
      01-20-2004
I'm trying to find a clean way to launch a Wordpad editor
on Windows. By "clean", I mean that it should work on as
many versions of Windows as possible, and it shouldn't
require installing any extra software. I assume everyone
has win32api and its friends.

The problem is to find the path to wordpad.exe. At first
I just copied the path from my XP machine:
c:\Program Files\Windows NT\Accessories\WORDPAD.EXE

I verified that the same path works on W2K, but I don't
know about older versions. With some labor I was able
to come up with a longer, more obfuscated bit of code:

item = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\ \App Paths\\WORDPAD.EXE"
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, item, 0,
win32con.KEY_QUERY_VALUE)
info = win32api.RegQueryValueEx(key, None)
win32api.RegCloseKey(key)
editor = win32api.ExpandEnvironmentStrings(info[0])

I would like to solicit learned opinions about this. Which
version will work in more versions of Windows? Is there a
better approach?

--
* Patrick L. Nolan *
* W. W. Hansen Experimental Physics Laboratory (HEPL) *
* Stanford University *
 
Reply With Quote
 
 
 
 
Adonis
Guest
Posts: n/a
 
      01-20-2004
"Patrick L. Nolan" <(E-Mail Removed)> wrote in message
news:buhtvp$l0j$(E-Mail Removed)...
> I'm trying to find a clean way to launch a Wordpad editor
> on Windows. By "clean", I mean that it should work on as
> many versions of Windows as possible, and it shouldn't
> require installing any extra software. I assume everyone
> has win32api and its friends.
>
> The problem is to find the path to wordpad.exe. At first
> I just copied the path from my XP machine:
> c:\Program Files\Windows NT\Accessories\WORDPAD.EXE
>
> I verified that the same path works on W2K, but I don't
> know about older versions. With some labor I was able
> to come up with a longer, more obfuscated bit of code:
>
> item = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\ \App

Paths\\WORDPAD.EXE"
> key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, item, 0,
> win32con.KEY_QUERY_VALUE)
> info = win32api.RegQueryValueEx(key, None)
> win32api.RegCloseKey(key)
> editor = win32api.ExpandEnvironmentStrings(info[0])
>
> I would like to solicit learned opinions about this. Which
> version will work in more versions of Windows? Is there a
> better approach?
>
> --
> * Patrick L. Nolan *
> * W. W. Hansen Experimental Physics Laboratory (HEPL) *
> * Stanford University *



This works for me:
(Using WinXP Pro)

Python 2.3.3 (#51, Dec 18 2003, 20:22:39) [MSC v.1200 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system("start wordpad")

0

Hope this helps.

Adonis


 
Reply With Quote
 
 
 
 
Michael Geary
Guest
Posts: n/a
 
      01-20-2004
> > I'm trying to find a clean way to launch a Wordpad
> > editor on Windows. By "clean", I mean that it should
> > work on as many versions of Windows as possible,
> > and it shouldn't require installing any extra software.
> > I assume everyone has win32api and its friends.
> >
> > The problem is to find the path to wordpad.exe. At
> > first I just copied the path from my XP machine:
> > c:\Program Files\Windows NT\Accessories\WORDPAD.EXE
> >
> > I verified that the same path works on W2K, but I
> > don't know about older versions.


Never hard code a path like that. It definitely won't work on all versions
of Windows. It won't even work on all XP systems. The Program Files
directory isn't always on the C: drive!

> > With some labor I was able to come up with a
> > longer, more obfuscated bit of code:
> >
> > [code using the App Paths registry key]
> >
> > I would like to solicit learned opinions about this.
> > Which version will work in more versions of
> > Windows? Is there a better approach?


You can do it with App Paths, but that's way too much work. It's not the
Windowsonic way to do it.

> This works for me:
> (Using WinXP Pro)
>
> >>> import os
> >>> os.system("start wordpad")

> 0
>
> Hope this helps.


I wouldn't recommend os.system. The problem is that it starts a command
shell. You didn't notice this because you're testing from a console window,
so the secondary command shell runs in the same console window you're
already using. But if you put this code in a non-console app, it will open a
new console window in addition to the WordPad window. That window will close
right away because you're using the 'start' command, but it's extra screen
activity you don't want.

So what's the right way to do it? The underlying Windows function you're
looking for is ShellExecute(). That's the easiest way to launch an app. It
knows all about App Paths and the environment PATH. It's the same function
that gets called if you do a Start/Run... in the Windows UI.

You can use win32api.ShellExecute, or better yet, the os.startfile function
calls ShellExecute, so you don't even need win32api:

>>> import os
>>> os.startfile('wordpad.exe')


-Mike


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
where to get WordPad for Windows 98? Paul Computer Information 16 09-13-2011 09:51 PM
Re: Write Chinese in Wordpad Luigi Donatello Asero HTML 11 09-26-2005 01:54 PM
Re: Write Chinese in Wordpad Luigi Donatello Asero HTML 0 09-25-2005 11:39 PM
wordpad in Windows ME striker Computer Support 3 02-27-2004 12:55 PM
Re: Wordpad Merlin Computer Support 3 07-10-2003 11:26 PM



Advertisments