General information
Title:
Problems with launching external programs
Here's my situation: I'm trying to launch an email program when new mail arrives. The email program supports having multiple windows, but I only want to launch it once and activate the window when new mail arrives. The reason why I need to activate the window is so that I can use the SendKeys function to send keys to the window after I activate it (to download mail, etc...) Here's where the problem begins:
Shell returns a ProcessID that I can use with AppActivate in order to achieve the above. But, if the email program is already running before I shell to it then AppActivate will not activate the window that I shelled to and a new window of the same program is created. Furthermore, when my app launches the email program and the user closes it and runs another program this new program somehow takes the ProcessID of the email program and it gets activated instead of the email program and the keys are sent to it (This only happens sometimes, but it's a very bad bug...)
Now I've been trying to use the CreateProcess API, but the problem with that is that it only returns the process handlers in PROCESS_INFORMATION and the SetFocusAPI function needs a hwnd handle in order to work. The same problem as above applies here as well - if the program is already running before my app launches it, no usable ProcessID is returned. Is this because the other window is the parent window?
Is there any way to get the hwnd handle from the pinfo that CreateProcess returns?
Is there another way of going about this that I haven't thought of?
Thanks in advance for any help...
Wayne
Reply
View the map of this thread
View the map of this thread starting from this message only
View all messages of this thread
View all messages of this thread starting from this message only