Get HWND of the WPF Window
2008-03-01 23:59
295 查看
To implement a screen capture program, I found several ways to use BitBle() of Win32. So I have to use HWND to represent the target window, how to get the HWND of the WPF Window became the key point.
Yiling Lai Post following method on MS Forum:
UIElement myWPF = new UIElement();
HwndSource source = new HwndSource(
0, // class style
WS_VISIBLE | WS_CHILD, // window style
0, // exstyle
x, y, width, height,
"My WPF Control", // NAME
IntPtr(parent) // parent window
);
source.RootVisual = myWPF;
HWND WPFHwnd = (HWND) source.Handle.ToPointer();
YourUserControl wpfctrl = new YourUserControl();
HwndSource source = (HwndSource)HwndSource.FromVisual(wpfctrl);
IntPtr hWnd = source.Handle;
WindowInteropHelper wIH = new WindowInteropHelper(this);
IntPtr hwnd=wIH.Handle;
Use this method, I can only get the handle of WPF Widnow, but I can't get the handle of the controls of WPF. When you use Controls to replace the window in the above code. Everything goes right. But the result is the same with using window. That is to say, when you use other controls , it'll walk up the element tree looking for the first win32 window if it can find. In another way, there is not any HWND for controls.
Yiling Lai Post following method on MS Forum:
UIElement myWPF = new UIElement();
HwndSource source = new HwndSource(
0, // class style
WS_VISIBLE | WS_CHILD, // window style
0, // exstyle
x, y, width, height,
"My WPF Control", // NAME
IntPtr(parent) // parent window
);
source.RootVisual = myWPF;
HWND WPFHwnd = (HWND) source.Handle.ToPointer();
YourUserControl wpfctrl = new YourUserControl();
HwndSource source = (HwndSource)HwndSource.FromVisual(wpfctrl);
IntPtr hWnd = source.Handle;
WindowInteropHelper wIH = new WindowInteropHelper(this);
IntPtr hwnd=wIH.Handle;
Use this method, I can only get the handle of WPF Widnow, but I can't get the handle of the controls of WPF. When you use Controls to replace the window in the above code. Everything goes right. But the result is the same with using window. That is to say, when you use other controls , it'll walk up the element tree looking for the first win32 window if it can find. In another way, there is not any HWND for controls.
相关文章推荐
- How to remove the icon of a WPF window
- get hwnd of each window with python
- How to get the DOM of a WebBrowser control from a window handle (VB6)
- How to get the visible region of a window or CDC(转自http://www.programmersheaven.com)
- Get Acquainted with the New Advanced Features of JUnit 4
- get the text value of a selected option.
- 使用GetActiveWindow函数获取当前窗口HWND句柄
- how to get the space size of some tables in one database?
- 在C++中怎样获得数组的大小?(原文标题:How Would You Get the Count of an Array in C++?)
- WPF 学习记录——The Concept of Content
- Unable to get the window handle for the 'ActionsAwarePivotTable
- Secrets of the NetBeans Window System
- Animate to display a dialog message box in the right-bottom of the window screen
- Code snippet of the day : Get Chinese Spell in C#
- Qt How to get the width and height of a widget
- SQL Tip of the day: get a specific range of results
- Wpf - Reset style in certain part of the visual...
- Get the Hang of IOPS 翻译
- The difference of "apt-get update" and "apt-get upgrade"
- Get the rows of internal table: