我想通过程序来获取别人写的程序窗口中一个控件的资源ID(不是句柄),如何实现?谢谢

解决方案 »

  1.   

    一个控件的ID? 你是怎么来确定这个控件? 是用hWnd还是别的?
      

  2.   

    比如我把鼠标移动到了一个edit的上方,能获取到他的资源ID吗?
      

  3.   

    有个exeScope的软件可以把可执行文件的资源全部解析出来,但是他只是罗列出来,有时候这个程序的edit有好几个,并不能一下子就知道某一个edit的资源ID,可不可以做到,把我的鼠标移到上方就可以知道这个edit的资源ID?
      

  4.   

    能 CPoint pt
    HWND hWnd=WindowFromPoint(pt);//得到该控件句柄
    int i=GetWindowLong(hWnd,GWL_ID);//得到ID
      

  5.   

    但是以下代码输出的ID总是为零,得不到我想要的ID,为什么?
    void CNumberView::OnLButtonDown(UINT nFlags, CPoint point) 
    { HWND hWnd=(HWND)WindowFromPoint(point);//得到该控件句柄
    if (hWnd == NULL)
    AfxMessageBox("hWnd is null");
    else
    {

        int i=GetWindowLong(hWnd, GWL_ID);//得到ID
        char a[50];
        sprintf(a, "id=%d x=%d  y=%d\n", i, point.x, point.y);
                 CClientDC DC(AfxGetMainWnd());
        DC.TextOut(0,0,a);
             }
    CFormView::OnLButtonDown(nFlags, point);
    }
      

  6.   

    你的OnLButtonDown是从自己的程序中来的
    那里面的point就不对了
    就取不到别的程序里的控件句饼了
      

  7.   

    CPoint pt;
    HWND hWnd=(HWND)WindowFromPoint(pt);//得到该控件句柄
    if (hWnd == NULL)
    AfxMessageBox("hWnd is null");
    else
    {

        int i=GetWindowLong(hWnd, GWL_ID);//得到ID
        char a[50];
        sprintf(a, "id=%d x=%d  y=%d x1=%d  y1=%d\n", i, point.x, point.y,pt.x,pt.y);
                 CClientDC DC(AfxGetMainWnd());
        DC.TextOut(0,0,a);
             }
    //CFormView::OnLButtonDown(nFlags, point);
      

  8.   

    哦 少了一句 要补捉窗体外部的鼠标 还得加上SetCapture();
      

  9.   

    GetWindowLong 又学一招,哈哈。
      

  10.   

    chuanke((C ) 2005【空间代数】. All rights reserved .) 兄说的方法也不行,坐标根本没有。