
DWORD dwProcessId;
HWND hDeskTop;
hDeskTop = ::FindWindow( "progman", NULL );
hDeskTop = ::FindWindowEx( hDeskTop, 0, "shelldll_defview", NULL );
hDeskTop = ::FindWindowEx( hDeskTop, 0, "syslistview32", NULL ); //获取桌面窗口句柄;
GetWindowThreadProcessId(hDeskTop, &dwProcessId);//通过桌面窗口句柄获取此窗口所在进程的PID,其实就是explorer进程
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);//打开指定PID进程,取得进程句柄
LPVOID lpvPt = VirtualAllocEx(hProcess,NULL,sizeof(POINT),MEM_COMMIT,PAGE_READWRITE);//在指定进程里面申请一个POINI结构大小的空间
POINT pt;
ListView_GetItemPosition(hDeskTop,1,lpvPt);//获取第一个图标的坐标,存入lpvPt
ReadProcessMemory(hProcess,lpvPt,&pt,sizeof(POINT),NULL);
//lpvPt不是本进程里面的,不能使用,所以就要
利用ReadProcessMemory从指定进程给读出来
VirtualFreeEx(hProcess, lpvPt, 0, MEM_RELEASE);
释放申请的空间
CloseHandle(hProcess);//关闭句柄
最后得出的pt就是你要的哪个坐标,这个是求第一个图标的坐标
ListView_GetItemPosition(hDeskTop,1,lpvPt);
想改求其他的,把1换成你要的哪个就可以了
我还有个获取桌面所有图标名称的程序,要的话把邮箱留下<原理和实现过程全部有解释>
你只能通过添加一个OnScrollListener 的监听,来获listview scroll 到的位置,其中 这个监听下有两个方法,onScroll 和 onScrollStateChanged 通过这两个方法,你就可以获知,listview 被滑动到哪一行。具体方法内容可以看API。 值得注意的是,这个是个listener ,也就是说,在你listview 没有被滑动的时候,是不会回调这两个方法的。
另外,楼上说的getScrollX 和getScrollY 是继承于View 对象的。代表的只是整个listview控件被偏移的大小而已。
第四列。Android是一个以Linux为基础的半开源 *** 作系统,主要用于移动设备,由Google和开放手持设备联盟开发与领导。Android系统最初由安迪·鲁宾制作,最初主要支持手机。2005年8月17日被Google收购。给listview添加值的时候应该是有个存放数据的list,然后listget(position)就可以获取点击的第四列了。2007年11月5日,Google与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟来共同研发改良Android系统并生产搭载Android的智慧型手机,并逐渐拓展到平板电脑及其他领域上。随后,Google以Apache免费开源许可证的授权方式,发布了Android的源代码。
以上就是关于Windows编程中如何获取Windows桌面快捷方式的坐标和大小全部的内容,包括:Windows编程中如何获取Windows桌面快捷方式的坐标和大小、android 中如何获取listview中scroll的位置、androidlistview获取点击的第几列等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)