关于程序出现 “因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫”

Posted Energy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于程序出现 “因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫”相关的知识,希望对你有一定的参考价值。

最近在开发中碰到一个问题,

调用

 

_di_XMLDocument doc = NewXMLDocument();

 

这段代码的时,程序报异常“因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫”

 

查了CSDN 和 StackOverflow 他们碰到的问题,大多是由于SendMessage 和 COM 2个组件。(原理目前不清楚)

 

受此启发,发现,我的doc对象,是在一个 键盘钩子的回调函数中执行的。

 

目测,这个键盘钩子的回调函数,在等待一个SendMessage的返回。

 

解决办法是。当捕获到键盘钩子之后,PostMessage 一个自定义消息给一个窗体(我是Post给主窗体了)。让键盘钩子赶紧返回。

 

然后主窗体收到消息之后,执行键盘钩子的逻辑部分。

 

之前是这样写的:

 

//键盘钩子回调

void CALLBACK HOOK(wParam,lparam)

{

 //逻辑过程

 

}

 

修改为

void CALLBACK HOOK(wParam,lparam)

{

 //逻辑过程

   PostMessage(Handle, WM_USER+100, 参数1,参数2);

 

}

 

然后主窗体收到消息时处理

 

void OnMessage(TMessage& msg)

{   

      if (msg.msg == WM_USER+100)

     {

        //逻辑过程

     }

 

 

}

 

以上是关于关于程序出现 “因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫”的主要内容,如果未能解决你的问题,请参考以下文章

关于小程序webview加载H5页面出现的问题

关于Chrome浏览器出现“此扩展程序可能已损坏”

关于SAP ABAP程序中出现的奇奇怪怪的错误

关于STM8S003和S103,可能会出现的一直进入串口接收中断子程序问题的处理。

关于Latex中,tikz画图的问题,程序如下,出现了错误,求大神解答缘由

关于在Windows64上编译程序出现相邻变量地址偏移相差32字节问题