国产探花免费观看_亚洲丰满少妇自慰呻吟_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函數里寫上我最開始寫的那段代碼就可以了.
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 兰州市| 银川市| 玛纳斯县| 玉田县| 南丰县| 平潭县| 屯昌县| 垦利县| 宁陕县| 枣强县| 南陵县| 仁怀市| 丰都县| 祁连县| 湄潭县| 安陆市| 望城县| 莎车县| 丁青县| 巴林左旗| 巴林右旗| 得荣县| 治县。| 福州市| 万全县| 朝阳县| 镇沅| 泸州市| 昔阳县| 西峡县| 德保县| 沛县| 莱芜市| 西畴县| 景洪市| 五原县| 长顺县| 灵石县| 平顺县| 海宁市| 大渡口区|