中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

有沒有電腦做兼職的網(wǎng)站嗎流量查詢網(wǎng)站

有沒有電腦做兼職的網(wǎng)站嗎,流量查詢網(wǎng)站,開發(fā)app需要什么,新鄭做網(wǎng)站優(yōu)化文章目錄 前言效果展示為什么要做他如何實現(xiàn)他實現(xiàn)步驟獲取桌面句柄代碼獲取桌面句柄libvlc_media_player_set_hwnd函數(shù) 動態(tài)壁紙代碼 總結(jié) 前言 在當今的數(shù)字世界中,個性化和自定義化的體驗越來越受到人們的歡迎。動態(tài)壁紙是其中一種很受歡迎的方式,它…

文章目錄

  • 前言
    • 效果展示
    • 為什么要做他
    • 如何實現(xiàn)他
    • 實現(xiàn)步驟
      • 獲取桌面句柄
      • 代碼獲取桌面句柄
      • libvlc_media_player_set_hwnd函數(shù)
    • 動態(tài)壁紙代碼
  • 總結(jié)


前言

在當今的數(shù)字世界中,個性化和自定義化的體驗越來越受到人們的歡迎。動態(tài)壁紙是其中一種很受歡迎的方式,它不僅可以美化桌面,還能帶來生動的視覺體驗。利用開源的 VLC 媒體播放器庫(libVLC)和 C++,我們可以輕松地創(chuàng)建一個獨特的動態(tài)壁紙程序,將視頻內(nèi)容直接嵌入到 Windows 的桌面背景中。本篇文章將帶你一步步實現(xiàn)這個目標,通過使用 libVLC 的強大功能,將視頻作為動態(tài)壁紙展示在你的桌面上。


效果展示

在這里插入圖片描述

為什么要做他

  1. 用來訓練我們使用VLC播放的能力
  2. 我們可以自定義壁紙(雖然wallpaper engine也可以實現(xiàn)這個能力,但是需要購買難免是比較心疼的)

如何實現(xiàn)他

在Windows里面,我們的壁紙其實就和一個窗口差不多,他也有句柄,我們得到他的句柄,然后把視頻貼上去就OK了
在VLC中,我們可以使用libvlc_media_player_set_hwnd這個函數(shù)把播放的視頻貼到一個指定的句柄上
那么我們的目標很明確了:

  1. 獲取句柄
  2. 把視頻貼上去

實現(xiàn)步驟

獲取桌面句柄

在 Windows 系統(tǒng)中,桌面其實是由幾個不同的部分組成的。這些部分就像樹枝一樣,一層一層地構(gòu)成了整個桌面。

  1. 父窗口:這是整個桌面的基礎,它就像樹干一樣,支撐著其他部分。這個父窗口在 Windows 中叫做 “Program Manager”(Progman)。

  2. 背景:這是你在桌面上看到的圖片或顏色,是桌面的底層部分,就像樹的枝葉一樣覆蓋在整個桌面上。

  3. 圖標:這些是你桌面上看到的各種文件、文件夾和應用程序的快捷方式,它們顯示在背景之上。

在 Windows 系統(tǒng)中,“Program Manager” 包含了一個叫做 “SysListView32” 的窗口,這個窗口專門用來顯示桌面上的圖標。

如果你能把自己(比如說一個應用程序或窗口)設置在 “Program Manager” 的這個 “SysListView32” 窗口后面,那么你的窗口就會出現(xiàn)在桌面圖標的后面,就好像你躲在樹葉后面一樣。

所以,整個意思是:桌面是由父窗口、背景和圖標這三部分組成的,而通過設置父窗口(Program Manager),你可以控制自己窗口的顯示位置,從而把它放在桌面圖標的后面。

代碼獲取桌面句柄

我們使用的是Windows的API你先要包含windows.h

HWND FindDTWindow()
{// 找到名為 "Progman" 的頂級窗口句柄,它的窗口標題是 "Program Manager"HWND hWnd = ::FindWindow(L"Progman", L"Program Manager");// 發(fā)送一個特殊的消息 (0x052C) 給找到的 "Progman" 窗口// 這條消息會使 Windows 創(chuàng)建一個新的 WorkerW 窗口DWORD_PTR dResult = 0;SendMessageTimeout(hWnd, 0x052C, 0, NULL, SMTO_NORMAL, 1000, &dResult);// 聲明一個變量來存儲 WorkerW 窗口的句柄HWND hwndWorkW = NULL;// 使用一個 do-while 循環(huán)來查找 WorkerW 窗口do {// 查找下一個 WorkerW 窗口hwndWorkW = ::FindWindowEx(NULL, hwndWorkW, L"WorkerW", NULL);if (NULL == hwndWorkW)continue;// 在 WorkerW 窗口中查找 SHELLDLL_DefView 窗口HWND hView = ::FindWindowEx(hwndWorkW, NULL, L"SHELLDLL_DefView", NULL);if (NULL == hView)continue;// 如果找到了 SHELLDLL_DefView 窗口,則嘗試關閉多余的 WorkerW 窗口HWND h = ::FindWindowEx(NULL, hwndWorkW, L"WorkerW", NULL);while (NULL != h) {SendMessage(h, WM_CLOSE, 0, 0);h = ::FindWindowEx(NULL, hwndWorkW, L"WorkerW", NULL);}break;} while (true);// 返回 "Progman" 窗口的句柄return hWnd;
}

libvlc_media_player_set_hwnd函數(shù)

libvlc_media_player_set_hwnd 是 libVLC 庫中的一個函數(shù),用于設置視頻輸出窗口的句柄 (HWND)。這是在 Windows 平臺上使用 libVLC 播放視頻時常用的函數(shù)。

void libvlc_media_player_set_hwnd(libvlc_media_player_t *p_mi, void *drawable);

函數(shù)作用:

這個函數(shù)的主要作用是將視頻輸出重定向到指定的窗口。換句話說,當你使用 libVLC 播放視頻時,可以指定一個窗口,讓視頻顯示在該窗口中。

參數(shù)和含義:

  • libvlc_media_player_t *p_mi:這是一個指向 libVLC 媒體播放器實例的指針。你需要先創(chuàng)建一個媒體播放器實例,然后將它的指針傳遞給這個函數(shù)。

  • void *drawable:這是一個指向窗口句柄 (HWND) 的指針。在 Windows 平臺上,這個句柄指向你希望視頻輸出的窗口。

動態(tài)壁紙代碼

#include <iostream>// 避免 ssize_t 引發(fā)的錯誤
#if defined(_MSC_VER)
#include <basetsd.h>
typedef SSIZE_T ssize_t;
#endif#include <vlc/vlc.h>
#include <thread>
#include <Windows.h>using namespace std;HWND FindDTWindow()
{HWND hWnd = ::FindWindow(L"Progman", L"Program Manager");DWORD_PTR dResult = 0;SendMessageTimeout(hWnd, 0x052C, 0, NULL, SMTO_NORMAL, 1000, &dResult);HWND hwndWorkW = NULL;do {hwndWorkW = ::FindWindowEx(NULL, hwndWorkW, L"WorkerW", NULL);if (NULL == hwndWorkW)continue;HWND hView = ::FindWindowEx(hwndWorkW, NULL, L"SHELLDLL_DefView", NULL);if (NULL == hView)continue;HWND h = ::FindWindowEx(NULL, hwndWorkW, L"WorkerW", NULL);while (NULL != h) {SendMessage(h, WM_CLOSE, 0, 0);h = ::FindWindowEx(NULL, hwndWorkW, L"WorkerW", NULL);}break;} while (true);return hWnd;
}// 等待播放結(jié)束(完整播放)
void waitPlaying(libvlc_media_player_t* mp)
{libvlc_state_t state;do {state = libvlc_media_player_get_state(mp);} while (state != libvlc_Error && state != libvlc_Ended);
}void playerMedia(const char* path)
{libvlc_instance_t* vlc = libvlc_new(0, NULL);libvlc_media_t* md = libvlc_media_new_path(vlc, path);//libvlc_media_new_location(vlc, path);libvlc_media_player_t* mp = libvlc_media_player_new_from_media(md);libvlc_media_player_set_media(mp, md);HWND hWnd = FindDTWindow();// 設置句柄libvlc_media_player_set_hwnd(mp, hWnd);// 開始播放libvlc_media_player_play(mp);// 等待播放結(jié)束waitPlaying(mp);// 釋放資源libvlc_media_release(md);libvlc_media_player_release(mp);libvlc_release(vlc);
}int main()
{playerMedia("./a5.mp4"); //RTSP、HTTP ...;return 0;
}

總結(jié)

通過本文的講解,我們成功地利用 C++ 和 libVLC 創(chuàng)建了一個獨特的動態(tài)壁紙程序。這個程序不僅能美化你的桌面,還能為你帶來全新的視覺享受。libVLC 提供了強大的多媒體處理能力,而 C++ 的靈活性則使我們能夠充分利用這些功能,實現(xiàn)高度自定義的應用程序。希望通過本文,你不僅學會了如何使用 libVLC 和 C++ 創(chuàng)建動態(tài)壁紙,還能激發(fā)更多關于個性化桌面體驗的創(chuàng)意和想法。讓你的桌面更加生動,展示屬于你的獨特風格。

http://www.risenshineclean.com/news/40410.html

相關文章:

  • 珠海網(wǎng)站開發(fā)公司中國新聞網(wǎng)最新消息
  • 赤坎手機網(wǎng)站建設網(wǎng)絡項目怎么推廣
  • 宣傳做傳單的網(wǎng)站戶外廣告
  • 哪個網(wǎng)站買做房圖紙好鏈接推廣平臺
  • 做亞馬遜外國網(wǎng)站需要語言好嗎日本比分算1:1
  • 網(wǎng)站開發(fā)的研究思路seo經(jīng)理
  • html5笑話網(wǎng)站源碼上海seo網(wǎng)絡優(yōu)化
  • 直銷購物網(wǎng)站開發(fā)搜狗搜索引擎優(yōu)化
  • 泰安建設企業(yè)網(wǎng)站華與華營銷策劃公司
  • 網(wǎng)站做商城網(wǎng)絡營銷策劃書結(jié)構(gòu)
  • 海南澄邁網(wǎng)站建設寧波免費建站seo排名
  • 營銷策劃方案4000字上海全國關鍵詞排名優(yōu)化
  • 網(wǎng)站首頁上的動畫是咋做的灰色詞排名接單
  • 上海 設計網(wǎng)站建設上海百度seo優(yōu)化
  • 個人站長怎么樣做網(wǎng)站才不會很累關鍵詞調(diào)詞平臺費用
  • 適合推廣的網(wǎng)站有哪些南昌網(wǎng)站優(yōu)化公司
  • 手機網(wǎng)站設計小程序色盲眼鏡
  • 網(wǎng)站全局搜索如何做如何設計與制作網(wǎng)頁
  • vue.js 做網(wǎng)站網(wǎng)站開發(fā)制作培訓學校
  • 怎么設置網(wǎng)站亞馬遜站外推廣網(wǎng)站
  • 不用ftp做網(wǎng)站云seo關鍵詞排名優(yōu)化軟件
  • 建網(wǎng)站的公司不肯簽合同長沙網(wǎng)站制作費用
  • wordpress 技術教程seo 關鍵詞優(yōu)化
  • 做寫真網(wǎng)站的限度游戲優(yōu)化
  • 做別人的網(wǎng)站詐騙視頻下載廣州網(wǎng)站優(yōu)化排名系統(tǒng)
  • 學校網(wǎng)站建設的風險分析微信管理系統(tǒng)登錄入口
  • 淄博網(wǎng)站制作形象培訓網(wǎng)址
  • 建購物的網(wǎng)站需要多少錢八零云自助建站免費建站平臺
  • 購物網(wǎng)站成品淘寶推廣工具
  • 人人設計網(wǎng)官方網(wǎng)站cilimao磁力貓在線搜索