有一个c#写的程序:点击按钮“button1"(注意,点击后该按钮的enable属性仍然是true)后弹出一个MessageBox提示,如果此提示不关闭的话,该按钮应该是不允许再次点击的 再用C#写了另外一个程序通过API获取到"button1"的句柄,使用API  PostMessage(hwnd, WM_CLICK, 0, 0)进行单击,作用是模拟人工点击button1按钮,正常情况是无任何问题,但是如果“button1”在未关闭MessageBox提示下,API还是会继续单击,应该是不允许的,否则和真实的手工操作不一致 请问各位朋友有什么解决方法吗 

解决方案 »

  1.   

    没必要啊,找到那个窗体 ,然后发送WM_Close消息
      

  2.   

    模态对话框弹出的情况下,原窗口处于禁用状态。使用c++的方法取得Style的话,会发现有WS_DISABLED(0x08000000)这一项。c#中直接去这个style值貌似比较麻烦
      

  3.   

    api
    ret=IsWindowEnabled(按钮句丙)
    ret>0可用,=0不可用
      

  4.   


    这个方法肯定不行,弹出的提示处于模态下,按钮是手工点击不了的,除非是发送PostMessage,但是这样做等于是没解决问题
      

  5.   

    可行。
    用 GetWindowLong() 获取这个Style。
      

  6.   

    public bool TestA(int hwnd)
            {
                if (IsHwnd(hwnd))
                {
                    int result = GetWindowLong(hwnd, GWL_STYLE);
                    return ((result & WS_DISABLED) != 0);
                }
                else
                {
                    return false;
                }
            }返回的结果永远是False
    该方法不可行哦