//viewer 剪贴板监视 import win.clip; namespace win.clip; class viewer { ctor(winform ){ this = winform; //注册加入成为监视窗口,nextClipboardViewer为上一个监视窗口 var nextClipboardViewer = SetClipboardViewer( this.hwnd ); //窗口消息回调函数,在设计器中鼠标左键双击窗体会自动生成下面的函数 this.wndproc = function(hwnd,message,wParam,lParam){ select(message) {//判断消息类型 case 0x308/*_WM_DRAWCLIPBOARD*/ { if(this[["onDrawClipboard"]]) this.onDrawClipboard(); ::SendMessageInt( nextClipboardViewer,message,wParam,lParam ); } case 0x30D/*_WM_CHANGECBCHAIN*/ { if (wParam == nextClipboardViewer) nextClipboardViewer = lParam; else ::SendMessageInt( nextClipboardViewer,message,wParam,lParam ); } } } } } namespace viewer{ //声明剪贴板监视器用到的API SetClipboardViewer = ::User32.api( "SetClipboardViewer", "int(int hWndNewViewer)") ChangeClipboardChain = ::User32.api( "ChangeClipboardChain", "int(int hWndRemove,int hWndNewNext)") } /**intellisense() ?win.clip.viewer = !clipviewer. win.clip.viewer(__/*输入winform对象*/) = 将窗口注册为剪贴板监视器\n写入剪贴板时,自动触发onDrawClipboard()函数 !clipviewer.onDrawClipboard = @.onDrawClipboard=function(){ __ } end intellisense**/