c#-C#获取句柄内容的相关问题

问题描述

C#获取句柄内容的相关问题

通过spy++已经得到 TStringGrid 的句柄 用C# 如何能得到 TStringGrid 中的数据 谁有实例

解决方案

TStringGrid 不行,因为它内部没有句柄,是画上去的。除非用ReadProcessMemory直接读内存。但是你需要先调试得到它数据所在位置的偏移地址。

解决方案二:

参考一下这段代码

 以前做个这个,不过是C++的,使用了hook方法。
你可以参考
下载完了,运行Exec这个程序,是TStringGrid的示例,运行EnumControls.exe,
点击【列举窗体中的控件】按钮,就获取了TStringGrid的句柄,
点击【复制SG中的数据】就可以把Exec这个程序中TStringGrid的数据复制到EnumControls.exe了。
核心代码是这个:
HWND DLLHWND;
    void __stdcall (*InstallHook)(HWND, HWND);
    void __stdcall (*UninstallHook)();
    char * __stdcall (*GetHookedCell)();

    DLLHWND = LoadLibrary("HookSG.dll");
    InstallHook = (void (__stdcall *)(HWND, HWND))GetProcAddress(DLLHWND, "InstallHook");
    UninstallHook = (void (__stdcall *)())GetProcAddress(DLLHWND, "UninstallHook");
    GetHookedCell = (char * (__stdcall *)())GetProcAddress(DLLHWND, "GetHookedCell");

    //AnsiString StrHwnd = SG->Cells[2][SelectedRow];
    //if (StrHwnd == "") return;
    //HWND hWnd = (void *)(StrHwnd.ToInt());
    //HWND hParent = GetParent(hWnd);

    //HWND hParent = FindWindow("TForm1", "列举窗体中的控件");
    //HWND hParent = FindWindow("TForm1", "Form1");
    //HWND hParent = FindWindow("TFrmSGHooked", "StringGrid to be hooked");
    char cText[MAX_PATH] = {0};
    strcpy(cText, Edit1->Text.c_str());
    if (strcmp(cText, "") == 0) return;
    HWND hParent = FindWindow(NULL, cText);
    HWND hWnd = FindWindowEx(hParent, 0, "TStringGrid", NULL);
    if (!hWnd) return;
    InstallHook(Handle, hWnd);
    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
    PostMessage(hParent, WM_NULL, 0, 0);

    for (int i = 0; i < 20; i++)
    {
        Sleep(100);
        Application->ProcessMessages();
        if (MsgWnd != 0) break;
    }
    if (MsgWnd == 0) goto Exit;

    int iRow, iCol, iLen;
    iRow = SendMessage(MsgWnd, CM_QUERYROW, 0, 0);
    iCol = SendMessage(MsgWnd, CM_QUERYCOL, 0, 0);
    if (iRow <= 0 || iCol <= 0) goto Exit;
    SGSub->RowCount = iRow;
    SGSub->ColCount = iCol;
    for (int i = 0; i < iRow; i++)
    {
        for (int j = 0; j < iCol; j++)
        {
            iLen = SendMessage(MsgWnd, CM_HOOKCELL, j, i);
            if (iLen < 0) goto Exit;
            SGSub->Cells[j][i] = GetHookedCell();
        }
    }

  Exit:
  MsgWnd = 0;
  UninstallHook();
  SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
  FreeLibrary(DLLHWND);

解决方案三:

不是所有的控件都提供API接口支持外部存取数据。很大的可能是没有接口的内部数据,无法取得。

解决方案四:

可以参考这个,别人有做过一些尝试
http://bbs.csdn.net/topics/370135676

时间: 2024-08-04 02:20:23

c#-C#获取句柄内容的相关问题的相关文章

Ajax获取响应内容长度的方法_AJAX相关

本文实例讲述了Ajax获取响应内容长度的方法.分享给大家供大家参考.具体如下: var xhr = $.ajax({ type: "HEAD", url: "path/to/file.ext", success: function(msg){ alert(xhr.getResponseHeader('Content-Length') + ' bytes'); } }); 希望本文所述对大家的Ajax程序设计有所帮助. 以上是小编为您精心准备的的内容,在的博客.问答.

Delphi实现获取句柄并发送消息的方法_Delphi

本文以实例形式详细说明了Delphi获取句柄并发送消息的方法,具体用法说明如下: 查找另外一个窗口的句柄: handle := FindWindow(nil,PChar('窗口的标题'));//查到窗体句柄 查找子窗体: childHandle := FindWindowEx(handle,0,'子窗体类','子窗体标题'); 另外有个枚举子窗体的API, EnumChildWindows(主创体句柄,@回调函数,用户参数); 用这个函数需要自己写一个回调的函数,比如: function Enu

PHP获取音频文件的相关信息

  这篇文章主要介绍了PHP获取音频文件的相关信息的相关资料,非常的实用,有需要的小伙伴可以参考下. 项目需求:现在有一个音频文件上传的功能,在上传后PHP需要获取这个音频文件的相关信息,例如:时长等,由于这个文件是放在买的空间上的,没有像ffmpeg这样的扩展来处理,那么PHP能不能获取到这些信息? 下面是之前在项目中用到的一个用PHP进行音频文件头部信息的读取与写入操作的实现,主要针对 WMA 和 MP3 两种格式,供参考. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 1

JS编辑器获取选择内容的HTML多浏览器兼容性写法(支持Chorme、Firefox)

昨天突然兴起,准备完善秋色园后台的编辑器关于Chrome.FireFox下的选择内容的HTML兼容处理.   JS编辑器获取选择内容的HTML兼容性写法问题描述: 对于如何获取选择的文本(包括Html标签),通常网络上的答案是: var  deditor=document.getElementById('iframe名称').contentWindow; IE:deditor.pos.htmlText,获得html内容. 其它浏览器:deditor.window.getSelection().t

jQuery获取剪贴板内容的方法_jquery

本文实例讲述了jQuery获取剪贴板内容的方法.分享给大家供大家参考,具体如下: 这两天弄fckeditor粘贴功能,随着工作的深入和在网上查询资料,知道了在网页中一般是不允许访问"剪贴板"的,因为这样存在着很大的安全隐患,我自己也尝试着写了一个简单的demo 在IE和FF中剪贴板的访问是可控的,但是在Opera.Chrome.Safari浏览器中是不允许访问的,这样就产生了浏览器兼容的问题,怎么样才能让其他的浏览器兼容这个功能呢,在网上查找了一些资料--"使用flash去访

WordPress如何获取文章内容页特色图像地址

WordPress获取特色图像地址主要需要用到两个函数get_post_thumbnail_id和wp_get_attachment_image_src.下面是分别获取小.中.大.完整.指定图片规格的图片地址的方法. 获取特色图像:指定100x100 <?php $array_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), array(100,100)); echo $array_image_

浅谈草根站长获取原创内容的几个途径

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 随着百度算法的不断进步,百度对互联网上的内容判断是越来越细,也越来越精准,去年伪原创还是挺不错的,百度还会很好的收录的,但现在百度对原创内容的判断水平提高了一个层次,伪原创的不太好用了,但网站内容对网站权重的提高又占很大的比例,对于我们个人草根站长来说找原创内容就是一个令人头疼的问题,况且我们手里不止运营一个网站,每天如果要自己来写原创内容,

提交表单后 PHP获取提交内容的实现方法_php实例

问题:网页上提交表单之后,PHP为什么不能获取提交的内容?然而在老版本的PHP上运行却正常. 新版的PHP已经废弃了原来的表单内容处理方式,即不再把提交的表单的内容直接复制到一个同名变量中. 解决办法有四个: 1. 修改php.ini,查找 register_globals,将其值修改为 On.这样就可以像原来一样,例如,提交的表单中包括一个名为"username"的变量,那么在php中就可以直接使用$username来访问该变量.但是,除非你要使用一段旧的代码而考虑到兼容性问题,否则

JS实现获取剪贴板内容的方法_javascript技巧

本文实例讲述了JS实现获取剪贴板内容的方法.分享给大家供大家参考,具体如下: 这里介绍了JS获取剪贴板内容的代码: <Script Language="JavaScript"> var content = clipboardData.getData("Text"); if (content!=null) { document.write("<center><font size=5 color=red>WARNING, T