zoukankan      html  css  js  c++  java
  • 监视剪贴板数据

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, clipbrd, StdCtrls, ComCtrls, Menus, ExtCtrls, ToolWin;
    
    type
      TForm1 = class(TForm)
        MainMenu1: TMainMenu;
        ToolBar1: TToolBar;
        StatusBar1: TStatusBar;
        Panel1: TPanel;
        Splitter1: TSplitter;
        Panel2: TPanel;
        N1: TMenuItem;
        PageControl1: TPageControl;
        TabSheet1: TTabSheet;
        TabSheet2: TTabSheet;
        TabSheet3: TTabSheet;
        TabSheet4: TTabSheet;
        TabSheet5: TTabSheet;
        TabSheet6: TTabSheet;
        TabSheet7: TTabSheet;
        TabSheet8: TTabSheet;
        Memo1: TMemo;
        Button1: TButton;
        Button2: TButton;
        ListView1: TListView;
        Button3: TButton;
        Image1: TImage;
        SaveDialog1: TSaveDialog;
        OpenDialog1: TOpenDialog;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
    
    
      public
        { Public declarations }
        next: HWND;
        // 定义一个消息过程用于处理wm_drawclipboard消息
        // procedure WMdrawclipboard(var aa: TMessage);message wm_drawclipboard;
         MyBitmap: TBitmap; { 保存截获的位图 }
        View: Boolean; { 判断是否显示 }
        NextViewerHandle: HWND; { 下一剪贴板观察器的句柄 }
        procedure WMDrawClipboard(var Msg: TWMDrawClipboard);
        message WM_DRAWCLIPBOARD;
        procedure WMChangeCBChain(var Msg: TWMChangeCBChain);
        message WM_CHANGECBCHAIN;
      end;
    
    var
      Form1: TForm1;
    
      { 响应Windows的剪贴板消息 }
    implementation
    
    uses PCHardWareInfo;
    {$R *.dfm}
    procedure TForm1.WMChangeCBChain(var Msg: TWMChangeCBChain);
    begin
    if Msg.Remove = NextViewerHandle then
    NextViewerHandle := Msg.Next
    else
    if NextViewerHandle <> 0 then
    SendMessage(NextViewerHandle,Msg.Msg,Msg.Remove,Msg.Next);
    Msg.Result := 0;
    end;
    procedure TForm1.WMDrawClipboard(var Msg: TWMDrawClipboard);
    var
      FileName: String;
    begin
      If NextViewerHandle <> 0 then
        SendMessage(NextViewerHandle, Msg.Msg, 0, 0);
      If ClipBoard.HasFormat(CF_BITMAP) then
      begin
        MyBitmap.Assign(ClipBoard);
        If SaveDialog1.Execute then
        begin
          FileName := SaveDialog1.FileName;
          MyBitmap.SaveToFile(FileName);
        end;
        If View then
        begin
          WindowState := wsNormal;
          Image1.Picture.Bitmap := MyBitmap;
        end;
      end;
      Msg.Result := 0;
    end;
     procedure TForm1.Button1Click(Sender: TObject);
    begin
      next := SetClipboarDviewer(handle);
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      ChangeClipboardChain(handle, next);
      SendMessage(next, WM_CHANGECBCHAIN, handle, next);
      MyBitmap.Free;
    end;
    
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      // PCHardWareInfo.TPCUserInfo.GetHostIP;
      View := False;
      // SpeedButton2.Down := True;
      MyBitmap := TBitmap.create;
      try
        MyBitmap.Width := 0;
        MyBitmap.Height := 0;
      except
        Application.terminate;
      end;
      ClipBoard.Clear;
      NextViewerHandle := SetClipboarDviewer(handle);
    end;
    
    // procedure TForm1.wmdrawclipboard(var aa: tmessage);
    // begin
    // SendMessage(next,aa.Msg ,aa.WParam ,aa.LParam );
    // if(clipboard.hasformat(CF_TEXT)or clipboard.HasFormat(CF_OEMTEXT) )then
    // begin
    // memo1.Clear;
    // memo1.Lines.Add(clipboard.AsText);
    // end;
    // end;
    end.
    View Code

    请问gifimage控件有适合delph

    问题已经解决,原来d2010对gifimage的写法不一样,写成了 gifimg,在以前的版本里用的是gifimage,然后自然找不到gifimage,再从网上下载gifimage,又因为版本的问题,导致了上面的错误,其实只要在以前用到gifimage的地方,将引用变成gifimg,就可以用d2010自带的gifimage控件了。  不知道 我这种说法是不是对的,如果 有不对,请指正。

  • 相关阅读:
    普通文件的上传(表单上传和ajax文件异步上传)
    React Ant Design+Node.js Express+Mysql实现后端分页(带富文本编辑器)
    Express中增删改查相关的中间件
    React中使用富文本编辑器react-draft-wysiwyg
    Express中aixos请求的(批量)删除用POST方法,其它请求的(批量)删除可以用DELETE方法
    React中将字符串转义成html语句
    Vue中如何设置代理跨域请求数据
    React中如何设置代理跨域请求数据
    axios发送post请求,服务端无法正常获取参数(比如:node服务器无法通过req.body获取参数)解决方案
    LeetCode-162.寻找峰值
  • 原文地址:https://www.cnblogs.com/blogpro/p/11456926.html
Copyright © 2011-2022 走看看