问题标签 [getmessage]

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

c++ - WinApi 消息循环,Postmessage 像 SendMessage 一样工作

你好有人能回答我为什么当我运行这个程序时 MessageBoxes 的顺序是 1,2,4,3 而不是 1,2,3,4。在我看来程序应该在启动 WM_USER+11 之前结束执行 WM_PAINT 过程,为什么不是?

0 投票
0 回答
2076 浏览

c - C 程序挂在 GetMessage 中

我们的程序挂在客户的机器上(主要是在 Windows 7 中)。

该程序是一个客户端,它连接到我们在另一台机器上的服务器。它是一个带有Win32编程图形界面的C程序。

现象:在随机执行我们的客户端应用程序时,突然变白,出现“应用程序已停止响应”对话框,有两个选项:“关闭应用程序”、“等待应用程序响应”等。客户计算机说AppHang-B1。

我们无法在我们的系统中重现此问题。但是一旦我重现了这个问题并进行了故障转储。

调用堆栈显示以下内容。

下面崩溃处的源代码。请注意,它挂在 GetMessage 行。

来自windbg的局部变量

任何想法为什么它挂起?我无法获得有关 msg->message 0x325 的任何信息

提前致谢


更多信息和以下问题的答案

感谢您的回复是的,我必须将 GetMessage 循环更改为类似

我会这样做

@Lundin 它不是多线程应用程序。

更多关于挂起的信息......挂起主要发生在我们从其他应用程序的 Alt Tab 进入我们的客户端时。虽然它可能随时发生......关于味精0x325可能是什么的任何见解?

0 投票
1 回答
481 浏览

c - Windows程序中的消息循环是否总是“循环”?

如果这个问题对于有经验的程序员来说太简单了,我深表歉意。我刚开始使用 Petzold 了解 windows 的基础知识,但在 Mathematica 和一些 C 和 Labview 方面有编程经验。

我不了解 Windows 中的消息循环,它似乎实现为 While 循环,似乎在“正常”C 程序中,只要条件保持为真,while 循环就会运行,然后程序转到下一条指令,直到程序结束。我将其想象为导致程序执行和结束的一系列事件,这与 Labview 程序的哲学不同,其中时间和序列不太重要,除非用户中断,否则程序可能永远不会结束。

据我了解,在 Windows 中,消息循环会一直持续下去,除非您中断程序。几乎表现为无限循环,始终处于活动状态。如果消息循环上的真/假条件发生变化,由 GetMessage 的布尔结果给出,那么一旦你得到一个假,程序怎么不会就在那里结束呢?

在 Labview 程序中没有时间或操作顺序的强烈概念,任何条件都可能在任何给定时刻发生变化,例如 While 循环的真/假条件,然后循环将开始执行代码块或停止没有它暗示该程序以某种方式接近其结束。这也是它在Windows中的工作方式吗?

我要说的是,使用如下所示的程序:

我认为它只会执行代码块并在那里结束。但在 Windows 中,它会一直“等待”条件为真以执行代码。我相信我没有做到这一点,这就是为什么我要求任何人为我清理这个机制。

0 投票
2 回答
38 浏览

java - 我的异常以及 throw 和 getMessage 中的错误是什么?

我有代码,我想知道错误在哪里,请你帮帮我:throw line 上只有一个错误

0 投票
1 回答
199 浏览

c++ - 来自 GetMessage 的 Windows 消息 9?

编辑:删除我粘贴在这里的代码。我的代码中的一个错误导致了所描述的行为(break在 switch 语句中缺少 a)。

switch处理来自的消息的语句中GetMessage,我为一些没有定义别名的消息添加了整数值(使用我在此处找到的列表:http: //www.mazama.net/scheme/v12/w32message .scm),如果收到这些消息之一,则会弹出消息框。我的期望是未命名的消息被简单地弃用并且永远不会出现。

我还尝试了一些代码WM_ACTIVATE,如果我点击它应该最小化窗口。我搞砸了一些东西,所以窗口一打开就会最小化,但这并不是把我带到这里的原因。窗口打开并最小化后,会弹出消息框,告诉我 Windows 发送了消息 9。如果我关闭它,消息框会再次弹出。

所以这让我想知道,有人知道是什么事件触发了该消息吗?或者,就此而言,GetMessage 返回的任何整数值都没有别名?我发现列出 Windows 消息的所有内容都省略了与我上面发布的链接相同的数字。

0 投票
2 回答
3476 浏览

c++ - 不进入控制台应用程序上的 Windows GetMessage 循环

我想检测 C++ 中的按键,我需要使用 Windows 系统调用。所以,我做了一些研究,这就是我使用 Hooks 和 Message 得到的结果:

我的问题是为什么我的程序没有进入循环(而是停留在 GetMessage 函数上)?我需要它来设置几秒钟后终止的条件,那么我应该把条件放在哪里?我知道 GetMessage 函数读取消息,但是当我按下键盘上的键时它仍然无法进入,并且回调函数工作得很好。

0 投票
1 回答
334 浏览

multithreading - GetMessage 中的 wparam 值不是我所期望的(Delphi XE4)

我正在开发一个 Delphi XE4 服务应用程序。该服务为一些长时间运行的任务启动线程,并且线程通过 PostThreadMessage 调用返回状态。

主 ServiceExecute 循环如下所示:

在线程中,消息发送如下所示:

消息到达正常,消息号正确(msgFound = WM_USER + 1);但是,我为 wParam、lParam 发送了 0、6,而我收到的是 4、0。我错过了什么?

注意:代码只有 2 个线程在运行,其中一个是使用不同消息编号的计时器,发生这种情况时不发送任何内容。

0 投票
0 回答
26 浏览

javascript - 如何在下面的代码中编码 getmessage 调用?

我试图在下面列出的代码中对 getmessage 调用进行 HTML/JavaScript 编码。有人可以解释如何正确地做到这一点吗?下面的代码是用于处理失败的身份验证尝试的程序的片段。在此先感谢您的帮助。

0 投票
1 回答
215 浏览

windows - 应用程序 GetMessage 是否在 MessageBox 期间?

在处理 WM_TIMER 时,我调用了 MessageBox。结果,一个消息框弹出了计时器的频率。所以我相信即使在MessageBox期间,应用程序也试图继续处理排队/非排队的消息。

我对吗?

我知道根据 MSDN,当应用程序将消息发送到与发送线程不同的线程时,发送线程将尝试在SendMessage返回之前处理它收到的非排队消息——即在目标线程回复之前。

除了MessageBoxSendMessage之外,还有其他函数可以尝试在返回之前继续处理排队/非排队的消息吗?我需要知道这一点以确定在 Window 过程中调用的任何函数是否应该是可重入的。

另外两个相关问题是 1) DispatchMessage在窗口过程返回之前不会返回吗?2)如果当前的DispatchMessage还没有返回, GetMessage会不会被再次调用?

0 投票
0 回答
311 浏览

multithreading - waveOutOpen(), waveOutWrite() 给我的线程未记录的消息 1024

声音输出功能给了我意想不到的信息。这是我做错了什么的迹象吗?如果是这样呢?否则是否有一个很好的来源可以解释这些消息可能是什么?

根据 https://wiki.winehq.org/List_Of_Windows_Messages,waveOutOpen() 给了我消息 955 MM_WOM_OPEN 作为记录,然后是未记录的 1024(可能是 DDM_SETFMT、DM_GETDEFID、NIN_SELECT、TBM_GETPOS、WM_PSD_PAGESETUPDLG、WM_USER

在主线程中:

在生成的音频线程中:

waveOutWrite() 没有记录以提供任何消息,但也给了我消息 1024。