在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Windows消息機(jī)制模擬用戶輸入的方法介紹

冬至子 ? 來源:活魚格勒 ? 作者:鬼人揚 ? 2023-09-07 10:59 ? 次閱讀

Windows 消息機(jī)制API

xiaoxi guanli jizhi

Windows平臺上的應(yīng)用程序是事件驅(qū)動的 ,它們不會顯式地調(diào)用底層函數(shù)以獲得用戶輸入或其它信息,而是等待系統(tǒng)將這些信息提供給它們。同類定義的窗口向系統(tǒng)聲明一個唯一的 窗口過程函數(shù) (Window Procedures)。當(dāng)有關(guān)某一窗口句柄的事件發(fā)生時(比如:鼠標(biāo)單擊這個窗口,或鍵盤向這個窗口輸入一個字符),系統(tǒng)調(diào)用這個函數(shù),把某個特定的消息作為參數(shù)

要向特定的窗口過程發(fā)送消息,Windows提供了以下函數(shù):

圖片

由于lpPrevWndFunc為同一類窗口共有,發(fā)送的消息在被某一窗口處理前事實上可能已被多個窗口接收。本文不會用到這一函數(shù),關(guān)于此函數(shù)的完整定義請參閱:

圖片

這一函數(shù)在中定義,它向唯一的窗口句柄發(fā)送消息,并只在發(fā)送的消息被處理后返回。與之相似的是PostMessageW,它在發(fā)送消息后立即返回,即只將消息添加到目的窗口句柄的消息隊列里,并不等待其處理。

HWND hwnd:接收消息的窗口句柄

(特別地(HWND)0xffff為廣播)

UINT Msg:發(fā)送的消息類型

WPARAM wParam:發(fā)送的消息

LPARAM lParam:發(fā)送消息的附加參數(shù)

實現(xiàn)刷屏

mian dui dui xiang

獲得Windows提供的API函數(shù)后,下面用C++實現(xiàn)。

首先將刷屏過程封裝到一個類中

--------Bomb.h--------

圖片

構(gòu)造類時向構(gòu)造函數(shù)提供刷屏消息的重復(fù)次數(shù)和刷屏消息 (UTF-16格式)

ShowMessage()用于調(diào)試,把當(dāng)前類保存的消息輸出到控制臺上

StartBombing(int)用于開始刷屏,參數(shù)定義開始刷屏前的延時。用戶可在這段延時內(nèi)把鍵盤焦點設(shè)置到目標(biāo)窗口上去,使目標(biāo)窗口句柄或得消息后把消息內(nèi)容加入到文本輸入框中去。此函數(shù)有一個無延遲參數(shù)的重載。

消息內(nèi)容存儲在私有段中一個類型為WPARAM的數(shù)組中(該類型在上文中有介紹),附加消息是一個值為NULL的LPARAM類型——實現(xiàn)本例中的功能不需要向SendMessageW()提供附加消息。

--------Bomb.cpp--------

圖片

圖片

出于某些考量,我們在此不提供主要函數(shù)的定義。在StartBombing()中,程序按用戶設(shè)定的刷屏消息重復(fù)次數(shù)循環(huán)times次,并按消息長度循環(huán)MessageLength,每次將消息字符串中的第j個字符以WH_CHAR模式向所有窗口廣播。獲得鍵盤輸入焦點的窗口會將其加入到文本框中。

在發(fā)送完一條消息后,通過keybd_event函數(shù)模擬一次【回車鍵按下】事件,使目標(biāo)窗口(比如:wechat)發(fā)送消息或換行。

--------Main.cpp--------

圖片

這是應(yīng)用程序入口點。注意它設(shè)置了wcout/wcin的本地化,使其將儲存在WPARAM類型(其本質(zhì)是unsigned int)中的UTF-16數(shù)據(jù)轉(zhuǎn)化為中文字符輸出/輸入。

可見,按以上代碼編譯的應(yīng)用程序已經(jīng)可以完成質(zhì)問馬人王的任務(wù)。然而, 這速度也太慢了?? 這個速度比打字快不了多少,如果這樣的話就沒必要用刷屏軟件了。哪里出了問題呢?

問題在于,如本文開頭介紹:SendMessageW()強(qiáng)制在目標(biāo)窗口過程將消息處理完畢后才返回,這使得整個過程變得相當(dāng)緩慢。

解決方法是顯而易見的:用PostMessageW()取代原函數(shù)。但是這樣做會帶來新的問題:Post函數(shù)只是簡單地把消息加入到目標(biāo)的消息隊列去,之后立即返回。而原程序在Post/Send函數(shù)返回后會調(diào)用keybd_event()模擬一個鍵盤事件。然而,窗口過程處理消息的速度現(xiàn)在看來并不盡如人意,這往往會導(dǎo)致大量字符消息堆積在消息隊列中,最終導(dǎo)致鍵盤事件和消息發(fā)送間不協(xié)調(diào)(比如:微信PC端輸入框中堆積了很多信息而不發(fā)送,因為回車鍵按下事件沒有按正常順序處理)

所以,要兼顧消息的穩(wěn)定性和發(fā)送速度,就要把keybd_event替換成另一個PostMessageW(),使【回車鍵按下】這一事件也像其它字符事件那樣加入到消息隊列中去,這樣就能保證字符消息和回車間的先后順序不變。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7498

    瀏覽量

    163932
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3552

    瀏覽量

    88821
  • C++語言
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    6998
收藏 人收藏

    評論

    相關(guān)推薦

    PCB設(shè)計高速模擬輸入信號走線方法及規(guī)則

    本文主要詳解PCB設(shè)計高速模擬輸入信號走線,首先介紹了PCB設(shè)計高速模擬輸入信號走線方法,其次闡
    發(fā)表于 05-25 09:06 ?9162次閱讀
    PCB設(shè)計高速<b class='flag-5'>模擬</b><b class='flag-5'>輸入</b>信號走線<b class='flag-5'>方法</b>及規(guī)則

    模擬輸入信號的保護(hù)電路

    本文介紹了四種模擬輸入信號的保護(hù)電路的實現(xiàn)方法
    發(fā)表于 09-07 10:38 ?1829次閱讀

    四種模擬輸入信號的保護(hù)電路實現(xiàn)方法

    本文介紹了四種模擬輸入信號的保護(hù)電路的實現(xiàn)方法
    發(fā)表于 03-28 09:55 ?1223次閱讀

    如何破解windows xp 用戶密碼

    ”命令把xpuser01這個用戶升為超級用戶,即可擁有所有權(quán)限。5.最后一步,就是重新啟動計算機(jī),在登錄窗口中輸入剛剛更改的新密碼便可成功登陸。如果你正在為丟失了登陸口令而煩惱的話,不妨試一試此
    發(fā)表于 09-14 11:59

    Windows XP系統(tǒng)隱藏硬盤的方法和技巧

    Windows XP系統(tǒng)隱藏硬盤的方法和技巧 簡單有效的方法就是把存有許多重要文件夾的硬盤分區(qū)全部隱藏起來。下面以在Windows XP系統(tǒng)中隱藏D盤為例
    發(fā)表于 03-19 15:07

    Windows 7最新安裝方法大全

    Windows 7最新安裝方法大全  Windows 7安裝方法可分為:光盤安裝法、模擬光驅(qū)
    發(fā)表于 01-18 09:56 ?533次閱讀

    Windows系統(tǒng)用戶擺脫黑客攻擊的方法

    Windows系統(tǒng)用戶擺脫黑客攻擊的方法 IP被盜用是指盜用者使用未經(jīng)授權(quán)的IP來配置網(wǎng)上的計算機(jī)。目前IP盜用行為非常常見,許多“不法之徒”用盜用
    發(fā)表于 01-27 10:06 ?616次閱讀

    三種單片機(jī)模擬串口方法介紹

    三種單片機(jī)模擬串口方法介紹 模擬串口就是利用51的兩個輸入輸出引腳如P1.0和P1.1,置1或0分別代表高低電平,也就是串口通信中所說的位
    發(fā)表于 02-27 10:41 ?4973次閱讀

    WINDOWS_XP藍(lán)牙虛擬串口設(shè)置方法

    WINDOWS_XP藍(lán)牙虛擬串口設(shè)置方法,可將藍(lán)牙模擬成串口進(jìn)行通訊。
    發(fā)表于 11-10 16:11 ?0次下載

    Windows8圖文介紹

    計算機(jī)基礎(chǔ) Windows 8主要操作及使用方法圖文介紹
    發(fā)表于 12-16 14:41 ?0次下載

    MFC中Windows消息處理機(jī)制解析

    Windows程序和DOS程序的主要不同點之一是:Windows程序是以事件為驅(qū)動、消息機(jī)制為基礎(chǔ) 本人對Windows系統(tǒng)、MFC談不上有深入的了解,但對MFC本身包裝API的
    發(fā)表于 11-07 10:36 ?1次下載

    模擬信號中高斯噪聲對ADC輸入的影響介紹

    本文介紹模擬信號中高斯噪聲對ADC輸入的影響。
    發(fā)表于 11-23 15:34 ?11次下載
    <b class='flag-5'>模擬</b>信號中高斯噪聲對ADC<b class='flag-5'>輸入</b>的影響<b class='flag-5'>介紹</b>

    PLC模擬輸入濾波方法以及優(yōu)缺點的介紹

    輸入濾波通常是限幅濾波、中值濾波、算術(shù)平均濾波、遞歸平均濾波、中值平均濾波、極限平均濾波、一階滯后濾波、加權(quán)遞歸平均濾波、抖動濾波和極限抖動濾波。本文比較介紹了plc模擬輸入濾波
    發(fā)表于 12-13 13:51 ?1813次閱讀

    模擬輸入輸出模塊用戶手冊(詳細(xì)篇)

    本手冊介紹 MELSEC-Q 系列對應(yīng) Q64AD2DA 型模擬輸入輸出模塊 ( 以下簡稱為 Q64AD2DA) 的 規(guī)格、使用、編程方法等有關(guān)內(nèi)容。
    發(fā)表于 08-25 14:47 ?4次下載
    <b class='flag-5'>模擬</b><b class='flag-5'>輸入</b>輸出模塊<b class='flag-5'>用戶</b>手冊(詳細(xì)篇)

    python控制windows窗口,并輸入數(shù)據(jù)

    于實現(xiàn)許多應(yīng)用程序,包括控制Windows窗口以及進(jìn)行數(shù)據(jù)輸入。 本文將以Windows平臺為例,詳細(xì)介紹如何使用Python來控制窗口和實現(xiàn)數(shù)據(jù)
    的頭像 發(fā)表于 11-22 14:11 ?3128次閱讀
    主站蜘蛛池模板: 久久久精品免费| va在线观看| 国内视频一区二区| 国产一级影院| 夜色321看片资源站| 4tube高清性欧美| 网全大全黄| 美女牲交毛片一级视频| 大尺度免费高清在线观看视频| 日本免费色| 婷婷色亚洲| 97色噜噜| 色偷偷亚洲综合网亚洲| 啪啪免费小视频| 国产永久免费爽视频在线| 人人做人人干| 午夜逼逼| 越南黄色录像| 99精品国产高清自在线看超| 好看的一级毛片| 免费观看a黄一级视频| 日本免费黄色网| 色月| 天堂资源中文在线| 亚洲国内精品| 永久黄网站色视频免费观看| 日本不卡专区| 亚洲成年网站| 亚洲日本视频| 亚洲你我色| 亚洲欧美天堂网| 又粗又大又爽又色又过瘾视频| 日本人69xxxxxxxx69| 四虎永久免费地ww4hu57| 黄色靠逼网站| 国产美女视频黄a视频全免费网站| 韩国黄色三级视频| 久操天堂| 国产精品热久久毛片| 成人久久久| 99精品免费视频|