デスクトップがうまくキャプチャできない

解決


9  2006-03-31 05:04:58  No: 20756  IP: [192.*.*.*]

マウスの右クリックをきっかけにして、デスクトップのキャプチャ
を行いたいのですが、なぜか、デスクトップ上のいろんなアプリケーション
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;

編集    削除
えーと  2006-03-31 06:36:26  No: 20757  IP: [192.*.*.*]

> その隙間から見えるデスクトップがFORMの色に塗りつぶされておりうまくいきません。

>         form1.Width:=screen.Width;
>         form1.Height:=screen.height;

当たり前だと思いますが。

編集    削除
9  2006-03-31 07:33:24  No: 20758  IP: [192.*.*.*]

!?・・そうでした、ありがとうございました
解決です。

編集    削除