You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SetParent API在Windows 11中失效的技术求助

SetParent API在Windows 11中失效的问题求助

大家晚上好,抱歉我的英文水平一般。我遇到了SetParent API的问题:在Windows 10系统中运行程序时,该API可正常将任意程序嵌入我的窗口容器;但在Windows 11系统中执行时毫无作用,例如记事本仍正常运行且归属桌面,而非我的窗口容器。

我当前使用的API声明代码如下:

Public Class WindowsApiSetAnyWindowParent
    Public Declare Function SetParent Lib "user32.dll" (
                                                       ByVal hWndChild As IntPtr,
                                                       ByVal hWndNewParent As IntPtr
                                                       ) As IntPtr
    Public Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongPtrA" (
                                                                                  ByVal hwnd As IntPtr,
                                                                                  ByVal nIndex As Integer,
                                                                                  ByVal dwNewLong As Long
                                                                                  ) As Long
    Public Declare Function MoveWindow Lib "user32.dll" (
                                                        ByVal hwnd As IntPtr,
                                                        ByVal x As Integer,
                                                        ByVal y As Integer,
                                                        ByVal cx As Integer,
                                                        ByVal cy As Integer,
                                                        ByVal repaint As Boolean
                                                        ) As Boolean
    Public Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (
                                                                              ByVal hwnd As IntPtr,
                                                                              ByVal Msg As UInteger,
                                                                              ByVal wParam As Long,
                                                                              ByVal lParam As Long
                                                                              ) As Boolean
    Public Const SWP_NOOWNERZORDER As Integer = &H200
    Public Const SWP_NOREDRAW As Integer = &H8
    Public Const SWP_NOZORDER As Integer = &H4
    Public Const SWP_SHOWWINDOW As Integer = &H40
    Public Const WS_EX_MDICHILD As Integer = &H40
    Public Const SWP_FRAMECHANGED As Integer = &H20
    Public Const SWP_NOACTIVATE As Integer = &H10
    Public Const SWP_ASYNCWINDOWPOS As Integer = &H4000
    Public Const SWP_NOMOVE As Integer = &H2
    Public Const SWP_NOSIZE As Integer = &H1
    Public Const GWL_STYLE As Integer = -16
    Public Const WS_VISIBLE As Integer = &H10000000
    Public Const WM_CLOSE As Integer = &H10
    Public Const WS_CHILD As Integer = &H40000000
End Class

调用代码如下:

Dim TheNotePad As ProcessStartInfo = New ProcessStartInfo("notepad.exe")
                        TheNotePad.WindowStyle = ProcessWindowStyle.Minimized
                        Dim TheProcess As Process = Process.Start(TheNotePad)
                        TheProcess.WaitForInputIdle()
                        WindowsApiSetAnyWindowParent.SetParent(TheProcess.MainWindowHandle, HostTabPanel.Handle)
                        WindowsApiSetAnyWindowParent.SetWindowLong(TheProcess.MainWindowHandle, WindowsApiSetAnyWindowParent.GWL_STYLE, WindowsApiSetAnyWindowParent.WS_VISIBLE)
                        WindowsApiSetAnyWindowParent.MoveWindow(TheProcess.MainWindowHandle, 0, 0, HostTabPanel.Width, HostTabPanel.Height, True)
                        TheNotePad.WindowStyle = ProcessWindowStyle.Normal

恳请各位提供帮助。

内容的提问来源于stack exchange,提问作者Wesam Nafaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:08:11