要实现在程序里面控制其他程序的BUTTON状态,如果Button上是字符的话可以利用
CWnd *wnd=FindWindow(NULL,"程序1");
CWnd *cWnd1=CWnd::FromHandle(FindWindowEx(wnd->m_hWnd,0,"Button","按钮1"));
cWnd1->EnableWindow(0);//使该按钮失效如果Button上是图像的话,要怎么实现上述控制呀

解决方案 »

  1.   

    另外,从Spy++已经查到控件的Windows Handle,从这里可以控制吗
      

  2.   

    spy++里得到的handle是可以直接使用进行控制的.先得到对方的主窗口.然后调用
    FindWindowEx来查找类名为"Button"的子窗口
      

  3.   

    比如说,得到控件的handle是00040BD2,这个handle要怎样调用呀
      

  4.   


    cWnd1->EnableWindow(0);//使该按钮失效
    得到了句柄却不知道
    EnableWindow(
      hWnd,     // handle to window
      bEnable   // enable or disable input
    );
    一个是mfc,一个是sdk,前面只是对后面的封装,后面才是最根本的东西我不明白你要实现什么功能,无非就是查找窗口而已
    FindWindowEx结合EnumChildWindows,那一个有句柄的窗口能逃掉?
      

  5.   


    不用FINDWINDOW用枚举所有窗口
      

  6.   

    图像控件要如何查找,FindWindowEx()能够直接找到吗而且,如果有守护线程的话,是否能够屏闭外部信息
      

  7.   

    给你一个最简单的枚举模型,可以枚举当前所有窗口的任意级子窗口,并输出窗口标题
    图象窗口是没有标题的,而且其本身的详细信息可以使用getwindowlong得到,可以确定的说,任何时候在系统里面都不会出现完全一样的控件,区别在那里需要你自己动脑筋去找.
    关于守护线程,其实是没有必要的,因为程序本身就可以自己应付外界的"骚扰",究竟能不能被别的程序入侵,只有相对没有绝对.技术是永远向前发展的#include <windows.h>
    #include <STDIO.H>
    BOOL myEnumWindow(HWND hwnd);
    int  main()
    {
    myEnumWindow(NULL);
    return 0;
    }BOOL myEnumWindow(HWND inHwnd)
    {
    char szText[256]; HWND hwndAfter = NULL;
    while(hwndAfter = ::FindWindowEx(inHwnd,hwndAfter,NULL,NULL))
    {
    memset(szText,0,256);
    ::SendMessage(hwndAfter,WM_GETTEXT,(WPARAM)256,(LPARAM)szText);
    printf("%s\t",szText);
    myEnumWindow(hwndAfter);
    }
    return 1;
    }
      

  8.   

    程序只花了几分钟,有什么bug勿笑
      

  9.   

    bobob(静思--潜心研究PDF) 
    你的意思是枚举所有子窗口然后加以判断对吧
    枚举过程消耗时间空间代价先不考虑,子窗口的动态调用也会相应的删除或者添加控件出来,这个时候需要如何判断需要调用的控件hwnd是哪一个