[python-win32] Creating a process and getting a handle

Mike Driscoll mdriscoll at co.marshall.ia.us
Wed Jan 23 16:19:53 CET 2008


Tim, 

Mike Driscoll wrote:
> > I am trying to get a handle on an external process (Internet Explorer
6 in
> > this case) that I open using win32process. I need the handle so that I
can
> > make said process the top window. 

> When you call CreateProcess, that window should automatically become the

> top window.  Are you saying that's not happening?  Have you tried 
> creating a STARTUPINFO struct and filling in the wShowWindow element?

Sorry, I guess I thought more than I actually typed. It does make the
newly created window the top window. But later on in my program, I open
the source code for the displayed page and will need to make sure that I
return to the correct IE instance, which is why I wanted a handle on the
IE window. I thought I knew the correct terminology to express this, but I
guess not.

<snip>

> >
> > # attempt to make Internet Explorer 6 the Foreground Window
> > win32gui.SetForegroundWindow(handle)
> >   

> No, the error message is right.  A process handle is not the same as a 
> window handle.  Indeed, a process need not have any windows at all.

> > I can get the handle by doing this:
> >
> > hwnd = win32gui.FindWindow('IEFrame',None)
> >
> > But if there's multiple Explorer windows open, I may not get the
window I
> > want. That's why I would like to create my own so I can have what
amounts
> > to an "exclusive" handle to it. Any hints would be appreciated.
> >   

> One possibility is to enumerate through all of the top-level windows 
> using EnumWindows, and for each window call GetWindowThreadProcessId to 
> find the process ID associated with that window to find the one that 
> matches your process.  Remember that the process ID is not the same as a

> process handle; the process ID is the third thing in the tuple 
> CreateProcess returns.

Yeah, I am well aware of this method and was hoping to avoid it. Thanks
for the clarification on window handle versus process handle. I was
thinking about this the wrong way because I thought they were the same.


> -- 
> Tim Roberts, timr at probo.com
> Providenza & Boekelheide, Inc.

Mike Driscoll
Applications Specialist
MCIS - Technology Center




More information about the python-win32 mailing list