關於OD的bp send

新手看別人找CALL時在OD中經常用到bp send ,我感覺應該是在send中下斷吧。不太清楚send就搜了下。找了點相關資料給初學者參考下。
send
Send()
功能向窗口發送指定的消息並立即執行相應的事件處理程序。
語法Send( handle, messageno, word, long )
參數handle:long類型,指定窗口的系統句柄,將向該窗口發送消息messageno:UnsignedInteger類型,指定要發送的消息號 word:long類型,指定與消息一起發送的word類參數值。如果messageno參數指定的消息不使用該參數,那麼將這個參數的值設置爲 0long:long類型或string,指定與消息一起發送的long型參數值或字符串返回值Long。函數執行成功時返回Windows系統調用 SendMessage()的返回值,發生錯誤時返回-1。如果任何參數的值爲NULL,Send()函數返回NULL。
用法Send()函數用於向窗口發送非PowerBuilder預定義事件的消息,這個窗口可以是PowerBuilder應用的窗口,也可以是其它應用 的窗口。Send()函數直接觸發指定窗口相應的事件,執行事件處理程序後返回到調用應用中,這一點與Post()函數不同,Post()函數把發送的消 息放置在指定窗口消息隊列的尾部,然後返回到應用程序中,它並不等待相應事件事件處理程序的執行。因此,我們說Post()函數採用的是異步方 式,Send()函數採用的是同步方式。Send()函數的參數handle指定接收消息的窗口句柄,對PowerBuilder窗口來說,使用 Handle()函數可以得到該句柄。對其它應用程序的窗口來說,可以調用系統API函數查找窗口並得到相應窗口的句柄。實際上,Send()函數把它的 各個參數直接傳送給Windows的系統調用SendMessage()。在各種C++開發工具的WINDOWS.H文件中可以查到各消息編號。如果應用 程序要發送PowerBuilder定義事件(包括預定義事件和用戶定義事件),那麼使用TriggerEvent()函數既簡單有方便。當應用程序在 long參數位置指定一個字符串時,Send()函數複製一個該字符串的副本,然後將副本的地址傳送給指定窗口。

Send ( "按鍵" [, 標誌] )
參數:
按鍵 要發送的按鍵序列。
標誌 [可選參數] 更改程序處理“按鍵”的方式:
標誌 = 0 (默認),按鍵序列中含有的特殊字符比如 + 和 ! 將被視爲 SHIFT 和 ALT 鍵。
標誌 = 1,按鍵將按原樣發送。

返回值


注意
AutoIt 可發送所有的 ASCII 碼及擴展 ASCII 碼字符(0-255),若要發送 UNICODE 編碼的字符則必須使用“ASC”選項加上您要發送的字符代碼(見下面的 )。
“Send” 命令的語法跟 ScriptIt 以及 Visual Basic 的 “SendKeys” 命令類似。字符序列將按原文發送,但下列字符除外:
'!'
表示告知 AutoIt 要發送一個 ALT 鍵擊動作,因此語句 Send("This is text!a") 的意思是按序發送按鍵 "This is text" 然後在按下"ALT+a"。
注意,有些程序對大小寫字符和 ALT 鍵相當挑剔,舉例來說,"!A" 可能會被認爲不同於 "!a";第一個代表 ALT+SHIFT+A,而第二個則代表 ALT+a。如果拿不準的話最好使用小寫!
'+'
表示告知 AutoIt 要發送一個 SHIFT 鍵擊動作,因此語句 Send("Hell+o") 的意思是按序發送按鍵 "HellO"。Send("!+a") 表示發送 "ALT+SHIFT+a"。
'^'
表示告知 AutoIt 要發送一個 CONTROL 鍵擊動作,因此語句 Send("^!a") 的意思是發送按鍵 "CTRL+ALT+a"。
注意,有些程序對大小寫字符和 CTRL 鍵相當挑剔,舉例來說,"^A" 可能會被認爲不同於 "^a";第一個代表 CTRL+SHIFT+A,而第二個則代表 CTRL+a. 如果拿不準的話最好使用小寫!
'#'
井號將發送一個 Windows 徽標鍵,因此語句 Send("#r") 將發送 Win+r,這將打開“運行”對話框。
您可以通過設置 SendCapslockMode 從而在 Send 函數開始操作前關閉大小寫切換鍵(大寫鎖,CAPS LOCK)並在完成操作後恢復。
但是,如果在 Send 函數開始執行的時候用戶就按住 Shift 鍵,那麼發送的文本可能會是小寫字符。
一個解決辦法是在每次執行其它 Send 操作前使用語句 Send("")。
某些特殊按鍵必須用花括號括住才能發送:
注意,Windows 不允許模擬 "CTRL-ALT-DEL" 組合鍵!
Send 命令(無標誌參數) 鍵擊結果
{!} !
{#} #
{+} +
{^} ^
{{} {
{}} }
空格
主鍵盤區的 回車鍵
ALT
或 退格
或 刪除(DELETE)
向上箭頭
向下箭頭
向左箭頭
向右箭頭
HOME
END
或 ESC鍵
或 INS(Insert)
PageUp
PageDown
- 功能鍵
TAB
Print Screen key
左徽標鍵
右徽標鍵
{NUMLOCK on} NUMLOCK (on/off/toggle)(開/關/切換)
{CAPSLOCK off} CAPSLOCK (on/off/toggle)(開/關/切換)
{SCROLLLOCK toggle} SCROLLLOCK (on/off/toggle)(開/關/切換)
Ctrl+Break
PAUSE
- 數字鍵盤上的 數字鍵
數字鍵盤上的 乘號
數字鍵盤上的 加號
數字鍵盤上的 減號
數字鍵盤上的 除號
數字鍵盤上的 點號
數字鍵盤上的 回車鍵
Windows 應用程序鍵
左 ALT 鍵
右 ALT 鍵
左 CTRL 鍵
右 CTRL 鍵
左 Shift 鍵
右 Shift 鍵
系統休眠(SLEEP)鍵
按住 ALT 鍵直到發送 爲止
按住 SHIFT 鍵直到發送 爲止
按住 CTRL 鍵直到發送 爲止
按住左徽標鍵直到發送 爲止
按住右徽標鍵直到發送 爲止
{ASC nnnn} 發送 ALT+nnnn 組合鍵
僅支持2000/XP:按下瀏覽器中的“後退”按鈕
僅支持2000/XP:按下瀏覽器中的“前進”按鈕
僅支持2000/XP:按下瀏覽器中的“刷新”按鈕
僅支持2000/XP:按下瀏覽器中的“停止”按鈕
僅支持2000/XP:按下瀏覽器中的“搜索”按鈕
僅支持2000/XP:按下瀏覽器中的“收藏夾”按鈕
僅支持2000/XP:運行瀏覽器並轉到主頁
僅支持2000/XP:切換系統靜音狀態
僅支持2000/XP:減小系統音量
僅支持2000/XP:增大系統音量
僅支持2000/XP:在播放器中選擇播放下一個軌道(影音媒體)
僅支持2000/XP:在播放器中選擇播放上一個軌道
僅支持2000/XP:使播放器停止播放
僅支持2000/XP:使播放器播放/暫停
僅支持2000/XP:運行郵件客戶端程序
僅支持2000/XP:運行播放器(Media player)
僅支持2000/XP:運行用戶程序1(我的電腦)
僅支持2000/XP:運行用戶程序2(計算器)
如果要發送 ASCII 字符 A 則參考下例(相當於 ALT+065,按住ALT鍵並在數字鍵盤上順序按下065)
Send("{ASC 065}")
(在使用兩位數的 ASCII 碼時必須在前面加一個 0,否則將使用 437號代碼頁)。

如果要發送 UNICODE 字符則輸入該字符代碼,例如下例將發送一箇中文字符
Send("{ASC 2709}")
可參考下例重複發送某按鍵:
Send("{DEL 4}") ;連續4次按下 DEL 鍵
Send("{S 30}") ;發送30個字符“S”
Send("+{TAB 4}) ;連續4次按下 SHIFT+TAB
如果要按住(保持按下狀態)某個按鍵(通常用於遊戲中)
Send("{a down}") ;按住按鍵 A
Send("{a up}") ;鬆開按鍵 A
如果要改變 capslock、numlock 和 scrolllock 鍵的狀態,可參考下例:
Send("{NumLock on}") ;打開 NumLock
Send("{CapsLock off}") ;關閉 CapsLock
Send("{ScrollLock toggle}") ;切換 ScrollLock 的狀態
如果要用變量來指定重複發送的次數,參考下例:
$n = 4
Send("+{TAB " & $n & "}")
如果要用變量來指定要重複發送的 ASCII 字符(比如 A),參考下例:
$x = Chr(65)
Send("{" & $x & " 4}")
大多數筆記本電腦的鍵盤上都會有一個特殊的 Fn 鍵,此鍵無法被模擬。
注意,若把標誌參數的值設爲1則“按鍵”參數將被原樣發送。如果某些文本是從變量裏拷貝而來,而您又希望完全按原樣發送這些文本的話,就應該使用這一設置。
例如,先打開 文件夾選項窗口(位於控制面板),然後請嘗試執行下面這些語句:

Send("") 切換到(焦點切換)下一個控件(按鈕、複選框等)
Send("+") 切換到上一個控件
Send("^") 切換到下一個窗口標籤
Send("^+") 切換到上一個窗口標籤
Send("") 可用來切換複選框的選中狀態或點擊某個按鈕
Send("{+}") 通常用來選中某個複選框(如果它“確實是”複選框的話)
Send("") 通常用來取消選中某個複選框
Send("") 完全展開 SysTreeView32 控件內顯示的文件夾
組合 Alt 鍵使用可訪問菜單項,請打開記事本窗口然後嘗試執行下面這些語句:
Send("!f") 表示發送 Alt+f,這是打開記事本的文件菜單的快捷鍵,您還可以試試其它的!
Send("") 移動焦點到下一個菜單項
Send("") 移動焦點到上一個菜單項
Send("") 切換到左邊的菜單或收縮子菜單
Send("") 切換到右邊的菜單或展開子菜單

 

 

說明:在clinet和server通訊時,調用winsocket函數時下斷點
使發送暫停,因此可以在終斷處向上,或向下找到發送內容前所做的操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章