问题标签 [user32]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3177 浏览

windows - 显示光标不工作

我正在尝试编写一个简单的 C# win32 控制台应用程序,它使用 ShowCursor (user32.dll) 来隐藏系统鼠标。调用 ShowCursor(false) 返回 -1(应该如此),但鼠标光标仍然存在。使用 ShowCursor(true) 再次调用返回 1(但没有可见效果,因为光标从未消失)。

谢谢。

0 投票
1 回答
1742 浏览

excel - 禁用 Excel UserForm 淡入淡出动画

在 Excel 2007(和 2010)中使用 VBA,有没有办法在显示和隐藏用户窗体时禁用标准的淡入和淡出动画。特别是淡出对于我正在尝试创建的用户界面来说太慢了。

也许该user32功能AnimateWindow有一个可以作废的设置,但我还没有弄清楚。

编辑:这是一个审美目标;没有性能问题。由操作系统处理的淡出Me.Hide需要大约 1/2 秒,我想知道它是否可以被立即覆盖。

0 投票
2 回答
2989 浏览

c# - GetWindowText() 抛出错误并且未被 try/catch 捕获

当我为 GetWindowText 运行下面的代码时,我收到以下错误作为内部异常抛出:

{“试图读取或写入受保护的内存。这通常表明其他内存已损坏。”}

我有两个问题:

  1. 为什么错误没有被 try catch 捕获?

  2. 知道如何在程序遇到此类错误时阻止程序崩溃,而不是使用 try/catch

干杯

0 投票
2 回答
5550 浏览

python - Python ctypes:带有 LPCSTR [out] 参数的原型

我目前正在进入ctypes模块,我正在尝试使用我已经收到GetWindowText的句柄调用 user32 函数。这一次虽然我想更进一步并使用函数原型而不是调用函数。尽管我在将争论声明为输出参数时遇到了问题。HWNDFindWindowctypes.windll.user32.GetWindowTextlpString

我的第一次尝试是这样的:

cfunc是我在这里找到的一个小包装)

这个原型一被调用就会产生以下异常:

我认为任何输出变量都必须是一种POINTER(...)类型,所以我将定义更改为:

但这也会产生一个例外:

我希望有人知道如何使用原型GetWindowText正确调用该函数。ctypes

编辑:

通过进一步的研究,我可以让它发挥作用,至少以某种方式。我修复的第一个问题是使用cfunc()了错误的调用说明符。我定义了该函数的精确副本并将其命名winfunc()并替换return CFUNCTYPE(result, *atypes)((name, dll), tuple(aflags))return WINFUNCTYPE(result, *atypes)((name, dll), tuple(aflags)).

然后我进一步检查了原型设计。看起来如果你传递有点像它会在调用("someParameter",POINTER(aType),2)WINFUNCTYPE创建一个aType对象并将指向该对象的指针传递给函数。在返回的元组中,您可以访问该aType对象。这带来了另一个问题。cstring 是一个字符数组;所以需要告诉 ctypes 创建一个c_char array. 这意味着类似:

工作得很好。但不幸的是,ctypes 现在将传递一个指向 cstring 的指针,该指针总是 255 个字符长,忽略nMaxCount.

在我看来,我认为没有办法让该函数与定义为输出参数的动态大小的 cstring 一起工作。唯一的可能性似乎是简单地不使用输出参数功能并将 a 定义LPCSTR为输入参数。然后,被调用者需要自己创建一个缓冲区ctypes.create_string_buffer()并将其传递给函数(就像在 C 中一样)。

0 投票
1 回答
135 浏览

c++ - MoveWindow(),跳过、躲避或绕过消息传递?

我正在调整一个窗口的大小,MoveWindow()但我不拥有那个窗口。我只是从另一个进程中偷了它,现在我在搞乱它的 hWindow。

然而,我从中窃取它的过程正在运行一个消息循环,处理其中一些消息(WM_MOVEWM_SIZEWM_GETMINMAXINFO等),这基本上阻止了我对它做任何我想做的事情。有时,它甚至不允许我将它的大小调整到超过给定的最大值,这是让它全屏运行的关键。

除了使用 asm,有什么方法可以绕过消息传递?

0 投票
1 回答
2761 浏览

windows - 发送 WM_SETTINGCHANGE 消息刷新桌面

我设法通过这个单行程序以编程方式更改我的桌面背景:

…通过将所需的壁纸拖放到已编译的脚本上。

我有另一个更改桌面的程序,但由于某种原因无法发送WM_SETTINGCHANGE消息(我可以看到密钥HKCU\Control Panel\Desktop\Wallpaper正在更新)。如何发送此消息以触发壁纸刷新?是WM_SETTINGCHANGE正确的消息吗?还是第一个脚本是唯一的方法?

我试过这个但它不起作用:

0xffff用于将消息广播到每个窗口,0x001a代表WM_SETTINGCHANGE0x0014是 的代码spi_setdeskwallpaper。Windows 7 中的任务栏闪烁,但壁纸没有改变。

如果你用 C、C++ 或 Visual Basic 解决我的问题,我会自己将其转换为 AutoIt(我只需要被调用函数的数字代码)。

0 投票
1 回答
947 浏览

c# - 如何从 Windows 应用程序中抓取数据网格

我正在尝试从 Windows 应用程序内的数据网格中抓取数据。

我已经使用 User32.dll 及其方法(例如GetWindow查找句柄然后使用SendMessage读取内容)成功地从应用程序中的文本框中抓取了数据。

我的问题是这些方法似乎没有返回任何值 a DataGridor table

有人对我如何能够实现这一目标有任何建议吗?

0 投票
1 回答
3800 浏览

c# - 使用 user32.dll 发送单击,消息出现在 spy++ 中,但未单击按钮

我在使用 user32.dll 向应用程序发送 Click 时遇到问题。该按钮没有被点击,但在 spy++ 中确实出现了该消息。我用的是win7 x64

代码是用c#编写的:

以下是该按钮的 spy++ 消息: 在此处输入图像描述

如果我发送以下消息,我会收到以下消息:如果那是问题,我不知道,但 lbuttondown,buttoup 出现 2 次(S + R),如果我手动单击它,它会收到 1 条消息(P)也试图用 WM_CLICK 做,但我有同样的问题

编辑:现在使用 PostMessage 所以 spy++ 显示与我手动单击它相同的消息,但似乎仍然没有单击该按钮

在此处输入图像描述


使用这个库我有同样的问题。

代码:

消息已发送,但未单击按钮 在此处输入图像描述

编辑:

感谢该链接(http://www.hanselman.com/blog/IntroducingLync2010SuperSimpleAutoAnswerVideoKioskWithFullScreen.aspx),但对于这个库我也有同样的问题:/

代码:

消息已发送,但未单击按钮 在此处输入图像描述

编辑2:

用户的回答已被删除,因为我发布了我的评论作为答案:

这不是答案,这属于你的问题。它与您的代码不匹配,显然您仍在发布 BM_CLICK。这是错误的,应该发送它,您应该发送 BM_CLICK 或发布鼠标消息。而且您正在查看错误的窗口,它是按钮的父级获取 BN_CLICK 通知并对其进行操作。进程的键盘状态错误将是一种典型的故障模式。– 汉斯·帕桑特 18 小时前

关于那个,为什么应该是父母的窗户?spy++ 中的 bcs(我为该按钮(类:BarButton)搜索了下面的屏幕截图,并且我从 user32.dll 获得的句柄也与 spy++ 中的相同 在此处输入图像描述

0 投票
1 回答
313 浏览

c# - 使用 Windows API 的子窗口的滚动高度?

有谁知道如何使用 Windows API 获取可滚动子窗口的高度?我找到了 GetWindowRect 但这似乎只返回“可见”区域的 RECT,但我想要整个“可滚动”子窗口的 RECT。这个窗口是第 3 方窗口,所以我假设我需要使用 User32 WinAPI 函数。

谢谢!

0 投票
1 回答
944 浏览

winapi - 如何调用 user32.dll 中的 DialogBox() 函数?

我正在尝试调用 WinAPI 函数DialogBox()。在Microsoft 网站上,此函数被指定在 user32.dll 中。但是,当尝试通过将其声明为从 dll 导入的函数来导入此函数时,链接器告诉我它不存在。然后我尝试在 C:\Windows\System32\user32.dll 中使用依赖项walker 找到该函数,但该函数不存在。(我可以在那里看到所有其他花哨的函数文字。)这可能是什么原因,我该如何解决这个问题?

我正在使用 D 编程语言。标准库中的 windows 模块不会在 WinAPI 中导入完整的函数集。因此,我有时不得不手动导入东西。