<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.Diagnostics;
    using System.Management;
    namespace sendkey
    {
    public class key
    {
    const uint PROCESS_ALL_ACCESS = 0x001F0FFF;
    const uint KEYEVENTF_EXTENDEDKEY = 0x1;
    const uint KEYEVENTF_KEYUP = 0x2;
    private readonly int MOUSEEVENTF_LEFTDOWN = 0x2;
    private readonly int MOUSEEVENTF_LEFTUP = 0x4;
    const uint KBC_KEY_CMD = 0x64;
    const uint KBC_KEY_DATA = 0x60;
    //得到窗體句柄的函數(shù),FindWindow函數(shù)用來(lái)返回符合指定的類名( ClassName )和窗口名( WindowTitle )的窗口句柄
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern IntPtr FindWindow(
    string lpClassName, // pointer to class name
    string lpWindowName // pointer to window name
    );
    [DllImport("user32.dll")]
    private static extern int GetWindowThreadProcessId(IntPtr id,int pid);

    [DllImport("kernel32.dll")]
    private static extern void CloseHandle
    (
    uint hObject //Handle to object
    );
    //讀取進(jìn)程內(nèi)存的函數(shù)
    [DllImport("kernel32.dll")]
    static extern bool ReadProcessMemory(uint hProcess, IntPtr lpBaseAddress,
    IntPtr lpBuffer, uint nSize, ref uint lpNumberOfBytesRead);
    //得到目標(biāo)進(jìn)程句柄的函數(shù)
    [DllImport("kernel32.dll")]
    public static extern uint OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId);
    //鼠標(biāo)事件聲明
    [DllImport("user32.dll")]
    static extern bool setcursorpos(int x, int y);
    [DllImport("user32.dll")]
    static extern void mouse_event(mouseeventflag flags, int dx, int dy, uint data, UIntPtr extrainfo);
    //鍵盤(pán)事件聲明
    [DllImport("user32.dll")]
    static extern byte MapVirtualKey(byte wCode, int wMap);
    [DllImport("user32.dll")]
    static extern short GetKeyState(int nVirtKey);
    [DllImport("user32.dll")]
    static extern void keybd_event( byte bVk, byte bScan,uint dwFlags,uint dwExtraInfo);
    //鍵盤(pán)事件聲明winio
    [DllImport("winio.dll")]
    public static extern bool InitializeWinIo();
    [DllImport("winio.dll")]
    public static extern bool GetPortVal(IntPtr wPortAddr, out int pdwPortVal, byte bSize);
    [DllImport("winio.dll")]
    public static extern bool SetPortVal(uint wPortAddr, IntPtr dwPortVal, byte bSize);
    [DllImport("winio.dll")]
    public static extern byte MapPhysToLin(byte pbPhysAddr, uint dwPhysSize, IntPtr PhysicalMemoryHandle);
    [DllImport("winio.dll")]
    public static extern bool UnmapPhysicalMemory(IntPtr PhysicalMemoryHandle, byte pbLinAddr);
    [DllImport("winio.dll")]
    public static extern bool GetPhysLong(IntPtr pbPhysAddr, byte pdwPhysVal);
    [DllImport("winio.dll")]
    public static extern bool SetPhysLong(IntPtr pbPhysAddr, byte dwPhysVal);
    [DllImport("winio.dll")]
    public static extern void ShutdownWinIo();

    /// <summary>
    /// 獲取進(jìn)程pid
    /// </summary>
    /// <param name="name"></param>
    /// <returns></returns>
    private int pid(String name)
    {
    try
    {
    ObjectQuery oQuery = new ObjectQuery("select * from Win32_Process where Name='" + name + "'");
    ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oQuery);
    ManagementObjectCollection oReturnCollection = oSearcher.Get();

    string pid = "";
    string cmdLine;
    StringBuilder sb = new StringBuilder();
    foreach (ManagementObject oReturn in oReturnCollection)
    {
    pid = oReturn.GetPropertyvalue("ProcessId").ToString();
    //cmdLine = (string)oReturn.GetPropertyvalue("CommandLine");

    //string pattern = "-ap \"(.*)\"";
    //Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
    // Match match = regex.Match(cmdLine);
    //string appPoolName = match.Groups[1].ToString();
    //sb.AppendFormat("W3WP.exe PID: {0} AppPoolId:{1}\r\n", pid, appPoolName);
    }
    return Convert.ToInt32(pid);
    }
    catch (Exception ss)
    { return 0; }

    }
    private int pid(IntPtr id)
    {
    int pid=0;
    pid=GetWindowThreadProcessId(id, pid);
    return 260;
    }
    /// <summary>
    /// 讀取內(nèi)存值
    /// </summary>
    /// <param name="name">進(jìn)程id</param>
    /// <param name="dizhi">讀取的內(nèi)存地址</param>
    /// <returns></returns>
    //public String getread(String QEC,String EC, IntPtr dizhi, uint size)
    //{
    // Byte bt = new Byte();
    // IntPtr id=FindWindow(QEC, EC);
    // uint hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, pid(id));
    // IntPtr fanhui = new IntPtr();
    // String gg = null;
    // if (hProcess == 0)
    // {
    // // gg = ReadProcessMemory(hProcess, dizhi, fanhui, size, 0);
    // // CloseHandle(hProcess);

    // }
    // return gg;
    //}
    public String getread(String jincheng, String EC, IntPtr dizhi, uint size)
    {
    byte[] vBuffer = new byte[4];
    IntPtr vBytesAddress = Marshal.UnsafeAddrOfPinnedArrayElement(vBuffer, 0); // 得到緩沖區(qū)的地址

    uint vNumberOfBytesRead = 0;
    Byte bt = new Byte();
    //IntPtr id = FindWindow(QEC, EC);
    uint hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, pid(jincheng));
    //pid(0);
    IntPtr fanhui = new IntPtr();
    String gg = null;
    //if (hProcess == 0)
    //{
    if (ReadProcessMemory(hProcess, dizhi, vBytesAddress, (uint)vBuffer.Length, ref hProcess))
    {
    CloseHandle(hProcess);
    }
    else
    {
    CloseHandle(hProcess);
    }

    // }
    int vInt = Marshal.ReadInt32(vBytesAddress);
    return vInt.ToString() ;
    }
    /// <summary>
    /// 獲取鍵盤(pán)狀態(tài)
    /// </summary>
    /// <param name="Key"></param>
    /// <returns></returns>
    public bool GetState(VirtualKeys Key)
    {
    return (GetKeyState((int)Key) == 1);
    }
    /// <summary>
    /// 發(fā)送鍵盤(pán)事件
    /// </summary>
    /// <returns></returns>
    public void Send(VirtualKeys Key, bool State)
    {
    if (State != GetState(Key))
    {
    byte a= MapVirtualKey((byte)Key, 0);
    keybd_event((byte)Key, MapVirtualKey((byte)Key, 0), 0, 0);
    System.Threading.Thread.Sleep(1000);
    keybd_event((byte)Key, MapVirtualKey((byte)Key, 0), KEYEVENTF_KEYUP, 0);
    }
    }
    /// <summary>
    /// 初始化winio
    /// </summary>
    public void sendwinio()
    {
    if (InitializeWinIo())
    {
    KBCWait4IBE();
    }
    }
    private void KBCWait4IBE() //等待鍵盤(pán)緩沖區(qū)為空
    {
    //int[] dwVal = new int[] { 0 };
    int dwVal = 0;
    do
    {
    //這句表示從&H64端口讀取一個(gè)字節(jié)并把讀出的數(shù)據(jù)放到變量dwVal中
    //GetPortVal函數(shù)的用法是GetPortVal 端口號(hào),存放讀出數(shù)據(jù)的變量,讀入的長(zhǎng)度
    bool flag = GetPortVal((IntPtr)0x64, out dwVal, 1);
    }
    while ((dwVal & 0x2) > 0);
    }
    /// <summary>
    /// 模擬鍵盤(pán)標(biāo)按下
    /// </summary>
    /// <param name="vKeyCoad"></param>
    public void MykeyDown(int vKeyCoad)
    {
    int btScancode = 0;

    btScancode = MapVirtualKey((byte)vKeyCoad, 0);
    // btScancode = vKeyCoad;

    KBCWait4IBE(); // '發(fā)送數(shù)據(jù)前應(yīng)該先等待鍵盤(pán)緩沖區(qū)為空
    SetPortVal(KBC_KEY_CMD, (IntPtr)0xD2, 1);// '發(fā)送鍵盤(pán)寫(xiě)入命令
    //SetPortVal函數(shù)用于向端口寫(xiě)入數(shù)據(jù),它的用法是SetPortVal 端口號(hào),欲寫(xiě)入的數(shù)據(jù),寫(xiě)入數(shù)據(jù)的長(zhǎng)度
    KBCWait4IBE();
    SetPortVal(KBC_KEY_DATA, (IntPtr)0xe2, 1);// '寫(xiě)入按鍵信息,按下鍵
    KBCWait4IBE(); // '發(fā)送數(shù)據(jù)前應(yīng)該先等待鍵盤(pán)緩沖區(qū)為空
    SetPortVal(KBC_KEY_CMD, (IntPtr)0xD2, 1);// '發(fā)送鍵盤(pán)寫(xiě)入命令
    //SetPortVal函數(shù)用于向端口寫(xiě)入數(shù)據(jù),它的用法是SetPortVal 端口號(hào),欲寫(xiě)入的數(shù)據(jù),寫(xiě)入數(shù)據(jù)的長(zhǎng)度
    KBCWait4IBE();
    SetPortVal(KBC_KEY_DATA, (IntPtr)btScancode, 1);// '寫(xiě)入按鍵信息,按下鍵

    }
    /// <summary>
    /// 模擬鍵盤(pán)彈出
    /// </summary>
    /// <param name="vKeyCoad"></param>
    public void MykeyUp(int vKeyCoad)
    {
    int btScancode = 0;
    btScancode = MapVirtualKey((byte)vKeyCoad, 0);
    //btScancode = vKeyCoad;

    KBCWait4IBE(); // '發(fā)送數(shù)據(jù)前應(yīng)該先等待鍵盤(pán)緩沖區(qū)為空
    SetPortVal(KBC_KEY_CMD,(IntPtr) 0xD2, 1); //'發(fā)送鍵盤(pán)寫(xiě)入命令
    KBCWait4IBE();
    SetPortVal(KBC_KEY_DATA, (IntPtr)0xe0, 1);// '寫(xiě)入按鍵信息,釋放鍵
    KBCWait4IBE(); // '發(fā)送數(shù)據(jù)前應(yīng)該先等待鍵盤(pán)緩沖區(qū)為空
    SetPortVal(KBC_KEY_CMD, (IntPtr)0xD2, 1); //'發(fā)送鍵盤(pán)寫(xiě)入命令
    KBCWait4IBE();
    SetPortVal(KBC_KEY_DATA, (IntPtr)btScancode, 1);// '寫(xiě)入按鍵信息,釋放鍵
    }
    /// <summary>
    /// 模擬鼠標(biāo)按下
    /// </summary>
    /// <param name="vKeyCoad"></param>
    public void MyMouseDown(int vKeyCoad)
    {
    int btScancode = 0;

    btScancode = MapVirtualKey((byte)vKeyCoad, 0);
    //btScancode = vKeyCoad;

    KBCWait4IBE(); // '發(fā)送數(shù)據(jù)前應(yīng)該先等待鍵盤(pán)緩沖區(qū)為空
    SetPortVal(KBC_KEY_CMD,(IntPtr)0xD3, 1);// '發(fā)送鍵盤(pán)寫(xiě)入命令
    //SetPortVal函數(shù)用于向端口寫(xiě)入數(shù)據(jù),它的用法是SetPortVal 端口號(hào),欲寫(xiě)入的數(shù)據(jù),寫(xiě)入數(shù)據(jù)的長(zhǎng)度
    KBCWait4IBE();
    SetPortVal(KBC_KEY_DATA, (IntPtr)(btScancode|0x80), 1);// '寫(xiě)入按鍵信息,按下鍵

    }
    /// <summary>
    /// 模擬鼠標(biāo)彈出
    /// </summary>
    /// <param name="vKeyCoad"></param>
    public void MyMouseUp(int vKeyCoad)
    {
    int btScancode = 0;
    btScancode = MapVirtualKey((byte)vKeyCoad, 0);
    // btScancode = vKeyCoad;

    KBCWait4IBE(); // '發(fā)送數(shù)據(jù)前應(yīng)該先等待鍵盤(pán)緩沖區(qū)為空
    SetPortVal(KBC_KEY_CMD,(IntPtr) 0xD3, 1); //'發(fā)送鍵盤(pán)寫(xiě)入命令
    KBCWait4IBE();
    SetPortVal(KBC_KEY_DATA, (IntPtr)(btScancode | 0x80), 1);// '寫(xiě)入按鍵信息,釋放鍵
    }
    /// <summary>
    /// 發(fā)送鼠標(biāo)事件
    /// </summary>
    /// <returns></returns>
    public void SendMouse()
    {

    }
    /// <summary>
    /// 鼠標(biāo)動(dòng)作枚舉
    /// </summary>
    public enum mouseeventflag : uint
    {
    move = 0x0001,
    leftdown = 0x0002,
    leftup = 0x0004,
    rightdown = 0x0008,
    rightup = 0x0010,
    middledown = 0x0020,
    middleup = 0x0040,
    xdown = 0x0080,
    xup = 0x0100,
    wheel = 0x0800,
    virtualdesk = 0x4000,
    absolute = 0x8000
    }
    /// <summary>
    /// 鍵盤(pán)動(dòng)作枚舉
    /// </summary>
    public enum VirtualKeys : byte
    {
    //VK_NUMLOCK = 0x90, //數(shù)字鎖定鍵
    //VK_SCROLL = 0x91, //滾動(dòng)鎖定
    //VK_CAPITAL = 0x14, //大小寫(xiě)鎖定
    //VK_A = 62, //鍵盤(pán)A
    VK_LBUTTON=1, //鼠標(biāo)左鍵
    VK_RBUTTON=2,  //鼠標(biāo)右鍵
    VK_CANCEL=3,    //Ctrl+Break(通常不需要處理)
    VK_MBUTTON=4,   //鼠標(biāo)中鍵
    VK_BACK=8,     //Backspace
    VK_TAB=9,     //Tab
    VK_CLEAR=12,    //Num Lock關(guān)閉時(shí)的數(shù)字鍵盤(pán)5
    VK_RETURN=13,   //Enter(或者另一個(gè))
    VK_SHIFT=16,    //Shift(或者另一個(gè))
    VK_CONTROL=17,   //Ctrl(或者另一個(gè))
    VK_MENU=18,    //Alt(或者另一個(gè))
    VK_PAUSE=19,    //Pause
    VK_CAPITAL=20,   //Caps Lock
    VK_ESCAPE=27,   //Esc
    VK_SPACE=32,    //Spacebar
    VK_PRIOR=33,    //Page Up
    VK_NEXT=34,    //Page Down
    VK_END=35,     //End
    VK_HOME=36,    //Home
    VK_LEFT=37,    //左箭頭
    VK_UP=38,     //上箭頭
    VK_RIGHT=39,    //右箭頭
    VK_DOWN=40,    //下箭頭
    VK_SELECT=41,   //可選
    VK_PRINT=42,    //可選
    VK_EXECUTE=43,   //可選
    VK_SNAPSHOT=44,  //Print Screen
    VK_INSERT=45,   //Insert
    VK_DELETE=46,   //Delete
    VK_HELP=47,   //可選
    VK_NUM0=48, //0
    VK_NUM1=49, //1
    VK_NUM2=50, //2
    VK_NUM3=51, //3
    VK_NUM4=52, //4
    VK_NUM5=53, //5
    VK_NUM6=54, //6
    VK_NUM7=55, //7
    VK_NUM8=56, //8
    VK_NUM9=57, //9
    VK_A=65, //A
    VK_B=66, //B
    VK_C=67, //C
    VK_D=68, //D
    VK_E=69, //E
    VK_F=70, //F
    VK_G=71, //G
    VK_H=72, //H
    VK_I=73, //I
    VK_J=74, //J
    VK_K=75, //K
    VK_L=76, //L
    VK_M=77, //M
    VK_N=78, //N
    VK_O=79, //O
    VK_P=80, //P
    VK_Q=81, //Q
    VK_R=82, //R
    VK_S=83, //S
    VK_T=84, //T
    VK_U=85, //U
    VK_V=86, //V
    VK_W=87, //W
    VK_X=88, //X
    VK_Y=89, //Y
    VK_Z=90, //Z
    VK_NUMPAD0=96, //0
    VK_NUMPAD1=97, //1
    VK_NUMPAD2=98, //2
    VK_NUMPAD3=99, //3
    VK_NUMPAD4=100, //4
    VK_NUMPAD5=101, //5
    VK_NUMPAD6=102, //6
    VK_NUMPAD7=103, //7
    VK_NUMPAD8=104, //8
    VK_NUMPAD9=105, //9
    VK_NULTIPLY=106,  //數(shù)字鍵盤(pán)上的*
    VK_ADD=107,    //數(shù)字鍵盤(pán)上的+
    VK_SEPARATOR=108, //可選
    VK_SUBTRACT=109,  //數(shù)字鍵盤(pán)上的-
    VK_DECIMAL=110,  //數(shù)字鍵盤(pán)上的.
    VK_DIVIDE=111,   //數(shù)字鍵盤(pán)上的/
    VK_F1=112,
    VK_F2=113,
    VK_F3=114,
    VK_F4=115,
    VK_F5=116,
    VK_F6=117,
    VK_F7=118,
    VK_F8=119,
    VK_F9=120,
    VK_F10=121,
    VK_F11=122,
    VK_F12=123,
    VK_NUMLOCK=144,  //Num Lock
    VK_SCROLL=145   // Scroll Lock
    }
    }
    }

     

    本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/hi123456/archive/2009/11/10/4791043.aspx

    posted on 2010-10-26 15:46 sanmao 閱讀(806) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: youjizz亚洲| 最近2019中文字幕免费看最新| 亚洲AV永久无码精品一福利| 久久精品国产精品亚洲色婷婷 | 亚洲一区免费观看| 亚洲性在线看高清h片| 成人免费视频观看无遮挡| 2015日韩永久免费视频播放| a色毛片免费视频| 国产91精品一区二区麻豆亚洲 | 亚洲成人免费网址| 国产亚洲精品岁国产微拍精品| 日韩精品电影一区亚洲| 最近免费中文字幕大全免费版视频| 九九热久久免费视频| 亚洲理论精品午夜电影| 亚洲AV日韩AV永久无码免下载| 亚洲情XO亚洲色XO无码| 在线A亚洲老鸭窝天堂| 亚洲中文字幕无码专区| 亚洲AV无码成H人在线观看| 国产精品国产午夜免费福利看| 人人揉揉香蕉大免费不卡| 国产免费内射又粗又爽密桃视频 | 国产免费AV片无码永久免费| 麻豆成人精品国产免费| 在线播放免费播放av片| 成全影视免费观看大全二| 成全视频在线观看免费高清动漫视频下载 | 最近2019免费中文字幕视频三 | 亚洲天天做日日做天天看| 久久久久亚洲精品无码系列| 亚洲Av永久无码精品三区在线| 国产亚洲一区二区在线观看| 国产成A人亚洲精V品无码性色| 亚洲精品二区国产综合野狼| 亚洲va久久久噜噜噜久久男同| 亚洲gv白嫩小受在线观看| 亚洲国产天堂在线观看| 亚洲视频一区二区三区| 亚洲一区二区三区不卡在线播放|