|
楼主 |
发表于 2018-3-30 22:07:37
|
显示全部楼层
本帖最后由 261041951 于 2018-3-30 22:09 编辑
- import win.ui;
- import console;
- import win.ui;
- //设置类名为 class
- win.registerClassEx("class",{
- hIcon = _HAPPICON;
- hIconSm = _HAPPICON;
- hCursor = ::LoadCursor(null, topointer(0x7F00/*_IDC_ARROW*/) );
- hbrBackground = topointer(0xF/*_COLOR_3DFACE*/ + 1);
- } );
- /*DSG{{*/
- var mainForm = win.form(className="class";text="test";right=453;bottom=428;border="dialog frame")
- mainForm.add(
- edit={cls="edit";left=23;top=18;right=433;bottom=406;edge=1;multiline=1;vscroll=1;z=1}
- )
- /*}}*/
- var CallWindowProc = ::User32.api("CallWindowProcA","int(int lpPrevWndFunc,int hWnd, int msg,int wParam,INT lParam)");
- var SetWindowLong = ::User32.api("SetWindowLongA","int(int hWnd,int nIndex, INT dwNewLong)");
- var GetWindowLong = ::User32.api("GetWindowLongA","int(int hWnd,int nIndex)");
- import crypt.bin;
- function 调试输出(str1,str2,str3){
- mainForm.edit.text=string.concat(str1," ",str2," ",str3)+'\r\n'+mainForm.edit.text
- }
- function funBk(hWnd,uMsg,wParam,lParam){
- if(uMsg==74/*WM_COPYDATA*/){
- sByte=raw.convert(topointer(lParam))
- console.varDump(raw.str(sByte,true))
- Proc =0
- }else {
- Proc = CallWindowProc (OldProc, hWnd, uMsg, wParam, lParam)
- }
- return Proc;
- }
- mainForm.show()
- winHwnd=win.find(,"test")
- OldProc=GetWindowLong(winHwnd,-4)
- callBack=..raw.tostdcall(funBk,"int(int hWnd, int uMsg,int wParam, INT lParam)")
- SetWindowLong (winHwnd, -4, tonumber(callBack))
- 调试输出("类名",win.getClass(winHwnd))
- 调试输出(winHwnd,OldProc)
- 调试输出("Cb",tonumber(callBack))
复制代码 就是在收到消息后如何对lParam进行处理? |
|