国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

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

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

文章目錄

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


前言

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


效果展示

在這里插入圖片描述

為什么要做他

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

如何實(shí)現(xiàn)他

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

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

實(shí)現(xiàn)步驟

獲取桌面句柄

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

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

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

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

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

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

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

代碼獲取桌面句柄

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

HWND FindDTWindow()
{// 找到名為 "Progman" 的頂級(jí)窗口句柄,它的窗口標(biāo)題是 "Program Manager"HWND hWnd = ::FindWindow(L"Progman", L"Program Manager");// 發(fā)送一個(gè)特殊的消息 (0x052C) 給找到的 "Progman" 窗口// 這條消息會(huì)使 Windows 創(chuàng)建一個(gè)新的 WorkerW 窗口DWORD_PTR dResult = 0;SendMessageTimeout(hWnd, 0x052C, 0, NULL, SMTO_NORMAL, 1000, &dResult);// 聲明一個(gè)變量來存儲(chǔ) WorkerW 窗口的句柄HWND hwndWorkW = NULL;// 使用一個(gè) do-while 循環(huán)來查找 WorkerW 窗口do {// 查找下一個(gè) 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 窗口,則嘗試關(guān)閉多余的 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 庫中的一個(gè)函數(shù),用于設(shè)置視頻輸出窗口的句柄 (HWND)。這是在 Windows 平臺(tái)上使用 libVLC 播放視頻時(shí)常用的函數(shù)。

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

函數(shù)作用:

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

參數(shù)和含義:

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

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

動(dòng)態(tài)壁紙代碼

#include <iostream>// 避免 ssize_t 引發(fā)的錯(cuò)誤
#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();// 設(shè)置句柄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)建了一個(gè)獨(dú)特的動(dòng)態(tài)壁紙程序。這個(gè)程序不僅能美化你的桌面,還能為你帶來全新的視覺享受。libVLC 提供了強(qiáng)大的多媒體處理能力,而 C++ 的靈活性則使我們能夠充分利用這些功能,實(shí)現(xiàn)高度自定義的應(yīng)用程序。希望通過本文,你不僅學(xué)會(huì)了如何使用 libVLC 和 C++ 創(chuàng)建動(dòng)態(tài)壁紙,還能激發(fā)更多關(guān)于個(gè)性化桌面體驗(yàn)的創(chuàng)意和想法。讓你的桌面更加生動(dòng),展示屬于你的獨(dú)特風(fēng)格。

http://m.aloenet.com.cn/news/40410.html

相關(guān)文章:

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