首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

来自user32.dll的FindWindowEx使用dllimport返回零句柄和错误代码127

问题:来自user32.dll的FindWindowEx使用DllImport返回零句柄和错误代码127

回答:

FindWindowEx是Windows操作系统提供的一个函数,用于在指定父窗口下查找符合条件的子窗口。而DllImport是C#中用于引入非托管代码(如DLL)的关键字。

当使用DllImport引入user32.dll中的FindWindowEx函数时,如果返回的句柄为零且错误代码为127,可能有以下几种原因:

  1. 未找到指定的父窗口:FindWindowEx函数需要传入父窗口的句柄作为参数,如果指定的父窗口不存在或无法找到,函数将返回零句柄。此时,可以检查传入的父窗口句柄是否正确。
  2. 未找到符合条件的子窗口:FindWindowEx函数还需要传入子窗口的类名和窗口名作为参数,用于指定要查找的子窗口。如果在指定的父窗口下未找到符合条件的子窗口,函数将返回零句柄。此时,可以检查传入的类名和窗口名是否正确。
  3. user32.dll未正确引入或加载:DllImport引入非托管代码时,需要确保相关的DLL文件存在并正确加载。如果user32.dll未正确引入或加载,函数调用可能会失败并返回零句柄。此时,可以检查相关的DLL文件是否存在,并确保引入声明正确。

总结:

在使用DllImport引入user32.dll中的FindWindowEx函数时,如果返回零句柄和错误代码127,可能是由于未找到指定的父窗口、未找到符合条件的子窗口或user32.dll未正确引入或加载所致。可以根据具体情况检查传入的参数、相关的DLL文件和引入声明,以解决该问题。

腾讯云相关产品和产品介绍链接地址:

腾讯云提供了丰富的云计算产品和服务,包括云服务器、云数据库、云存储等。您可以访问腾讯云官方网站了解更多详情:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于FindWindow函数「建议收藏」

FindWindow这个函数检索处理顶级窗口类名窗口名称匹配指定字符串。这个函数有两个参数,第一个是要找窗口类,第二个是要找窗口标题。...拿窗口句柄 FindWindow是最简单 但如果用类名找不到, 只能使用FindWindowEx 或者 直接EnumWindow来做,优先推荐是去枚举 [DllImport(...“user32.dll”, EntryPoint = “FindWindow”, SetLastError = true)] private static extern IntPtr...FindWindow(string lpClassName, string lpWindowName); [DllImport(“user32.dll”, EntryPoint = “FindWindowEx...hwndChildAfter, string lpszClass, string lpszWindow); SetLastError = true这句话主要是用来防止错误代码被覆盖,因为最后出来错误代码会覆盖前面出来错误代码

49910

借助API实现黑盒自动化测试工具编写

可以使用自动化工具有LOADRUNNER,以及目前在VS2010中功能很强大测试工作平台(录制操作步骤,自动生成代码)。...测试工具,首先也是一个C#程序,它主要目的是:   1:获取上文应用程序窗口句柄,继而获取TextBox句柄及Button句柄;   2:为TextBox随机填入一些字符;   3:模拟点击Button...  IntPtr hwnd_button = FindWindowEx(mainWnd, new IntPtr(0), null, "OK");   //获取窗体上所有控件句柄   EnumChildWindows..., IntPtr wParam, string lParam);   [DllImport("user32.dll")]   public static extern IntPtr FindWindowEx...("user32.dll")]   public static extern int AnyPopup();   [DllImport("user32.dll", CharSet = CharSet.Auto

59130

C# 窗体常用API函数 应用程序窗体查找

(2)枚举所有屏幕上顶层窗口,并将窗口句柄传送给应用程序定义回调函数,利用该法可以获得所有当前打开窗体句柄信息 [DllImport("user32.dll")]public static extern...lpClassName, string lpWindowName); 如果coredll.dll,出现找不到,可以使用user32.dll代替 [DllImport("user32.dll", EntryPoint...(4)查找子窗体方法 [DllImport("user32.dll", EntryPoint = "FindWindow")]private static extern IntPtr FindWindowEx...返回值:如果函数成功,返回值为具有指定类名窗口名窗口句柄。如果函数失败,返回值为NULL。总之,这个函数查找子窗口,从排在给定子窗口后面的下一个子窗口开始。在查找时不区分大小写。...,返回表示失败。

3.9K70

c语言findwindowex函数用法,VB中findwindowex函数用法?

大家好,又见面了,我是你们朋友全栈君。 FindWindowEx函数 函数功能:在窗口列表中寻找与指定条件相符第一个子窗口 。 该函数获得一个窗口句柄,该窗口类名窗口名与给定字符串相匹配。...参数:(1)hwndParent:要查找子窗口所在父窗口句柄(如果设置了hwndParent,则表示从这个hwndParent指向父窗口中搜索子窗口)。...(2)hwndChildAfter :子窗口句柄。查找从在Z序中下一个子窗口开始。子窗口必须为hwndParent窗口直接子窗口而非后代窗口。...返回值:Long,找到窗口句柄。如未找到相符窗口,则返回。会设置GetLastError 如果函数成功,返回值为具有指定类名窗口名窗口句柄。如果函数失败,返回值为NULL。..., ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long 2.C# 声明 [DllImport(“user32

76410

FindWindowEx使用方法「建议收藏」

大家好,又见面了,我是你们朋友全栈君。 功能:这个函数获取窗口句柄。类名窗体名称给定字符串匹配形式。这个功能看起来子窗体,从在一个给定子窗体子窗体回到下一个起始行。...当寻找不大写小写之间区别。 函数原型:HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter。...返回值:假设函数成功。返回值为具有指定类名窗体名窗体句柄。假设函数失败,返回值为NULL。...C#中使用该函数首先导入命名空间: using System.Runtime.InteropServices; 然后写API引用部分代码,放入 class 内部 [DllImport(“user32...= IntPtr.Zero) { IntPtr childHwnd = FindWindowEx(maindHwnd, IntPtr.Zero, null, “登录”); //获得button句柄 if

1.2K20

c# 调用Microsoft XPS Document Writer打印机,将Pdf文件转换成Xps文件「建议收藏」

打印机也有了,那么接下来问题就是怎么调用这个打印机了,淡然了,可以通过一系列API配合去调用这个打印机,但我觉得    Windows打印机调用起来实在是太麻烦了,通过一番调查,可以直接使用...[DllImport("user32.dll")] static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfeter..., string lpszClass, string lpszWindow); [DllImport("user32.dll")] static extern IntPtr...SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, String lParam); [DllImport("user32.dll")]...*/ /***** 最后通过给保存按钮发消息来按下对话框中保存按钮**************************/ // 找到文件另存为对话框窗口句柄

2.2K10

C#FindWindowEx参数详解

大家好,又见面了,我是你们朋友全栈君。 FindWindowEx参数详解 本函数其他内容在网络上都比较多,这里主要说一下它参数设置搜索结果区别。...函数功能:在窗口列表中寻找与指定条件相符第一个子窗口。该函数获得一个窗口句柄,该窗口类名窗口名与给定字符串相匹配。这个函数查找子窗口,从排在给定子窗口后面的下一个子窗口开始。...: hwndParent:要查找子窗口父窗口句柄。...返回值:如果函数成功,返回值为具有指定类名窗口名窗口句柄。如果函数失败,返回值为NULL。...[DllImport(“User32.dll”, EntryPoint = “FindWindowEx”)] public static extern IntPtr FindWindowEx

90530

C#_FindWindow

, string lpWindowName); [DllImport("user32.dll", EntryPoint = "FindWindowEx")] //private...const int WM_ENTERIDLE = 0x121; //在windows绘制消息框前发送此消息给消息框所有者窗口,通过响应这条消息,所有者窗口可以通过使用给定相关显示设备句柄来设置消息框文本背景颜色...const int WM_CTLCOLORMSGBOX = 0x132; //当一个编辑型控件将要被绘制时发送此消息给它父窗口通过响应这条消息,所有者窗口可以通过使用给定相关显示设备句柄来设置编辑框文本背景颜色...const int WM_CTLCOLOREDIT = 0x133; //当一个列表框控件将要被绘制前发送此消息给它父窗口通过响应这条消息,所有者窗口可以通过使用给定相关显示设备句柄来设置列表框文本背景颜色...const int WM_CTLCOLORLISTBOX = 0x134; //当一个按钮控件将要被绘制时发送此消息给它父窗口通过响应这条消息,所有者窗口可以通过使用给定相关显示设备句柄来设置按纽文本背景颜色

82940

WPF 启动屏幕键盘

在 Windows 平板模式下才能自动在获取键盘输入焦点时弹出屏幕键盘,但是 Windows 屏幕键盘做粗糙,有时候不会自动开启屏幕键盘,此时需要使用代码辅助 如果是非平板模式,以及系统没有检测到触摸...而在大于等于 10.0.14393 版本需要使用 COM 方式 先来聊聊如何通过 TabTip.exe 应用打开屏幕键盘 默认 TabTip.exe 应用将会放在 Program Files 文件夹下...否则将会关闭 //使用com组件方式来打开TabTip.exe var uiHostNoLaunch = new UIHostNoLaunch(); // ReSharper disable...("user32.dll", SetLastError = false)] static extern IntPtr GetDesktopWindow(); 判断屏幕键盘是否开启,在 10.0.14393...IntPtr.Zero) { return false; } // 这里需要 unchecked 因为返回

1.2K10

c语言findwindow函数_findwindow函数

一个句柄是指使用一个唯一整数值,即一个4字节(64位程序中为8字节)长数值,来标识应用程序中不同对象同类中不同指针,程序不能利用句柄来直接阅读文件中信息。...如果句柄不在I/O文件中,它是毫无用处句柄是Windows用来标志应用程序中建立或是使用唯一整数,Windows大量使用句柄来标识对象。...返回值:如果函数成功,返回值为具有指定类名窗口名窗口句柄;如果函数失败,返回值为NULL。...C#中使用该函数首先导入命名空间: using System.Runtime.InteropServices; 然后写API引用部分代码,放入 class 内部 [DllImport(“user32....但有的软件标题不是固定,如”记事本”,如果打开文件不同,窗口标题也不同,这时使用窗口类搜索就比较方便。如果找到了满足条件窗口,这个函数返回该窗口句柄,否则返回0。

49540

WPF 弹出 popup 里面的 TextBox 无法输入汉字

因为 Popup 句柄具有 WS_EX_NOACTIVATE 特性,所以 Popup 是无法获得焦点。在微软系统,所有的窗口、控件都是有句柄句柄就是一个指针,获得他才知道是哪个控件。...古老输入法就是通过判断获得焦点句柄是支持输入判断他需要什么输入,如果在 win7 搜狗,就是这样判断,于是搜狗很难在 Popup TextBox 输入文字。...解决方法是让输入法知道控件句柄,这需要一个 win32 dll ,传说中 User32.dll ,这个dll有SetFocus这个方法,请通过下面的代码在Popup打开时调用。...[DllImport("User32.dll")] public static extern IntPtr SetFocus(IntPtr hWnd); IntPtr GetHwnd(Popup popup...TextBox 输入可能出现输入法未跟随编辑框,这时需要调用 Win32 方法 [DllImport("User32.dll")] public static extern IntPtr SetFocus

1.7K10

Wallpaper原理C#实现(含源文件)

wallpaper在图标层背景层之间插入了自己窗口,因此可以显示动画,执行代码。...查找句柄 现在需要查找背景窗体句柄使用窗口查看器发现背景窗体没有窗体名称,因此无法直接定位,但是我们知道它类名是WorkW,它父窗体是Program Manager,所以我们可以遍历所有WorkW...C#不支持直接这种接近底层操作,因此需要调用user32.dll实现 [DllImport("user32.dll", EntryPoint = "SetParent")] private static...为了使用指针功能,需要先开启不安全代码功能 :项目—??属性(??是你项目名称)—允许不安全代码。...一旦返回空指针,会导致设置父窗体失败,最后视频会在图标层上方播放,此时动态壁纸软件就彻底变成了一个全屏播放器。

2K10
领券