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

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

    调用

    _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)

         {

            //逻辑过程

         }

    }

  • 相关阅读:
    微信小程序与用户交互
    洛谷P2066 机器分配
    巴蜀3540 -- 【Violet 6 最终话】蒲公英
    POJ1984 Navigation Nightmare
    洛谷P1387 最大正方形
    洛谷P2679 子串
    洛谷P2057 善意的投票
    Bzoj 2726 SDOI 任务安排
    POJ2761 Feed the dogs
    P1272 重建道路
  • 原文地址:https://www.cnblogs.com/songr/p/5339880.html
Copyright © 2011-2022 走看看