从别的程序的c listview 文件读取中动态读取数据

查看: 806|回复: 3
跨进程读取ListView控件数据的工具
阅读权限100
在线时间 小时
本帖已被收录到知识树中,索引项:
有的时候,我们需要从其他软件的控件中读取数据,很多软件都用ListView来装载数据,但不是所有的类listview控件都能顺利读取。所以,我写了一个读取测试的工具,供大家参考。
下图演示了从TCPEye软件中获取数据的示例:
1.png (219.43 KB, 下载次数: 0)
10:56 上传
使用方法:启动软件之后,在过滤框里面填入你要查找的软件窗口名或者类名(后者可以用spy++看),刷新之后,在右侧列表中找到listview控件,一般情况下,这个控件的名字都带有listview字样(例如syslistview,TListview...),如果控件读取成功,可以点击左侧按钮获取数据。
(133.83 KB, 下载次数: 78)
10:56 上传
点击文件名下载附件
,运行本软件需要.net 4.5框架。
欢迎交流!
阅读权限10
在线时间 小时
厉害了我的哥,水平很高
阅读权限70
在线时间 小时
之前帮公司做过一个类似功能的工具,核心代码应该和楼主的类似,多了一个类似Spy++的拖动鼠标指定目标Listiview的功能(给小白用,所以人性化一点)和一个复制按钮,便于将读取的数据粘贴到Excel中,借楼主主题发上来,供大家参考
09:42 上传
点击文件名下载附件
13.88 KB, 下载次数: 44
阅读权限100
在线时间 小时
之前帮公司做过一个类似功能的工具,核心代码应该和楼主的类似,多了一个类似Spy++的拖动鼠标指定目标Listi ...
不错,支持一下
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师Android零基础入门|ListView数据动态更新
经过前面几期的学习,关于ListView的一些基本用法大概学的差不多了,但是你可能发现了,所有ListView里面要填充的数据都是静态的,但在实际开发中,这些数据往往都是动态变化的,比如数据内容发生改变、增加几行、或者删除几行,这就涉及到ListView数据的更新问题。
接下来通过一个简单的示例程序来学习ListView的数据更新。
继续使用WidgetSample工程,在app/main/res/layout/目录下创建updatedata_layout.xml文件,在其中填充如下代码片段:
由于当ListView没有数据时,整个页面一片白,非常难看,所以加了一个文本框,当列表没有数据时提示用户。然后添加了4个按钮来动态更新列表数据。
接着在res/layout/目录下新建一个updatedata_item.xml的列表项布局文件,其代码如下:
然后创建数据实体类UpdateData.java,主要用于显示在列表数据的实体,这里比较简单,包括一个图标ID和文本内容,代码如下:
再创建MyUpdateAdapter类,继承BaseAdapter,再另外添加几个方法,便于操作ListView。
接下来为ListView提供Adapter,使用自定义的BaseAdapter决定ListView所要显示的列表项,然后为4个按钮设置监听监听器。新建UpdateDataActivity.java文件,加载上面新建的布局文件,具体代码如下:
修改启动的Activity,运行程序,可以看到下面左图所示界面效果。
然后点击添加按钮,在列表中随机添加一些列表项,可以看到列表数据动态更新,如上图右侧所示。
然后再点击更新按钮,可以随机更新列表数据,如下图左侧所示。
再点击删除按钮,可以看到将会从列表中删除随机列表项,如上图右侧所示。
点击清空按钮,可以将列表所有数据全部清空,显示启动时的页面。
从以上几个操作,可以看到动态更新时离不开每次调用notifyDataSetChanged()方法,这个方法的主要作用就是当适配器里面的内容发生改变时需要强制调用getView()方法来刷新每个Item的内容。
今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!
此文章版权为微信公众号分享达人秀(ShareExpert)——鑫鱻所有,若需转载请联系作者授权,特此声明!
往期总结分享:
第1节:Android的前世今生
第2节:Android 系统架构和应用组件那些事
第3节:带你一起来聊一聊Android开发环境
第4节:正确安装和配置JDK
第5节:善用ADT Bundle
第6节:配置优化SDK Manager
第7节:搞定Android模拟器
第8节:HelloWorld,第一趟旅程出发点
第9节:Android实战,不懂代码也可以开发
第10节:开发IDE迎来Android Studio
第11节:运行Android Studio工程
第12节:熟悉Android Studio界面
第13节:Android Studio配置优化
第14节:使用高速Genymotion
第15节:掌握Android Studio项目结构
第16节:Android用户界面开发概述
第17节:TextView属性和方法大全
第18节:EditText的属性和使用方法
第19节:Button使用详解
第20节:CheckBox和RadioButton使用大全
第21节:ToggleButton和Switch使用大全
第22节:ImageView的属性和方法大全
第23节:ImageButton和ZoomButton使用
第24节:自定义View简单使用
第25节:简单且最常用的LinearLayout
第26节:layout_gravity和gravity大不同
第27节:正确使用padding和margin
第28节:轻松掌握RelativeLayout相对布局
第29节:善用TableLayout表格布局
第30节:两分钟掌握FrameLayout帧布局
第31节:少用的AbsoluteLayout绝对布局
第32节:新推出的GridLayout网格布局
第33节: Android事件处理概述
第34节:Android中基于监听的事件处理
第35节:Android中基于回调的事件处理
第36节:Android系统事件的处理
第37节:初识ListView
第38节:初识Adapter
第39节:ListActivity和自定义列表项
第40节:自定义ArrayAdapter
第41节:使用SimpleAdapter
第42节:自定义BaseAdapter
第43节:ListView优化和列表首尾使用
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点查看: 688|回复: 4
如何读取xls里的数据并且显示在listview里
阅读权限10
在线时间 小时
大家好,新人求助。我想读取一份xls里员工名单信息(左图)并且显示在listview里(右图),应该如何写
無題11.png (29.88 KB, 下载次数: 1)
10:43 上传
無題.png (15.4 KB, 下载次数: 0)
10:43 上传
阅读权限100
在线时间 小时
建议上传表格附件来说明问题。
阅读权限10
在线时间 小时
& & & & & & & &
建议上传表格附件来说明问题。
您说的表格附件是什么,不是我发的图片吗?
阅读权限100
在线时间 小时
表格附件就是工作簿文件压缩以后的文件,能在图片上编程吗?
阅读权限10
在线时间 小时
表格附件就是工作簿文件压缩以后的文件,能在图片上编程吗?
表格附件原来是这个意思,懂了。这个问题已经解决了,非常感谢您
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师请教大神,如何获取其他程序中listview的列名
来源:csdn
【我已经能够获取其他程序中listview的句柄,也能获取到listview里面的文本内容,也能取到列标题的句柄,但是无法获取到列标题的内容,请问有什么方法可以取到吗?
listview标题栏的的类是SysHeader32
function GetListViewText(mHandle: TH mStrings: TStrings): B
vColumnCount: I
vItemCount: I
vBuffer: array[0..255] of C
vProcessId: DWORD;
vProcess: TH
vPointer: P
vNumberOfBytesRead: C
vItem: TLVI
Result := F
if not Assigned(mStrings) then E
vColumnCount := ListViewColumnCount(mHandle);
if vColumnCount <= 0 then E
vItemCount := ListView_GetItemCount(mHandle);
GetWindowThreadProcessId(mHandle, @vProcessId);
vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or
PROCESS_VM_WRITE, False, vProcessId);
vPointer := VirtualAllocEx(vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT,
PAGE_READWRITE);
mStrings.BeginU
mStrings.C
for I := 0 to vItemCount - 1 do begin
for J := 0 to vColumnCount - 1 do begin
with vItem do begin
mask := LVIF_TEXT;
iItem := I;
iSubItem := J;
cchTextMax := SizeOf(vBuffer);
pszText := Pointer(Cardinal(vPointer) + SizeOf(TLVItem));
WriteProcessMemory(vProcess, vPointer, @vItem,
SizeOf(TLVItem), vNumberOfBytesRead);
SendMessage(mHandle, LVM_GETITEM, I, lparam(vPointer));
ReadProcessMemory(vProcess, Pointer(Cardinal(vPointer) + SizeOf(TLVItem)),
@vBuffer[0], SizeOf(vBuffer), vNumberOfBytesRead);
S := S + ',' + vB
Delete(S, 1, 1);
mStrings.Add(S);
VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
CloseHandle(vProcess);
mStrings.EndU
Result := T
这是获取listview内容的代码,我想应该修改里面的什么就可以获取到标题,请大神赐教】
longyuance:
解决了,我自己摸索出来了,获取标题栏的代码如下:有需要借鉴了可以看看
function GetListViewHDText(mHandle: TH mStrings: TStrings): B
hColumnCount: I
hBuffer: array[0..255] of C
hProcessId: DWORD;
hProcess: TH
hPointer: P
hNumberOfBytesRead: C
hItem: THDI
Result := F
if not Assigned(mStrings) then E
hColumnCount := ListViewColumnCount(mHandle);
// if vColumnCount &= 0 then E
// vItemCount := ListView_GetItemCount(mHandle);
mHandle:=ListView_GetHeader(mhandle);
GetWindowThreadProcessId(mHandle, @hProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, hProcessId);
hPointer := VirtualAllocEx(hProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);
mStrings.BeginU
mStrings.C
for J := 0 to hColumnCount - 1 do begin
with hItem do begin
mask := HDI_TEXT;
iSubItem := J;
cchTextMax:=SizeOf(hBuffer);
pszText:=Pointer(Cardinal(hPointer) + SizeOf(THDItem));
WriteProcessMemory(hProcess, hPointer, @hItem,SizeOf(THDItem), hNumberOfBytesRead);
SendMessage(mHandle, HDM_GETITEM, j, lparam(hPointer));
ReadProcessMemory(hProcess, Pointer(Cardinal(hPointer) + SizeOf(THDItem)),@hBuffer[0], SizeOf(hBuffer), hNumberOfBytesRead);
S := S + ',' + hB
Delete(S, 1, 1);
mStrings.Add(S);
VirtualFreeEx(hProcess, hPointer, 0, MEM_RELEASE);
CloseHandle(hProcess);
mStrings.EndU
Result := T
{ GetListViewText }
恭喜楼主成功解决问题!
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动}

我要回帖

更多关于 c listview 文件读取 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信