WPF的控件没有句柄,但是有什么其他间接方法获得WPF控件的句柄啊。

WPF的控件没有句柄,但是有什么其他间接方法获得WPF控件的句柄啊。,第1张

using System.Windows.Interop //使轮答缓用WindowInteropHelper类可以获腊模得窗体句柄 int handle = new WindowInteropHelper(this).Handle.ToInt32()我们在项目中使用WPF开发程序,需要调用一个Activex控件,显示三维的场景,但是需要把当前窗口的句柄传递给OCX控件,WPF窗口本身没有句柄属性,需要通过如下举掘的方式实现转换

int handle = new WindowInteropHelper(this).Handle.ToInt32()

//this代表当前的窗口

用FindWindowEx

Private Declare Function FindWindow Lib "user32"锋斗 Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Const WM_KEYDOWN = &H100

Private Const WM_KEYUP = &H101

Dim x

Private Sub Command1_Click()

AppActivate x

Dim NotepadHwnd As Long, hwnd As Long

NotepadHwnd = FindWindow("notepad", vbNullString)

hwnd = FindWindowEx(NotepadHwnd, 0, "Edit", vbNullString) '得到窗口陆基芦类名为Edit的窗口早带句柄

a = PostMessage(hwnd, WM_KEYDOWN, &HBB, 0&)

' a = PostMessage(hwnd, WM_KEYUP, &HBB, 0&)

End Sub

Private Sub Form_Load()

x = Shell("notepad.exe", vbNormalFocus)

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12511166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存