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

c# - 如何在 C# 中确定当前关注的进程名称和版本

例如,如果我正在使用 Visual Studio 2008,我想要值 devenv 和 2008 或 9。

版本号很重要...

0 投票
2 回答
1504 浏览

.net - .NET 中的 User32 API 调用

我目前正在计划一个项目,涉及为 Windows 创建一个 shell 替代品(基于 Blackbox,特别是 bblean)。但是,我希望利用 .NET 的力量来做到这一点。我需要的许多 API 调用都包含在 User32 库中。我当然可以使用 P/Invoke 并创建一个静态类来为我处理这个问题。

但是,很多这种功能已经在 .NET 框架中可用,特别是在 System.Management 命名空间中用于处理进程和活动窗口等。其中一些似乎缺失,例如 SetForegroundWindow 函数。

您是否知道已经提供此功能的 .NET 框架中内置的任何内容,或者我是否需要采用 P/Invoke 路线?

0 投票
2 回答
3015 浏览

c# - User32 的 ShowWindow 未按预期运行

我正在使用 User32 的 ShowWindow 方法向用户隐藏一个窗口(cmd.exe)(主要是为了防止他们关闭它)。当用户打开表单时,进程启动并隐藏,然后当表单关闭时,进程被终止。但是,当再次打开表单时,它不会隐藏窗口(有时不是第一次)有人可以帮我解决这个问题吗?

0 投票
1 回答
1138 浏览

c# - 如何从服务获取登录用户的活动窗口

我正在编写一个 C# 服务,它必须从当前登录的用户那里检索信息,例如活动窗口或最后一次鼠标移动。我已经了解到我可以使用 user32.dll 来检索这些信息,但这只能在调用方法的用户上下文中工作。

这样,我的服务只能检索有关其自身的信息,而不能检索有关“真实世界”用户的信息。我还听说这应该可以通过使用 WTSEnumerateSessions、OpenWindowStation、EnumDesktops 等来实现,但我还没有找到一个示例来展示如何做到这一点。

有人知道如何实现我的目标(或者可能是一些代码示例)吗?

0 投票
3 回答
5060 浏览

.net - 在.NET中交换鼠标左键和右键

如何在 .NET(最好是 C#)中交换鼠标左键和右键?基本上,结果应该与用户通过控制面板选中鼠标属性中的“切换主要和次要按钮”复选框相同。我正在处理 Windows XP,以防万一。

0 投票
3 回答
2287 浏览

silverlight - 如何确定是否在 Silverlight 应用程序中切换了 Caps Lock?

在 Silverlight 应用程序的登录屏幕中,我需要确定是否切换了 Caps Lock。这很容易通过处理 KeyUp 或 KeyDown 事件,但是即使没有按下某个键,如何确定它是打开还是关闭?

我想这样做的原因是,如果用户在 Silverlight 应用程序运行时没有按 Caps Lock,而是在进入登录屏幕之前切换了它,该怎么办?我仍然需要警告他们大写锁定已打开。

显然,在 Silverlight 中无法处理非托管代码,因此以下内容不起作用。

[DllImport("user32.dll")] internal static extern short GetKeyState(int keyCode);

0 投票
2 回答
260 浏览

dialog - 自动点击问题

我正在编写一个用于自动化测试的程序,该程序使用各种 User32.dll 库调用随机单击打开的应用程序窗口。我当前的问题是,如果单击会打开一个对话框,则使用 Process.WaitForInputIdle() 不会等待足够长的时间来检测到该对话框的下一次循环,这意味着会提示多次点击,如果这些点击发生出现在我想避免的对话框中的某些内容上(比如退出按钮),无法提前告知。我的问题是这个。有没有办法等待进程或线程完成所有处理并且只在消息循环中再次等待?

我希望这是有道理的。

干杯

罗斯

编辑

如果做不到这一点,是否有可能将目标程序和我的程序的进程/线程设置为都使用相同的处理器并调整每个处理器的优先级,以便目标程序获得优先权?

0 投票
1 回答
3657 浏览

winapi - 使用 SendMessage 模拟用户鼠标点击

我需要使用 SendMessage 来模拟目标程序中的用户点击,因为 SendMessage 会阻塞,直到它触发的事件完成处理。这样做的原因是,这种阻止提供了检测是否有任何对话框因单击而打开的机会。我目前的问题是,虽然我可以在打开模型对话框的模拟表单中的按钮上连续使用 WM_LBUTTONDOWN 和 WM_LBUTTONUP 消息进行点击工作,但我无法让它在标准 Windows 应用程序中的菜单和菜单项上工作(记事本)。任何有助于以一种可行的方式执行对菜单项的点击的帮助都会受到赞赏。我已经可以检测到它是否是一个菜单项,只需要能够使用 SendMessage 来模拟点击它并阻止它。

干杯

罗斯

0 投票
3 回答
1890 浏览

winapi - SendMessage 点击非客户端项目

我无法让 SendMessage 激活另一个程序上的菜单。当用户单击菜单时通过 Spy++ 查看时,会发生以下情况:

而当我尝试使用带有 WM_NCLBUTTONDOWN 的 SendMessage 进行相同操作时,会发生以下情况:

有谁知道如何让它正常工作?

干杯

罗斯

0 投票
1 回答
424 浏览

winapi - 在不触发事件的情况下设置虚拟键/鼠标按钮状态

是否可以为计算机上的所有程序设置虚拟键状态/鼠标按钮状态而不同时触发相关事件(例如将鼠标左键设置为当前按下而不发送鼠标按下事件)。这是否可以通过为假键盘或鼠标设置假键盘或鼠标驱动程序来实现,当查询键的当前状态时会回复您选择的答案或通过任何其他方式?

编辑:这必须影响我没有代码在其他线程等中运行的程序......