由虛擬碼而知當
key=1表示您按下了滑鼠的左鍵
key=2表示您按下了滑鼠的右鍵依此類推...
而
keybd_event();是模擬鍵盤的動作(按下某個鍵)
mouse_event();是模擬滑鼠的動作
==================================
如何用程式觸發滑鼠按鍵的事件(如何模擬滑鼠的按鍵)
模擬滑鼠按左鍵:
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);// click down
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);// click down
模擬滑鼠按Double Click:
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);// click down
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);// click down
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);// click down
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);// click down
模擬滑鼠按右鍵:
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);// click down
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);// click down
==================================
如何用程式觸發鍵盤按鍵的事件(模擬鍵盤按鍵)
對Form1觸發Tab按鍵按下事件:
PostMessage(form1.Handle, WM_KEYDOWN, VK_TAB, 0);
對Edit1觸發Enter按鍵按下事件:
PostMessage(edit1.Handle, WM_KEYDOWN, VK_RETURN, 0);
對Edit1觸發Enter按鍵放開事件:
PostMessage(edit1.Handle, WM_KEYUP, VK_F1, 0);
對Edit1觸發 1 按鍵按下事件:
PostMessage(edit1.Handle, WM_KEYDOWN, 49, 0);
對Edit1觸發 A 按鍵按下事件:
PostMessage(edit1.Handle, WM_KEYDOWN, 65, 0);
==================================
2008年12月2日 星期二
[轉貼]鍵盤上的 key 對應查詢表
F1~F12 對應為 $70(112)~$7B(123)
A~Z 對應為 $41(65)~$5A(90)
0~9 對應為 $30(48)~$39(57)
鍵 十六進位 十進位 說明
----------------------------------------------------------------------
vk_LButton = $01; 1 滑鼠左鈕
vk_RButton = $02; 2 滑鼠右鈕
vk_Cancel = $03; 3 Control-Break 執行
vk_MButton = $04; 4 滑鼠中鈕
05-07 5-7 { NOT contiguous with L & RBUTTON }
vk_Back = $08; 8 BackSpace 鍵
vk_Tab = $09; 9 AB鍵
0A-0B 10-11 未定義
vk_Clear = $0C; 12 Clear
vk_Return = $0D; 13 Enter
0E-0F 14-15 未定義
vk_Shift = $10; 16 Shift
vk_Control = $11; 17 Ctrl
vk_Menu = $12; 18 Alt
vk_Pause = $13; 19 Pause
vk_Capital = $14; 20 Caps Lock
15-19 21-25 保留給Kanji使用
1A 26 未定義
vk_Escape = $1B; 27 Esc
1C-1F 29-31 保留給Kanji使用
vk_Space = $20; 32 SpaceBar
vk_Prior = $21; 33 Page Up
vk_Next = $22; 34 Page Down
vk_End = $23; 35 End
vk_Home = $24; 36 Home
vk_Left = $25; 37 Left Arrow
vk_Up = $26; 38 Up Arrow
vk_Right = $27; 39 Right Arrow
vk_Down = $28; 40 Down Arrow
vk_Select = $29; 41 Select
vk_Print = $2A; 42 OEM自訂使用
vk_Execute = $2B; 43 Execute
vk_SnapShot = $2C; 44 Print Screen
///////{ vk_Copy = $2C not used by keyboards }
vk_Insert = $2D; 45 Ins
vk_Delete = $2E; 46 Del
vk_Help = $2F; 47 Help
{ vk_0 thru vk_9 are the same as their ascii equivalents: '0' thru '9' }
vk_0 $30 48
vk_1 31 49
vk_2 32 50
vk_3 33 51
vk_4 34 52
vk_5 35 53
vk_6 36 54
vk_7 37 55
vk_8 38 56
vk_9 39 57
3A-40 58-64 未定義
////{ vk_A thru vk_Z are the same as their ASCII equivalents: 'A' thru 'Z' }
vk_A $41 65
vk_B 42 66
vk_C 43 67
vk_D 44 68
vk_E 45 69
vk_F 46 70
vk_G 47 71
vk_H 48 72
vk_I 49 73
vk_J 4A 74
vk_K 4B 75
vk_L 4C 76
vk_M 4D 77
vk_N 4E 78
vk_O 4F 79
vk_P 50 80
vk_Q 51 81
vk_R 52 82
vk_S $53 83
vk_T 54 84
vk_U 55 85
vk_V 56 86
vk_W 57 87
vk_X 58 88
vk_Y 59 89
vk_Z 5A 90
5B-5C 91-95 未定義
vk_NumPad0 = $60; 96 數字鍵
vk_NumPad1 = $61; 97 數字鍵
vk_NumPad2 = $62; 98 數字鍵
vk_NumPad3 = $63; 99 數字鍵
vk_NumPad4 = $64; 100 數字鍵
vk_NumPad5 = $65; 101 數字鍵
vk_NumPad6 = $66; 102 數字鍵
vk_NumPad7 = $67; 103 數字鍵
vk_NumPad8 = $68; 104 數字鍵
vk_NumPad9 = $69; 105 數字鍵
vk_Multiply = $6A; 106 * 鍵
vk_Add = $6B; 107 + 鍵
vk_Separator = $6C; 108 Separator 鍵
vk_Subtract = $6D; 109 -- 鍵
vk_Decimal = $6E; 110 . 鍵
vk_Divide = $6F; 111 / 鍵
vk_F1 = $70; 112
vk_F2 = $71; 113
vk_F3 = $72; 114
vk_F4 = $73; 115
vk_F5 = $74; 116
vk_F6 = $75; 117
vk_F7 = $76; 118
vk_F8 = $77; 119
vk_F9 = $78; 120
vk_F10 = $79; 121
vk_F11 = $7A; 122
vk_F12 = $7B; 123
vk_F13 = $7C; 124
vk_F14 = $7D; 125
vk_F15 = $7E; 126
vk_F16 = $7F; 127
vk_F17 = $80; 128
vk_F18 = $81; 129
vk_F19 = $82; 130
vk_F20 = $83; 131
vk_F21 = $84; 132
vk_F22 = $85; 133
vk_F23 = $86; 134
vk_F24 = $87; 135
88-8F; 136-143 未指定
vk_NumLock = $90; 144 Num Lock
vk_Scroll = $91; 145 Scroll Lock
92-B9; 146-185 未指定
BA-C0; 186-192 OEM自訂
C1-DA; 193-218 未指定
DB-E4; 219-228 OEM自訂
E5 ; 229 未指定
E6 ; 230 OEM自訂
E7-E8; 231-232 未指定
E9-F5; 233-245 OEM自訂
F6-FE; 246-254 未指定
============================================
A~Z 對應為 $41(65)~$5A(90)
0~9 對應為 $30(48)~$39(57)
鍵 十六進位 十進位 說明
----------------------------------------------------------------------
vk_LButton = $01; 1 滑鼠左鈕
vk_RButton = $02; 2 滑鼠右鈕
vk_Cancel = $03; 3 Control-Break 執行
vk_MButton = $04; 4 滑鼠中鈕
05-07 5-7 { NOT contiguous with L & RBUTTON }
vk_Back = $08; 8 BackSpace 鍵
vk_Tab = $09; 9 AB鍵
0A-0B 10-11 未定義
vk_Clear = $0C; 12 Clear
vk_Return = $0D; 13 Enter
0E-0F 14-15 未定義
vk_Shift = $10; 16 Shift
vk_Control = $11; 17 Ctrl
vk_Menu = $12; 18 Alt
vk_Pause = $13; 19 Pause
vk_Capital = $14; 20 Caps Lock
15-19 21-25 保留給Kanji使用
1A 26 未定義
vk_Escape = $1B; 27 Esc
1C-1F 29-31 保留給Kanji使用
vk_Space = $20; 32 SpaceBar
vk_Prior = $21; 33 Page Up
vk_Next = $22; 34 Page Down
vk_End = $23; 35 End
vk_Home = $24; 36 Home
vk_Left = $25; 37 Left Arrow
vk_Up = $26; 38 Up Arrow
vk_Right = $27; 39 Right Arrow
vk_Down = $28; 40 Down Arrow
vk_Select = $29; 41 Select
vk_Print = $2A; 42 OEM自訂使用
vk_Execute = $2B; 43 Execute
vk_SnapShot = $2C; 44 Print Screen
///////{ vk_Copy = $2C not used by keyboards }
vk_Insert = $2D; 45 Ins
vk_Delete = $2E; 46 Del
vk_Help = $2F; 47 Help
{ vk_0 thru vk_9 are the same as their ascii equivalents: '0' thru '9' }
vk_0 $30 48
vk_1 31 49
vk_2 32 50
vk_3 33 51
vk_4 34 52
vk_5 35 53
vk_6 36 54
vk_7 37 55
vk_8 38 56
vk_9 39 57
3A-40 58-64 未定義
////{ vk_A thru vk_Z are the same as their ASCII equivalents: 'A' thru 'Z' }
vk_A $41 65
vk_B 42 66
vk_C 43 67
vk_D 44 68
vk_E 45 69
vk_F 46 70
vk_G 47 71
vk_H 48 72
vk_I 49 73
vk_J 4A 74
vk_K 4B 75
vk_L 4C 76
vk_M 4D 77
vk_N 4E 78
vk_O 4F 79
vk_P 50 80
vk_Q 51 81
vk_R 52 82
vk_S $53 83
vk_T 54 84
vk_U 55 85
vk_V 56 86
vk_W 57 87
vk_X 58 88
vk_Y 59 89
vk_Z 5A 90
5B-5C 91-95 未定義
vk_NumPad0 = $60; 96 數字鍵
vk_NumPad1 = $61; 97 數字鍵
vk_NumPad2 = $62; 98 數字鍵
vk_NumPad3 = $63; 99 數字鍵
vk_NumPad4 = $64; 100 數字鍵
vk_NumPad5 = $65; 101 數字鍵
vk_NumPad6 = $66; 102 數字鍵
vk_NumPad7 = $67; 103 數字鍵
vk_NumPad8 = $68; 104 數字鍵
vk_NumPad9 = $69; 105 數字鍵
vk_Multiply = $6A; 106 * 鍵
vk_Add = $6B; 107 + 鍵
vk_Separator = $6C; 108 Separator 鍵
vk_Subtract = $6D; 109 -- 鍵
vk_Decimal = $6E; 110 . 鍵
vk_Divide = $6F; 111 / 鍵
vk_F1 = $70; 112
vk_F2 = $71; 113
vk_F3 = $72; 114
vk_F4 = $73; 115
vk_F5 = $74; 116
vk_F6 = $75; 117
vk_F7 = $76; 118
vk_F8 = $77; 119
vk_F9 = $78; 120
vk_F10 = $79; 121
vk_F11 = $7A; 122
vk_F12 = $7B; 123
vk_F13 = $7C; 124
vk_F14 = $7D; 125
vk_F15 = $7E; 126
vk_F16 = $7F; 127
vk_F17 = $80; 128
vk_F18 = $81; 129
vk_F19 = $82; 130
vk_F20 = $83; 131
vk_F21 = $84; 132
vk_F22 = $85; 133
vk_F23 = $86; 134
vk_F24 = $87; 135
88-8F; 136-143 未指定
vk_NumLock = $90; 144 Num Lock
vk_Scroll = $91; 145 Scroll Lock
92-B9; 146-185 未指定
BA-C0; 186-192 OEM自訂
C1-DA; 193-218 未指定
DB-E4; 219-228 OEM自訂
E5 ; 229 未指定
E6 ; 230 OEM自訂
E7-E8; 231-232 未指定
E9-F5; 233-245 OEM自訂
F6-FE; 246-254 未指定
============================================
2008年11月6日 星期四
[轉貼]匈牙利命名法簡單記法
{(g|m)_}?{type}{Desc}
{Desc}:{Word}+
Word:[A-Z][a-z, A-Z, 0-9]*
g:全域變數,否則m
Type:
int -> n(開頭)
long -> l
unsigned int / long -> un / ul
DWORD -> dw
WORD -> w
CString / string -> m_str
char* -> null terminated string -> psz / sz
BSTR -> bstr
combo box -> cb
list control / box -> lc
CList
m_EnterText -> m_strEnter / s_strEnter / g_strEnter
CCtDlgInput
CFont -> MFC 4.0 -> MFC 5.0
int nIdxInput, nIdxOutput;
int nCntFile, nCntCar;
count -> cnt;
index -> idx;
display -> disp;
Descrption -> desc
Macro
#define XXXX_XXXX
API: GetMediaFile
{Desc}:{Word}+
Word:[A-Z][a-z, A-Z, 0-9]*
g:全域變數,否則m
Type:
int -> n(開頭)
long -> l
unsigned int / long -> un / ul
DWORD -> dw
WORD -> w
CString / string -> m_str
char* -> null terminated string -> psz / sz
BSTR -> bstr
combo box -> cb
list control / box -> lc
CList
m_EnterText -> m_strEnter / s_strEnter / g_strEnter
CCtDlgInput
CFont -> MFC 4.0 -> MFC 5.0
int nIdxInput, nIdxOutput;
int nCntFile, nCntCar;
count -> cnt;
index -> idx;
display -> disp;
Descrption -> desc
Macro
#define XXXX_XXXX
API: GetMediaFile
2008年10月29日 星期三
將數字在MSG BOX中顯示
int i = 100;
char str[10]="";
_itoa(i, str, 10);
CString GetIntStr(str);
MessageBox(NULL, GetIntStr, L"將數字在MSG BOX中顯示", MB_OK);
char str[10]="";
_itoa(i, str, 10);
CString GetIntStr(str);
MessageBox(NULL, GetIntStr, L"將數字在MSG BOX中顯示", MB_OK);
職場小笑話
新職員到崗(由上往下看)
老闆:萬分歡迎,沒有你我們的公司肯定大不一樣!
職員:如果工作太累,搞不好我會辭職的
老闆:放心,我不會讓這樣的事情發生的!
職員:我雙休日可以休息嗎?
老闆:當然了!這是底線!
職員:平時會天天加班到淩晨嗎?
老闆:不可能,誰告訴你的?
職員:有餐費補貼嗎?
老闆:還用說嗎,絕對比同行都高!
職員:有沒有工作猝死的風險?
老闆:不會!你怎麼會有這種念頭?
職員:公司會定期組織旅遊嗎?
老闆:這是我們的明文規定!
職員:那我需要準時上班嗎?
老闆:不,看情況吧
職員:工資呢?會準時發嗎?
老闆:一向如此!
職員:事情全是新員工做嗎?
老闆:怎麼可能,你上頭還有很多資深同事!
職員:如果領導職位有空缺,我可以參與競爭嗎?
老闆:毫無疑問,這是我們公司賴以生存的機制!
職員:你不會是在騙我吧?
進入公司後看真實的一幕.....(從後往前看)
老闆:萬分歡迎,沒有你我們的公司肯定大不一樣!
職員:如果工作太累,搞不好我會辭職的
老闆:放心,我不會讓這樣的事情發生的!
職員:我雙休日可以休息嗎?
老闆:當然了!這是底線!
職員:平時會天天加班到淩晨嗎?
老闆:不可能,誰告訴你的?
職員:有餐費補貼嗎?
老闆:還用說嗎,絕對比同行都高!
職員:有沒有工作猝死的風險?
老闆:不會!你怎麼會有這種念頭?
職員:公司會定期組織旅遊嗎?
老闆:這是我們的明文規定!
職員:那我需要準時上班嗎?
老闆:不,看情況吧
職員:工資呢?會準時發嗎?
老闆:一向如此!
職員:事情全是新員工做嗎?
老闆:怎麼可能,你上頭還有很多資深同事!
職員:如果領導職位有空缺,我可以參與競爭嗎?
老闆:毫無疑問,這是我們公司賴以生存的機制!
職員:你不會是在騙我吧?
進入公司後看真實的一幕.....(從後往前看)
2008年10月14日 星期二
CString與WCHAR及CString與char轉換
CString a = L"String Test";
//CString to WCHAR
WCHAR b[MAX_STRLEN];
wsprintf(b, (L"%s"), a);
//CString to char
char c[MAX_STRLEN];
WideCharToMultiByte(CP_OEMCP, NULL, a, -1, c, MAX_STRLEN, NULL, FALSE);
//CString to WCHAR
WCHAR b[MAX_STRLEN];
wsprintf(b, (L"%s"), a);
//CString to char
char c[MAX_STRLEN];
WideCharToMultiByte(CP_OEMCP, NULL, a, -1, c, MAX_STRLEN, NULL, FALSE);
[轉貼]ShellExecuteEX 開啟外部程式並關閉它
SHELLEXECUTEINFO sei;
DWORD exitcode;
memset(&sei,0,sizeof(SHELLEXECUTEINFO));
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask=SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = NULL;
sei.lpFile = "";
sei.lpParameters = "";
sei.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&sei);
GetExitCodeProcess(sei.hProcess,&exitcode);
if(exitcode==STILL_ACTIVE)
{
TerminateProcess(sei.hProcess,0);
}
這樣可以開啟一個程式 並且關閉它喔
DWORD exitcode;
memset(&sei,0,sizeof(SHELLEXECUTEINFO));
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask=SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = NULL;
sei.lpFile = "";
sei.lpParameters = "";
sei.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&sei);
GetExitCodeProcess(sei.hProcess,&exitcode);
if(exitcode==STILL_ACTIVE)
{
TerminateProcess(sei.hProcess,0);
}
這樣可以開啟一個程式 並且關閉它喔
訂閱:
文章 (Atom)