问题标签 [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 投票
2 回答
3886 浏览

c# - 在win ce5.0中使用user32.dll

我正在尝试在嵌入式 Windows ce5.0 计算机中使用 user32.dll 的 sendmessage,我仅在嵌入式中测试 user32 的相同简单程序正在我的 windows xp 计算机上运行。应用程序和 dll 在同一个文件夹中。

我在 win ce5.0 中收到的消息是:找不到 Pinvocke DLL 'user32.dll'

代码:(我在网上找到它并用它来尝试发送消息)

谁能帮我这个?

0 投票
3 回答
2257 浏览

c# - 从 C# 代码调用的 SetTimer Windows API 中的回调方法问题

我目前正在参与一个将一些旧的 VB6 代码迁移到 C#(.Net Framework 3.5)的项目。我的任务是进行迁移;任何功能增强或重构都将被推到项目的后期阶段。不理想,但你去。

因此,部分 VB6 代码调用了 Windows API SetTimer 函数。我已经迁移了它,但无法让它工作。

迁移的项目构建为 DLL;我创建了一个小型 WinForms 测试工具,它链接到 DLL 并调用相关代码。很简单,就是为了证明调用可以。

迁移后的DLL中相关代码如下:

上述调用由 DLL 包装在外部 DoProcessing() 方法中;这会在调用 StartTimer(两个 Windows 内核调用)之前使用 CreateEvent 创建一个事件,然后在继续处理之前调用 WaitForSingleObject。AsyncObjectCaller 函数会将事件设置为其执行的一部分,以允许继续处理。

所以我的问题是:如果按照上面列出的方式调用代码,它就会失败。AsyncObjectCaller 回调方法永远不会被触发,并且 WaitForSingleObject 调用超时。

但是,如果我取消注释 StartTimer 中的 MessageBox.Show 调用,它会按预期工作......有点。AsyncObjectCaller 回调方法在调用 MessageBox.Show 后立即触发。我已经尝试将 MessageBox.Show 放在代码中的各个位置,无论我把它放在哪里都是一样的(只要在调用 SetTimer 之后调用它)——回调函数直到消息框被触发显示。

我完全被难住了,对 VB6 或 Windows API 编码都不太熟悉,主要来自 .Net 背景。

谢谢你的帮助!

0 投票
2 回答
2335 浏览

c# - 自动化 .NET 应用程序

我正在尝试使用最简单的方法自动化隐藏的.NET 应用程序和另一个 .NET 应用程序(用 c# 编写)。它不是用于测试目的,它是一种解决此应用程序缺乏脚本的方法。

我已经尝试过白色框架,但它存在一个主要问题:它的工作方式。它很慢,而且它不适用于隐藏的窗口和控件(就像 winAPI 一样)。更重要的是,当“点击”白色移动鼠标时,将它的目标窗口带到前面等等。

我也在考虑使用 user32.dll 包装器,因为它处理目标的方式是我所需要的,但我认为它不适用于 .NET 应用程序。使用它也是一个问题,因为我的目标应用程序有 5 个标记为“...”的按钮,并且很难找到我需要的其中 2 个。我还想使用控件 .NET id(开发人员在设计 GUI 时为其控件命名的名称)。

顺便说一句,如果有帮助的话,我的目标应用程序是MeGUI。我们做了很多视频编码,这样的工具对我们有很大帮助。我需要隐藏MeGUI,因为我是唯一的程序员,其他使用我的工具的人不应该看到后台发生的事情,更不用说周围弹出的许多窗口。

0 投票
3 回答
14796 浏览

c# - 需要激活一个窗口

我有这样的情况。我有一个应用程序的窗口句柄。我需要激活它。我尝试了所有这些功能,但并不总是有效。(大多数情况下,它第一次不起作用,我必须手动单击它才能激活它。第二次尝试它工作正常)我的原因这样做是因为我在需要执行的表单的 Form.Activate 事件中编写了代码。应用程序是单实例应用程序。创建新实例时,它首先检查是否存在任何其他进程,如果找到,则将旧进程的句柄传递给这些函数,以便用户可以在旧窗体上工作。应用程序是从不同的 C 应用程序调用的。[DllImport("user32.dll")] public static extern int ShowWindow(IntPtr hWnd, int nCmdShow);

0 投票
0 回答
2164 浏览

windows - 如何将自定义按钮添加到 Windows 的最小化/最大化/关闭 (x)

我想知道是否有一种方法可以(当然以编程方式)将图标/按钮/除了纯文本添加到窗口(Microsoft Windows 窗口...)的标题栏或最小化/最大化/关闭位置旁边按钮是。我可以自己画它并创建一个错觉,它是窗口的一部分,但我想知道在 user32 api 中是否有这样的方法。

到目前为止,我找到了一种禁用最小化/最大化/关闭按钮的方法,但没有找到一种向它们添加自定义按钮的方法。我觉得很奇怪。

这是我想要实现的目标: 替代文字

我一直想知道它是如何在这里完成的,因为使用 gdi/gdi+ 为每个窗口绘制一个按钮,然后检测它是否与另一个窗口重叠,然后只显示不重叠的部分,这在我看来是一个不太可能的解决方案。可能该按钮已在窗口类中注册,因此每个窗口都有此按钮。任何指示该怎么做?

此外,假设我没有启用 Unicode,我该如何创建一个按钮。然后在下面的一段代码中:

我必须用它们的长等效值替换所有漂亮的 Windows 常量....但是,当我搜索它们时,我得到的只是:http: //msdn.microsoft.com/en-us/library/bb775951 (v =VS.85).aspx

任何指针?

0 投票
1 回答
864 浏览

wpf - 使 WPF 系统上下文菜单项可切换

我有以下代码,它将“始终在顶部”项目添加到系统上下文菜单中,如窗口镶边所示。它可以正常工作,但我希望它显示一个复选标记或类似符号以指示它是否已打开/关闭。

知道我该怎么做吗?

0 投票
2 回答
2958 浏览

c# - C#如何等待弹出窗口并选择它进行输入

我基本上是在用 C# 编写一个专门的宏播放器/记录器。我需要做的一件事是等待一个弹出窗口(类似于另存为...对话框),然后我可以选择继续播放宏输入。理想情况下,我希望能够轮询打开的窗口并在其标题中搜索匹配的窗口标题。显然我不能使用 Processes.GetProcesses() 因为对话框很可能不会显示为新进程。

我在哪里寻找打开的窗口及其标题?

0 投票
1 回答
1217 浏览

c# - Windows 窗体 C# 程序:如何检查按钮状态(启用/禁用或可见/隐藏)?

我有一个程序,如果出错,将停止运行。当它停止运行时,“开始”按钮被启用,“停止”按钮被禁用。程序运行时(单击“开始”后),“开始”按钮禁用。

我的目标是编写一个程序,每隔一段时间(2 分钟)检查“开始”按钮的状态,并在“开始”按钮启用时发送 SMTP 电子邮件。从而让我知道程序何时停止运行。

我已经能够使用 FindWindow 找到该程序,但我无法找到该按钮,更不用说让我的程序区分启用与禁用。

使用 Spy++,按钮的句柄是 000A0B0A。启用时按钮的样式为 54000000;禁用它是 5C000000。程序或窗体/窗口句柄是 00050B2C。

我的问题是:我可以使用什么命令(如果有)来检查该特定按钮的样式(句柄 00A0B0A)?

0 投票
1 回答
540 浏览

c# - 是否可以将 Win32 应用程序的输出重定向到图片框?

我以前见过将 Windows Media Player 的输出重定向到 C# 中的 Picturebox 的代码示例。我有兴趣为其他 Win32 应用程序执行此操作。考虑到我可以获得要重定向其输出的进程的 hWnd 句柄这一事实,我该如何实现我的目标?

我可以使用 user32.dll 的 ShowWindow 方法最小化/最大化进程的窗口,所以我猜应该有解决我的问题的方法。

谢谢。

0 投票
2 回答
2350 浏览

c# - 无法阅读其他应用程序的标题

跳跃我将如何在我的主程序中找到窗口句柄......

在 C# 中

我运行 notepad.exe 然后在其中输入一些内容,然后使用 SPY++ (0x111111) 找到主窗口句柄,然后

此代码工作正常,并返回我主窗口的标题。

: : 但是当我做同样的事情来查找 notepad.exe 的子项的标题时,它只是将 str 设置为空。spy++ 告诉我孩子的标题是有价值的。