SendMessage(Handle,LB_GetCount,0,0);

milpas 2001-06-28 04:13:26
Result:Integer;

Result:=SendMessage(Handle,LB_GetCount,0,0);

Showmessage(IntToStr(Result));

为什么结果不对?
...全文
251 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
milpas 2001-07-04
  • 打赏
  • 举报
回复
不是句柄的问题,绝对不是

我的疑问是为什么
Result:=SendMessage(Listbox1.Handle,LB_GetCount,0,0);

返回的结果都是13?

大家可以拿金山词霸来试一下嘛,
copy_paste 2001-07-03
  • 打赏
  • 举报
回复
//注册一个系统热键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;
wen_zang 2001-07-03
  • 打赏
  • 举报
回复
用SPY++得到Handle是动态的。。。金山词霸开第二次时就不同了。。
你不能这样取句柄。。。
你应该:枚举窗口,取得窗口的名称,判断名称是不是所需要的。
如果是,则留下其句柄。之后,再枚举其里面的listbox,再判断,才
可得到正确的listbox的句柄。
milpas 2001-06-30
  • 打赏
  • 举报
回复
呵20分又没了,冤啊
xzm2000 2001-06-29
  • 打赏
  • 举报
回复
请问这个语句得到的是什么呀???
milpas 2001-06-29
  • 打赏
  • 举报
回复
高手请来看一下
milpas 2001-06-28
  • 打赏
  • 举报
回复
不会呀,ListBox是别人的程序的
Handle我用SPY++得到

你可向金山词霸Send一下,看得到的结果是不是正确的
wen_zang 2001-06-28
  • 打赏
  • 举报
回复
是的。。。。
XGZ 2001-06-28
  • 打赏
  • 举报
回复
句柄没对
Result:=SendMessage(Listbox1.Handle,LB_GetCount,0,0);


5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧