討論區快速選單
知識庫快速選單
網路投保旅行平安險 政府補助!學嵌入式+物聯網 Excel也能做到大數據分析?
[ 回上頁 ] [ 討論區發言規則 ]
WIN32 API, ChangeWindowMessageFilte, NEG SBB 使用原因
更改我的閱讀文章字型大小
作者 : xiaolaba(xiaolaba)
[ 貼文 23 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2018/5/27 上午 10:17:58

win32, API call, 看人家的碼, 有個不理解的地方, 請教為何要那樣做, 例如副程式裡面有三行:
  neg ecx ; -MSG ??
  sbb ecx, ecx ; ecx = 0 or -1 ?
  add ecx, 2 ; ecx = 1 or 2, why do this ?


主程式:
push 1 ; MSGFLT_ADD, add message to filter
mov eax, MOUSEHOOK_CAPTUREOK_MSG
push eax
call my_ChangeWindowMessageFilte


副程式:
my_ChangeWindowMessageFilter proc near

  FLAG_1or2_add_or_remove= dword ptr 8
  MSG = dword ptr 0Ch

  push ebp
  mov ebp, esp
  push esi
  push edi

  push offset aChangewindowme ; "ChangeWindowMessageFilter"
  push esi ; hModule
  call ds:GetProcAddress
  test eax, eax
  jz short handle_ChangeWindowMessageFilter_null

;;ChangeWindowMessageFilter is obtianed, process and call API
  mov ecx, [ebp+MSG]
  mov edx, [ebp+FLAG_1or2_add_or_remove]

  neg ecx ; -MSG ??
  sbb ecx, ecx ; ecx = 0 or -1 ?
  add ecx, 2 ; ecx = 1 or 2, why do this ?

  push ecx ; FLAG
  push edx ; MSG
  call eax ; call ChangeWindowMessageFilter ; call win32 API

  pop edi
  pop esi
  pop ebp
  retn
endp

 板主 : 徵求中
 > 組合語言 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 組合語言 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
組合語言
1 H 2220 
2 liaoo 990 
3 青衫 970 
4 牧童哥 940 
5 史努比 920 
6 qq 480 
7 GHOST-JACKY 330 
8 ]CALL-151 310 
9 harrison 300 
10 掌握文武半邊天 280 
組合語言
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.03125