MySQL 用户定义函数发送 Windows 消息

发布于 2024-09-28 05:59:14 字数 345 浏览 7 评论 0 原文

你好,

我想在 MySQL 5.1.51 (XP SP3) 上的 MySQL UDF 中使用 Windows API Postmessage() 调用。我知道 UDF(用 Delphi 2006 编写)通过为 UDF 设置虚假结果来工作。

UDF 的语法采用两个整数参数,一个用于窗口句柄,另一个用于消息号。然而,从 UDF 内部调用 PostMessage() 会导致 mysqld 出现异常,并且服务停止。

有什么想法或指示吗?或者,如果有人可以告诉我如何通过 AnyDAC 和 Delphi 模拟 MySQL 的 IB 事件,或者当数据库中的记录发生更改时获取通知的替代方法,那么请告诉我。

——多诺万

G'Day,

I want to use the Windows API Postmessage() call from inside a MySQL UDF on MySQL 5.1.51 (XP SP3). I know the UDF (Written in Delphi 2006) is working by setting a bogus result for the UDF.

The syntax of the UDF takes two integer params, one for a window handle and the other for a message number. However a call to PostMessage() from inside my UDF causes an exception in mysqld and the service stops.

Any ideas or pointers? Alternatively if anyone can tell me how I am able to simulate IB Events for MySQL via AnyDAC and Delphi OR an alternate approach to getting a notification when a record has changed in the database then please show me the light.

--Donovan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梓梦 2024-10-05 05:59:14

使用这种方法会遇到问题,主要是因为消息传递只能在相同的访问级别以及同一台计算机上的同一会话中起作用。使用其他方法会更好,例如 TCPIP 套接字、MailSlots、内存映射文件等。

为了最好地模拟发布消息,我将使用 TCPIP UDP。我过去使用过的一个很好的轻量级库是 Synapse。 SVN 的 synapse 库在最新版本的 Delphi 上运行得很好。为此,您要使用的类是 TUDPBlockSocket。

Your going to run into problems with this approach mainly due to the fact that messaging will only work to the same access level, and within the same session on the same computer. You would be better served by using other methods, such as TCPIP sockets, MailSlots, Memory mapped files, ect.

To best simulate a post message, I would use TCPIP UDP. A good lightweight library that I have used in the past is Synapse. The synapse library from SVN does run quite well against the latest versions of Delphi. The class you will want to use for this is the TUDPBlockSocket.

走走停停 2024-10-05 05:59:14

As an alternative to windows messages or TCP/IP, you might want to consider the named pipes answer to this question on sending information between two Delphi programs and this question on what named pipes are.

--jeroen

暖树树初阳… 2024-10-05 05:59:14

虽然我通过 UDF / Windows Pipe 路线取得了成功,但我还有另一个想法,可以利用 MySQL 中的信息消息框架(?)。请参阅https://stackoverflow.com/q/3992779/223742

While I have had success via the UDF / Windows Pipe route I had another idea leveraging off being able to tap into the information message framework(?) in MySQL. See https://stackoverflow.com/q/3992779/223742

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文