问题标签 [windows-messages]

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 回答
248 浏览

.net - 我该如何做这些 IPC 技术?

我记得在使用 C 和 win32 时,我有许多 IPC 技术。到目前为止,我还没有在 .NET 中遇到过它们中的任何一个,也没有在 C 之外看到它们,所以我想我想问我如何使用这些进程间通信技术?

  1. 共享/全局内存。只需分配可以由另一个进程更改而没有任何信号的 ram。

  2. 窗口消息。我记得使用 SendMessage 并使用 WM_USER + N 并在我触摸共享内存时告诉另一个应用程序,要求它更改文件或设置,有时还告诉其他应用程序我输入了一些击键来充当宏,因为我有时会感到懒惰。

  3. 动态数据交换。我尝试过,但永远无法让它发挥作用。据我所知(警告这可能是完全错误的),您将自己注册到全局消息或事件,另一个应用程序(通常是您的)将发送消息,这两个左右的应用程序可以相互通信,发布消息,您可以进行集成以这种方式在两个应用程序之间。我很想知道是什么取代了它。

还有一些我知道仍在使用和看到的命名管道。我记得人们推荐 IPC 的套接字,但我从不喜欢这样做,我知道它仍然存在并且可以在需要时使用。

我还想念什么,是什么取代了这种技术?我知道有很酷的全局互斥锁。我仍在寻找一种在两个应用程序之间发送消息的现代方式(第 2 点)。我一直想知道是否存在某种不在管道中的 FIFO 队列。就像 Windows 消息一样,除了我可以推送数据(如 1k)而不是每次发送消息和分配全局内存。

-编辑-凹凸。这个线程目前仍然与我相关。

0 投票
2 回答
145 浏览

.net - 显示“您已崩溃,我们很抱歉......”弹出窗口时完全停止应用程序

如果我的应用程序崩溃,我会拦截崩溃(使用函数 SetUnhandledExceptionFilter)。在我的崩溃处理程序中,我创建了一个小型转储文件,并通知用户他的应用程序已经崩溃。此通知是通过带有标志 MB_TASKMODAL 的 MessageBox 完成的,因此应用程序的其余部分被阻止。

不幸的是,这不会阻止重绘和计时器消息的处理。特别是计时器消息非常烦人,因为它们可能会执行各种中间操作(取决于我的应用程序中加载了哪些插件),甚至保存到备份文件等。

有没有一种简单的方法可以防止 Windows 发送重绘和计时器消息(同时显示“你已经崩溃”弹出窗口)?

另一种方法是使用一些全局变量,该变量将在我的崩溃处理程序中设置,并在我的应用程序中执行某些逻辑的每个地方进行检查,但这对我来说似乎是一个相当“肮脏”且不灵活的解决方案。没有更简单的方法吗?(并且只保证消息框的消息循环只处理消息框消息,不处理其他窗口的消息)。

感谢帕特里克

0 投票
1 回答
896 浏览

c++ - 从 Windows7 中的安全屏幕 (Ctrl+Alt+Del) 返回时未收到 WM_PAINT 消息

我需要检测安全屏幕的关闭,这是用户在 windows 下按下 Ctrl+Alt+Del 时出现的全屏。在 Xp 中,当此屏幕关闭时,我的应用程序会收到一条 wm_paint 消息,但在 windows 7 下,并不总是收到一条消息,可能只有 25% 的时间。

我尝试捕获 WM_WTSSESSION_CHANGE 消息,但如果用户注销然后重新登录到他们的帐户,我只会收到此消息。

不确定 Vista 中的行为,因为到目前为止我只在 XP 和 7 上对此进行了测试。

0 投票
2 回答
167 浏览

hook - 当应用程序启动时,是否有我可以挂钩的 Windows 消息?

我想知道任何应用程序何时启动。是否有一条 Windows 消息,我可以设置一个挂钩以确切知道何时发生这种情况?

0 投票
3 回答
1525 浏览

c# - 如何将按键发送到 DirectX 应用程序?

我需要用任何编程语言(最好是 Delphi 7 / Delphi 10 / C#)编写一个程序,模拟1在 Windows XP 或 Windows 7 中每 10 秒对给定进程按下一次。发送 Windows 消息,这适用于我拥有的所有其他应用程序试过了,对这个特定的不起作用,我怀疑这是因为它使用的是 DirectX。这可以在不覆盖DX*.DLL文件的情况下完成吗?如何?

谢谢你,
汤姆

编辑:我刚刚尝试使用 SendInput (在 Windows XP 上的 Delphi 7 中,代码来自http://www.swissdelphicenter.ch/torry/showcode.php?id=220),这也不起作用

0 投票
3 回答
948 浏览

c# - 如何学习多点触控屏幕的通信协议并为其编写 C# 应用程序?

我有一个上面有多点触控覆盖的显示器。它适用于 Windows 7,但我想用 C# 为 Windows XP 编写一个多点触控应用程序,它不支持开箱即用的触控功能。没有任何文件,我给制造商发了电子邮件,但从未得到回复。

但是,该设备可在 Windows XP 上与本身不支持多点触控的 Google 地球配合使用。所以我认为它会一起生成多种类型的消息,即用于 Windows 7 的 WM_TOUCH,一种用于 Google Earth COM API,并且可能以 UDP 或 Windows 消息形式生成它自己的消息。如何捕获所有通信并学习协议?

0 投票
1 回答
205 浏览

winapi - Spy++ 运行时 EM_GETLINE 失败

在我的应用程序中的某个对话框中有一个编辑框,它在 Windows XP 上运行。当我在这个控件上发出 EM_GETLINE 时,它会返回它的内容并且没问题,但是当我启动 Spy++ 时,控件突然开始表现不正确并且总是返回一个空字符串。可能是什么问题?

0 投票
2 回答
3230 浏览

winapi - 用于监视外部应用程序使用的 Windows 消息的工具

我正在寻找一种用于实时监控外部应用程序触发的 Windows 消息的工具。

前段时间我使用了winsight32(Delphi附带的工具),但是内存非常昂贵并且冻结了我的笔记本电脑。

替代文字
(来源:blong.com

0 投票
2 回答
152 浏览

java - 窃取另一个应用程序树视图的内容

我在 Java 中有一个非常大的 TreeView 控件的应用程序。我只想在叶子的 XPath 类元素的列表(只是字符串而不是 JList)中获取树控件的内容。这是一个示例根

会输出:

我没有任何源代码或任何类似的方便的东西。有没有我可以用来挖掘 Window 项目本身并提取这些数据的工具?我不介意是否有一些后处理步骤,因为手动输入是我唯一的选择。

0 投票
1 回答
703 浏览

c++ - 不同的 RegisterWindowMessage() 名称看起来相同

使用 C/C++ Windows API RegisterWindowMessage()

我使用应用程序的名称作为消息名称。

接下来,我使用相同的名称调用CreatMutex(),以便判断它是否已经存在。如果是这样,我知道这个应用程序已经在运行并且不会启动它的第二个实例。这是我的函数 Running() 的操作

我的困惑在于消息名称。似乎“AutoConvert.exe”和“AutoAppend.exe”被解释为同名。为什么?

补充:我不在我的机器上,但这类似于在两个应用程序中调用以检查应用程序当前是否正在运行的函数

当我回来时,我需要做一些进一步的测试,因为你说得很好。