青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 298  文章 - 377  trackbacks - 0
<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(34)

隨筆分類

隨筆檔案

文章檔案

相冊

收藏夾

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

//****************** 類mk頭文件mk.h **************************
#if !defined(AFX_MK_H__B024D48F_090A_4F6F_A199_32996DF699B3__INCLUDED_)
#define AFX_MK_H__B024D48F_090A_4F6F_A199_32996DF699B3__INCLUDED_

 

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "winable.h"

class mk
{
public:
mk();

static void Key(BYTE k, int mSeconds=0);//按一個鍵,mSeconds表按鍵后到
                                                                         //下一次操作延遲的時間:ms
static void Key2(BYTE k1, BYTE k2,int mSeconds=0);//按2個鍵
static void Key3(BYTE k1,BYTE k2,BYTE k3,int mSeconds=0);//按3個鍵

static void Click(int x,int y,int mSeconds=0);//單擊
static void RClick(int x,int y,int mSeconds=0);//右擊
static void DClick(int x,int y,int mSeconds=0);//雙擊
static void CtrlClick(int x, int y, int mSeconds=0);//Ctrl+單擊
                static void Drag(int x1,int y1,int x2,int y2,int mSeconds=0);//鼠標拖動

virtual ~mk();

};

#endif // !defined(AFX_MK_H__B024D48F_090A_4F6F_A199_32996DF699B3__INCLUDED_)
//****************** 類mk頭文件mk.h end**************************
//****************** 類mk實現文件mk.cpp **************************
#include "stdafx.h"
#include "mk.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

mk::mk()
{

}

mk::~mk()
{

}
void mk::Click(int x, int y, int mSeconds)
{
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(mSeconds);
}
void mk::DClick(int x, int y, int mSeconds)
{
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(mSeconds);
}

void mk::Drag(int x1, int y1, int x2, int y2, int mSeconds)
{
SetCursorPos(x1,y1);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
SetCursorPos(x2,y2);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(mSeconds);
}

void mk::RClick(int x, int y, int mSeconds)
{
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
Sleep(mSeconds);
}
void mk::Key(BYTE k, int mSeconds)
{
keybd_event(k,0,0,0);
keybd_event(k,0,KEYEVENTF_KEYUP,0); 
Sleep(mSeconds);
}
void mk::Key2(BYTE k1, BYTE k2, int mSeconds)
{
//法1
//keybd_event(k1, 0, 0 ,0);
    //keybd_event(k2, 0, 0 ,0);
    //keybd_event(k2, 0, KEYEVENTF_KEYUP,0);
    //keybd_event(k1, 0, KEYEVENTF_KEYUP,0);
//法2,更通用,但須先#include "winable.h"
INPUT input[4];
    memset(input,0,sizeof(input));
    input[0].type=input[1].type=input[2].type=input[3].type=INPUT_KEYBOARD;
    input[0].ki.wVk=input[3].ki.wVk=k1;
    input[1].ki.wVk=input[2].ki.wVk=k2;
    input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;

    SendInput(4, input, sizeof(INPUT));

Sleep(mSeconds);
}

void mk::CtrlClick(int x, int y, int mSeconds)
{
SetCursorPos(x,y);
keybd_event(VK_CONTROL ,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
Sleep(mSeconds);
}

void mk::Key3(BYTE k1, BYTE k2, BYTE k3, int mSeconds)
{
if(k1==VK_CONTROL&&k2==VK_MENU&&k3==VK_DELETE)
ShellExecute(NULL,NULL,"taskmgr.exe",NULL,NULL,SW_SHOW);
else
{
INPUT input[6];
    memset(input,0,sizeof(input));
    input[0].type=input[1].type=input[2].type=input[3].type=input[4].type=input[5].type=INPUT_KEYBOARD;
    input[0].ki.wVk=input[5].ki.wVk=k1;
    input[1].ki.wVk=input[4].ki.wVk=k2;
input[2].ki.wVk=input[3].ki.wVk=k3;
    input[3].ki.dwFlags=input[4].ki.dwFlags=input[5].ki.dwFlags=KEYEVENTF_KEYUP;
    SendInput(6, input, sizeof(INPUT));
}

Sleep(mSeconds);
}

//****************** 類mk實現文件mk.cpp end**************************




===================================================================

 VC模擬鍵盤操作

 INPUT input[4];
 memset(input, 0, sizeof(input));

 //設置模擬鍵盤輸入
 input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;
 input[0].ki.wVk  = input[2].ki.wVk = VK_CONTROL;
 input[1].ki.wVk  = input[3].ki.wVk = VK_ESCAPE;

 // 釋放按鍵
 input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;

 SendInput(4, input, sizeof(INPUT)); 



*********************************************************************************
符號常量 十六進制值 指定的鼠標或鍵盤按鍵
  VK_LBUTTON 01 鼠標左鍵
  VK_RBUTTON 02 鼠標右鍵
  VK_CANCEL 03 Control-break 過程
  VK_MBUTTON 04 鼠標中鍵
  VK_BACK 08 BACKSPACE 鍵
  VK_TAB 09 TAB 鍵
  VK_CLEAR 0C CLEAR 鍵
  VK_RETURN 0D ENTER 鍵
  VK_SHIFT 10 SHIFT 鍵
  VK_CONTROL 11 CTRL 鍵
  VK_MENU 12 ALT 鍵
  VK_PAUSE 13 PAUSE 鍵
  VK_CAPITAL 14 CAPS LOCK 鍵
  VK_ESCAPE 1B ESC 鍵
  VK_SPACE 20 SPACEBAR
  VK_PRIOR 21 PAGE UP 鍵
  VK_NEXT 22 PAGE DOWN 鍵
  VK_END 23 END 鍵
  VK_HOME 24 HOME 鍵
  VK_LEFT 25 LEFT ARROW 鍵
  VK_UP 26 UP ARROW 鍵
  VK_RIGHT 27 RIGHT ARROW 鍵
  VK_DOWN 28 DOWN ARROW 鍵
  VK_SELECT 29 SELECT 鍵
  VK_EXECUTE 2B EXECUTE 鍵
  VK_SNAPSHOT 2C PRINT SCREEN鍵(用于Windows 3.0及以后版本)
  VK_INSERT 2D INS 鍵
  VK_DELETE 2E DEL 鍵
  VK_HELP 2F HELP 鍵
  ///////////////////////////////////////////////////
  對于字母鍵和非小鍵盤上的數字鍵,直接在單引號中加入該鍵就行.
  比如:a鍵:'A'
   1鍵:'1'
  //////////////////////////////////////////////

  VK_LWIN 5B Left Windows 鍵 (Microsoft自然鍵盤)
  VK_RWIN 5C Right Windows 鍵 (Microsoft自然鍵盤)
  VK_APPS 5D Applications 鍵 (Microsoft自然鍵盤)
  VK_NUMPAD0 60 數字小鍵盤上的 0 鍵
  VK_NUMPAD1 61 數字小鍵盤上的 1 鍵
  VK_NUMPAD2 62 數字小鍵盤上的 2 鍵
  VK_NUMPAD3 63 數字小鍵盤上的 3 鍵
  VK_NUMPAD4 64 數字小鍵盤上的 4 鍵
VK_NUMPAD5 65 數字小鍵盤上的 5 鍵
  VK_NUMPAD6 66 數字小鍵盤上的 6 鍵
  VK_NUMPAD7 67 數字小鍵盤上的 7 鍵
  VK_NUMPAD8 68 數字小鍵盤上的 8 鍵
  VK_NUMPAD9 69 數字小鍵盤上的 9 鍵
  VK_MULTIPLY 6A Multiply 鍵
  VK_ADD 6B Add 鍵
  VK_SEPARATOR 6C Separator 鍵
  VK_SUBTRACT 6D Subtract 鍵
  VK_DECIMAL 6E Decimal 鍵
  VK_DIVIDE 6F Divide 鍵
  VK_F1 70 F1 鍵
  VK_F2 71 F2 鍵
  VK_F3 72 F3 鍵
  VK_F4 73 F4 鍵
  VK_F5 74 F5 鍵
  VK_F6 75 F6 鍵
  VK_F7 76 F7 鍵
  VK_F8 77 F8 鍵
  VK_F9 78 F9 鍵
  VK_F10 79 F10 鍵
  VK_F11 7A F11 鍵
  VK_F12 7B F12 鍵
  VK_F13 7C F13 鍵
  VK_F14 7D F14 鍵
  VK_F15 7E F15 鍵
  VK_F16 7F F16 鍵
  VK_F17 80H F17 鍵
  VK_F18 81H F18 鍵
  VK_F19 82H F19 鍵
  VK_F20 83H F20 鍵
  VK_F21 84H F21 鍵
  VK_F22 85H F22 鍵
  VK_F23 86H F23 鍵
  VK_F24 87H F24 鍵
  VK_NUMLOCK 90 NUM LOCK 鍵
  VK_SCROLL 91 SCROLL LOCK 鍵
  VK_ATTN F6 Attn 鍵
  VK_CRSEL F7 CrSel 鍵
  VK_EXSEL F8 ExSel 鍵
  VK_EREOF F9 Erase EOF 鍵
VK_PLAY FA Play 鍵
  VK_ZOOM FB Zoom 鍵
  VK_OEM_CLEAR FE Clear 鍵
  
  舉例:
  
  (一)響應單獨的按鍵:
  先添加PreTranslateMessage()(響應WM_CHAR)也是同樣的效果,因為本例只捕捉鍵盤)
  BOOL CMydilog::PreTranslateMessage(MSG* pMsg)
  {

   // TODO: Add your specialized code here and/or call the base class
   if (pMsg->message == WM_KEYDOWN)
   {
   if(pMsg->wParam=='M')//直接用上面的虛碼代替就可以響應所指鍵
   MessageBox("hello");//如果按下M鍵彈出消息.比如想當按下小鍵盤1時
   //彈出就用VK_NUMPAD1代替'M'
  }
   return CDialog::PreTranslateMessage(pMsg);
  }

  (二)組合鍵的用法:(本例響應Ctrl+X鍵)
  BOOL CMydilog::PreTranslateMessage(MSG* pMsg)
  {
   // TODO: Add your specialized code here and/or call the base class
  
   if (pMsg->message == WM_KEYDOWN)
   {
   switch (pMsg->wParam)
   {
   case VK_ESCAPE:
   SetFocus ();
   return TRUE;
   case 'X':
   if(::GetKeyState(VK_CONTROL) < 0)//如果是Shift+X這里就
   //改成VK_SHIFT
   MessageBox("hello");
   return TRUE;
  
   }
   }
   return CDialog::PreTranslateMessage(pMsg);
  }

 


posted on 2007-07-19 21:36 聶文龍 閱讀(10541) 評論(6)  編輯 收藏 引用 所屬分類: c++

FeedBack:
# re: vc模擬鼠標鍵盤操作實用類 2007-07-19 21:37 聶文龍
keybd_event(0x61,MapVirtualKey(0x61,0),0,0); //按下a鍵
keybd_event(0x62,MapVirtualKey(0x62,0),0,0); //按下b鍵
keybd_event(0x61,MapVirtualKey(0x61,0),KEYEVENTF_KEYUP,0); //釋放a鍵
keybd_event(0x62,MapVirtualKey(0x62,0),KEYEVENTF_KEYUP,0); //釋放b鍵  回復  更多評論
  
# re: vc模擬鼠標鍵盤操作實用類 2007-07-19 21:39 聶文龍
方法1:
HWND hwnd=::FindWindow(0,"ddd"); //假設你要找的窗口標題為“ddd”
CWnd::FromHandle(hwnd)->SetForegroundWindow();
::PostMessage(hwnd,WM_KEYDOWN, VK_ESCAPE, 0L); //發送ESC按下的鍵盤消息
方法2:這里以向記事本程序發送Ctrl+s按鍵消息為例:
CWnd *pWnd = FindWindow("Notepad", NULL);
if (pWnd->GetSafeHwnd())
{
pWnd->ShowWindow(SW_NORMAL);
pWnd->SetForegroundWindow();
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('S', 0, 0, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
keybd_event('S', 0, KEYEVENTF_KEYUP, 0);
}


要對游戲有效必須填寫keybd_event的第二個參數---硬件掃描碼  回復  更多評論
  
# re: vc模擬鼠標鍵盤操作實用類 2007-12-01 11:11 柴門
使用PostMessage發送按鍵消息可以在游戲不在前臺的時候都能正常執行,而其它的使用keybd_event、SendInput都必須要求窗口在前臺。

另外,一個疑惑就是,我在熱血江湖中測試,SendMessage不能實現模擬按鍵的目的,而PostMessage卻可以,這2個都是發送消息啊,為何結果卻是PostMessage可以而SendMessage不可以?難道是游戲屏蔽了?  回復  更多評論
  
# re: vc模擬鼠標鍵盤操作實用類 2008-11-15 13:58 逍遙行
你好,能不能給我個demo,我是個初學者,不是很專業。

我的email:erej@163.com  回復  更多評論
  
# re: vc模擬鼠標鍵盤操作實用類 2009-05-30 20:20 SmartCash
@柴門
SendMessage 發送的消息要有返回值 函數才會返回,你發到別的進程去不回你,就不能運行了,Post的不用返回值   回復  更多評論
  
# re: vc模擬鼠標鍵盤操作實用類 2011-06-17 00:04 internetafei@126.com
我在熱血江湖里,測試的sendmessage ,postmessage 都不行,我用sky++ , 測試 postmessage 得到的消息是正確的,但是游戲沒反映。sendmessage 是一點消息也沒有。  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              尤妮丝一区二区裸体视频| 欧美国产视频一区二区| 欧美日韩午夜剧场| 久久精品人人爽| 亚洲精品欧洲| 麻豆精品视频在线观看| 久久精视频免费在线久久完整在线看| 99精品国产一区二区青青牛奶| 精品电影一区| 亚洲第一毛片| 亚洲精品在线免费观看视频| 怡红院av一区二区三区| 亚洲国产精品欧美一二99| 国产欧美日韩一区二区三区在线观看| 欧美色大人视频| 欧美制服第一页| 久久精品中文字幕一区二区三区| 久久精品亚洲一区二区三区浴池 | 久久全球大尺度高清视频| 另类天堂av| av成人毛片| 亚洲欧美色一区| 久久久久国产一区二区三区| 欧美大片在线看| 国产精品―色哟哟| 一区在线视频| 亚洲一区二区三区四区五区黄| 亚洲欧美国产77777| 欧美一区日韩一区| 亚洲电影毛片| 夜夜夜精品看看| 美乳少妇欧美精品| 国产精品日韩专区| av成人免费在线观看| 久久久97精品| 亚洲愉拍自拍另类高清精品| 欧美福利一区二区三区| 国产午夜精品理论片a级探花| 亚洲精品一区二区三区樱花| 性欧美在线看片a免费观看| 欧美激情网站在线观看| 久久精品国产99精品国产亚洲性色| 欧美伦理91| 99精品视频免费在线观看| 欧美成人按摩| 模特精品在线| 亚洲精品一区二区三区不| 噜噜噜躁狠狠躁狠狠精品视频 | 欧美激情视频网站| 美国十次成人| 亚洲第一免费播放区| 美女被久久久| 欧美激情视频网站| 亚洲视频在线观看| 亚洲一区二区在线视频| 国产日韩一区二区三区在线播放| 欧美一区二区三区免费视频| 亚洲欧美一区二区精品久久久| 国产精品制服诱惑| 欧美~级网站不卡| 欧美日韩高清免费| 久久精品国产欧美激情| 老司机67194精品线观看| 日韩一级精品| 欧美一区二区三区啪啪| 亚洲第一精品影视| 亚洲午夜一区二区三区| 亚洲国产成人av| 一本色道久久88综合亚洲精品ⅰ| 国产欧美日韩亚洲一区二区三区| 乱中年女人伦av一区二区| 欧美日韩中文| 91久久精品国产91性色| 国产日本欧美一区二区三区| 亚洲黄色片网站| 尤物99国产成人精品视频| 亚洲午夜视频在线| 99国产精品一区| 久久亚洲国产成人| 欧美影院久久久| 国产精品久久久久久妇女6080 | 在线综合欧美| 中文一区二区| 欧美日本国产| 一区二区三区免费网站| 中文在线资源观看网站视频免费不卡 | 国产精品久久久91| 亚洲韩国青草视频| 最新成人在线| 最新中文字幕亚洲| 亚洲美女视频在线观看| 欧美激情成人在线视频| 亚洲福利在线看| 亚洲欧美日韩精品久久久久| 国产精品免费一区豆花| 欧美亚洲一区| 欧美激情一区二区在线| 亚洲精品国偷自产在线99热| 欧美日韩高清在线| 亚洲欧美久久久久一区二区三区| 久久福利电影| 亚洲电影在线看| 国产精品国产三级国产aⅴ无密码| 亚洲专区欧美专区| 亚洲国产1区| 久久精品一区二区三区不卡牛牛| 在线欧美视频| 国产欧美日韩三区| 欧美日韩国产美| 久久久久国色av免费观看性色| 日韩午夜视频在线观看| 蜜桃av久久久亚洲精品| 在线性视频日韩欧美| 久久人人97超碰精品888| 亚洲三级电影在线观看| 欧美激情免费在线| 欧美电影免费观看高清完整版| 欧美极品在线视频| 性欧美大战久久久久久久久| 一区二区三区四区五区精品| 久久免费黄色| 久久久久国产一区二区三区四区 | 国产麻豆视频精品| 久久精品亚洲| 在线精品国精品国产尤物884a| 久久一区二区三区四区| 在线观看国产一区二区| 久久人人97超碰精品888| 亚洲在线一区| 亚洲一区二区三区精品动漫| av成人天堂| 亚洲综合日韩在线| 午夜欧美大片免费观看| 性久久久久久久| 久久精品国产综合| 久久婷婷蜜乳一本欲蜜臀| 老司机精品久久| 欧美精品日韩www.p站| 亚洲欧美制服另类日韩| 欧美肥婆在线| 99精品热6080yy久久| 亚洲欧美精品中文字幕在线| 久久精品毛片| 国产精品裸体一区二区三区| 国产在线视频欧美一区二区三区| 激情欧美一区二区| 日韩午夜av在线| 久久精品1区| 99综合在线| 欧美国产亚洲精品久久久8v| 亚洲黄色片网站| 亚洲欧美影音先锋| 欧美日韩色一区| aa级大片欧美| 亚洲精品韩国| 你懂的视频欧美| 亚洲人体偷拍| 亚洲福利视频一区二区| 久久精品视频播放| 韩国av一区| 你懂的国产精品| 久久精品国产99国产精品澳门| 国产精品日日摸夜夜摸av| 亚洲欧美日韩国产成人| 夜色激情一区二区| 国产精品成人在线| 亚洲亚洲精品在线观看 | 国语自产在线不卡| 久久成人免费| 久久久噜噜噜久久狠狠50岁| 激情综合视频| 91久久精品一区二区别| 免费在线观看一区二区| 99ri日韩精品视频| 亚洲综合导航| 亚洲国产老妈| 亚洲综合日韩中文字幕v在线| 在线观看国产一区二区| 亚洲天堂av图片| 亚洲二区在线视频| 一区二区三区国产在线| 在线观看不卡av| 亚洲一区在线播放| 亚洲精品欧美| 久久爱www| 久久成人精品| 国产精品jizz在线观看美国| 美女黄毛**国产精品啪啪| 国产精品美女主播在线观看纯欲| 久久综合伊人77777麻豆| 欧美午夜www高清视频| 亚洲电影成人| 亚洲激情精品| 久久久久久久久岛国免费| 欧美日韩三级视频| 亚洲欧洲精品天堂一级| 亚洲高清网站| 欧美承认网站| 亚洲七七久久综合桃花剧情介绍| ●精品国产综合乱码久久久久|