获取一个Form的句柄用FindWindow比较容易,但是在这个Form上面的列表框控件的句柄如何获取它的句柄呢?

解决方案 »

  1.   

    如果找一个窗体上所有子窗体:
    BOOL EnumChildWindows(    HWND hWndParent, // handle to parent window
        WNDENUMPROC lpEnumFunc, // pointer to callback function
        LPARAM lParam  // application-defined value
       );
      

  2.   

    知道类名和控件名称
    LbH := FindWindowEx(FormHandle,0,pchar('ListBox'),nil);
      

  3.   

    这些方法都不行啊。一、对于Xleep(笑尽天下事) 的方法,我是这样写的:
    1、先声明一个回调函数:
    function EnumFunc(wnd:hWnd):Boolean
    var
      cn:array[0..1024] of Char;
    begin
      GetClassName(wnd,cn,1024);
      Showmessage(StrPas(cn));
      Result:=True;
    end;
    2、遍历所有窗体;
    myHandle:=FindWindow(nil,'任务管理');
    EnumChildWindows(myHandle,@EnumFunc,0);结果发现获得的cn都是空字符串;二、对于Paddle() 的方法
    获得的句柄是0;
      

  4.   

    移动开始按钮位置    
       movewindow(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil),x,y,25,25,true); 
     从上面的例子我们可以看到,你其实只要知道你的列表框控件的类名就可以了,如果你不清楚的话,你可以用VC的工具SPY++来查看一下类名是什么
      

  5.   

    声明回调函数应该是:
    function EnumFunc(wnd:hWnd; lparam: Longint):Boolean;stdcall;
    var
      cn:array[0..1024] of Char;
    begin
      GetClassName(wnd,cn,1024);
      Showmessage(StrPas(cn));
      Result:=True;
    end;