Make a control a child of the Desktop?
-
I get correct values all the time.:wtf:
Rama Krishna wrote: I get correct values all the time. ::Throwing Tantrum:: ::Feet Stumping:: ::Purple Face:: That's not fair, I just get zeros! ;) So, they code you use and actual get a value is the same as I showed in the last post? Rocky Moore
-
Here is the code as it is:-
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;namespace WindowsApplication2
{
/// /// Summary description for Form1.
///
public class Form1 : System.Windows.Forms.Form
{
/// /// Required designer variable.
///
private System.ComponentModel.Container components = null;\[System.Runtime.InteropServices.DllImport("User32.dll")\] extern static IntPtr GetDesktopWindow(); public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); IntPtr hwnd = GetDesktopWindow(); System.Diagnostics.Debug.Assert(hwnd != IntPtr.Zero); } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.Size = new System.Drawing.Size(300,300); this.Text = "Form1"; } #endregion /// /// The main entry point for the application. /// \[STAThread\] static void Main() { Application.Run(new Form1()); } }
}
That worked, must be something in the code around it that is causing the problem. At least now I can look in the right direction. Thanks for the test! I should have thought to test it in a different project first :-O Rocky Moore
-
That worked, must be something in the code around it that is causing the problem. At least now I can look in the right direction. Thanks for the test! I should have thought to test it in a different project first :-O Rocky Moore
Again, Try a IsWindow(hWnd) on the return value; it can't be assumed that it returns anything consistent, including null. The docs just do not specify null is or is not an invalid value.
-
That worked, must be something in the code around it that is causing the problem. At least now I can look in the right direction. Thanks for the test! I should have thought to test it in a different project first :-O Rocky Moore
Are you calling any other unmanaged function before?
-
Nish, There is no reason to slam people for asking a question. Educate me, which functions that return window handles return something other than NULL to indicate a failure. Like I mentioned above, IsWindow is a much safer check, as the documentation for GetDesktopWindow doesn't indicate it could fail. I wonder what this returns for a process that is running in a state where there is no desktop? In addition, HWND_DESKTOP, which is defined as ((HWND)0), fails IsWindow(HWND_DESKTOP) under Windows XP Pro. I haven't checked Windows 2000 yet. Regards
Neil Van Note wrote: Nish, There is no reason to slam people for asking a question I wasn't slamming him :( I just thought it funny that MS was returning a 0 for GetDesktopWindow() and that too for a valid window handle, that of the desktop. Usually a 0 is supposed to indicate error or NULL as far as handles go. I apologize to all, if my words were insulting. I didnt meant them that way. Sorry! Nish
Regards, Nish Native CPian. Born and brought up on CP. With the CP blood in him.
-
GetDesktopWindow() does not necessarily return 0. It does not on my machine (Windows XP Pro), this morning it is returning 0x00010014. Regards
Could be that with XP pro, we actually can have multiple virtual desktops. Nish
Regards, Nish Native CPian. Born and brought up on CP. With the CP blood in him.
-
Nish [BusterBoy] wrote: The desktop's HWND is 0 As you have noticed from other posts, the GetDesktopWindow() does not actually return (0). If you look at your window tree with Spy, it returns the window at the very top of the tree. At least it does under the normal API in C++, but in C# it only wants to return (0) which is useless. In C# I call it as:
[DllImport("user32.dll")]
extern static IntPtr GetDesktopWindow();and later in the class I simply use:
GetDesktopWindow();
It always seems to get zero, am I doing something wrong here? Rocky Moore
Rocky Moore wrote: As you have noticed from other posts, the GetDesktopWindow() does not actually return (0). Sorry Rocky, if I sounded insulting, but I have explained my reasons for smiling in my reply to Neil Van Note. It was the irony caused my MS that made me smile. Hope it's okay now :-) Nish
Regards, Nish Native CPian. Born and brought up on CP. With the CP blood in him.
-
Rocky Moore wrote: As you have noticed from other posts, the GetDesktopWindow() does not actually return (0). Sorry Rocky, if I sounded insulting, but I have explained my reasons for smiling in my reply to Neil Van Note. It was the irony caused my MS that made me smile. Hope it's okay now :-) Nish
Regards, Nish Native CPian. Born and brought up on CP. With the CP blood in him.
Nish [BusterBoy] wrote: Sorry Rocky, if I sounded insulting, but I have explained my reasons for smiling in my reply to Neil Van Note. It was the irony caused my MS that made me smile. Hope it's okay now Wasn't taken that way, I am not a softy like others here :rolleyes: I truly appreciate any help I get, and Lord knows I need a lot at times ;) I still do not know why it was returning zero but I have done a bit of rewriting all around it and it seems to be working. One of those strange things, just glad I can finally move on. Now if I can just figure a way to get rid of the 'add a new row' row in the DataGrid that is using a dataset bound to the datasource instead of a dataview, my life would be much easier.. Thanks again! Rocky Moore
-
Could be that with XP pro, we actually can have multiple virtual desktops. Nish
Regards, Nish Native CPian. Born and brought up on CP. With the CP blood in him.
Multiple virtual desktops are more about extending window manager than being related to the OS (XP, Win2K, Win 9x, etc.). So, I guess we can have them with any MS OS flavor. It is just that with MS the actual line between the OS, shell and the window manager is kind of blurry (for the end user at least). -Gile
-
Rocky Moore wrote: As you have noticed from other posts, the GetDesktopWindow() does not actually return (0). Sorry Rocky, if I sounded insulting, but I have explained my reasons for smiling in my reply to Neil Van Note. It was the irony caused my MS that made me smile. Hope it's okay now :-) Nish
Regards, Nish Native CPian. Born and brought up on CP. With the CP blood in him.
Nish [BusterBoy] wrote: but I have explained my reasons for smiling in my reply to Neil Van Note The smiles where not the reason I thought you sounded insulting. It was the fact they are surrounding what you said, I quote... Nish [BusterBoy] wrote: Yeah, When he got the 0, he thought it was an error Either way, I am dropping it... Regards
-
Nish [BusterBoy] wrote: but I have explained my reasons for smiling in my reply to Neil Van Note The smiles where not the reason I thought you sounded insulting. It was the fact they are surrounding what you said, I quote... Nish [BusterBoy] wrote: Yeah, When he got the 0, he thought it was an error Either way, I am dropping it... Regards
Neil Van Note wrote: Either way, I am dropping it... Thanks Nish
Regards, Nish Native CPian. Born and brought up on CP. With the CP blood in him.