VB程序间通信示例

VB 的进程间通信其实还蛮有意思的,尤其是在做老系统维护或者轻量级 Windows 工具的时候。你会发现,VB 能搞的方式还挺多,像是命名管道共享内存消息队列这些,VB 统统都能上手。哪怕你只写过窗体程序,稍微花点时间,也能搞个两个程序聊聊天出来。

消息队列用起来直接,比如一个程序塞条“Hello”消息进去,另一个一监听就能弹个窗回应,代码量不多,逻辑也清晰。像下面这种用CreateFileWriteFile的写法,就挺适合初学者练手:

Dim hQueue As Long
hQueue = CreateFile("Global\\MyQueue", GENERIC_READ Or GENERIC_WRITE, 0, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, ByVal 0)
If hQueue <> INVALID_HANDLE_VALUE Then
  Dim dwWritten As Long
  WriteFile(hQueue, "Hello from Program A", Len("Hello from Program A"), dwWritten, ByVal 0)

Dim buffer(1024) As Byte ReadFile(hQueue, buffer, 1024, dwWritten, ByVal 0) MsgBox StrConv(buffer, vbUnicode) End If

另外像内存映射套接字,也都支持。比如用CreateFileMapping开辟共享区,两个程序就能像用变量一样传东西;或者本地套接字,类似网络通信但不用上网,响应也快。

再说点进阶玩法,COM 组件ActiveX 控件这俩,在 VB 里还挺常见的。像一个程序写成 COM 服务,另一个直接调接口就完事儿了,写得好的话,耦合低、复用高。

哦对,通信写起来不难,但别忽视安全性错误。是多线程操作和多程序读写的场景,判断返回值、捕获异常都不能省。

如果你现在正好有两个 VB 程序需要互通下信息,可以从消息队列或者命名管道入手,先跑通个 Demo 再逐步优化,不费劲还能涨不少技能点。

rar 文件大小:4.12KB