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.