<p>I am trying to use <a href="http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx" rel="nofollow noreferrer">ShellExecute</a> to open a file in Excel. I was reading about the function on MSDN forums, and I found the folowing information about the handle, which is the first parameter: </p>

<p>"hwnd [in] A handle to the owner window used for displaying a user interface (UI) or error messages. This value can be NULL if the operation is not associated with a window."</p>

<p>I have also heard this referred to as the handle to the parent window. What is the parent/owner window? As you see below I am using NULL for the handle, but since the operation is indeed associated with a window, I probably need a handle, but I don't know what to use for the handle.</p>

<pre><code>ShellExecute(NULL, "open" ,"Excel.exe", 
    "C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls", 
    NULL, SW_SHOWNORMAL);
</code></pre>

It is
usually 0
hwnd : parent window that will receive a possible messagebox. This parameter is usually 0.
It refers to the top-level window: the window you are opening does not have any parent, and is the main window for the application being executed.
When you are switching between applications (ALT-TAB), you are displaying the next top-level window (the next app with a parent handle equals to 0) in the z-order (for instance).
Of course, the parent to your app
can not be the Desktop Window itself
:
If you create a child window whose parent is GetDesktopWindow(), your window is now glued to the desktop window. If your window then calls something like MessageBox(), well that's a modal dialog, and then the rules above kick in and the desktop gets disabled and the machine is toast.
For the path, I would advice double quotes surrounding simple quotes:
```
"  ' ... ' "
```
```
```
"'C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls'"
```
```
Could work also (untested) with double double quotes :
```
"  "" ... "" "
```
```
```
"""C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls"""
```
```
, as illustrated by
this thread
.
Actually, as mentioned in
your other question
by
Andy
and by
Mesidin
, and in
ShellExecute Function manual
, you can open the file, and pass its path in parameter.
```
```
ShellExecute( NULL, "open", 
              "Test.xls", "C:\\Documents and Settings\\Lab1\\My Documents\\", 
              NULL, SW_SHOWNORMAL);
```
```
That means Excel is the default application for opening .xls extension files though.