How to retrieve a handle to the Process by UseShellExecute=true?

  • Thread starter Thread starter Fei Yuan
  • Start date Start date
F

Fei Yuan

Please forgive me re-posting this question since I wasn't clear in my
original post.

----
Starting an external process needs to pass it a ProcessStartInfo() object.
ProcessStartInfo has a property "UseShellExecute" that can open/print a
file. However, I'm having a hard time getting the handle to the application
after calling Process.Start(). Basically, I need the handle to monitor the
application launched. Process.Handle throws an exception of "no process
associated".

It looks to me that if the process is an executable file, getting process
handle is easy. But if the file is a regular file and opened with
ShellExecute, I can't get the process ID.

Anybody knows where I can retrieve this handle or process ID? I also looked
into Windows API's "shell32.dll" "Execute()" function, it however returns a
handle that's only good to check if any error occurred, not the actual
Process handle.

Any help or hint will be appreciated!

Regards,
- Fei -
 
Fei Yuan said:
Please forgive me re-posting this question since I wasn't clear in my
original post.

----
Starting an external process needs to pass it a ProcessStartInfo() object.
ProcessStartInfo has a property "UseShellExecute" that can open/print a
file. However, I'm having a hard time getting the handle to the
application
after calling Process.Start(). Basically, I need the handle to monitor
the
application launched. Process.Handle throws an exception of "no process
associated".

It looks to me that if the process is an executable file, getting process
handle is easy. But if the file is a regular file and opened with
ShellExecute, I can't get the process ID.

Anybody knows where I can retrieve this handle or process ID? I also
looked
into Windows API's "shell32.dll" "Execute()" function, it however returns
a
handle that's only good to check if any error occurred, not the actual
Process handle.

Any help or hint will be appreciated!

Regards,
- Fei -


The handle should be correct, what are you doing with the handle when "no
process associated" is thrown.
It wouild help if you could post some code?.

Willy.
 
Process p = new Process();
ProcessStartInfo s = new ProcessStartInfo();
s.FileName = @"C:\twain.doc";
p.StartInfo = s;
p.StartInfo.UseShellExecute = true;
p.Start();

The above code will not return a handle or Process when executed, but if you
change "twain.doc" into a "txt" or "exe" file, the handle will be retrieved.
Does it have something to do with the DDE shell execution?
 
Back
Top