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

web-services - 我应该从 Web 服务调用中释放一个自动实例化的 Delphi 对象吗?

新手问题:我有一个表单应用程序。它有一个单独的线程进行 Web 服务调用,然后将调用结果发布到主窗体。

在我的线程中,经过 X 秒后(使用 TTimer),我调用:

函数 Remote.Run.GetSystemProbeValues 具有以下原型:

TCWProbeValues 是 TCWProbeValue 对象的动态数组(它们都来自 TRemotable)。

在我的主要形式中,我收到了很好的消息并将 LParam 转换回 TCWProbeValues:

我的问题是,鉴于动态数组及其对象是由 Delphi HTTORIO 系统创建的,谁负责释放它们?在我的 OnTimer 函数返回后,Delphi 是否认为该内存可重用?(在这种情况下,我的主窗体消息处理程序实际上可以读取消息的 LParam 引用的内存,这纯粹是幸运的吗?)或者更确切地说,释放由 HTTPRIO 请求自动实例化的对象是我的责任吗?

非常感谢,如果以上需要更多详细信息/代码,请大喊大叫,我会添加!

干杯,邓肯

0 投票
3 回答
296 浏览

c# - 如何在 C# 服务和单独的 VB 6 应用程序之间来回传递结构(或类)消息?

考虑使用 Windows 消息传递,我需要在 ac# 服务和正在运行的 vb 6 应用程序之间传递数据。如何在 C# 服务和正在运行的 vb 6 应用程序之间来回传递数据?我来回传递的数据的缩短样本如下:

0 投票
5 回答
2785 浏览

winforms - 当包装的控件设置了捕获时,如何接收鼠标事件?

当我按下修饰键(shift 或 control)单击时,我的 WndProc 没有看到鼠标向上通知。我看到它们没有修饰键,我看到带有修饰键的鼠标按下通知。

我正在尝试跟踪我没有编写的组件中的用户操作,因此我使用 Windows 窗体 NativeWindow 包装器(包装组件)从 WndProc() 方法获取 Windows 消息。

我尝试跟踪收到的通知,我看到的唯一线索是 WM_CAPTURECHANGED。当我收到 WM_LBUTTONDOWN 消息时,我尝试调用 SetCapture,但它没有帮助。

没有修饰符(跳过油漆、计时器和 NCHITTEST 消息):

使用修饰符(跳过油漆、计时器和 NCHITTEST 消息):

如果我长时间按住鼠标按钮,我通常可以收到 WM_LBUTTONUP 通知,但应该可以使其更具响应性..

编辑:在释放鼠标按钮之前,我尝试在感兴趣的组件外部进行控制单击并将光标移动到其中,然后我确实收到了 WM_LBUTTONUP 通知,所以看起来组件在鼠标按下时正在捕获鼠标. 当另一个窗口捕获鼠标时,有什么方法可以接收该通知?

谢谢。

0 投票
1 回答
1546 浏览

delphi - 在 Delphi 中访问和继承其他 Windows 消息的 Windows 消息

我正在使用 WMSysCommand 消息来修改标题栏按钮(最大化/最小化)的行为,并且最近更新需要使用 WMNCHitTest,但由于代码冗长,我不想在乘法过程中拆分这两个相关消息。

我可以从其他消息中访问私人声明(消息)吗?如果我可以 - 怎么做?

Soo ...我是正确地认为并且只是不知道正确的命令还是我在想完全胡说八道?

问候。谢谢你的帮助...

0 投票
1 回答
247 浏览

winapi - Win32中是否有双击右键之类的东西?

我没有发现任何提及双击右键单击窗口消息的内容,但我很好奇是否有人知道双击右键触发的事件。

有任何想法吗?

0 投票
2 回答
349 浏览

windows - 如何处理 Windows 消息中动态分配数据的生命周期?

简单任务:发送带有动态分配数据的 Windows 消息,例如任意长度的字符串。您将如何管理释放这些数据的责任?

Windows 消息的接收者可能负责释放这些数据。但是:你怎么能保证所有的消息都会被实际接收,从而链接的数据会被释放?想象一下接收器正在关闭的情况,因此它不会再处理它的消息队列了。但是,消息队列仍然存在(一段时间)并且仍然可以接受消息,这些消息将不再被处理。

谢谢!

0 投票
1 回答
6527 浏览

delphi - 如何在单独的进程中使用 SendMessage(..) 发送数据记录

我曾经在两个单独的进程上发送数据,但它失败了。它只能在相同的过程下工作......这是概念。

//------------------------------------------------ ---------------------------------
MainApps
//------------ -------------------------------------------------- ---------------------

//------------------------------------------------ ---------------------------------
子应用程序
//------------ -------------------------------------------------- ---------------------

:OnCaptureMessage

0 投票
7 回答
3445 浏览

delphi - 防止 Windows 关闭

为了检测和防止关闭计算机,我使用了非常简单的程序。它只有一种形式和一种私有程序,如下所示:

和实施

我编译了 Delphi 5 和 Delphi 2010。它们都检测到关机。但是当我在 Delphi 2010 中编译时;阻止关闭后,我的程序关闭。(电脑不关机)

我如何从他们两个那里得到相同的结果?

0 投票
2 回答
17853 浏览

c# - C# - 从特定应用程序捕获 Windows 消息

我正在编写一个 C# 应用程序,它需要拦截另一个应用程序发出的窗口消息。编写我正在监视的应用程序的公司向我发送了一些示例代码,但它是 C++ 的,我真的不知道。

在 C++ 示例代码中,我得到了他们使用以下代码:

据我了解,这会从 Windows 中检索我们要侦听的特定消息的 Id。然后,每当拦截到与 Id 匹配的消息时,我们都会要求 C++ 调用OnShockStatusMessage 。

经过一番研究,我在 C# 中整理了以下内容

据我了解,这应该做同样的基本事情,因为它:

  1. 找到我要监控的应用程序
  2. 注册我希望拦截的窗口消息
  3. 监视所有窗口消息 - 然后去掉我需要的消息

但是,在我重写WndProc()方法时,我的检查都没有拦截任何特定消息或来自我正在监视的应用程序的任何消息。

如果我对通过它的所有消息进行Debug.WriteLine,我可以看到它正在监视它们。但是它永远不会过滤掉我想要的消息。

通过运行用 C++ 编写的示例监控应用程序,我可以看到正在发送和接收窗口消息 - 只是我的 C# 实现没有做同样的事情。

0 投票
2 回答
364 浏览

c++ - 将窗口粘贴到其他窗口

我想开发可以插入其他窗口的 Windows 程序。

我正在寻找最快的方法来做到这一点。我可以获取WinAPI有关目标窗口的所有信息并将我的窗口移动到合适的位置,然后嗅探目标窗口的 Windows 消息以搜索调整大小移动窗口,然后再次移动我的窗口。但我不知道什么是最简单的好工作方式(也许有点.NET?但我不.NET喜欢免费框架的答案)。

我想贴在目标窗口的顶部、底部、左侧、右侧,但这可能没关系。

谁能帮我解决这个问题?谢谢。