マウスの右クリックをきっかけにして、デスクトップのキャプチャ
を行いたいのですが、なぜか、デスクトップ上のいろんなアプリケーション
WINDOWはキャプチャできるのですが、その隙間から見えるデスクトップ
がFORMの色に塗りつぶされておりうまくいきません。
下記HOOKをつかわず、ただキャプチャを使用した場合問題なく
デスクトップ全体がキャプチャされます。
HOOK自体よく理解できていないのですが、
なぜなのでしょう?
//hook=======================================
function JournalRecordProc(nCode:Integer;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall;
var
pevent: pEVENTMSG;
mstr:string;
begin
if nCode < 0 then begin
Result := CallNextHookEx(JournalHook, nCode, wParam, lParam)
end else begin
Result := 0;
if nCode = HC_ACTION then begin
pEvent := pEVENTMSG(lParam);
case pEvent.Message of
WM_RBUTTONUP:
capturedesktop;
end;
end;
end;
end;
//デスクトップキャプチャ=================================
procedure TForm1.capturedesktop;
begin
UnhookWindowsHookEx(JournalHook);
JournalHook := 0;
Application.OnMessage := nil;
DeskDC:=GetDC(0);
form1.Left:=0;
form1.Top:=0;
form1.Width:=screen.Width;
form1.Height:=screen.height;
image1.Left:=0;
image1.Top:=0;
image1.Width:=screen.width;
image1.Height:=screen.Height;
BitBlt(image1.Canvas.Handle,0,0,screen.Width,screen.Height,
DeskDC,0,0,SRCCOPY);
ReleaseDC(0,DeskDC);
end;
> その隙間から見えるデスクトップがFORMの色に塗りつぶされておりうまくいきません。
> form1.Width:=screen.Width;
> form1.Height:=screen.height;
当たり前だと思いますが。
!?・・そうでした、ありがとうございました
解決です。