国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C#調(diào)用Windows API實(shí)現(xiàn)自動(dòng)登錄

開發(fā) 后端
本文主要闡述了C#調(diào)用Windows API實(shí)現(xiàn)自動(dòng)登錄的設(shè)計(jì)初衷、設(shè)計(jì)思想和設(shè)計(jì)步驟,希望對(duì)大家有用。

設(shè)計(jì)初衷:

公司為了安全性考慮,不讓密碼被太多人知道,所以想實(shí)現(xiàn)一個(gè)自動(dòng)登錄的模塊。

設(shè)計(jì)思想:

主要是通過C#調(diào)用Windows API中的一些方法,找到目標(biāo)窗口和進(jìn)程之后把保存在數(shù)據(jù)庫中的用戶名密碼自動(dòng)填入輸入框中,并登錄。

設(shè)計(jì)步驟:

一、調(diào)用Windows API。

 C#調(diào)用Windows API方法如下:

 1、引入命名空間:using System.Runtime.InteropServices;

 2、引用需要使用的方法,格式:[DllImport("DLL文件")]方法的聲明;

  1.  [DllImport("user32.dll")]private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);  
  2.  [DllImport("user32.dll")]private static extern bool SetForegroundWindow(IntPtr hWnd);  
  3.  [DllImport("user32.dll")]private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);  
  4.  [DllImport("user32.dll")]private static extern int SendMessage(IntPtr hWnd,int Msg,int wParam,int lParam);  
  5.  [DllImport("user32.dll")]private static extern bool SetCursorPos(int X, int Y);  
  6.  [DllImport("user32.dll")]private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);  
  7.  [DllImport("user32.dll")]private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);  
  8.  [DllImport("user32.dll")]private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndlnsertAfter, int X, int Y, int cx, int cy, uint Flags);   
  9.  //ShowWindow參數(shù)  
  10.  private const int SW_SHOWNORMAL = 1;  
  11.  private const int SW_RESTORE = 9;  
  12.  private const int SW_SHOWNOACTIVATE = 4;  
  13.  //SendMessage參數(shù)  
  14.  private const int WM_KEYDOWN = 0X100;  
  15.  private const int WM_KEYUP = 0X101;  
  16.  private const int WM_SYSCHAR = 0X106;  
  17.  private const int WM_SYSKEYUP = 0X105;  
  18.  private const int WM_SYSKEYDOWN = 0X104;  
  19.  private const int WM_CHAR = 0X102; 

二、找到目標(biāo)窗口

1)、根據(jù)窗口的標(biāo)題得到句柄

 IntPtr myIntPtr = FindWindow(null,"窗口名"); //null為類名,可以用Spy++得到,也可以為空

 ShowWindow(myIntPtr, SW_RESTORE); //將窗口還原

 SetForegroundWindow(myIntPtr); //如果沒有ShowWindow,此方法不能設(shè)置最小化的窗口

2)、遍歷所有窗口得到句柄

1 定義委托方法CallBack,枚舉窗口API(EnumWindows),得到窗口名API(GetWindowTextW)和得到窗口類名API(GetClassNameW)

  1.  public delegate bool CallBack(int hwnd, int lParam);  
  2.  [DllImport("user32")]public static extern int EnumWindows(CallBack x, int y);  
  3.  [DllImport("user32.dll")]private static extern int GetWindowTextW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount);  
  4.  [DllImport("user32.dll")]private static extern int GetClassNameW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)]StringBuilder lpString, int nMaxCount); 

2 調(diào)用EnumWindows遍歷窗口

  1.  CallBack myCallBack = new CallBack(Recall);  
  2.  EnumWindows(myCallBack, 0); 

3 回調(diào)方法Recall

  1.  public bool Recall(int hwnd, int lParam)  
  2.  {  
  3.   StringBuilder sb = new StringBuilder(256);  
  4.   IntPtr PW = new IntPtr(hwnd);  
  5.  
  6.   GetWindowTextW(PW,sb,sb.Capacity); //得到窗口名并保存在strName中  
  7.   string strName = sb.ToString();  
  8.  
  9.   GetClassNameW(PW,sb,sb.Capacity); //得到窗口類名并保存在strClass中  
  10.   string strClass = sb.ToString();  
  11.  
  12.   if (strName.IndexOf("窗口名關(guān)鍵字") >= 0 && strClass.IndexOf("類名關(guān)鍵字") >= 0)  
  13.   {  
  14.    return false//返回false中止EnumWindows遍歷  
  15.   }  
  16.   else 
  17.   {  
  18.    return true//返回true繼續(xù)EnumWindows遍歷  
  19.   }  
  20.  } 

3)、打開窗口得到句柄

1 定義設(shè)置活動(dòng)窗口API(SetActiveWindow),設(shè)置前臺(tái)窗口API(SetForegroundWindow)

  1.  [DllImport("user32.dll")]static extern IntPtr SetActiveWindow(IntPtr hWnd);  
  2.  [DllImport("user32.dll")][return: MarshalAs(UnmanagedType.Bool)]static extern bool SetForegroundWindow(IntPtr hWnd); 

2 打開窗口

  1.  Process proc = Process.Start(@"目標(biāo)程序路徑");  
  2.  SetActiveWindow(proc.MainWindowHandle);  
  3.  SetForegroundWindow(proc.MainWindowHandle); 

三、向指定的窗口輸入數(shù)據(jù)

1 利用發(fā)送消息API(SendMessage)向窗口發(fā)送數(shù)據(jù) 

  1. InputStr(myIntPtr, _GameID); //輸入游戲ID  
  2.  SendMessage(myIntPtr, WM_SYSKEYDOWN, 0X09, 0); //輸入TAB(0x09)  
  3.  SendMessage(myIntPtr, WM_SYSKEYUP, 0X09, 0);  
  4.  InputStr(myIntPtr, _GamePass); //輸入游戲密碼  
  5.  SendMessage(myIntPtr, WM_SYSKEYDOWN, 0X0D, 0); //輸入ENTER(0x0d)  
  6.  SendMessage(myIntPtr, WM_SYSKEYUP, 0X0D, 0);  
  7.  
  8.  /// < summary>  
  9.  /// 發(fā)送一個(gè)字符串  
  10.  /// < /summary>  
  11.  /// < param name="myIntPtr">窗口句柄< /param>  
  12.  /// < param name="Input">字符串< /param>  
  13.  public void InputStr(IntPtr myIntPtr, string Input)  
  14.  {  
  15.   byte[] ch = (ASCIIEncoding.ASCII.GetBytes(Input));  
  16.   for (int i = 0; i <  ch.Length; i++)  
  17.   {   
  18.    SendMessage(PW, WM_CHAR, ch, 0);  
  19.   }  
  20.  }  
  21.  

2 利用鼠標(biāo)和鍵盤模擬向窗口發(fā)送數(shù)據(jù)

  1.  SetWindowPos(PW, (IntPtr)(-1), 0, 0, 0, 0, 0x0040 | 0x0001); //設(shè)置窗口位置  
  2.  SetCursorPos(476, 177); //設(shè)置鼠標(biāo)位置  
  3.  mouse_event(0x0002, 0, 0, 0, 0); //模擬鼠標(biāo)按下操作  
  4.  mouse_event(0x0004, 0, 0, 0, 0); //模擬鼠標(biāo)放開操作  
  5.  SendKeys.Send(_GameID);   //模擬鍵盤輸入游戲ID  
  6.  SendKeys.Send("{TAB}"); //模擬鍵盤輸入TAB  
  7.  SendKeys.Send(_GamePass); //模擬鍵盤輸入游戲密碼  
  8.  SendKeys.Send("{ENTER}"); //模擬鍵盤輸入ENTER 

另:上面還提到了keybd_event方法,用法和mouse_event方法類似,作用和SendKeys.Send一樣。

這樣,就實(shí)現(xiàn)了C#調(diào)用Windows API自動(dòng)登錄。

【編輯推薦】

  1. 四種C#參數(shù)類型簡(jiǎn)介
  2. Java與C#的不同之處
  3. 學(xué)習(xí)C#程序集
  4. C#和ADO.NET建立數(shù)據(jù)綁定網(wǎng)格
  5. 介紹C# 4.0新特性dynamic
責(zé)任編輯:book05 來源: csdn
相關(guān)推薦

2009-07-31 16:12:10

Windows APIC#

2009-08-03 13:34:57

C#調(diào)用Windows

2009-08-17 13:18:01

C#調(diào)用Windows

2009-08-17 13:49:20

C#中調(diào)用Window

2009-08-17 13:26:20

C#調(diào)用Windows

2009-08-07 16:10:20

C#調(diào)用API

2009-08-05 15:10:19

C#調(diào)用GoogleE

2009-08-03 13:13:52

C#調(diào)用Outlook

2009-08-21 17:42:36

C#調(diào)用API

2009-08-03 14:09:15

C#調(diào)用API

2009-08-07 16:43:44

C#調(diào)用Windows

2009-08-07 17:01:22

C#調(diào)用QuickTe

2009-07-31 15:47:20

Win32 APIC#

2009-08-17 17:08:35

C# ADSL自動(dòng)撥號(hào)

2012-05-31 13:59:43

PHP

2009-08-11 14:16:00

Winform調(diào)用WEC#

2009-08-21 11:24:16

C#異步調(diào)用

2009-09-03 16:20:14

C#調(diào)用Windows

2024-05-16 12:33:37

C#編程指針

2009-08-17 16:18:47

C#調(diào)用CreateO
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲免费福利视频| 国产精品成熟老女人| 秋霞蜜臀av久久电影网免费| 久久精彩视频| 欧美一区二区在线播放| 欧美性生活一级片| 日韩美女视频免费在线观看| 精品精品视频| 国产精品一香蕉国产线看观看| 欧美在线影院| 国产欧美韩日| 玖玖精品视频| 亚洲一区亚洲二区| 香蕉视频成人在线观看| 99久久久精品免费观看国产| 天堂午夜影视日韩欧美一区二区| 国产主播在线看| 亚洲一区二区三区激情| 成人国产电影在线观看| 国自在线精品视频| 久久精选视频| √天堂8在线网| 成人在线视频网址| 国产精品国产三级国产aⅴ原创| 三级在线电影| 精品国偷自产在线视频99| 国产一区二区三区电影在线观看| 国产一区二区自拍| 久久综合色之久久综合| 中文字幕在线观看一区二区三区| 精品国产区一区| 国产成人精品亚洲线观看| 先锋av资源在线| 亚洲欧美日韩爽爽影院| 久久精品在线免费观看| segui88久久综合| 91丝袜美腿美女视频网站| 91精品观看| 午夜av不卡| 国产精品中文字幕在线| 亚洲国产精品激情在线观看| 亚洲精品在线观看91| 午夜国产在线| 日韩欧美电影在线| 国产精品免费久久| 国产精品久久久久久久久免费高清| 在线看无码的免费网站| 日韩精品一区二区三区蜜臀| 极品尤物久久久av免费看| 最新在线观看av| 国产女人18毛片水18精品| 国产成人精品免费视频网站| 欧美一区综合| 国际av在线| 欧美日韩国产一二| 亚洲成人精品一区二区| 蜜臀精品久久久久久蜜臀| 啊啊啊久久久| 中文字幕一区二区三区最新| 日韩欧美专区在线| 国产伊人精品| 加勒比久久综合| 亚洲欧美99| 成人精品久久av网站| 五月婷婷激情综合| 久久国产综合| 国产欧美啪啪| 亚洲成人影院在线观看| 欧美精品与人动性物交免费看| 亚洲成a人片在线观看中文| 亚洲理论在线观看| 成人福利免费在线观看| 日本中文字幕视频一区| 韩国黄色一级大片| 欧美亚洲精品日韩| 亚洲少妇中出一区| 亚洲精品大片www| 大型av综合网站| 伊人亚洲精品| av免费高清观看| 国产肉体ⅹxxx137大胆| 日本一本a高清免费不卡| 欧美色综合久久| 2020日本不卡一区二区视频| 亚洲三级色网| 欧美毛片免费观看| 丝袜中文在线| 美女在线免费视频| 欧美图片激情小说| 精品99在线视频| 欧洲精品在线观看| 成人福利一区| 手机av免费在线| 国产二区视频在线| 久热精品视频在线免费观看| 亚洲成人av福利| 久久久夜色精品亚洲| 亚洲国产一区二区在线观看| 成人亚洲网站| 黄色网页在线免费看| 国产精品永久入口久久久| 国产一区二区色| 国产日本欧美在线观看| 一色桃子一区二区| 欧美三级蜜桃2在线观看| 国产喷白浆一区二区三区| 精品av导航| 日韩电影在线免费| 国产九九精品| 国产精品久久久乱弄| 亚洲羞羞网站| 亚洲欧洲自拍| 国产成人福利夜色影视| 国产日韩在线观看视频| 黄网站在线观看| 在线观看黄网| 国产经典av| 国产女优裸体网站| 欧美24videosex性欧美| 日韩精品亚洲人成在线观看| 巨大荫蒂视频欧美另类大| 在线观看av中文| 亚洲色婷婷久久精品av蜜桃| 亚洲人成小说| 天堂中文а√在线| 成人免费视屏| 欧美黄色网络| 国产欧美一区二区三区米奇| 久久不见久久见中文字幕免费| 久草成人在线| 国产真实久久| 精品午夜久久福利影院| 国产日韩一级二级三级| 性欧美大战久久久久久久久| 亚洲午夜羞羞片| 日韩免费视频一区| 午夜国产不卡在线观看视频| 欧美成人免费va影院高清| 国产成人精品视频在线| 日韩欧美一区二区在线观看| 日韩精品视频一区二区在线观看| 色老板视频在线观看| 男女羞羞视频网站| 成人午夜大片| 天堂午夜影视日韩欧美一区二区| 不卡一区二区三区四区| 成人精品高清在线| 一区二区三区免费观看| 韩国三级电影久久久久久| 国产久一道中文一区| 国产a级片免费观看| av网站在线免费播放| 成人爱爱网址| 亚洲午夜电影| 91免费在线播放| 国产麻豆成人精品| 午夜精品一区二区三区在线播放 | 国产精品久久久久久久一区探花| 国产精品精品视频| 国产成人三级视频| 日韩欧美三级在线| 欧美激情高清视频| 三年中国中文在线观看免费播放| 欧美性猛交久久久乱大交小说| 日韩精品免费看| 国产成人免费高清视频| 在线视频毛片| 爱情岛亚洲播放路线| 日本va欧美va瓶| 色婷婷综合久久| 欧美亚洲日本黄色| 国产亚洲第一区| 操操操综合网| 国产精品加勒比| 精品国偷自产一区二区三区| 麻豆视频在线| 日韩精品欧美精品| 亚洲第一精品久久忘忧草社区| 九九久久99| 成人av黄色| 日本欧美韩国一区三区| 亚洲成人精品视频| 2022中文字幕| 粉嫩av一区二区| 成人网在线免费视频| 欧美性猛交xxxxx免费看| 亚洲综合一区二区不卡| 性欧美ⅴideo另类hd| 亚洲美女视频在线免费观看| 亚洲国产日韩a在线播放| 欧美一级夜夜爽| www亚洲国产| 宅男噜噜噜66国产精品免费| 亚洲国产精品久久久男人的天堂| 国产精品入口夜色视频大尺度| 成人午夜电影在线观看| 精品一区二区三区在线观看 | 日本wwww视频| 久久爱另类一区二区小说| 久久精品人人爽|