/// <summary> /// /// </summary> private void GetTaskWindows() { // Get the desktopwindow handle int nDeshWndHandle = NativeWin32.GetDesktopWindow(); // Get the first child window int nChildHandle = NativeWin32.GetWindow(nDeshWndHandle, NativeWin32.GW_CHILD); List <string> list = new List <string>(); while (nChildHandle != 0) { //If the child window is this (SendKeys) application then ignore it. if (nChildHandle == this.Handle.ToInt32()) { nChildHandle = NativeWin32.GetWindow(nChildHandle, NativeWin32.GW_HWNDNEXT); } // Get only visible windows if (NativeWin32.IsWindowVisible(nChildHandle) != 0) { StringBuilder sbTitle = new StringBuilder(1024); // Read the Title bar text on the windows to put in combobox NativeWin32.GetWindowText(nChildHandle, sbTitle, sbTitle.Capacity); string sWinTitle = sbTitle.ToString(); { if (sWinTitle.Length > 0) { list.Add(sWinTitle); } } } // Look for the next child. nChildHandle = NativeWin32.GetWindow(nChildHandle, NativeWin32.GW_HWNDNEXT); } cboWindows.Properties.DataSource = list; }
/// <summary> /// Sets the window handle if handle is a valid window. /// </summary> /// <param name="handle">The handle to set to.</param> public void SetWindowHandle(IntPtr handle) { if ((NativeWin32.IsWindow(handle) == false) || (NativeWin32.IsRelativeWindow(handle, this.Handle, true))) { // Clear window information windowHandle = IntPtr.Zero; windowHandleText = string.Empty; windowClass = string.Empty; windowText = string.Empty; isWindowUnicode = false; windowCharset = string.Empty; } else { // Set window information windowHandle = handle; windowHandleText = Convert.ToString(handle.ToInt32(), 16).ToUpper().PadLeft(8, '0'); windowClass = NativeWin32.GetClassName(handle); windowText = NativeWin32.GetWindowText(handle); isWindowUnicode = NativeWin32.IsWindowUnicode(handle) != 0; windowCharset = ((isWindowUnicode) ? ("Unicode") : ("Ansi")); } if (WindowHandleChanged != null) { WindowHandleChanged(this, EventArgs.Empty); } }