日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Windows托盤氣球通知無效排查:Shell_NotifyIcon字段與系統(tǒng)策略

Windows托盤氣球通知無效排查:Shell_NotifyIcon字段與系統(tǒng)策略 托盤圖標出現(xiàn)在任務欄右下角右鍵菜單響應正常雙擊也能喚出主窗口唯獨調(diào)Shell_NotifyIcon發(fā)出去的那個氣球通知屏幕上一點動靜都沒有——而且返回值還是TRUE。這個現(xiàn)象我前后遇到過三四回每次根因都不一樣有一次是uFlags漏了NIF_INFO有一次是程序被改成后臺常駐方式導致圖標壓根沒掛到 explorer 上還有一次是測試機上把通知和操作的總開關(guān)關(guān)掉了。所以看到氣球通知無效這種描述先別急著翻代碼得先把無效這兩個字拆開判斷它到底屬于哪一類。這篇是寫給正在做 Windows 桌面端常駐托盤程序的人看的以 CWin32為主順帶把 C#WinForms和 WPF 封裝層上的等價坑一起擺出來。讀完至少能做到兩件事一是清楚Shell_NotifyIcon發(fā)氣泡時到底是哪幾個字段在起作用二是手上有一套能自己往下查的鏈路而不是對著屏幕干瞪眼改參數(shù)。氣球通知這東西看著只有幾行 API實際上牽扯到結(jié)構(gòu)體版本、字符集、窗口消息循環(huán)、系統(tǒng)通知策略、會話隔離五個層面任何一層出問題表現(xiàn)都是沒反應所以分層定位比試錯重要得多。1. 三種不彈故障點完全不同1.1 圖標壓根沒進托盤區(qū)這是最容易被跳過的一步。很多人在排查氣泡的時候默認圖標都在那兒了肯定是氣泡的問題但實際情況里圖標顯示正常并不代表NIM_ADD成功過——有一種情況是圖標顯示出來了但那是上一次進程殘留的僵尸圖標鼠標劃過就消失點它也沒反應。真正判斷圖標是否屬于當前進程最簡單的辦法是把鼠標懸停在圖標上看szTip里設(shè)置的提示文字有沒有出現(xiàn)如果提示文字是空白的或者顯示的是別的程序的文字那基本可以確定當前進程根本沒加上圖標氣泡自然無從談起。NIM_ADD失敗的原因里hIcon為空是最常見的一個。Win32 里常見寫法是先LoadIcon或者LoadImage拿一個HICON再填進nid.hIcon。這里有個真實存在的坑如果這個HICON是通過CreateIconIndirect、CopyIcon這類函數(shù)動態(tài)生成的而代碼里又在NIM_ADD之后順手調(diào)了DestroyIcon托盤圖標會立刻變成一塊空白或者花屏。原因是 shell 并沒有把圖標數(shù)據(jù)拷貝走它只是持有了這個句柄你銷毀了它那邊就指向了一塊已經(jīng)失效的內(nèi)存。正確的釋放時機是NIM_DELETE之后再DestroyIcon順序不能反。還有一種更隱蔽的程序被注冊成了服務或者用計劃任務以不管用戶是否登錄都運行的方式啟動。這種進程運行在會話 0Session 0而會話 0 是沒有交互式桌面的Shell_NotifyIcon可能返回成功圖標卻永遠不可能出現(xiàn)在用戶眼前。判斷方法很簡單任務管理器里看這個進程屬于哪個會話如果不是當前登錄用戶的會話號那所有 UI 相關(guān)的 API 都是白搭。另外提一句Windows 11 的托盤區(qū)把默認圖標折疊進了溢出面板用戶不點開小箭頭是看不到的。這不是故障但排查時容易被誤判成圖標沒加進去先確認一下托盤設(shè)置里的隱藏的圖標菜單。1.2 圖標在氣泡死活不出來這一類才是標題里說的情況。此時NIM_ADD是成功的szTip能正常顯示右鍵菜單也能彈唯獨氣泡不出來。常見原因按出現(xiàn)頻率排下來大概是uFlags沒帶NIF_INFO、NIM_MODIFY之前圖標狀態(tài)已經(jīng)丟了、szInfo為空字符串、系統(tǒng)通知開關(guān)被關(guān)閉、發(fā)送氣泡時消息循環(huán)處于阻塞狀態(tài)。uFlags這個問題我在代碼評審里見過不止一次。有人寫了一個UpdateTrayIcon()函數(shù)把NIF_ICON | NIF_MESSAGE | NIF_TIP全填上然后在這個函數(shù)末尾順手填了szInfo和szInfoTitle以為這樣氣泡就會跟著圖標一起更新。實際上Shell_NotifyIcon是嚴格按uFlags位掩碼來決定讀哪些字段的沒置NIF_INFO位szInfo那一段內(nèi)存它連看都不看。同理dwInfoFlags的圖標類型、NIIF_NOSOUND這類標志也都只在NIF_INFO置位時才生效。還有一種是先刪后沒加。某些程序在響應WM_ENDSESSION或者顯示器的WM_DISPLAYCHANGE時會先NIM_DELETE再重新NIM_ADD如果中間某次NIM_ADD因為窗口句柄無效而失敗后續(xù)的NIM_MODIFY就會一直返回失敗氣泡當然也發(fā)不出來。所以我習慣把是否已添加做成一個顯式的狀態(tài)位任何一次NIM_ADD失敗都要記錄下來后續(xù)發(fā)氣泡前先檢查這個狀態(tài)。1.3 氣泡彈了但標題是空的或者全是亂碼嚴格來說這不算無效但它經(jīng)常和無效混為一談因為用戶看到一片方塊或者空白會直接反饋通知沒顯示。亂碼的根因幾乎只有一個結(jié)構(gòu)體用了 ANSI 版本而字符串傳的是寬字符或者反過來。NOTIFYICONDATA在 SDK 頭文件里是通過UNICODE宏展開成NOTIFYICONDATAW或NOTIFYICONDATAA的如果工程屬性里的字符集是使用多字節(jié)字符集而你代碼里寫的是L...編譯器要么報錯要么悄悄截斷最終szInfo里只有一個字符加個結(jié)尾。這個坑在遷移老項目時特別容易踩到。老工程當年是 MBCS后來為了支持多語言整體改成 Unicode結(jié)果某個自己封裝的托盤類里還留著char緩沖區(qū)和新結(jié)構(gòu)體拼接編譯能過跑起來就是亂碼。定位辦法是直接看sizeof(NOTIFYICONDATA)的值Unicode 版本在 x64 下大概是 976 字節(jié)這個量級如果在調(diào)試器里看到cbSize明顯偏小那基本就是字符集或者結(jié)構(gòu)體定義對不上。2. NOTIFYICONDATA 里決定氣泡生死的字段2.1 uFlags、szInfo、szInfoTitle 三者的聯(lián)動關(guān)系先把一段能用的代碼擺出來后面所有的討論都圍繞它展開。下面這段是添加圖標的初始化注意uFlags里沒有NIF_INFO因為添加階段不需要氣泡NOTIFYICONDATA nid { 0 }; nid.cbSize sizeof(NOTIFYICONDATA); nid.hWnd hMainWnd; nid.uID IDI_TRAY; nid.uFlags NIF_ICON | NIF_MESSAGE | NIF_TIP; nid.uCallbackMessage WM_TRAY_CALLBACK; nid.hIcon hTrayIcon; StringCchCopy(nid.szTip, ARRAYSIZE(nid.szTip), L常駐托盤工具); if (!Shell_NotifyIcon(NIM_ADD, nid)) { // 這里一定要留日志后面排查全靠它 }發(fā)氣泡是另一段獨立邏輯uFlags只保留NIF_INFObool ShowBalloon(HWND hWnd, UINT id, const wchar_t* title, const wchar_t* text, DWORD infoFlags) { NOTIFYICONDATA nid { 0 }; nid.cbSize sizeof(NOTIFYICONDATA); nid.hWnd hWnd; nid.uID id; nid.uFlags NIF_INFO; nid.dwInfoFlags infoFlags; StringCchCopy(nid.szInfoTitle, ARRAYSIZE(nid.szInfoTitle), title); StringCchCopy(nid.szInfo, ARRAYSIZE(nid.szInfo), text); return Shell_NotifyIcon(NIM_MODIFY, nid) ! FALSE; }這里有兩個細節(jié)值得說。第一NIM_MODIFY階段uFlags只寫NIF_INFO是完全正確的語義是這次我只改氣泡部分其它字段別動不需要把NIF_ICON再寫一遍。第二szInfo傳空字符串注意不是空指針是長度為 0 的字符串的語義是移除當前顯示的氣泡不是什么都不做。有些代碼在錯誤分支里填了個空字符串當兜底結(jié)果就是看起來什么都沒發(fā)生。字段長度也有硬上限szInfo是 256 個WCHARszInfoTitle是 64 個WCHAR都包含結(jié)尾的空字符。超長會被截斷用StringCchCopy這類安全函數(shù)能保證不出界但內(nèi)容確實會丟。我見過標題寫了一長串路徑導致后面全被切掉的看起來像標題顯示不全其實是長度超限。2.2 cbSize、uVersion 與那個共用體的歷史包袱cbSize是所有NOTIFYICONDATA故障里最隱蔽的一個。這個字段的用途是讓 shell 知道調(diào)用方用的是哪個版本的結(jié)構(gòu)體因為從 Windows 2000 到現(xiàn)在這個結(jié)構(gòu)體加過好幾輪字段。寫sizeof(NOTIFYICONDATA)在正常情況下永遠是對的問題出在兩種場景一是工程引用了很老的第三方 SDK 頭文件結(jié)構(gòu)體定義本身就缺字段sizeof算出來偏小二是用 C# 或其它語言手工定義StructLayout時字段漏了或者順序錯了。第二種場景我踩過。C# 里為了不依賴 WinForms 的NotifyIcon有人會自己DllImport一個Shell_NotifyIcon然后手寫一個NOTIFYICONDATA結(jié)構(gòu)體。少寫一個guidItem或者把uTimeout的位置寫錯編譯一點問題沒有運行起來cbSize對不上NIM_ADD直接返回FALSE。這種情況在調(diào)試器里看一眼cbSize和預期值差多少基本就能定位。再說uVersion。NOTIFYICONDATA里uTimeout和uVersion是共用同一塊內(nèi)存的union { UINT uTimeout; UINT uVersion; };也就是說你不能在同一次調(diào)用里既設(shè)超時又設(shè)版本號。設(shè)置版本要用NIM_SETVERSION把uVersion填成NOTIFYICON_VERSION_4這個動作會改變后續(xù)回調(diào)消息的編碼方式——lParam的低字是消息 ID高字是圖標 ID。很多人加了NIM_SETVERSION之后發(fā)現(xiàn)右鍵菜單不彈了就是因為回調(diào)處理還在按老格式解析lParam。所以這條命令不是加了更好而是加了就得改回調(diào)。NOTIFYICON_VERSION_4還有另一個副作用uTimeout被徹底忽略氣泡停留時長完全由系統(tǒng)的輔助功能設(shè)置決定。如果你有代碼依賴精確控制氣泡顯示 3 秒還是 10 秒那在 v4 下是做不到的。2.3 dwInfoFlags 里幾個會反向生效的標志dwInfoFlags決定氣泡左側(cè)那個小圖標的樣式常見取值是NIIF_NONE、NIIF_INFO、NIIF_WARNING、NIIF_ERROR、NIIF_USER。前四個都是系統(tǒng)內(nèi)置圖標直接寫就行NIIF_USER則需要額外配合hBalloonIcon字段。這里有個真實的坑NIIF_USER置位但hBalloonIcon留空時不同 Windows 版本的處理不一致有的版本回退到hIcon有的版本干脆畫一個默認圖標還有的版本會導致整個氣泡不顯示。我現(xiàn)在的做法是要么不用NIIF_USER用就老老實實把hBalloonIcon填上別指望系統(tǒng)幫你兜底。另一個有意思的標志是NIIF_RESPECT_QUIET_TIMEWindows 7 引入的。置位之后如果系統(tǒng)處于安靜時間現(xiàn)在叫專注助手這條氣泡會被直接丟棄不是延遲顯示是丟棄。這個標志的設(shè)計初衷是尊重用戶不想被打擾的意愿但如果你的程序發(fā)的是關(guān)鍵提醒置了這個位就等于主動放棄了顯示機會。反過來如果你不置這個位系統(tǒng)在某些版本上仍然會按全局策略抑制橫幅——這一點各版本行為不完全一致所以不要用它來做能不能顯示的開關(guān)。NIIF_NOSOUND相對簡單加上就不響提示音。有個細節(jié)是它不影響氣泡本身的顯示只影響聲音所以別把它和靜音模式下氣泡不顯示混為一談。3. 代碼沒問題但屏幕沒反應系統(tǒng)層攔在哪3.1 通知總開關(guān)、專注助手與安靜時間這是排查時最容易漏掉的一層因為它不在你的代碼里而在用戶的機器上。Windows 10 之后系統(tǒng)設(shè)置里有一個通知和操作的總開關(guān)關(guān)掉之后所有應用的通知全部靜默下面還有按應用細分的開關(guān)以及專注助手的幾種模式關(guān)閉、僅優(yōu)先通知、僅鬧鐘。Shell_NotifyIcon發(fā)出的氣泡在 Windows 8 之后已經(jīng)被系統(tǒng)當作通知來管理了所以它會完整地受這些開關(guān)影響。表現(xiàn)是Shell_NotifyIcon返回TRUE氣泡不出現(xiàn)通知中心里也找不到。這種情況你改一萬行代碼都沒用。排查手段是讓測試機恢復到默認狀態(tài)通知總開關(guān)打開、專注助手關(guān)閉、當前應用在通知列表里處于允許狀態(tài)。還有一點如果程序以管理員權(quán)限運行而系統(tǒng)設(shè)置里的通知是按應用配置的某些版本下管理員進程的通知配置和普通進程不是同一份表現(xiàn)就是普通權(quán)限下能彈、提權(quán)后不彈。這個差異在不同系統(tǒng)版本上表現(xiàn)不一致我的做法是測試矩陣里固定包含普通權(quán)限和管理員權(quán)限兩行別只測一種。老系統(tǒng)上還有一個注冊表開關(guān)HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced下的EnableBalloonTips值為 0 時禁用氣球提示。這個鍵在新系統(tǒng)上是否仍然生效取決于版本但在 Windows 7 時代它是標準的關(guān)閉方式排查老環(huán)境時值得看一眼。組策略里也有對應的關(guān)閉通知氣球提示項域環(huán)境下的機器可能被統(tǒng)一下發(fā)。3.2 會話與用戶身份Session 0 和 RunAs 的死角前面提過會話 0 的問題這里展開說。Windows 的服務宿主機制決定了服務進程運行在會話 0那是一個沒有交互式桌面的獨立會話。任何在會話 0 里調(diào)用的 UI 相關(guān) API包括Shell_NotifyIcon、MessageBox、CreateWindow要么失敗要么創(chuàng)建一個用戶永遠看不到的窗口。這個問題在實際項目里通常表現(xiàn)為開發(fā)機上好好的裝到客戶機上就沒通知。區(qū)別在于開發(fā)機是雙擊 exe 運行的客戶機上是通過服務或者計劃任務啟動的。定位方法是在任務管理器里加一列會話 ID看進程對應的數(shù)字是不是和當前登錄用戶一致。如果不一致那問題不在代碼在于部署方式——要么改成用戶登錄后自啟動要么用會話隔離機制把 UI 部分拆成一個運行在用戶會話里的獨立進程。還有一種情況是以另一個用戶身份運行比如右鍵以其他用戶身份運行或者用憑據(jù)管理器啟動。這時圖標會加到那個用戶的托盤里當前登錄用戶看不到但那個用戶如果同時在線快速用戶切換在他自己的桌面里是能看到圖標的?,F(xiàn)象就是我這邊沒圖標但換個賬號登錄就有了很容易被誤判成偶發(fā) bug。3.3 Windows 8 之后氣球改頭換面成 Toast這條屬于知道就行不知道會繞遠路的范疇。從 Windows 8 開始Shell_NotifyIcon發(fā)出的氣球通知在視覺上已經(jīng)變成了 toast 樣式——從屏幕右下角滑入、停留幾秒、然后收進通知中心。接口沒變樣式變了。這個變化帶來兩個實際影響。第一通知中心會成為這些氣泡的歸檔地用戶在通知中心里能看到歷史消息這意味著重復發(fā)同一條消息的行為和老系統(tǒng)不一樣了老系統(tǒng)上重復發(fā)會不斷彈新的新系統(tǒng)上可能出現(xiàn)合并或者覆蓋。第二某些系統(tǒng)版本上如果程序沒有設(shè)置AppUserModelID通知在系統(tǒng)里的歸屬會是一個默認的宿主表現(xiàn)是通知列表里看不到你的應用名用戶在設(shè)置里想允許你的通知都找不到對應條目。設(shè)置AppUserModelID的 API 是SetCurrentProcessExplicitAppUserModelID在進程啟動早期調(diào)用。如果對通知的可靠性要求比較高其實可以考慮直接走 Toast 通知那套接口代價是需要注冊快捷方式、需要處理激活回調(diào)工程復雜度上一個臺階。托盤氣球勝在簡單二十行代碼就能跑Toast 勝在可控能拿到點擊、能進通知中心歸檔、能被用戶精細管理。選哪個取決于你的通知是順手提示一下還是業(yè)務流程的一環(huán)。4. 一條能自己走完的排查鏈路4.1 用三十行最小工程把業(yè)務代碼摘出去我處理這類問題的固定第一步是新建一個空的 Win32 工程只保留一個隱藏主窗口、一個托盤圖標、一個定時器定時器每三秒發(fā)一次氣泡。這個工程大概三十行寫完不超過十分鐘。之所以要先做這一步是因為在真實項目里氣泡不顯示可能是業(yè)務邏輯、線程調(diào)度、窗口生命周期三者疊加出來的你直接在里面改參數(shù)改一次跑一次變量太多判斷不了哪個改動起了作用。最小工程的骨架大致是這樣LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CREATE: AddTrayIcon(hWnd); SetTimer(hWnd, TIMER_BALLOON, 3000, nullptr); return 0; case WM_TIMER: if (wParam TIMER_BALLOON) { ShowBalloon(hWnd, IDI_TRAY, L測試標題, L這是一條測試氣泡, NIIF_INFO); } return 0; case WM_DESTROY: RemoveTrayIcon(hWnd); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, msg, wParam, lParam); }如果這個最小工程能彈氣泡說明 API 用法和系統(tǒng)環(huán)境都沒問題問題在你的業(yè)務代碼里如果彈不出來說明問題在環(huán)境或者調(diào)用方式上接下來往系統(tǒng)層查。這一步能省掉一半的排查時間。4.2 返回值、窗口消息、監(jiān)視工具三處取證最小工程也不彈的時候取證要分三路走。第一路看返回值。Shell_NotifyIcon返回FALSE說明 shell 明確拒絕了這時基本可以鎖定字段錯誤cbSize不對、hWnd無效、uID沖突。返回TRUE但無顯示說明接收端沒問題問題在展示端系統(tǒng)策略、會話、桌面可見性。這兩條分支的排查方向完全相反所以返回值必須看。第二路看窗口消息。如果要做氣泡點擊響應uCallbackMessage指定的消息會在氣泡被點擊時發(fā)到你的窗口。用一個能抓窗口消息的工具掛在目標窗口上觀察發(fā)氣泡前后有沒有WM_USER范圍內(nèi)的消息流動。這一步主要是確認 shell 到底有沒有收到請求。第三路看系統(tǒng)狀態(tài)。通知設(shè)置、專注助手、會話 ID、是否提權(quán)這四項各花一分鐘確認比讀一天文檔有用。我現(xiàn)在的習慣是在程序的關(guān)于頁面里放一個隱藏的診斷入口一鍵打印這幾項狀態(tài)客戶反饋問題時讓他截個圖能省掉好幾輪來回?,F(xiàn)象優(yōu)先懷疑驗證方式NIM_ADD返回 FALSEcbSize、hIcon為空、窗口句柄無效調(diào)試器里看cbSize與sizeof是否一致圖標在氣泡無返回值 TRUEuFlags漏NIF_INFO斷點檢查發(fā)送時的uFlags值圖標不在氣泡無會話 0、圖標句柄被提前釋放任務管理器看會話 ID檢查DestroyIcon時機氣泡出但標題空白字符集不匹配看sizeof(NOTIFYICONDATA)與工程字符集設(shè)置時好時壞消息循環(huán)被阻塞、定時器被搶占檢查主線程是否有長耗時同步操作特定機器必現(xiàn)通知開關(guān)、專注助手、組策略重置通知設(shè)置為默認后復測4.3 把什么時候不彈記錄成日志這一點聽起來平淡但它決定了后續(xù)排查是幾天還是幾小時。我在托盤模塊里加了一組固定的日志點NIM_ADD的結(jié)果、NIM_DELETE的結(jié)果、每次發(fā)氣泡前的uFlags和dwInfoFlags值、發(fā)氣泡的返回值、當前進程的會話 ID 和是否提權(quán)。這些信息加起來不到二十行代碼但客戶現(xiàn)場出問題時看一眼日志就能把范圍縮小到一兩個方向。有個細節(jié)日志里不要把szInfo全文打進去用戶數(shù)據(jù)可能很長也可能包含不該落盤的內(nèi)容打個長度和標題就夠了。5. 托管封裝層WinForms 與 WPF 的等價坑5.1 NotifyIcon.ShowBalloonTip 的前置條件C# 的 WinForms 里NotifyIcon類把Shell_NotifyIcon包了一層接口看著簡單坑一樣不少。ShowBalloonTip(int timeout)要能生效至少得滿足三個條件Visible為true、Icon不為null、圖標已經(jīng)被系統(tǒng)接受。第一個條件是硬性的Visible false時調(diào)ShowBalloonTip不拋異常也不顯示最容易漏。第二個條件很多人以為只要給Icon賦值就行實際上如果你是從資源文件動態(tài)加載圖標流用完順手把StreamDispose掉了Icon對象的內(nèi)部句柄可能已經(jīng)失效表現(xiàn)就是托盤圖標顯示成一塊空白氣泡也跟著不顯示。第三個條件在窗體生命周期早期容易出問題。在Form_Load里立刻調(diào)ShowBalloonTip有些機器上不生效因為這時窗口句柄剛創(chuàng)建托盤圖標還沒真正掛上去。穩(wěn)妥做法是Load之后用BeginInvoke推遲到消息隊列下一輪再調(diào)或者在Shown事件里調(diào)。timeout參數(shù)在 Vista 之后基本被忽略了實際時長由系統(tǒng)的輔助功能設(shè)置決定。這一點和老系統(tǒng)不一樣如果產(chǎn)品文檔里寫了氣泡顯示 5 秒最好改成約 5 秒實際由系統(tǒng)設(shè)置決定免得后面被當成 bug 提。5.2 消息泵被堵住時氣泡會遲到Shell_NotifyIcon內(nèi)部是通過窗口消息和任務欄通信的這意味著它依賴調(diào)用線程的消息循環(huán)。如果主線程正在跑一個長耗時同步任務比如讀一個大文件、等一個網(wǎng)絡(luò)請求、跑一段密集計算那么即使你在另一個線程里調(diào)ShowBalloonTip調(diào)用也可能被卡住直到主線程的消息泵重新轉(zhuǎn)起來?,F(xiàn)象很有迷惑性日志顯示已發(fā)送氣泡但用戶是在幾秒甚至幾十秒之后才看到或者干脆看不到因為已經(jīng)過了時效。這類問題在后臺任務完成時彈通知的場景里特別常見因為后臺任務完成的時刻主線程往往正在刷新界面。處理辦法是有的把耗時任務放到后臺線程主線程只負責 UI或者在不依賴NotifyIcon對象的場景下用一個獨立的隱藏窗口在自己的線程里跑消息循環(huán)來處理托盤消息。后者工程量大些但如果托盤邏輯要脫離主窗口獨立存活比如主窗口可以關(guān)閉但程序不退出這個結(jié)構(gòu)反而更清晰。WPF 這邊沒有內(nèi)置的托盤圖標控件社區(qū)里常見的做法是引用 WinForms 的NotifyIcon或者用第三方庫。第三方庫如果自己實現(xiàn)了Shell_NotifyIcon的互操作那前面說的cbSize、uFlags、字符集三件事依然適用換語言不換原理。選庫的時候可以看一眼它有沒有處理NOTIFYICON_VERSION_4沒處理的話右鍵菜單的坐標計算在某些機器上會偏。6. 把這套東西做成不容易再出問題的結(jié)構(gòu)6.1 用一個帶狀態(tài)位的發(fā)送函數(shù)收口在項目里我最后的做法是把托盤的添加刪除發(fā)氣泡三個動作集中在一個小模塊里模塊內(nèi)部維護一個bool added狀態(tài)位任何一次NIM_ADD成功才置位NIM_DELETE后清零。發(fā)氣泡的入口函數(shù)第一件事就是檢查這個狀態(tài)位沒置位就先嘗試添加一次。這樣不管上層怎么調(diào)用都不會出現(xiàn)圖標沒了還在發(fā)氣泡的靜默失敗。同時這個模塊對外只暴露一個ShowBalloon(title, text, level)函數(shù)level是個枚舉映射到NIIF_INFO、NIIF_WARNING、NIIF_ERROR。這樣上層不需要知道dwInfoFlags的存在后面如果要換實現(xiàn)比如換成 Toast 通知改動面只在一個文件里。還有一個小設(shè)計發(fā)氣泡函數(shù)返回一個枚舉區(qū)分發(fā)送成功、發(fā)送失敗、系統(tǒng)策略可能抑制三種結(jié)果。第三種判斷不了那么準可以根據(jù)會話 ID 和通知開關(guān)做個粗略推斷。有這個返回值上層在做關(guān)鍵提醒時就能選擇走別的通道比如閃爍任務欄、改托盤圖標顏色而不是把所有希望都押在氣泡上。6.2 退出時的清理和僵尸圖標NIM_DELETE一定要在窗口銷毀之前調(diào)而且要用和NIM_ADD完全相同的hWnd和uID。我見過填錯uID導致圖標刪不掉的情況表現(xiàn)是程序退出后圖標還掛在那兒鼠標劃過才消失。這不僅僅是觀感問題——殘留的圖標會占用那個uID下次啟動如果復用同一個 ID行為可能不可預期。另一個清理時機是WM_ENDSESSION系統(tǒng)關(guān)機或者注銷時程序不一定能走完正常的退出流程。在這個消息里補一次NIM_DELETE能減少殘留。還有崩潰場景進程直接掛掉不會執(zhí)行任何清理代碼圖標一定殘留這個沒辦法只能靠系統(tǒng)自己回收。如果程序支持多實例uID的分配要小心。兩個實例用同一個hWnd和uID是不可能的hWnd天然不同但如果用了自己生成的guidItem標識兩個實例可能會互相覆蓋。多實例場景建議用單實例機制直接禁掉或者在guidItem里加入進程相關(guān)的區(qū)分信息。6.3 版本差異下的降級策略不同 Windows 版本對氣泡的處理差異實際項目里沒必要逐一適配但有三條底線值得守住。第一條不要在NIM_ADD的時候一次性把NIF_INFO也帶上試圖順便彈個氣泡添加和修改分成兩次調(diào)用邏輯清晰出問題也好定位。第二條NIM_SETVERSION只在確實需要 v4 的回調(diào)格式時才調(diào)調(diào)了就同步改回調(diào)解析邏輯兩者必須一起改。第三條uTimeout不要依賴需要多停留一會兒的需求用重復發(fā)送或者改成帶交互的通知來實現(xiàn)更好別指望這個字段。我在實際項目里的體會是托盤氣泡這個功能的問題密度和代碼量完全不成比例——二十行代碼的功能可能需要幾百行的排查經(jīng)驗來兜底。所以能把它封裝干凈就封裝干凈別讓業(yè)務邏輯直接碰NOTIFYICONDATA后面換人維護或者系統(tǒng)升級改一個文件就夠了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
高清无码网址| 精品人妻视频入口| 无码久久国产 | 亚洲日韩成人性爱视频| 亚洲国产剧情少妇激情| 国产成人主播| av天堂影视中文在字幕在线中文 | 无码精品蜜桃一区二区三区ww| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 久久国产精品91| 神马久久啊啊| …中文字幕亚洲乱,97人妻无码费视…| 欧美激情高清性猛交| www久久国产精品| 无码逼| 丁香六月天| 亚洲精品 超碰| 超碰这里有精品| 男女啪啪网站免费视频| 人人干人人搞人人摸| 天美av在线观看| 超碰天天操你比| 久久久涩| heyZO天然素人无码AⅤ专区| 日韩久久三区| 激情小说亚洲视频| 人妻性爱一区二区| 五月天色色色| 伊人久久亚洲中文字幕不卡| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 日韩性爱1级片视频| 中国国国产一级特黄毛片| 亚洲激情综合| 小骚逼被操的爽不爽| 天天久久| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 伊人991| 97超碰大| 思思热影视| 亚洲美女精品| 青青草好吊色| 在线观看日韩av不卡| 爆乳免费黄网站| 国产精品对白自产拍| 妇女性内射冈站HDWWWCOM| 丁香五月激情综合国产| 青青操视频在线| 激情小说亚洲| 五月婷婷激情网| 亚洲综合九| 日韩欧美日韩| 婷婷色五月激情| 欧美老妇综合网| 风韵犹存大大大大香蕉| 色青青久久影视| 日韩熟女精品无码专区一区二区 | 2017天天插| 操逼操逼视频操逼| 极品粉嫩少妇视频| 免费αV在线视频| 久久精品人体AV| 天天插天天操天天摸天天射天天看| 美女久久久久久久久久久| 在线中文字幕极品av| 欧美天堂日韩三级国产传媒| 国产精品香蕉| 亚洲精品819| 台湾佬大香蕉| 国模精品一区二区三区苹果色戒| 91久久久久久久| 吖在线不卡一区二区国产剧情 | 九九黄色视频在线观看| 在线电影亚洲色图| 近亲乱伦一区二区| 97这里有精品| 屌色在线97视频| 无码二级三级| 91精品久久久久久综合五月天| 九九国产热| 丰满美女一级毛片在线播放| 国产老熟女| 操东北女人| 99精品在线观看| 精品国产乱码久久久久久久久久毛片 | 久久偷拍人| 综合网天天| 天天干美少妇一区| 少妇蜜汁| 国内精品久久人妻性色av| 久久人妻四季| aaaa少妇高潮大片| 91制服丝袜| 亚洲啪啪性视频| 人伦四五区| 99精品成人免费看| 九九九国产精品| 天堂种子在线www网资源| 色偷偷男人的天堂麻豆| 韩国一级做A片免费的| 亚洲 综合 第一页| JIZZJIZZ国产精品喷水| 视频二区美腿制服人妻欧美| 婷婷色中文字幕| 亚洲综合在线91| 九九九九久久久| 日韩在线观看三级电影| 亚洲熟妇乱女区二区三区| 久久这里只精品免费福利| 天天日天天舔东京热| 精品成人动漫一区二区| 人妻丝袜二区| 精品国产一区二区久久| 免费亚洲黄色视频在线观看 | 天天综合网~91| 97免费在线视频在线观看| 欧美日韩*字幕一区| 人人澡综合涩| 一起草日韩| 中文字幕午夜精品久久久| 99热这里只有精| 激情综合网亚洲| 国产熟女| 思思热免费视频观看| 亚州欧美综合| 成人无码专区精品视频| 26uuu国产日韩综合在线观看| 中文字幕免费在线观看| 欧美色图天堂网m| 亚洲一区二区中文字幕| 91欧洲入口| 欧美.亚洲.另类.丝袜.制服.诱惑| 久久久久亚洲三级电影| 色妇综合网| 伊人影院在线理论播放| 强奸乱伦Av网| yazhououmeizongya| 一区中文字幕二区日韩| 日韩中文字幕视频在线观看| 国产最火爆久久国产网站网站| 1024午夜激情男人的天堂| 婷婷五月天成人网| 婷婷色综合欧美日韩| 久草精品一区 | 欧美翘臀视频网站一区二区三区| 日韩啪啪啪视频| 偷窥自拍A片| 国产无马在线| 日韩精品三级| 强奸熟女一区二区三区| 中文无码一二三区| 日韩欧美俄罗斯A片| 97免费在线观看| 欧美91久久久久| 99热免费| 99ri在线视频| 免费在线黄片视频| 亚洲本色精品一区二区久久| 日韩精品人妻中文字幕不卡乱码| 欧美伦乱爱| 丁香六月婷婷久久综合| 国产成人精品亚洲日本| 性在久久久久久| 青青青青操国内视频在线| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 欧美性色欧美| 久久久免费高清中文视频| 第二页中文字幕| 亚洲色综合| 国产亚洲女v在线观看| 国产精品人妻无码久久久老鸭窝| rivers-china.com| 日日干夜夜骑| 天堂射| 久久久久久中文字幕中文字幕最新| 国产一级137片内射麻豆| 色噜噜狠狠色综无码久久合欧美| 色97综合中文字幕| 亚州九九九精品视频| 中文久久一区| 欧美中文字幕男人天堂久久精品| 亚洲欧美日韩综合在线尤物| 日本三级日本三级99| 淫荡少妇免费| 午夜a成v人电影| 天天躁日日躁狠狠躁| 风间由美日韩欧美久久| 亚洲脚交| 国产AV天美传媒一区二区三区 | 插插综合网天天影视网| 成人一级二级| 亚洲日本天堂| 人妻免费观看| 自拍欧美| 日本好吊色视频| 亚洲综合校园春色| 97bbn| www.高清无码诱惑一区.com | a人片中文字幕一区二区| 嗯~啊~快点 死我视频| 五月天激情网站| 亚洲av淫乱| 日逼国产| 高跟丝袜AV专区国产| 中文字幕人成乱码熟女香港| 日韩精品在线观看观看| 全球成人中文在线| 五月丁香激情综合| 九九色逼| 99爱久久视频频| 激情五月丁香五月| 日韩欧美亚洲国产日韩| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 精品久久99| 久久曰曰| 欧美亚洲日韩人妻在线观看| 人妻啊啊人妻啊| 色噜噜狠狠色综无码久久合欧美| 精品久久99| 色婷婷丁香五月| 禁片 高清 在线观看视频网站| 性爱久久| 欧美日韩222| 精品网站99999| 91N综合在线| 黑人与人妻| 精品97精品97| 亚洲成人AB| 啊啊啊好舒服视频| 精品人成视频在线观看| 操逼操逼逼操操逼91| 亚洲欧美日韩夜夜| 亚洲1区| 亚洲 se图 欧美电影| 亚洲熟女综合| 久久久精品久久| 东北老熟女| 熟女人妻精品一区二区视频| 粉嫩av平台| 精品国产Av无码久久久亚洲| 激情小说成人日本无码一| 中国一区二区亚洲人妻| 亚洲激情综合| 五月婷婷hd| 制服诱惑亚洲一区二区三区在线观看| 国产中文字幕在线观看| 国产精品爆乳懂色蜜乳| 午夜福利av电影在线| 欧美一区二区亚洲天堂| 国产怡红院| 丝袜亚洲91| 男人的天堂VA| 蜜臀99久久精品久久久懂爱| 激情网色| 夜夜一区二区| 动漫av中文| 操熟女91| 国产大学生口爆吞精合集| 啊v视频在线观看| 九九热免费国产视频婷婷伊人五月| 天天摸天天插天天日| 亚洲欧美setu| 99热婷婷一区二区三| 影音先锋乱伦资源| 婷婷六月色| 91撸色网 玖玖网 欧美| 老司机香蕉久久久久| 久草尤物| 91人妻PORNY九色大屁股| 亚洲五区熟女| 熟女精品日韩一区二区三区| 久久人人爽爽人人爽人人片αV| 91精品丝袜在线观看| 粉嫩国产精品久久粉嫩| 操少妞在线视频| 97se亚洲综合自| 色色色色日本| 91在线欧色| 欧美日韩系列| 91久久免费视频互動交流| 国产久久久久久久久一区二区| 爱干爱射网啊啊啊| 久久久月天| 成年人三级黄色片视频| 粉嫩国产精品久久粉嫩| 麻豆黄站| 亚洲另类小说卡通动漫| 日韩av女优在线免费一区| 欧美天堂超碰97| 亚洲一区中文精品| 亚洲欧美大香蕉| 亚洲偷拍欧美激情| 人妻偷拍一区二区三区| 久久久一区二区三区四曲免费听| 亚洲91大片| J?P?NESEHD熟女熟妇伦| 亚洲一区深夜| 这里只有精品97| 国产人妖视频一区在线观看| 久久蜜色情在线视频xxx免费观看| 91亚洲最新在线| 亚洲成?V人片在线观看福利| 欧美综合第一| 国产v片在线免费观看| 六月丁香网| 蜜桃午夜视频一区二区| 伊人黄色视频免费观看| 日韩美女高潮喷水视频| 成人性爱免费播放| 天天干天天做| 91综合在线| 蜜桃色色网站视频三区| 欧美成人精品欧美一级乱黄一区二…| 日韩午夜精品一区二区三区电影| 日本免费一区二区不卡 | 国产性久久久| 亚洲高清视频在线观看| 欧美日韩在线视频网站| 欧美激情总合网| 四虎av在线| 美女黄频a美女大全免费皮| 亚拍在线| 天堂中文资源在线bt| 少妇极品熟妇人妻无码| 国产亚洲精品美女久久久| 嗯~啊~快点 死我视频| 久久神马| 手机av天堂久久久久| 亚洲无992tv| 爱射综合| 日韩视频中文字幕| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 久久草大香蕉| av中亚| 天天综合AV| 国产高清午夜成人在线观看| 九九九久千久久激情蜜桃在线看 | 国内操逼视频二区| 人人看人人插| 97操在线| 免费在线观看国内色片网站网址| 玖玖爱伊人玖玖爱| 日本 欧美 国产一区| 天天综合网AV91| 成人免费在线网站| 91bbbbbb| 熟女丝袜视频| 夜夜操美女| 好屌色综合| 乳欲人妻办公室奶水| 日韩精品人妻中文字有码在线| 在线一道啪| 日韩精品国模| www.久久| 一个色导综合| 国偷自 一区二区| 另类专区在线观看| 91色香| 久久9精品视频| 性爱视频免费网址| 婷婷九月国产| 五月丁香综合网| 少妇高潮一区二区三区在线| 夜夜操91744565| 超清福利精品视频在线| 国产91专区| 五月天婷婷综合| 国产激情视频一区区三区| 色色99| 一级啊性爱在线视频| 深夜激情| 亚洲中文字幕日产无码久久| 入口操逼网站| 后入式免费视频| 欧美久久婷婷| 欧美婷婷五月天| av中亚| 欧日韩在线观看| 色青青久久影视| 亚洲 暴爽 AV人人爽日日碰| 精品成人女人久久| av中文字幕在线熟女| 色y情视频免费看| 舔舔啊| 天天狠| 日韩性爱1级片视频| 天天爽入口| 欧洲乱码一区二区| 人妻-91porn| 午夜性生活av免费在线看| 九九九精品一区二区无码| 成人片在线播放| 亚洲AV成人精品网站在AV| 大屁股国产在线视频| 猛交交| 国产51色综合久久免费| 美欧色综合| 男人网站婷婷| 熟女丝袜视频| 亚洲欧美在线观看2021| 超碰在线人人射| 国产人妻一区二区三区欧美毛片| www.亚洲黄色| 亚洲精品久久久久久| Av色五月| 午夜精品久久久久久久99蜜桃一| 3PAV乱伦视频| 91丝袜人妻| 91视频观看网站| 五月婷婷爱六月丁香色| 色黄色美女大长腿午夜视频| 亚洲无线观看久久| 人妻精品一区二区三区| 久久久久久少妇| 日韩天堂av电影在线观看| 99热99在线| 蜜乳Av成人片网站| 国产高清亚洲日韩一区| 一卡二卡三卡| 亚洲天天影视色综合| 亚洲精品819| 免费看欧美美女黄色大片| A片A5445444| 亚洲综合首页| 欧美姓爱综合网| 99re6国产精品99re| 蜜臀亚洲中文| 欧美性爱97超碰| 91GD.COM| 人人操人人大香蕉| 成人精品一区二区91毛片不卡| 久草午夜| 婷婷激情四射| 91蜜臀人妻中文字幕在线| 老女人碰碰在线碰碰视频| 美女啊啊啊啊啊啊啊| 亚洲色欲天天人妻无码系列专区| 大香网站| 家庭乱伦性爱av| 高潮毛片无遮挡高清免费| 黑人精品一区二区在线播放| 亚洲av性爱电影| 蜜臀久久99精品久久久久久酒店| 国产麻豆91欧美一区二区久久婷婷国产精品| 自拍视频大全亚洲专媒视频/一区二区三区 | 久久精品国产亚洲AV片多多| 天操天操夜操夜月月年年操操| 青青草白白色| 蜜桃精久三区| 欧美日韩人人精品| 日韩伦理视频| 肉丝网站91| 国产视频三区四区| www.色五月| 亚洲欧美精品一区天堂久久 | 91 综合 色| 蜜臀久久久国产| 丰满精品人妻少妇久久字幕| 国产污视频麻豆传媒一区二区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 五月丁香婷婷色| 国产乱伦性爱AV| 一区二区三区激情在线观看| 日韩精品一区二区三区色欲| 色婷婷丁香五月天| 色婷婷影院| 亚洲天堂,男人| 五月香婷婷| 丁香五月大香蕉| 九九在线视频| 翘臀vidoes| 黄色成品网站| 高跟伊人julia ann| 亚洲少妇在线影音| 97视频900| 99热99re6国产在线播放| 亚洲91射| 久久久新亚洲AV| CCYY草草影院地址入口| 国产又黄又爽又刺激久久久久久| 日韩亚洲中文字幕在线| 激情啪啪拍91| 亚洲男人天堂Av| 成人av福利在线观看| 最新国内自拍av免费| 亚洲精品xxx| 色色五月丁香| av婷婷色网| 亚州色站 日韩电影| 亚洲老司机123专区| 久久久91福利姬| 国产嫩草精品A88AV| 屁股久久久久久久久久| 亚洲欧洲中文日韩女优乱码| 亚洲精品国产熟女久久久久久| 国产精品无码论坛| 九九视品黄色| 久久久久久久久久久久黄色| 亚洲天堂美臀在线| 91亚洲综合在线| 另类亚洲一区二区三区| 欧美系列在线一区二区| 91丝袜美女国产| 欧美老妇女内射网址| 精品一区二区久久| 亚洲97在线观看| 制度丝袜99| 国产精品亚洲一区二区三区四区| 精品久久在线区一区| 日本999精品| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 四虎884a| 国产精品97超碰| 夜夜骑夜夜操| 特级丰满少妇一级AAAA爱毛片| 天天爽天天操| 青娱乐手机日韩在线视频| 另类欧美综合| 97精品熟女少妇一区| 大香蕉婷婷| 中文字幕版| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 动漫区日韩区欧美区| 欧美综合色| 国产精品盗摄 偷窥盗摄| 伊人五月天| 97欧美精品综合| 欧美午夜熟妇黑人精品91| 性爱网站一区二区| AV九九| 欧美性爱一内片一区二区三区| 精品无码人妻一区二区免费蜜桃| 天天综合网91| 亚洲黄色网址视频| 大香蕉伊人在线成人AV在线观看 | 打av高清| 亚洲毛片久久| 欧洲一级性爱视频在线观看| 亚洲AV资源| 欧美综合色,www| 亚州AV无码国产精品| 欧美日韩淫加| 欧美 亚洲 在线| 日本视频一区二区三区| 成人色女网| 91殴美| 亚洲第一在线视频| 少妇内射视频| 老司机深夜18禁污污网站| 五月开心网| 亚洲人妻久久久| 试看日韩黄片| 丁香九月激情| 久久精品女同亚洲女同13| 老熟女搡BBBB搡BBBB视频| 97国产超湿| 色老大| 顶级丝袜熟女一区二区三区| 嗯嗯啊啊好疼| 中文字幕精品免费一区二区| 97天天爽| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 色成人Www精品永久观看| 国产又大又粗又长视频在线| 玖玖爱影院| 99色色网| 啊啊啊啊免费视频| 国产欧美日韩在线不卡第一页| 天天摸天天舔天天操| 无码操逼天堂| 免费又黄又裸乳的视频| 天堂资源欧美| 亚洲在线欧美| 丁香五月激情啪啪| 日本媚薬中文字幕在线| 99操逼| 91情色在线| 婷婷久久网| 新怡红院| 六月丁香网| 九九九999久久久网站| 曰韩无码777| 日产精品久久久一区二区| 99热只有这里有精品| 狠狠躁日日躁夜夜躁A| 一级黄色性爱A级片| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 国产乱伦视频污| 亚洲免费精品一区| a片在线播放| 久插综合| 亚洲国产欧美另类自拍| 亚洲日韩青青草色月| 91视频综合| 色色无码| 国产精品诱惑| 六月色色| 午夜噜噜噜| 人妻久久久久久久久久久久久久久 | 色女99一级片在线观看| 久久噜噜噜精品国产亚洲综合| 成年女人黄网站| 青青草成人视频在线观看二区| 精品无码一区二区三区| 亚洲欧美九九九| 一区AV| 操逼免费视频无码国产| 久久av色| 日本操逼aaaaa| 91jk色拍| 美国精品国产精品| 四虎免费看黄| 99精品视频在线观看免费| 亚洲熟女乱综合一区二区三区| 欧亚性爱啪啪| 麻豆 美女 丝袜 人妻 中文| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 午夜国产综合视频在线观看 | 亚洲砖码砖专无区2023| 99久久99九九99九九九| 99精品无码| 亚洲码在线中文在线观看| 日韩电影天堂视频一区二区| 蜜乳AV一区| 日本高清一本二本免费不卡| 青青草视频这里只有精品| 乱操乱伦AV| 欧美天天在线| 黄页大片在线观看| 岛国福利在线精品播放| 四虎影视永久在线观看精品免费网站 | 一级毛片久久久久久久女人18| 人人九九精| 97九色人妻| 久操凹凸视频| 欧美性性性| 目产99999久久999| 91超碰人人操| 国产精品ⅴ无码大片在线看.| 精品9999| 91丝袜美腿网站| 欧美的性爱网站免费| 91天天综合在线观看| 囯戸精品高潮呻吟旡码| 91美女视频电影| 粉嫩国产精品久久粉嫩| 两性色网| 一级乱伦网站| 大色网久久| 老熟女熟妇| 婷婷丁香五月激情啪啪| 国产亚洲精品无码三区| 九九操久久国产免费视频| 97亚洲资源| 五月婷婷性爱| 一线黄色免费性爱片| 夜夜躁狠狠躁日日躁av| 天天射夜夜| 国模限制级电影| 日韩不卡毛片Av免费高清| 亚洲无码com| 大粗鳼巴久久久久| 中文字幕视频免费| 玖色AV| 国产欧美日韩一区二区三区| 久久中文字幕人妻熟av女蜜柚| 久久精品老司| 91五月天| 人妻日日干| 日本熟女不卡视频| 精品一区二区三区18| www四虎| 色色综合网站| 国产无码一二三区| www.av在线视频| 麻豆久久精品亚洲精品88| 日韩精品大香蕉伊人在线| 天天综合网~69| 免费观看的黄色的网站| 澳门黄片一香蕉视频| 亚洲欧美情色| 高清无码学生妹高潮| 亚欧美综合网。| 观看视频图片一区二区三区| 五月丁香六月激情| 色色色色网站| 风流老熟女一区二区三区l| 国产精品嫩草影院午夜两性| 久久超碰网| 啊啊啊啊嗯嗯在线久久久| 国产后入清纯| 狠插 制服 自拍| 国内精品999| www.色操逼| 国产成人bd在线观看| 天天天操天天天爱| 日本顶级天天操狠狠操夜夜操中文字幕| 快点操死我| 另类综合另类| 爱爱动态120秒| 日本三级中国三级99人妇网站| 欧美麻豆成人同性GⅤ在线| 免费超碰97在线观看| 老子午夜伦不卡影院| 天天综合网91| 久久精品黄色| 国产传媒日韩| 在线不欧美| 国产精品操| 91亚洲网站| 日韩一级二级三级| 91九色丨风韵犹存| 中国特猛少妇色xxx| 久久久久久久久久久久97 | 久久午夜色播影院免费高清| 91A欧美电影网站| 限制级中的三级片中的黑粗大屌屌日人妻熟女| 超碰人妻久久人妻中文97| 亚洲天堂另类小说男人| 中文字幕艹艹| 天天亚洲综合| 性色国产东北露脸精品视频| 亚洲中文电影| 久久女同性恋一二区| 国产精品经典一卡久久久| 色99色| 粉嫩国产精品久久粉嫩| 理论久久婷婷网 8| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 嗯嗯啊在线视频| 性爱动态120秒| 91亚洲不卡一区| 伊人网在线观看| 中文字幕丝袜美腿| 91人妻超碰| 久久欧洲| 激情四射五月天| 91久久精品美女高潮喷水| 少妇精品| 美女被啪到深处抽搐视频| 亚州综合色| 亚洲人成在线放东京热| 黄色大片免费在线| 亚洲国产精品无码AV在线| 五月天婷精品激情| 综合色啪| 花野真衣| 亚洲欧美一区二区不卡视频播放| 九九九九免费视频| 久久久久久十| 综合色好色| 人妻干天天| 超碰人人干| 男女打扑克高清网站| 中文字幕人乱码中文字的预防方法 | av天堂天堂av日韩| 欧美色婷婷| 久久亚洲熟妇在线视频| 99热只有这里有精品| 人妻夜夜爽天天爽麻豆三区网站 | 狠狠搞 亚洲91| 超碰一区二区| 九九九九九精品| 国产精品一区av在线| 欧美综合区| 91国产丝袜足交精品视频| 亚洲国产丝袜在线观看| 啊啊啊好大好深| 伊人网青青| 黄片不用下载在线观看| 欧美专区第一页| 一区二区三区色综合| 国产一区二区精品久久久不卡蜜臀| 97综合激情| 人人玩人人添人人澡免费| 久久久夜夜嗨免费视频| 啪啪视频mP4| 久久视频,这里只有精品| 青青草中文字幕| 性在久久久久久| 99青草| 亚洲91射| 伦激情人妻另类人妻| 久久久成人国产精品无码| 长长久久88视频| 91久久国产综合精品| 成人性交午夜免费片| 丰满人妻一区二区三区四区| 在线97在线| 精品久操| 国产资源中文字幕在线| 久操精品网| 亚洲色图欧美色图制服诱惑| 日本操逼视频在线| 亚洲成av人片色午夜乱码| 伊人一区二区三区| 97超碰精品| 亚欧国产无码精品在线| 蜜臀99999| 97视频免费播放| 玖玖资源综合在线视频| 国产精品久久久久久久久久久久久久久久久久| 97免费视频在线| 亚洲国产精品无码AV在线| 欧美黄色图片| 中文视频在线观看| 99色热| 久久视频少妇美女| 日韩性爱免费观看视频| 成人精品电影| 久久东京热成人| 亚洲 欧美 手机在线观看| 国产精品色片一区二区| 欧美大香蕉97| 中文字幕三四区| 天天日天天舔天天喷天天射| 99热精品在线观看| 欧美日韩操逼嗦吊| 亚洲日韩熟女人妻高清在线| 最新av网站在线观看| 天天综和| 91熟女视频| 操少妇很爽av| 97精品久久| 另类综合另类| 亚洲美女精品九九视频| 婷婷五月天成人网| 99re这里只有| 日产狠狠干| 蜜臀久久99精品久久久久久成人小说 | 亚洲一区操| 中文字幕国产精品1区| 久久久久久久精| 人人乐大香蕉| 亚洲图片激情小说| 懂色AV一区二区三区| 人妻久久一区二区三区| 人人乐大香蕉| 好爽要喷了| 精品国产肉丝袜在线拍国语| 欧亚 另类 久| 97人人干| 麻豆91熟妇人妻中文字幕茄子| 99精品在线播放| 九九九九AV| 日韩草久视频| 97超碰欧美| 日韩精品熟妇| 精品中文字幕一区二区| 亚拍在线| 大色综合网| 玖玖爱视频网站| 一区二区三区精品黑丝白丝酒店对鸡| 国产极品馒头逼| 97精品国产97久久久久久免费| 国产操逼网站亚洲一级黄色| 天天综合欧美综合| 操逼无码操逼| 中文字幕天天操| 大香蕉久| 久久大香蕉97| 无码在线亚洲| 亚洲美女精品九九视频| 99re这里只有精品中心播放| 一级做a爰片性色毛片久久| 欧美综合第一| 欧美aaaaaaa| 日日躁狠狠躁天天躁精品| 中文字幕精品一区二区精品| 亚洲黑人在线| 欧美日韩亚洲高清不卡一区二区三区| 性爱边摸边日免费AV| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 亚洲导航深夜福利| 日本国产二线女色| 久久久人妻| 欧美日韩色| 亚洲aw毛茸茸在线| 国产亚洲精品av一区| 国产97在线播放| 人妻少妇久久久| 成人一道本免费视频| 欧美最大综合网| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 天操天操夜操夜月月年年操操| 五月天激情影院| 国产粉嫩蜜臀av一区二区三区 | 天天影视网综合少妇| AV乱伦国产| 国产人妻精品一区二区三区秋霞 | 色五月亚洲| 人人干人人操人人爱| 欧洲性人爱视频| 亚洲欧洲小说图片视频 | 精品一区二区综合熟妇| 人人澡人人干| 第45页一区二区| 欧美做爰无码A片视频| 婷婷操视频| 青青草国产一区二区三区| 亚洲激情综合| 芊芊操逼视频无码| 97欧美在线| 亚洲男人综合网| 欧美性爱另类综合| 免费观看网黄| 中文字幕一区二区三区人妻不卡 | 色婷婷在线视频| 性爱免费视频成人| 亚洲情色视频| 久久久精品一区二区| 日韩精品国产精品五码一区二区| 91精品国产日韩欧美综合| 五十路一区无码| 射丝袜大香蕉| 超碰97欧美在线| 亚洲欧美日韩精品久| 久久久久久久久久久久黄色| 久久婷婷伊人| 高潮毛片无遮挡高清免费| 亚洲综合伊人无码久久| 欧美亚洲成人在线一区二区三区| 亚洲情色91| 亚洲一卡2卡3卡4卡乱码网站| 东北少妇高潮zzzz| 人人操人人操人妻人| av72网| 99久在线精品99re8| 操逼天美3区| 91老熟女| 久草看看看| 欧洲大香蕉| 黄色高清久久无码依人| 人妻啊啊人妻啊| 亚洲欧洲网站免费观看| 日韩精品在线观看观看| 日韩97P| 国产97色在线 | 亚洲| 日本新免费二区三区| 日韩三级网址| www五月| 色婷亚洲五月在线观看| 操逼国产免费| 天天爽夜夜爽夜夜爽精| 视频不卡中文字幕| 久久久一区二区三区麻豆| 嗯~啊~快点 死我视频免费看网站| 91精品成人| 九九玖玖精品| 五月天开心网| 久久丁香五月婷婷| 黄片www.| 亚洲一区二区性爱电影| 日韩成人高清一区二区| 色图综合| 日韩精品一区二区人人人| 欧美九一精品久久久熟妇| 人妻丝袜肏逼| 久久夜嗨| 你草精品在线视频| av操操不卡| 亚洲免费精品一区| 天天添天天干电影| 久久超碰爱| 在线观看一卡二卡| 亚洲人妻一区二区三区| 五月综合视频| 无套内射性感少妇视频| 手机看av网站在线看| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 在线视频 亚洲精品| 97欧美视频| 亚洲国产成人精品女人久久久| 久久这里只精品| 韩日欧亚a级| 久久久久久久| 欧美人妻少妇| 精品视频一区二区| 91天美| 日韩性爱长视频免费| 84YTCOM性无码| 色欲Av人妻精品一区二| 欧美性第一页| 91精品国产91久久青草| 日本乱人伦片中文三区| 日韩 国产 欧美自拍| 亚欧毛片基地国产毛片基地| 天天做天天爱夜夜爽毛片试看| 久久成人国产精品| 韩国一级婬片A片无码天美| 国产精品嫩草久久久久| 国产91精品福利在线| 亚洲最新av无码成人精品区| 揉揉揉夜夜| 蜜臀久久99精品久久久久久婷婷| 青青草毛片| 日本欧美不卡| 精品无码久久久久久久久果冻糖心| 永久电影三级在线观看| 秋霞一级A片黄色视频| 欧美日韩国产黄色片| 东北丰满熟女国产一区| 精品一二三区久久AAA片| 激情综合色| 91人妻超碰| 欧美精品偷拍| 日韩精品电影| 天天操福利视频综合网站| 久久精品无码专区| 成人国产视频在线观看| 九九综合久久中文字幕| 天天视频综合在线观看视频| 久久久久婷婷| 91女在线观看| 金典av| 久久精品操| 射久久| 一级@啪啪视频| 激情专区综合| 欧亚乱色熟一区二区三四区| 97精品国产手机| 综合情欲网| 97色97干| 国产AV激情无码久久无码| 女人被添高潮免费视频| 欧美人妻精品| 东京热精品97综合网| 日本免费二区三区| 亚洲 暴爽 AV人人爽日日碰| 精品中文字幕第一页| 亚洲五月婷| 黄色AV影视| 97看操| 欧美日韩人妻精品系列一区二区三区| 国产成年女黄特黄| 国产区性爱在线视频秋霞豆| 日韩人妻大香蕉| 久草毛片电影怡| 亚洲丨在线| 人人妻人人爽 97人人看碰人免费公开视频| 亚洲一区二区麻豆影院| 一级AV性爱| 性爱1区| 18一区二区三区| 啊啊啊啊啊啊啊好爽不要| 天天超级碰碰碰| 亚洲精品97久久| 岛国大片在线观看网站入口| 久操大香蕉手机视频在线看| 色欲色香天天天综合网www-亚洲综合国| 十八禁电影伊人网| 精品国产一区探花在线观看| 国产高清精品福利| 欧美日本久久精品一区 | 花野真衣| 美女91色黄18| 日本一区二区亚洲综合| 国产精品点击进入在线影院| 超碰av人人人| 九一性生活免费视频| 丁香婷婷五月| 亚洲AV免费在线| 日本中文字幕一区| 欧美久久毛片基地| 欧美成人精品一区二区男人蜜臀| AV乱伦专区| 亚洲男人的天堂亚洲| 中文在线视频| 国产精品农村妇女| 视频国产精品未满十八禁止在线观看| 国模限制级电影| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 九九九九精| 大伊香蕉在线视频免费| 欧美久久久15P| 大香蕉92| 九月激情婷婷| 夜夜嗨AV蜜臀av| 97超碰超| 久久人人爽人人爽人人片Ⅴ| 99久在线精品99re8a| 啊啊啊操死我| 国产一级片| 91在线国产后入风骚翘臀美女素人| 中文字幕乱码人妻二区三区| 久久天天摸| 亚洲中文字幕熟女少妇一区二区| 手机在线A片| 开心六月色| 日躁天天爽爽| 亚洲欧洲综合视频在线| 亚洲性综合| 人妻啪| 一区二区三区 丝袜 高跟 美腿| 夜夜高潮夜夜爽国产伦精品| 免费伦费视频在线观看| 国产欧美日韩臀| 久久中文字幕不卡人妻| 99性爱| 国产精品久久久久9999小说| 日韩性爱小视频在线观看| 熟妇高潮精品一区二区三区下载| 国产超碰AV在线精品| 中文字幕视频2区| 啊啊啊啊啊啊在线| 九月婷婷久久| 亚洲在线综合| 欧美一级做a爰片免费视频| 久久久久久久久国产| 欧美一级A片不卡视频。| 91新在线欧美| 中文字幕高清精品一区| 日韩av熟女一区二区三区成人| 精品人妻一区二区三区日产乱码| 狠狠欧美| 熟女高潮精品一区二区| 入口操逼网站| 丰满人妻一区二区中文| 天堂中文日本在线观看| 97超碰总站| 日韩成人性爱AV| 中文在线视频| 欧美亚洲| 久久精品高清无码一区| 黑人无码一区二区| 少妇人妻在线| 亚洲乱熟女一区二区三区大香蕉| 日本在线15p| 欧美特大黄一级片片免费| 热久久无毒不卡| 最新国产亚洲精品精品国产亚洲综合| 美国三级日本三级久久99| 亚洲欧美日韩精品久久久一区二区| 精品乱码在线观看| 浪人综合网| 久久禁| 我爱大香蕉| 久久东京热久久| 日韩丝袜人妻AV| 欧美日韩*字幕一区| 啊啊啊好爽快点啊啊啊嗯嗯| 91综合网站| 日本九九久久99播| 正在播放国产精品一区| 国产精品电影推荐| 丝袜美腿制服人妻二区中文字幕| www久久精品| 99热婷婷| 91色综合| 99热 按摩 日韩| 国产懂色精品国产av| 农村少妇久久久久久久| 激情文学网伊人| 一中国女人毛片水真多| 四季AV综合网址| 久久亚洲AV无码专区首页| 97天天插| 夜夜操2028| 麻豆a'v电影| 国产成人综合网| 亚欧美综合网|