如何选中其他程序ListView控件中的某个Item

ABCDKLPCVBU

ABCDKLPCVBU

2016-01-29 12:08

如何选中其他程序ListView控件中的某个Item,如何选中其他程序ListView控件中的某个Item

如何选中其他程序ListView控件中的某个Item

作者:天津 赵春生

下载源代码

一:程序说明:

题目是一位网友在我留言板上的留言,不知道大家看没看过我曾经写过的《如何向其他程序的ListView控件发送LVM_GETITEMTEXT消息》一文?在那篇拙文中,我的目的是得到某一Item的TEXT。于是我将LVITEM结构插入到了目标进程中,才使得目标进程正确响应LVM_GETITEMTEXT消息。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

要得到某一Item的TEXT,需要发送LVM_GETITEMTEXT消息,而要选中某个Item则要发送LVM_SETITEMSTATE消息:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)
LVM_GETITEMTEXTwParam = (WPARAM) (int) iItem;lParam = (LPARAM) (LV_ITEM FAR *) pitem;LVM_SETITEMSTATEwParam = (WPARAM) (int) i;lParam = (LPARAM) (LV_ITEM FAR *) pitem;
看到了吗?两个消息的参数一模一样!再来看看LV_ITEM结构的设置:只需将state和stateMask设置成LVIS_SELECTED,并指定iItem即可。直接修改上篇拙文中的代码就能轻松搞定本篇要解决的问题。

作为演示,下面的这段程序将选中TaskManager中第6个项目。

二:具体实践:

/* *Send LVM_SETITEMSTATE *版权所有 (C) 2005 天津 赵春生 *2005.08.04 *http://timw.yeah.net *http://timw.126.com *本程序适用于:Win2KP+SP4[Windows TaskManager(5.0.2195.6620)] * WinXP+SP1[Windows TaskManager] *代码在Win2000P+SP4 + VC6+SP6测试通过*/#include<windows.h>#include<commctrl.h>int APIENTRY WinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPSTR     lpCmdLine,                     int       nCmdShow) {HWND hwnd;int iItem=0;LVITEM lvitem, *plvitem;DWORD PID;HANDLE hProcess;hwnd=FindWindow("#32770","Windows 任务管理器");hwnd=FindWindowEx(hwnd,0,"#32770",0);hwnd=FindWindowEx(hwnd,0,"SysListView32",0);if (!hwnd)MessageBox(NULL,"[Windows 任务管理器] 尚未启动!","错误!",NULL);else{GetWindowThreadProcessId(hwnd, &PID);hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);if (!hProcess)MessageBox(NULL,"获取进程句柄操作失败!","错误!",NULL);else{plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM),MEM_COMMIT, PAGE_READWRITE);if (!plvitem)MessageBox(NULL,"无法分配内存!","错误!",NULL);else{MessageBox(NULL,"本演示程序将选中TaskManager中的第6个项目。","提示",NULL);iItem=5;//5在这里是第六个(从零开始)lvitem.state=LVIS_SELECTED;lvitem.stateMask=LVIS_SELECTED;WriteProcessMemory(hProcess, plvitem, &lvitem, sizeof(LVITEM), NULL);SendMessage(hwnd, LVM_SETITEMSTATE, (WPARAM)iItem, (LPARAM)plvitem);}}}//释放内存CloseHandle(hwnd);CloseHandle(hProcess);VirtualFreeEx(hProcess, plvitem, 0, MEM_RELEASE);return 0;}
三:以上代码在Win2000P+SP4 + VC6+SP6测试通过

源码也可从我的个人主页下载。
http://timw.yeah.net
http://timw.126.com

《如何向其他程序的ListView控件发送LVM_GETITEMTEXT消息》:
可通过搜索引擎获得。

展开更多 50%)
分享

猜你喜欢

如何选中其他程序ListView控件中的某个Item

C语言教程 C语言函数
如何选中其他程序ListView控件中的某个Item

如何更改其它程序 ListView 控件中某个 Item 的内容

C语言教程 C语言函数
如何更改其它程序 ListView 控件中某个 Item 的内容

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何快速选中某个工作表

电脑入门
如何快速选中某个工作表

listview 选中高亮显示实现方法

编程语言 网络编程
listview 选中高亮显示实现方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何设置ListView控件的完全行(Full Row)选项

C语言教程 C语言函数
如何设置ListView控件的完全行(Full Row)选项

C#中加强ListView控件的功能

编程语言 网络编程
C#中加强ListView控件的功能

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

HTML组件之:编写日历(1)

HTML组件之:编写日历(1)

CSS的十八般技巧(2)

CSS的十八般技巧(2)
下拉加载更多内容 ↓