SendMessage(Handle,LB_GetCount,0,0); 句柄没对Result:=SendMessage(Listbox1.Handle,LB_GetCount,0,0); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不会呀,ListBox是别人的程序的Handle我用SPY++得到你可向金山词霸Send一下,看得到的结果是不是正确的 用SPY++得到Handle是动态的金山词霸开第二次时就不同了。。你不能这样取句柄你应该:枚举窗口,取得窗口的名称,判断名称是不是所需要的。 如果是,则留下其句柄。之后,再枚举其里面的listbox,再判断,才可得到正确的listbox的句柄。 //注册一个系统热键Win+A ,procedure TForm1.FormCreate(Sender: TObject);begin RegisterHotKey(Handle, 1001, MOD_Win, 65);end;//unregisterprocedure 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; 不是句柄的问题,绝对不是我的疑问是为什么Result:=SendMessage(Listbox1.Handle,LB_GetCount,0,0);返回的结果都是13?大家可以拿金山词霸来试一下嘛, Fastreport 做成OCX控件 劲舞团引发delphi奇怪问题 如何实现类似于QQ右下角弹出的消息提示框? DELPHI写的程序已经编译好 提问,运行期加载函数 有关XML问题 捡分题!!! 如何在文本输入框中限制输入的字符为大写 很怪的现象-Excel问题,神仙救命!!! 请高手看看啊 窗口的融合,如何一运行就让它自动融合而不用去拖动后才融合呢? 初学Delphi,请高手开书单,或传授点心得,多谢
Handle我用SPY++得到你可向金山词霸Send一下,看得到的结果是不是正确的
你不能这样取句柄
你应该:枚举窗口,取得窗口的名称,判断名称是不是所需要的。
如果是,则留下其句柄。之后,再枚举其里面的listbox,再判断,才
可得到正确的listbox的句柄。
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;
Result:=SendMessage(Listbox1.Handle,LB_GetCount,0,0);返回的结果都是13?大家可以拿金山词霸来试一下嘛,