社区
Delphi
帖子详情
如何取得上一个获得焦点控件的句柄?
lliihhaaoo
2001-09-14 11:02:32
比如说我在一个应用程序里点击了其中一个Memo控件,然后又点击了自己程序里的一个btn,这时我想在这个btn的onclick事件里获得那个memo控件的句柄或相关信息,咋办?
...全文
479
21
打赏
收藏
如何取得上一个获得焦点控件的句柄?
比如说我在一个应用程序里点击了其中一个Memo控件,然后又点击了自己程序里的一个btn,这时我想在这个btn的onclick事件里获得那个memo控件的句柄或相关信息,咋办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dedema
2001-10-13
打赏
举报
回复
用findwindowex凼数.
baifeng
2001-10-13
打赏
举报
回复
var
hd:thandle;
buf:array[1..50] of char;
begin
hd:=findwindow(nil,'别的应用程序标题')
hd:=findwindowex(hd,0,'edit',nil); //EDIT的句柄 用SPY++查看类名及,,,
end;
lliihhaaoo
2001-09-28
打赏
举报
回复
up
lliihhaaoo
2001-09-27
打赏
举报
回复
up
lliihhaaoo
2001-09-19
打赏
举报
回复
你怎么知道何时所有控件失去焦点(不用Hook)?
telstar
2001-09-18
打赏
举报
回复
不用那么麻烦,定义一个指针变量,当所有控件失去焦点时,让该指针指向他自己不就得了?
lliihhaaoo
2001-09-18
打赏
举报
回复
我想在Screen.OnActiveControlChange里获得,但是他好象只管自己程序里的事,顾不得全局啊
lliihhaaoo
2001-09-15
打赏
举报
回复
将FocusHandle保存?拦截这个消息是吗?似乎可行,试试!
zxb2001
2001-09-15
打赏
举报
回复
gz
dengzhen
2001-09-15
打赏
举报
回复
如果不用hotkey,也可以用Hook来实现。
lliihhaaoo
2001-09-14
打赏
举报
回复
都不是啦!假如我在IE的地址栏点了一下,然后又跑大老远到我自己的程序了点了一下,这时怎样获得IE地址栏的Handle?
liaokuo
2001-09-14
打赏
举报
回复
在构件的mousemove事件里记录
看看哪个时间更晚
copy_paste
2001-09-14
打赏
举报
回复
不行,我不知其它方法了。
铛铛爸爸
2001-09-14
打赏
举报
回复
gz
copy_paste
2001-09-14
打赏
举报
回复
你可以将FocusHandle保存,然后按Button时,拿保存的Handle来用就是了。
lliihhaaoo
2001-09-14
打赏
举报
回复
to copy_paste(木石三):
我不是用hotkey啊,我就是想在焦点已经变化的情况下得到上一个焦点。
wisonye
2001-09-14
打赏
举报
回复
要取一个获得焦点control的handle的方法如下:
(1)用GetCursorPos()涵数取得当前mouse所在的屏幕坐标
(2)用WindowFromPoint()涵数(参数是上面得到的坐标值)来返回这个window的Handle:)
copy_paste
2001-09-14
打赏
举报
回复
var
Buffer: PChar;
...
begin
...
SendMessage(FocusHandle, WM_GetText, 255, Integer(Buffer));
Memo1.Lines.Add(Format('焦点控件的Handle: %d, Text:%s', [FocusHandle, Buffer]));
...
end;
copy_paste
2001-09-14
打赏
举报
回复
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Handle, 1001, MOD_Win, 65); //注册全局热键"Win + A"
end;
proceudre TForm.OnClose;
begin
UnRegisterHotKey(Handle, 1001);
end;
{消息重载 WM_HOTKEY}
procedure TForm1.WMHotKey(var Msg: TMessage);
var
ActiveHandle: THandle; //当前活动窗体ThreadID
FocusHandle: THandle; //焦点控件
CurHandle: THandle; //本程序ThreadID
begin
if Msg.WParam = 1001 then //
begin
CurHandle := GetCurrentThreadID;
ActiveHandle := GetWindowThreadProcessID(GetForeGroundWindow, nil);
AttachThreadInput(CurHandle, ActiveHandle, True);
FocusHandle := GetFocus;
//SendMessage(FocusHandle, WM_GetText, 0, 0); 可以用SendMessage得到焦点控件的Text,怎么用忘了,看一个TEdit那样方法。
Memo1.Lines.Add(Format('焦点控件的Handle: %d', [FocusHandle]);
AttachThreadInput(CurHandle, ActiveHandle, False);
end;
inherited;
end;
程序运行在后台,然后mouse点中一个TMemo, TEdit之类的东东,然后按Win + A,那Handle就在Memo1中了
lliihhaaoo
2001-09-14
打赏
举报
回复
就没有相关的API?例如GetLastFocusedCtrl :(
加载更多回复(1)
获取第三方程序当前
焦点
控件
窗体的方法
c++获取第三方程序当前
焦点
控件
窗体的方法
易语言取窗口
焦点
控件
易语言取窗口
焦点
控件
源码,取窗口
焦点
控件
,取输入
焦点
窗口
句柄
,取消绘画,绘画,GetFocus,GetForegroundWindow,GetWindowThreadProcessId,GetCurrentThreadId,AttachThreadInput
动态捕获Windows窗口
句柄
工具
动态捕获Windows窗口
句柄
工具。 Inspect 支持无
焦点
窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口
句柄
工具。 Inspect 支持无
焦点
窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口
句柄
工具。 Inspect 支持无
焦点
窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口
句柄
工具。 Inspect 支持无
焦点
窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口
句柄
工具。 Inspect 支持无
焦点
窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口
句柄
工具。 Inspect 支持无
焦点
窗口捕获,可动态实时监听当前系统打开
向pb数据窗口
控件
中的
焦点
编辑框赋值
sendtext.dll说明 该dll中含有两个函数 sendtext 用于向pb数据窗口
控件
中的
焦点
编辑框赋值 pb_xor 用于异或运算 在pb下函数的声明 function int pb_xor(int i_a,int i_b) library "sendtext.dll" 由于pb不支持异或运算,所以编写这个函数来扩展pb的功能,改函数可以用来进行数据加密。 function int sendtext(long dw_handle,string str) library "sendtext.dll" alias for 'sendtext;ansi' sendtext函数给数据窗口
焦点
文本框
控件
赋值时参数dw_handle是数据窗口的窗口
句柄
,而不是
焦点
文本框
控件
的
句柄
千万不要弄错。
取
焦点
窗口
句柄
-易语言
取
焦点
窗口
句柄
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章