获取其他进程中ListBox和ComboBox的内容

说明:Window2000+Delphi6调试通过

//*)

function GetListBoxText(mHandle: THandle; mStrings: TStrings): Boolean;
var
vItemCount: Integer;
I: Integer;
S: string;
begin
Result := False;
if not Assigned(mStrings) then Exit;
mStrings.BeginUpdate;
try
mStrings.Clear;
vItemCount := SendMessage(mHandle, LB_GETCOUNT, 0, 0);
for I := 0 to vItemCount - 1 do begin
SetLength(S, SendMessage(mHandle, LB_GETTEXTLEN, I, 0));
SendMessage(mHandle, LB_GETTEXT, I, Integer(@S[1]));
mStrings.Add(S);
end;
SetLength(S, 0);
finally
mStrings.EndUpdate;
end;
Result := True;
end; { GetListBoxText }
function GetComboBoxText(mHandle: THandle; mStrings: TStrings): Boolean;
var
vItemCount: Integer;
I: Integer;
S: string;
begin
Result := False;
if not Assigned(mStrings) then Exit;
mStrings.BeginUpdate;
try
mStrings.Clear;
vItemCount := SendMessage(mHandle, CB_GETCOUNT, 0, 0);
for I := 0 to vItemCount - 1 do begin
SetLength(S, SendMessage(mHandle, CB_GETLBTEXTLEN, I, 0));
SendMessage(mHandle, CB_GETLBTEXT, I, Integer(@S[1]));
mStrings.Add(S);
end;
SetLength(S, 0);
finally
mStrings.EndUpdate;
end;
Result := True;
end; { GetComboBoxText }
//Example
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Handle, 1, MOD_WIN, VK_F2);
RegisterHotKey(Handle, 2, MOD_WIN, VK_F3);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Handle, 1);
UnRegisterHotKey(Handle, 2);
end;
procedure TForm1.WMHOTKEY(var Msg: TWMHOTKEY);
begin
case Msg.HotKey of
1:

GetListBoxText(
WindowFromPoint(Point(Mouse.CursorPos.X, Mouse.CursorPos.Y)),
MemoText.Lines);
2:

GetComboBoxText(
WindowFromPoint(Point(Mouse.CursorPos.X, Mouse.CursorPos.Y)),
MemoText.Lines);
end;
end;

时间: 2024-06-15 17:58:41

获取其他进程中ListBox和ComboBox的内容的相关文章

获取看见的内容-c#的form程序如何获取文本框中所能看到的内容

问题描述 c#的form程序如何获取文本框中所能看到的内容 c#的form程序如何获取文本框中所能看到的内容,只是看到的内容,不是文本框所有的内容?

如何获取其它进程中窗口的窗口过程

开发环境: Windows XP + VC6+Platform SDK 或者 VS.NET 2003+ 测试环境: Windows XP 曾经以为获取一个窗口的窗口过程很简单,不就是GetWindowLong一下吗,看spyxx获取的多么顺利.后来才发现原来不是这么简单.获取本进程内窗口的窗口过程确实很简单,直接调用GetWindowLong(hWnd,GWL_WNDPROC)就可以了(注意,根据窗口是否是Unicode的,你要判断是调用GetWindowLongA,还是GetWindowLon

如何遍历当前进程中的AppDomain

.Net Framework居然没有提供托管的接口来获取当前进程中的其它AppDomain!所以,我们只有借助承载接口(Hosting Interfaces)来完成这事了. 在MSCOREE.DLL中,.Net 1.0提供了一个ICorRuntimeHost接口,该接口中有EnumDomains和NextDomain方法,而幸运的是:MSCOREE.DLL中居然直接提供了一个Public的实现:CorRuntimeHostClass.所以,我们只需要新建一个CorRuntimeHostClass

如何获取、截取、修改指定进程中网络传送的MAC,IP等信息呢?

问题描述 如何获取.截取.修改指定进程中网络传送的MAC,IP等信息呢?用什么API?函数?方法? 解决方案 解决方案二:你这个要求不是arp攻击吗?攻击代码没有.检测的工具到是有http://www.lob.cn/jq/skill/578.shtml解决方案三:想一夜暴富的小年轻,请到蓝翔技校计算机报名啊.他们据说都能检测到美国白宫的各种机器的MAC呢.解决方案四:我们只能为了从事"行业软件开发"的正规程序员的交流做努力.如果存在一种病毒思维,那么绝不会把他那到正规论坛讨论的,这只能

C#如何获取进程中的'应用'?

问题描述 如图,如果用Process.GetProcesses()会返回所有进程,而我只想要红框内的应用进程.如何在Process.GetProcesses()返回的进程中筛出我想要的?或者用其他的方法?环境:Win10,VS2013C# 解决方案 解决方案二:直接取是:Process.GetProcessesByName("进程名");你要的范围是:string[]pname={"进程名1","进程名2"};Process.GetProcess

如何获取某个进程的主窗口以及创建进程的程序名

在编写工具程序以及系统管理程序的时候.常常需要获取某个进程的主窗口以及创建此进程的程序名.获取主窗口的目的是向窗口发送各种消息.获取启动进程的程序名可以控制对进程的操作.但是有些进程往往有多个主窗口.你要的是哪一个主窗口呢?如果你用过Outlook程序,你就会发现它有多个主窗口,一个窗口列出收件箱和其它文件夹.如果你打开e-mail,便会有另外一个窗口显示信息.它们都是没有父窗口(或者说宿主窗口)的主窗口.运行一下Spy程序,你甚至会发现它们的窗口类名都相同:rctrl_renwnd32.资源管

combo box-QT 怎么获得tabelwidget中嵌入的combobox被点击时的行号?

问题描述 QT 怎么获得tabelwidget中嵌入的combobox被点击时的行号? 如题while(i{ QComboBox *combobox=new QCombobox(); combobox->addItem(""1""); combobox->addItem(""2""); ui->tabelwidget->setItem(ij++new QTabelWidgetItem(QString I

WIN32程序获取父进程ID的方法_C 语言

学过windows程序设计的人都知道,windows中的进程是可以有父子关系的,拥有父子关系的进程,一旦父进程结束,子进程有会随之退出.但是如果进程之间没有父子关系,我们如何让子进程在父进程退出是也同时跟着退出呢?方法有很多,本文介绍其中的一种利用父进程ID的方案,实现的原理很简单:先获取父进程的ID,然后通过ID来获取父进程Handle,通过监视父进程的Handle来决定子进程是否退出.所以,这里的关键就是如何获取父进程的ID. 为了获取父进程ID,这里需要用到一个微软未公开的API: NTS

请教:在64位操作系统中64位进程如何枚举32位进程中加载的模块?

问题描述 如题:操作系统为Windows7x64,主进程为x64,目标进程为x86:由于Win64系统会模拟x86的环境来运行x86的程序,使用的组件为Wow64xxx.dll等:所以在使用如下代码进行枚举得到的只有Wow64xxx.dll等,得不到真正加载的组件:代码:Processproc=Process.GetProcessById(targetProcessId);for(inti=0;i<proc.Modules.Count;i++){//此处在x64环境中无法获得x86进程中的组件C