Delphi中如何获取外部程序焦点所在控件的句柄

Delphi中如何获取外部程序焦点所在控件的句柄,第1张

function GetFocusHandle: HWND;

var

h: HWND;

c: array[0102432] of Char;

idAttach: Cardinal;

begin

H := GetForegroundWindow;

idAttach := GetWindowThreadProcessId(h, nil);

if not AttachThreadInput(idAttach , GetCurrentThreadId(), True) then Exit;

Result := GetFocus;

AttachThreadInput(idAttach, GetCurrentThreadId(), false );

end;

在DELPHI定义回调函数应该将该函数/过程定义为类或数据类型如

TmyCallBack=function():boolean;stdcall;

定义回调函数

function myCallBack:boolean;

begin

//code

end;

在调用时使用如下:

procedure MyCallBackSmaple(MyCall:TmyCallBack);

begin

if assigned(MyCall) then//检查MyCall是否为空

MyCall;

end;

Raize控件包中的东东,你下载安装Raize后就有了,上下翻页的控件类似于outlook的左侧导航栏,控件名叫RzGroupBar,右边那个是一个Splitter,如图示

这个需要js或者swf的配合

或者是写BHO

--------------

随你怎么想 我用的js 记录点击信息 然后用swf做的点击报表

BHO需要安装,在本机上测试可以用,其他用户需要安装,所以不现实

webbrowser是一个activex控件,也就是说在webbrowser区域内是不属于vcl管辖的

只能是ax返回消息给vcl,这就是我说的js

点击节点的时候webbrowser会响应给vcl,但是如果在空白处或者非链接,按钮等元素是没有响应的,用js监听鼠标按下事件,然后回调给vcl

swf的绘图相对简单,加载页面之后,再根据点击点阵绘制点击热区,可以有效反映页面内的点击情况

ControlCount可以获得当前控件(可能是Form、Panel, GroupBox)下直接包含的可视化控件总数,通过Controls[i]可以依次访问第i个控件。通过Controls[i] is TButton可以判断控件是不是按钮。

与Controls对应的还有一个ComponentCount和Components。这个是当前窗口下所有控件,不管可见还是不可见,也不分直接包含还是通过Panel,GroupBox等间接包含的控件。

深入解析。

button := TButtonCreate(Self); //这里SelfComponents中就包含了button,

buttonParent := Self; //这里SelfControls就包含了button

对你这个问题,想要知道有多少个Button的代码如下:

var

I: Integer;

Count: Integer;

begin

Count := 0;

for I := 0 to ControlCount - 1 do

begin

if Controls[I] is TCustomButton then

Inc(Count);

end;

ShowMessage('所有从TCustomButton继承的控件且直接放在Form上的控件总数为:' + IntToStr(Count));

Count := 0;

for I := 0 to ComponentCount - 1 do

begin

if Components[I] is TCustomButton then

Inc(Count);

end;

ShowMessage('所有从TCustomButton继承的控件总数为:' + IntToStr(Count));

end;

(wb1Document  as IHtmlDocument2)bodyinnerHTML 获得html源码

然后对这个源码(也就是字符串)中的<img src="地址">提取出来就可以了,你可以用正则表达式 也可以直接用Pos函数这些,方法很多

或者用如下代码:

var

I:Integer;

begin

for I:=0 to Wb1OleObjectdocumentimageslength-1 do

lst1ItemsAdd(wb1OleObjectdocumentimagesitem(i)href);

end;

GetDriveType(路径) 判断一个磁盘驱动器的类型 返回一个整数

0 驱动器类型不确定

1 系统目录不存在

2 DRIVE_REMOVABLE 是可移动驱动器

3 DRIVE_FIXED 是固定驱动器

4 DRIVE_REMOTE 是网络驱动器

5 DRIVE_CDROM 是CD-ROM驱动器

6 DRIVE_RAMDISK 是虚拟驱动器

function getPath : integer;

var

i:integer;

begin

for i := 65 to 90 do

begin

if (GetDriveType(Pchar(chr(i)+':/')) = 2) or (GetDriveType(Pchar(chr(i)+':/')) = 3) then

Form1ListBox1itemsaddObject(chr(i)+':/',Pointer(i));

end;

end;

以上就是关于Delphi中如何获取外部程序焦点所在控件的句柄全部的内容,包括:Delphi中如何获取外部程序焦点所在控件的句柄、在Delphi 中如何得到一个函数的地址、请问在delphi中 这是什么控件 叫什么名称 在哪里可以找到等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9313977.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存