Plik video jako tapeta pulpitu
Napisane: niedziela, 14 września 2008, 09:40
Program AllPlayer i jeszcze kilka innych mają funkcję umożliwiającą wrzucenie odtwarzanego pliku video na pulpit jako tło pulpitu, przy czym robią to tak sprytnie, że ikony wciąż są widoczne na pulpicie i nawet obsługiwana jest przeźroczystość tekstu pod ikonami, czego nie uda się zrobić wstawiając np. animowany gif.
Przeprowadziłem kilka testów z podobnym mechanizmem, testy polegały głównie na przechwytywaniu pulpitu i wrzucaniu tam filmu, jednak efekt różni się od możliwości AllPlayera, jest w porównaniu z nim mało efektywny, poza tym pulpitu nie da się praktycznie używać.
Wykorzystany przeze mnie mechanizm jest bardzo prosty:
Niestety to nie jest to, czego oczekuję.
Poszukuję informacji o tym, jaki mechanizm wykorzystuje AllPlayer, czegoś od czego mógłbym zacząć. Być może natknąłeś się gdzieś na jakąkolwiek informację w tym temacie.
Proszę mi jednak nie pisać o wrzucaniu na pulpit animowanych gifów, czy też animacji flash, gdyż nie o to tutaj chodzi.
Przeprowadziłem kilka testów z podobnym mechanizmem, testy polegały głównie na przechwytywaniu pulpitu i wrzucaniu tam filmu, jednak efekt różni się od możliwości AllPlayera, jest w porównaniu z nim mało efektywny, poza tym pulpitu nie da się praktycznie używać.
Wykorzystany przeze mnie mechanizm jest bardzo prosty:
- Kod: Zaznacz cały
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
hWnd = FindWindow(0, "Program Manager");
hWnd_2 = GetWindow(hWnd, GW_CHILD);
::SetParent(hWnd_2, this->Handle);
::SetParent(Panel2->Handle, hWnd);
Panel2->BoundsRect = Screen->WorkAreaRect;
MediaPlayer1->DisplayRect = Screen->WorkAreaRect;
Application->ProcessMessages();
this->TransparentColor = true;
::SetParent(hWnd_2, HWND_DESKTOP);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
::SetParent(hWnd_2, hWnd);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDblClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
Niestety to nie jest to, czego oczekuję.
Poszukuję informacji o tym, jaki mechanizm wykorzystuje AllPlayer, czegoś od czego mógłbym zacząć. Być może natknąłeś się gdzieś na jakąkolwiek informację w tym temacie.
Proszę mi jednak nie pisać o wrzucaniu na pulpit animowanych gifów, czy też animacji flash, gdyż nie o to tutaj chodzi.