国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C#實現查看文本框(如*號密碼框)

2024-07-21 02:19:31
字體:
來源:轉載
供稿:網友
  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  • 今天閑著無聊,試著用c#寫查看密碼框的程序(不僅限于密碼框,應該是任何有文本的控件都可以)
    代碼見下面.
    用c++實現起來超簡單的這么個東東..用c#復雜得很,我又不想用unsafe,我總覺得用unsafe的話,干嘛不干脆用c++算了.

    int length=300;
    intptr thandle=apis.getlocalwindow();//取得當前鼠標所在位置的控件句柄
    int address=apis.virtualallocex(process.getcurrentprocess().handle,0,length,0x1000,0x04);//在本進程內分配length大小的內存
    apis.sendmessage(thandle,0x000d,new intptr(255),new intptr(address));//發送消息到目標控件,0x000d就是wm_gettext,255的意思是保存返回的值,new intptr(address)是指保存到address指定的地址
    byte[] buf=new byte[length];
    apis.readprocessmemory(process.getcurrentprocess().handle,address,buf,length,0);//讀取剛才保存的內容
    messagebox.show(encoding.default.getstring(buf));//顯示出來測試一下.

    其中apis開頭的,是我自己寫的api類庫,相關聲明如下:
    [dllimport("user32.dll")]
    public static extern intptr windowfrompoint(
    point lppoint
    );

    [dllimport("user32.dll")]
    public static extern int getcursorpos(
    out point lppoint
    );
    public static intptr getlocalwindow()//這個只是把上兩個結合了一下
    {
    point point;
    getcursorpos(out point);
    return windowfrompoint(point);
    }

    //不加ex的話.上面就不用第一個handle參數了
    [ dllimport( "kernel32.dll" )]
    public static extern system.int32 virtualallocex(
    system.intptr hprocess,
    system.int32 lpaddress,
    system.int32 dwsize,
    system.int16 flallocationtype,
    system.int16 flprotect
    );

    [dllimport("user32.dll")]
    public static extern intptr sendmessage(
    intptr hwnd,
    int msg,
    intptr wparam,
    intptr lparam
    );

    [ dllimport( "kernel32.dll" )]
    public static extern int readprocessmemory(
    system.intptr hprocess,
    system.int32 lpbaseaddress,
    byte[] lpbuffer,
    long nsize,
    long lpnumberofbyteswritten
    );


    *******************************************************************
    因為一般要查看的是外部程序,配合快捷鍵不失不一種好方法.
    c#的實現如下:
    在初始化窗口的代碼里加上
    keymodifiers modifiers=keymodifiers.windows;//定義為win+快捷鍵,也可定義為別的.
    registerhotkey(handle, 1001,modifiers,keys.v);//給win+v分配id為1001

    override一下wndproc
    protected override void wndproc( ref message m )
    {
    const int wm_hotkey = 0x0312;
    switch(m.msg)
    {
    case wm_hotkey:
    switch (m.wparam.toint32())
    {
    case 1001:
    onhotkeyv();
    break;
    default:break;
    }
    break;
    }
    base.wndproc(ref m );
    }
    在onhotkeyv函數里寫上我最開始寫的那段代碼就可以了.
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 日土县| 准格尔旗| 葫芦岛市| 竹山县| 铁岭县| 三门县| 中牟县| 江油市| 远安县| 内江市| 大冶市| 章丘市| 五莲县| 上犹县| 康乐县| 清流县| 夹江县| 府谷县| 东方市| 渝中区| 来凤县| 东平县| 衡山县| 安吉县| 沾化县| 许昌县| 沈阳市| 什邡市| 南宁市| 于都县| 佳木斯市| 宣恩县| 金阳县| 玉门市| 来凤县| 乌鲁木齐县| 衡东县| 屏南县| 贵港市| 宁蒗| 麻江县|