首页
学习
活动
专区
工具
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这句话主要是用来防止错误代码被覆盖,因为最后出来的错误代码会覆盖前面出来的错误代码

61410

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。总之,这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。...,返回零表示失败。

4K70
  • 借助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

    63530

    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

    81010

    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.7K20

    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.4K10

    C#FindWindowEx参数详解

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

    1.2K30

    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; //当一个按钮控件将要被绘制时发送此消息给它的父窗口通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色

    85540

    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.3K10

    .NET桌面应用保持程序唯一性打开的一种方式

    Win32 API 调用 以下是关键的 Win32 API 函数,用于操作窗口显示和前台设置: [DllImport("User32.dll", EntryPoint = "FindWindow")]...public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32....dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll...多线程问题 如果程序使用了多线程,需注意线程间的窗口操作同步。 优化建议 使用互斥量 利用 Mutex 可以更简洁地实现程序唯一性。...日志记录 在实际应用中建议记录重复启动的尝试,以便后续调试和优化。 总结 这是一种基于进程和 Win32 API 的方法来保持程序唯一性的解决方案。代码逻辑清晰,适用于大多数桌面应用场景。

    9510

    c语言findwindow函数_findwindow函数

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

    55640
    领券