⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toolbuild.asm

📁 用masm写的TOOBar生成器
💻 ASM
📖 第 1 页 / 共 5 页
字号:
               db  '         mov     eax, hwnd',0dh,0ah
               db  '      .if eax != hWndFloat',0dh,0ah
               db  '            mov     eax, 1',0dh,0ah
               db  '            ret',0dh,0ah
               db  '      .endif',0dh,0ah,0dh,0ah

               db  '      .if wmsg == WM_MOVE',0dh,0ah
               db  '         INVOKE     SetFocus, hREdit',0dh,0ah
               db  '         .if !ToolW',0dh,0ah
               db  '               mov     eax, TRUE',0dh,0ah
               db  '               ret',0dh,0ah
               db  '         .endif',0dh,0ah
               db  '            and     swOn, 0',0dh,0ah
               db  '         INVOKE     GetWindowRect, hWndFloat, addr rectF ; Rectangle of Float',0dh,0ah
               db  '         INVOKE     GetWindowRect, hREdit, addr rectE ; Rectangle of Edit',0dh,0ah,0dh,0ah

               db  '            mov     eax, lparam       ; Get xPos',0dh,0ah
               db  '            and     eax, 0ffffh       ; Lowword',0dh,0ah
               db  '            mov     ecx, lparam       ; Get yPos',0dh,0ah
               db  '            shr     ecx, 16           ; Hiword',0dh,0ah,0dh,0ah

               db  '            add     rectE.left, 6',0dh,0ah
               db  '            add     rectE.top, 6',0dh,0ah,0dh,0ah

               db  '         .if eax < 5 || eax > 7fffh || ecx > 7fffh',0dh,0ah
               db  '            .if eax > 5',0dh,0ah
               db  '                 push     eax',0dh,0ah
               db  '               INVOKE     GetWindowRect, hWndFloat, addr rectF ; Rectangle of Float',0dh,0ah
               db  '                 push     rectF.left',0dh,0ah
               db  '                 push     rectF.top',0dh,0ah
               db  '               INVOKE     GetClientRect, hWndFloat, addr rectF ; Rectangle of Float',0dh,0ah
               db  '                  pop     ecx',0dh,0ah
               db  '                  pop     edx',0dh,0ah
               db  '                  pop     eax',0dh,0ah
               db  '               .if eax > 7fffh',0dh,0ah
               db  '                     mov     rectF.top, ecx',0dh,0ah
               db  '               .else',0dh,0ah
               db  '                     mov     rectF.left, edx',0dh,0ah
               db  '               .endif',0dh,0ah
               db  '                  add     rectF.right, 6',0dh,0ah
               db  '                  add     rectF.bottom, 6',0dh,0ah
               db  '               INVOKE     MoveWindow, hWndFloat, rectF.left, rectF.top, rectF.right, rectF.bottom, TRUE',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '            .if FloatLock && LockOn',0dh,0ah
               db  '                  mov     eax, 1',0dh,0ah
               db  '                  ret',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '               and     FloatLock, 0',0dh,0ah
               db  '               xor     eax, eax',0dh,0ah
               db  '               ret',0dh,0ah
               db  '         .endif',0dh,0ah,0dh,0ah

               db  '            mov     ebx, eax',0dh,0ah
               db  '         .if eax > 9',0dh,0ah
               db  '            sub     eax, 10',0dh,0ah
               db  '            .else',0dh,0ah
               db  '            xor     eax, eax',0dh,0ah
               db  '         .endif',0dh,0ah
               db  '            add     ebx, 10',0dh,0ah
               db  '            mov     edx, ecx',0dh,0ah
               db  '            sub     ecx, 10',0dh,0ah
               db  '            add     edx, 10',0dh,0ah,0dh,0ah

               db  '         .if eax < rectE.left && ebx > rectE.left &&\',0dh,0ah
               db  '             ecx < rectE.top && edx > rectE.top || LockOn',0dh,0ah
               db  '               and     LockOn, 0',0dh,0ah
               db  '               mov     FloatLock, 1',0dh,0ah
               db  '            INVOKE     GetClientRect, hWndFloat, addr rectF',0dh,0ah
               db  '            INVOKE     GetWindowRect, hREdit, addr rectE',0dh,0ah
               db  '               mov     eax, rectE.left',0dh,0ah
               db  '               add     eax, 6',0dh,0ah
               db  '               sub     rectE.right, eax',0dh,0ah
               db  '               mov     eax, rectE.top',0dh,0ah
               db  '               add     eax, 6',0dh,0ah
               db  '               sub     rectE.bottom, eax',0dh,0ah

               db  '               mov     eax, rectF.right',0dh,0ah
               db  '            .if eax > rectF.bottom',0dh,0ah
               db  '                  mov     WH, 1',0dh,0ah
               db  '                  mov     eax, 22  ; Height',0dh,0ah
               db  '                 push     rectE.right',0dh,0ah
               db  '                 push     eax',0dh,0ah
               db  '            .else',0dh,0ah
               db  '                  mov     WH, 2',0dh,0ah
               db  '                  mov     eax, 23  ; Width',0dh,0ah
               db  '                 push     rectE.bottom',0dh,0ah
               db  '                 push     eax',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '               jmp     NewPos',0dh,0ah,0dh,0ah

               db  '         .else',0dh,0ah
               db  '            INVOKE     GetClientRect, hWndFloat, addr rectF',0dh,0ah
               db  '               and     FloatLock, 0',0dh,0ah
               db  '              call     SetSize',0dh,0ah
               db  '            INVOKE     GetWindowRect, hWndFloat, addr rect',0dh,0ah
               db  '            INVOKE     SendMessage, hWndToolF, TB_BUTTONCOUNT, 0, 0',0dh,0ah
               db  '               mov     Cnt, eax',0dh,0ah
               db  '            .if rectF.right == 23 || rectF.bottom == 22',0dh,0ah
               db  '               .if rectF.right == 23',0dh,0ah
               db  '                    imul     eax, 22',0dh,0ah
               db  '                     mov     rectF.bottom, eax',0dh,0ah
               db  '               .elseif rectF.bottom == 22',0dh,0ah
               db  '                    imul     eax, 23',0dh,0ah
               db  '                     mov     rectF.right, eax',0dh,0ah
               db  '               .endif',0dh,0ah,0dh,0ah

               db  '                  mov     WH, 1',0dh,0ah
               db  '                 push     rectF.right',0dh,0ah
               db  '                 push     rectF.bottom',0dh,0ah
               db  '                  jmp     NewPos',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '         .endif',0dh,0ah
               db  '            mov     eax, TRUE',0dh,0ah
               db  '            ret',0dh,0ah
               db  '      .endif',0dh,0ah,0dh,0ah

               db  '      .if wmsg == WM_SIZE',0dh,0ah
               db  '         INVOKE     SendMessage, hWndToolF, TB_BUTTONCOUNT, 0, 0',0dh,0ah
               db  '            mov     Cnt, eax',0dh,0ah
               db  '         .if !eax',0dh,0ah
               db  '               jmp     DefWin',0dh,0ah
               db  '         .endif',0dh,0ah
               db  '         INVOKE     GetWindowRect, hREdit, addr rectE',0dh,0ah
               db  '            mov     eax, rectE.left',0dh,0ah
               db  '            add     eax, 6',0dh,0ah
               db  '            sub     rectE.right, eax',0dh,0ah
               db  '            mov     eax, rectE.top',0dh,0ah
               db  '            add     eax, 6',0dh,0ah
               db  '            sub     rectE.bottom, eax',0dh,0ah,0dh,0ah

               db  '         INVOKE     GetWindowRect, hWndFloat, addr rect',0dh,0ah
               db  '            mov     eax, lparam       ; Get width',0dh,0ah
               db  '            and     eax, 0ffffh       ; Lowword',0dh,0ah
               db  '            mov     ebx, lparam       ; Get height',0dh,0ah
               db  '            shr     ebx, 16           ; Hiword',0dh,0ah,0dh,0ah

               db  '         .if !ToolW',0dh,0ah
               db  '               mov     ToolW, eax',0dh,0ah
               db  '               mov     ToolH, ebx',0dh,0ah
               db  '               dec     ToolW',0dh,0ah
               db  '         .endif',0dh,0ah,0dh,0ah

               db  '            and     swOn, 0',0dh,0ah
               db  '            xor     edx, edx',0dh,0ah
               db  '         .if FloatLock && ebx == ToolH && eax != ToolW',0dh,0ah
               db  '               mov     WH, 1',0dh,0ah
               db  '               mov     eax, 22  ; Height',0dh,0ah
               db  '              push     rectE.right',0dh,0ah
               db  '              push     eax',0dh,0ah
               db  '               mov     swOn, 1',0dh,0ah
               db  '               jmp     NewPos',0dh,0ah
               db  '         .endif',0dh,0ah
               db  '         .if FloatLock && eax == ToolW && ebx != ToolH',0dh,0ah
               db  '               mov     WH, 2',0dh,0ah
               db  '               mov     eax, 23  ; Width',0dh,0ah
               db  '              push     rectE.bottom',0dh,0ah
               db  '              push     eax',0dh,0ah
               db  '               mov     swOn, 2',0dh,0ah
               db  '               jmp     NewPos',0dh,0ah
               db  '         .endif',0dh,0ah,0dh,0ah

               db  '         .if eax != ToolW || ebx != ToolH',0dh,0ah
               db  '               mov     WH, 1',0dh,0ah
               db  '               mov     ecx, 22',0dh,0ah
               db  '            .if ebx != ToolH',0dh,0ah
               db  '                  mov     WH, 2',0dh,0ah
               db  '                  mov     ecx, 23',0dh,0ah
               db  '                  mov     eax, ebx',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '               div     ecx',0dh,0ah
               db  '            .if edx',0dh,0ah
               db  '                  inc     eax',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '            .if eax > Cnt',0dh,0ah
               db  '                  mov     eax, Cnt',0dh,0ah
               db  '            .endif',0dh,0ah,0dh,0ah

               db  'DoAgain:',0dh,0ah
               db  '            .if !eax',0dh,0ah
               db  '                  mov     eax, 1',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '               mov     ebx, eax',0dh,0ah,0dh,0ah

               db  '               mov     Var, 22',0dh,0ah
               db  '            .if WH == 1',0dh,0ah
               db  '                  mov     Var, 23',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '              imul     eax, Var',0dh,0ah,0dh,0ah

               db  '              push     eax           ; W if WH == 1',0dh,0ah
               db  '               xor     edx, edx',0dh,0ah
               db  '               mov     eax, Cnt',0dh,0ah
               db  '               div     ebx',0dh,0ah
               db  '            .if !eax',0dh,0ah
               db  '                  inc     eax',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '            .if edx',0dh,0ah
               db  '                  inc     eax',0dh,0ah
               db  '            .endif',0dh,0ah,0dh,0ah

               db  '            .if WH == 2 && eax == 2 || WH == 2 && eax == 3',0dh,0ah
               db  '              imul     ebx, eax',0dh,0ah
               db  '               .if ebx > Cnt',0dh,0ah
               db  '                  .if eax == 3',0dh,0ah
               db  '                        pop     eax',0dh,0ah
               db  '                        xor     edx, edx',0dh,0ah
               db  '                        mov     eax, Cnt',0dh,0ah
               db  '                        mov     ebx, 3',0dh,0ah
               db  '                        div     ebx',0dh,0ah
               db  '                        jmp     DoAgain',0dh,0ah
               db  '                  .endif',0dh,0ah
               db  '                     pop     eax',0dh,0ah
               db  '                     mov     eax, Cnt',0dh,0ah
               db  '                     jmp     DoAgain',0dh,0ah
               db  '               .endif',0dh,0ah
               db  '            .endif',0dh,0ah,0dh,0ah

               db  '               mov     Var, 23',0dh,0ah
               db  '            .if WH == 1',0dh,0ah
               db  '                  mov     Var, 22',0dh,0ah
               db  '            .endif',0dh,0ah
               db  '              imul     eax, Var',0dh,0ah
               db  '              push     eax           ; H if WH == 1',0dh,0ah,0dh,0ah

               db  'NewPos:',0dh,0ah
               db  '            INVOKE     GetWindowRect, hWndFloat, addr rect',0dh,0ah
               db  '            .if 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -