问题标签 [wndproc]

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

winapi - WM_SIZE with loword==hiword==-1?

刚刚在 Windows 7 上尝试了我的一些小型图形应用程序,我得到了一个带有 loword==hiword== -1 的 WM_SIZE 事件——可以安全地忽略它,还是它有什么特殊含义?我从来没有在 XP/Vista 上看到过这样的大小,只有 Windows 7。文档并没有详细说明 hiword/lowword 可以是什么,所以我想知道 -1 是否有一些特殊含义。(我应该一般检查是否为负数,还是 -1 是唯一的情况?)

0 投票
3 回答
13791 浏览

c# - 如何在 VB6 和 c# 之间发送/接收 windows 消息?

我知道我可以在 c# 中使用以下代码接收消息,我如何发送到 vb6,并在 vb6 中接收,并从 vb6 发送?

0 投票
1 回答
2416 浏览

winapi - Win32、WndProc 和父子窗口

我正在使用 Win32 Api 创建多个窗口的 C 代码进行开发。我使用createWindow了两次 - 创建父窗口和子窗口。我有一个消息循环

但是我只WND_Proc调用一次函数,而不是每个窗口调用两次。

我究竟做错了什么?

0 投票
3 回答
1953 浏览

winapi - CreateWindow() [Win32 API] : 只有父窗口获取

我问了一个问题,有人评论说我的问题不清楚,所以这里是一个新问题。

我正在尝试使用 WIN32 API 创建具有多个窗口的应用程序。我创建了两个窗口,一个是父级的子级。然后我有一个消息循环,但不幸的是只有父 Wn​​dProc 收到消息,而孩子没有。- 那就是 wndProc 只被调用一次而不是两次。(这是预期的行为吗?)

我还尝试为子窗口创建另一个 WndProcChild 函数,并注册它自己的类,但仍然无济于事。

下面是一段代码摘录(只有子窗口的声明和消息循环)

我是 Win32 新手,所以要温柔...谢谢,丹


只是为了再次解释我想要实现的目标 - 我想处理 WM_KEYDOWN 消息两次 - 一次在父窗口中,一次在子窗口中。我实际上不需要他们成为父子,只是认为这样可以节省我创建两个不同的 wndProcs

0 投票
3 回答
1804 浏览

windows - 将 Win32 API WndProc Key 消息从一个窗口传输到另一个窗口

我正在用 C++ 为 Windows Mobile 开发,我遇到了一个问题 - 我添加了我的窗口类,并在其中我的键盘输入与我的WndProc实现。问题是我得到了错误的代码,并且错误地识别了诸如 func 键之类的键,更糟糕的是,我得到的值(消息wParamWM_KEYDOWN值)是我在这里拥有的两部手机之间的不同值用于测试 - 谁知道其他手机会发生什么。

在玩了很长时间之后,我发现如果我只从预定义的“EDIT”类创建一个窗口,我实际上确实可以正确输入(就字母/键而言)。

所以问题一定不在手机上,而在于获取消息的方式(win32有点新手,见谅)。我尝试使用输入模式,但使用 EM_NUMBERS 向我的窗口发送消息,总是失败。

所以我想做的(尽管我愿意接受建议),就是从某个隐藏的编辑窗口中获取字符,然后将它们转发到我的窗口。(虽然我仍然需要我的窗口来获得焦点,以便它能够正确响应不同的消息WM_KEYDOWN等)

有没有办法做到这一点?

这是我第三次询问这个问题,我永远感谢迄今为止试图提供帮助的每个人(尽管如果我设法解决了我的问题,我会更加感激)

以下是相关代码摘录:

班级注册:

WNDPROC 摘录:

0 投票
2 回答
1862 浏览

windows - 查找 WndProc 地址

如何找到 WndProc 的地址(另一个进程的窗口)。即使我注入一个 DLL 并尝试使用 GetClassInfoEx() 或 GetWindowLong() 或 GetWindowLongPtr() 找到它,我总是会得到像 0xffff08ed 这样的值,这绝对不是可执行地址。它是根据 MSDN:“......窗口过程的地址,或代表窗口过程地址的句柄。”

不幸的是,这对我来说还不够好,我需要实际地址。Spy++ 在大多数情况下都能正确完成工作(但即使这样有时也会失败)。所以应该是可以的。谢谢。


[编辑:]感谢Chris Becke为我的小问题提供了超快速且正确的解决方案!

0 投票
3 回答
26127 浏览

c# - 如何在没有 Windows 窗体的情况下接收即插即用设备通知

我正在尝试编写一个可以捕获 Windows 消息的类库,以便在设备已附加或删除时通知我。通常,在 Windows 窗体应用程序中,我只会覆盖 WndProc 方法,但在这种情况下没有 WndProc 方法。还有其他方法可以获取消息吗?

0 投票
2 回答
2145 浏览

windows - 如果我发送 WM_KEYDOWN 消息(使用 wndproc),计算机会按住键直到我发送 WM_KEYUP?

我正在寻找一种解决方案,可以在一段时间内以编程方式按住键盘键(我不知道多少次)。

我认为如果我发送 WM_KEYDOWN 消息,则密钥将被按住,直到发送 WM_KEYUP,但我不确定。

我会测试它。但我得走了,我没有太多时间。我想看看是否有人已经对此进行了测试。

这是我发布的另一个问题,与此相关。
我想做一个虚拟键盘。我是否需要将 WM_KEYDOWN 发送到当前活动窗口或 HWND_BROADCAST?

0 投票
1 回答
363 浏览

windows - 我想做一个虚拟键盘。我是否需要将 WM_KEYDOWN 发送到当前活动窗口或 HWND_BROADCAST?

我正在制作一个模拟键盘的应用程序。我将通过将 WM_KEYDOWN 发送到窗口来做到这一点,但我不确定将消息发送到哪里。到当前活动窗口还是到 HWND_BROADCAST?

这是我发布的另一个问题,与此相关。
如果我发送 WM_KEYDOWN 消息(使用 wndproc),计算机会按住键直到我发送 WM_KEYUP?

0 投票
1 回答
2905 浏览

delphi - Delphi - 线程中的 WndProc() 从未调用过

在主 VCL 线程的上下文中运行时,我的代码运行良好。该代码分配了它自己的 WndProc() 以处理 SendMessage() 调用。我现在正试图将其移至后台线程,因为我担心 SendMessage() 流量会对 VCL 主线程产生不利影响。因此,我创建了一个工作线程,其唯一目的是在其线程 Execute() 方法中分配 WndProc(),以确保 WndProc() 存在于线程的执行上下文中。WndProc() 处理传入的 SendMessage() 调用。问题是工作线程的 WndProc() 方法永远不会被触发。

请注意,doExecute() 是模板方法的一部分,由我的 TThreadExtended 类调用,该类是 Delphi 的 TThread 的后代。TThreadExtended 实现了线程 Execute() 方法并在循环中调用 doExecute()。我进行了三次检查,并且重复调用了 doExecute()。另请注意,我在创建 WndProc() 后立即调用 PeekMessage() 以确保 Windows 为线程创建消息队列。但是我做的事情是错误的,因为 WndProc() 方法永远不会被触发。下面是代码:

谢谢,罗伯特