treeview-跨进程获取 Treeview的Checkbox

问题描述

跨进程获取 Treeview的Checkbox

我已经用读内存的方法实现遍历Treeview获取到文本并点击了,但是要获取到是否有勾选,一直失败,求教具体方法
我是填充结构体,发送?TVM_GETITEMA消息的

解决方案

如何获取别的进程的TreeView控件的内容
如何获取别的进程的TreeView控件的内容
获取其它进程中TreeView控件的内容

解决方案二:

TVM_GETITEMSTATE
用这个消息

https://msdn.microsoft.com/en-us/library/windows/desktop/bb773810(v=vs.85).aspx

解决方案三:

@caozhy
试了下还是一回效果都没有
Public Function GetItemCheckState(ByVal hTree As Long) As BOOL
Dim vProcessId As Long, vProcess As Long, vPointer As Long, vItemCount As Long, vTreeItem As Long
Dim i As Long, Result As Long, Bytes As Long, vItem As TVITEM, tmpItem As TVITEM

Call GetWindowThreadProcessId(hTree, vProcessId)
vProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, vProcessId)  '打开进程
vPointer = VirtualAllocEx(vProcess, 0&, 16, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)      '申请内存空间

vItemCount = TreeView_GetCount(hTree)  '获取Treeview Item的总数量
vTreeItem = TreeView_GetRoot(hTree)     '获取第一个 Item 句柄
For i = 0 To vItemCount - 1
    With vItem   '填充结构
        .mask = TVIF_STATE
        .HItem = vTreeItem
        .State = vPointer
        .stateMask = TVIS_STATEIMAGEMASK
    End With

    Call WriteProcessMemory(vProcess, ByVal vPointer, vItem, LenB(vItem), 0&) '将填充好的结构写入内存

    Result = SendMessageW(hTree, TVM_GETITEMSTATE, True, ByVal vPointer)    '发送消息让目标进程将 消息内容写入申请好的内存空间

    Call ReadProcessMemory(vProcess, ByVal vPointer, vItem.State, 4, 0&)    '读取内存

    With vItem
        Debug.Print .State, (CBool(Integer_Rotate_Right(.State, 12) - 1))
    End With

    ' TreeView_EnsureVisible hTree, vTreeItem   '保证项目显示
    vTreeItem = TreeNodeGetNext(hTree, vTreeItem)  '获取下一个项目
Next
Call VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE)
Call CloseHandle(vProcess)

End Function

时间: 2024-09-10 07:17:52

treeview-跨进程获取 Treeview的Checkbox的相关文章

跪地求教C#如何跨进程获取当前激活的控件对象

问题描述 我想写个程序,自动操作窗体,用sendkey发送tab键定位到某按钮.但是发送enter之前想获取该按钮文本验证一下.用findwindow的话无法区分窗体中有同名的情况.请注意是操作另一个进程.比如打开一个"notepad.exe" 解决方案

js获取Treeview选中的节点(C#选中CheckBox项)_实用技巧

方法网上有很多,试了一下都有瑕疵.最后找了个看上去代码比较少,比较顺眼的,测试结果报错说有几个函数不存在,于是设置断点调试,各个属性查找有用的字段,终于找到. 现整理如下: 首先,要想在javascript中获取treeview中带checkbox的节点,需要设置treeview节点的某些属性,我是在后台代码中添加的. 复制代码 代码如下: TreeNode newNode = new TreeNode(); newNode.Text = "showText"; newNode.Val

一起谈.NET技术,关于Winform下,获取Treeview中CheckBox选中项的技巧

背景 今天,在做一个指纹管理平台的界面上,遇到了一些问题,因为公司的基础库中没有针对Winform平台的操作,所以在一个部门选择的场景中,关于如何获取部门TreeView中被选中的项目被难住了.所幸还有一个神器叫做搜索引擎,故谷歌一番,发现Asp.net下的这个问题很好解决,但是关于Winform平台下的类似问题,如凤毛麟角啊! 当然,今天我也是查了很久,终于发现了两篇不错的文章,帮助我解决了这个问题,不敢独享,结合自己对使用其方法的心得,特意记录下来,并通过一个小例子和大家一起分享. 问题是这

PB的treeview 控件怎么得到选中checkbox节点的值 急啊!求解答

问题描述 PB的treeview 控件怎么得到选中checkbox节点的值 急啊!求解答 解决方案 treeview 节点循环 得到 被选中的checkbox 值

js获取TreeView控件选中节点的Text和Value值的方法_javascript技巧

在实际项目中,遇到一个问题,首先弹出一个新窗口,新窗口中放了一个TreeView控件,TreeView控件的数据绑定在我的上一篇随笔(TreeView绑定XML数据源C#代码示例)中有讲到,现在要解决的是,如何单击TreeView中一个节点,返回Text和Value到父页面并关闭该新窗口. 首先,在后台代码中为TreeView添加属性onclick以支持TreeView的客户端事件,代码如下: 复制代码 代码如下: if (!IsPostBack) { TreeView1.Attributes.

Android 跨进程通Messenger(简单易懂)_Android

不需要AIDL也不需要复杂的ContentProvider,也不需要SharedPreferences或者共享存储文件! 只需要简单易懂的Messenger,它也称为信使,通过它可以在不同进程中传递message对象,在message中放入我们需要传递的数据你就可以实现跨进程通讯和传递数据.废话不多说,直接上代码. 首先是服务端: public class Ser extends Service{ @Override public IBinder onBind(Intent intent) {

android跨进程通信(IPC):使用AIDL

AIDL的作用 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码.如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数. AIDL IPC机制是面向接口的,像COM或Corba一样,但是更加轻量级.它是使用代理类在客户端和实现端传

winform checkbox c#-WinForm中 如何获取多个CheckBox的值,并将这些值传到SQL数据库。O(∩_∩)O谢谢

问题描述 WinForm中 如何获取多个CheckBox的值,并将这些值传到SQL数据库.O(∩_∩)O谢谢 PO主已经做出了的部分: 判断选中的CheckBox有哪些 foreach (Control ck in this.Controls) { if (ck is CheckBox) { if ((ck as CheckBox).Checked)//获取到所有选中的控件 { } } } 现在的问题是如何将这些被选中的部分的CheckBox的值获取出来,然后将它们传到SQL server数据库

python基于mysql实现的简单队列以及跨进程锁实例详解_python

通常在我们进行多进程应用开发的过程中,不可避免的会遇到多个进程访问同一个资源(临界资源)的状况,这时候必须通过加一个全局性的锁,来实现资源的同步访问(即:同一时间里只能有一个进程访问资源). 举个例子如下: 假设我们用mysql来实现一个任务队列,实现的过程如下: 1. 在Mysql中创建Job表,用于储存队列任务,如下: create table jobs( id auto_increment not null primary key, message text not null, job_s