现在要做一个截屏的程序。
在鼠标左键或右键点击时就截一张图,碰到一个问题,在用右键弹出菜单时,我截到的图是弹出菜单之前的,如何才能截到弹出菜单后的屏幕呢?
有没有相应的hook可以勾到菜单的弹出?
若能解决,另给100分

解决方案 »

  1.   

    不知道搞个延迟行不行?sleep(10);
      

  2.   

    procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if (Button = mbRight) then
      begin
        PopupMenu1.Popup(X, Y);
        DoCopyScreen;
      end;
    end;
      

  3.   

    重载菜单的消息处理过程,在接受到WM_COMMAND消息时处理截图,之后在继续处理消息。
      

  4.   

    这个弹出菜单并不是我程序里的菜单。
    延时是个法子,可是有些菜单内容多,弹出也较慢,在内存,cpu被占用很多时,弹出也会很慢。这个延时长度就无法把握。
    我是在想是不是有菜单方面的hook,只有这样才能准确的截到弹出菜单后的屏幕。
      

  5.   

    可以hook该程序的context消息,但也不能知道菜单啥时候弹完
    并且作hook程序很费时费力,不如延时来的快捷
      

  6.   

    该贴由《CSDN论坛浏览器:http://CoolSlob.ys168.com/》自动结算