我正在使用较旧的vb6应用程序和c#中的新应用程序,并使用SendMessage在它们之间发送消息,c#程序在vb6应用程序中作为表单运行。
有时候,并没有我能看到的模式,消息不会被发送到c#程序。这通常可以通过单击任务栏中的c#程序然后返回到vb6应用程序并再次尝试它将再次开始工作来纠正。
当它不工作时,我可以在WndProc方法中放置一个断点,看看它没有触发。
我一直无法弄清楚如何使这种沟通不一致。
代码处理:
protected override void WndProc(ref Message message)
{
if (message.Msg == 0x400 + 5)
{
if (message.LParam != (IntPtr)0)
{
StringBuilder += (char)message.LParam;
}
else
{
handleIncMessage(StringBuilder);
StringBuilder = "";
}
}
//be sure to pass along all messages to the base also
base.WndProc(ref message);
}
我尝试了这种方法:https://stackoverflow.com/a/7033382/821665但不幸的是它没有用。