句柄没对
Result:=SendMessage(Listbox1.Handle,LB_GetCount,0,0);

解决方案 »

  1.   

    不会呀,ListBox是别人的程序的
    Handle我用SPY++得到你可向金山词霸Send一下,看得到的结果是不是正确的
      

  2.   

    用SPY++得到Handle是动态的金山词霸开第二次时就不同了。。
    你不能这样取句柄
    你应该:枚举窗口,取得窗口的名称,判断名称是不是所需要的。
     如果是,则留下其句柄。之后,再枚举其里面的listbox,再判断,才
    可得到正确的listbox的句柄。
      

  3.   

    //注册一个系统热键Win+A ,procedure TForm1.FormCreate(Sender: TObject);
    begin
      RegisterHotKey(Handle, 1001, MOD_Win, 65);
    end;//unregister
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      UnRegisterHotKey(Handle, 1001);
    end;{消息重载 WM_HOTKEY, 当按下Win+A热键后,来得到当前窗体中Listbox的Count}
    procedure TForm1.WMHotKey(var Msg: TMessage);  
    var
      ActiveHandle: THandle;  //当前活动窗体ThreadID
      FocusHandle: THandle;  //焦点控件
      CurHandle: THandle;    //本程序ThreadID
      Count: Integer;
    begin
      if Msg.WParam = 1001 then  //
      begin
        CurHandle := GetCurrentThreadID; //Self Thread ID
        //得到当前活动窗体的ThreadID
        ActiveHandle := GetWindowThreadProcessID(GetForeGroundWindow, nil);  
        AttachThreadInput(CurHandle, ActiveHandle, True);    //Link True
        FocusHandle := GetFocus;                              //Get Focus 
        Count := SendMessage(FocusHandle, LB_GetCount, 0, 0); //Send Message 
        ShowMessage(IntToStr(Count));
        AttachThreadInput(CurHandle, ActiveHandle, False);  // Link False
      end;
      inherited;
    end; 
      

  4.   

    不是句柄的问题,绝对不是我的疑问是为什么
    Result:=SendMessage(Listbox1.Handle,LB_GetCount,0,0);返回的结果都是13?大家可以拿金山词霸来试一下嘛,