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

📄 win32汇编.txt

📁 会变语言实现的一些程序
💻 TXT
📖 第 1 页 / 共 4 页
字号:
标 题: 【原创】win32汇编(进程控制,多线程,线程同步,定时器,菜单,快捷键,通用控件,子类化,超类化,文件操作,映射内存文件等)
作 者: ericzw
时 间: 2007-11-19,00:39
链 接: http://bbs.pediy.com/showthread.php?t=55147


代码:
        .386
        .model  flat,stdcall
        option  casemap:none
include  windows.inc
include  user32.inc
include  kernel32.inc
includelib  user32.lib
includelib  kernel32.lib
include  gdi32.inc
includelib  gdi32.lib
include  Winmm.inc
includelib  Winmm.lib
include  comdlg32.inc
includelib  comdlg32.lib
include  comctl32.inc
includelib  comctl32.lib
INCLUDE  shell32.inc
includelib shell32.lib


IDI_ICON1            equ           104
IDI_ICON2            equ           105
IDC_CURSOR1          equ           106
IDR_MENU1            equ           101
IDR_ACCELERATOR1     equ           103
IDM_OPEN             equ           40001
IDM_SAVE             equ           40002
IDM_PRINT            equ           40003
IDM_CLOSE            equ           40004
IDM_FONT             equ           40005
IDM_COLOR            equ           40006
IDM_FIND             equ           40007
IDM_REPLACE          equ           40008
IDM_CONTROL          equ           40009
IDM_TIMER            equ           40010
IDM_SETFILETIME      equ           40011
IDM_GETFILETIME      equ           40012
IDM_GETFILESIZE      equ           40013
IDM_B                equ           40014
IDM_C                equ           40015
IDM_ALTB             equ           40016
IDM_ALTC             equ           40017
IDM_GRAY             equ           40018
IDM_UNABLE           equ           40019
IDM_ENABLE           equ           40020
IDM_CHECKED          equ           40021
IDM_ICON1            equ           40022
IDM_ICON2            equ           40023
IDM_CURSOR1          equ           40024
IDM_CURSOR2          equ           40025
IDD_DIALOG1          equ           107
IDB_BITMAP1          equ           108
IDB_BITMAP2          equ           109
IDC_CHECK1           equ           1000
IDC_CHECK2           equ           1001
IDC_RADIO1           equ           1002
IDC_RADIO2           equ           1003
IDC_COMBO1           equ           1004
IDC_EDIT1            equ           1005
IDC_INFORMATION      equ           1006
IDC_CUSTOM1          equ           1007
IDC_NUM              equ           1008
IDC_BUTTON1          equ           1009
IDC_BUTTON2          equ           1010
IDC_LIST1            equ           1011
IDC_LIST2            equ           1012
IDC_BUTTON3          equ           1013
IDC_BUTTON4          equ           1014
IDC_BITMAP           equ           1015
IDR_UWMA1            equ           110
IDM_SUB              equ           40026
IDM_SUPER            equ           40027
IDD_DIALOG2          EQU           111
IDC_EDIT2            equ           1006
IDD_DIALOG3          equ           112
IDC_USER1            equ           1016
IDC_USER2            equ           1017
IDC_USER3            equ           1018
IDM_WEB              equ           40034
IDM_MAILTO           equ           40035
IDM_DIRECTORY        equ           40036
IDM_RUN              equ           40037
IDM_PROCESS          equ           40038
IDM_CLOSEPROCESS     equ           40039
IDM_RUN2             equ           40040
IDM_OPENPROCESS      equ           40041
IDM_SNAPSHOT         equ           40042
IDM_TEMP             equ           40043
IDM_CURRENT          equ           40044
IDM_WINDOWS          equ           40045
IDD_DIALOG4          equ           113
IDD_DIALOG5          equ           114
_PROCVAR2    typedef proto :DWORD,:DWORD
_PROCVAR0    typedef proto
PROCVAR2      typedef ptr _PROCVAR2
PROCVAR0      typedef ptr  _PROCVAR0
        .data?
hInstance    dword  ?
hWinMain      dword  ?
hAccelerator  dword  ?
hMenu        dword  ?
hSubMenu      dword  ?
hSysMenu      dword  ?
hIcon1      dword  ?
hIcon2      dword  ?
hCur1        dword  ?
hCur2        dword  ?
szBuf        byte  1024 dup(?)
szBuf2      byte  1024 dup(?)
szBuf3      byte  1024 dup(?)
hBit1        dword  ?
hBit2        dword  ?
dwPos        dword  ?
ID_TIME1      equ  1
ID_TIME2      equ  2
ID_TIME3      equ  3
dwTime      dword  ?
stTime      SYSTEMTIME <?>
hResource    dword  ?
stFindReplace  FINDREPLACE <?>
uvMsg        dword  ?
szFile      byte  MAX_PATH DUP(?)
dwColor      dword  ?
stLogFONT    LOGFONT  <?>
hStatus      dword  ?
stFileTime    FILETIME  <?>
hEdit1      dword  ?
lpOldProc    dword  ?
hFile        dword  ?
hMap        dword  ?
lpView        dword  ?
hWndEdit      dword  ?
lpInstall    PROCVAR2 ?
lpUninstall    PROCVAR0  ?
hDll        dword  ?
WM_HOOK      EQU    WM_USER+200H
szAscii      byte  4 dup(?)
hThread      dword  ?
hThread2      DWORD ?
hProcess      dword  ?
dwProcess    dword  ?
stStartup    STARTUPINFO <?>
stProcess    PROCESS_INFORMATION <?>
hEvent      dword  ?
stProcessEntry  PROCESSENTRY32 <?>
hSnapshot    dword  ?
        .data
szClassName  byte  'classanem',0
szTitle    byte  'title',0
szCur2    byte  '1.ANI',0
szKey      byte  '按下的值是%08x',0
szUser    byte  '自定义',0
szPath    byte  '*.*',0
szAll      byte  '你选择的有如下几项:'
szEnter    byte  0dh,0ah,0
szTimer    byte  '%02d:%02d:%02d',0
szType    byte  'UWMA',0
szFINDTEXT  byte  'commdlg_FindReplace',0
szFilter    byte  'all txt doc',0,'*.txt;*.doc',0,'all',0,'*.*',0,0
szDef      byte  'txt',0
szFont    byte  '选择的字体是%s 大小是%d 字体颜色是%08x',0
szColor    byte  '你选择的颜色是%d',0
CustColor  dword  16 dup(?)
szPart    dword  40,150,170,-1
szChar    byte  '0123456789abcdefABCDEF',0
szClass    byte  'HEXINT',0
szEdit    byte  'EDIT',0
szText    byte  '1.txt',0
szDll      byte  'hook.dll',0
szInstall  byte  'InstallHook',0
szUninstall  byte  'UninstallHook',0
szNumThread    byte  '数值:%d',0
szStillThread  byte  '线程正在运行状态,将被强行终止',0
szNoStill    byte  '线程已经终止,不能再进行操作,线程退出码是%d',0
szWeb      byte  'http://user.qzone.qq.com/37261550',0
szExplore  byte  'explore',0
szMailto    byte  'mailto:37261550@qq.com',0
szCurrent  byte  '1.exe',0
szErr1    byte  '打开窗口句柄失败',0
szErr2    byte  '打开进程失败,权限不够',0
        .code

_message    proc  _wParam
        pushad
        invoke  wsprintf,offset szBuf,offset szKey,_wParam
        invoke  MessageBox,hWinMain,offset szBuf,0,MB_OK
        popad
        ret
_message    endp
_timeu      proc  hWnd,uMsg,_id,_time
          mov    eax,_id
          .if    eax==dwTime
                ;invoke  _message,_id
          .elseif  eax==ID_TIME2
                ;invoke  _message,_id
          .endif
          ret
_timeu      endp
_diaProc    proc  uses  ebx  esi  edi hWnd,uMsg,wParam,lParam
        local    @dwCount
        mov    eax,uMsg
        .if    eax==WM_INITDIALOG
              ;invoke  CheckDlgButton,hWnd,IDC_CHECK1,BST_CHECKED
              invoke  CheckDlgButton,hWnd,IDC_CHECK2,BST_CHECKED
              invoke  CheckRadioButton,hWnd,IDC_RADIO1,IDC_RADIO2,IDC_RADIO1
              ;invoke  SendDlgItemMessage,hWnd,IDC_CHECK1,BM_GETCHECK,0,0
              ;invoke  CheckDlgButton,hWnd,IDC_CHECK2,EAX
              invoke  SendDlgItemMessage,hWnd,IDC_EDIT1,EM_SETLIMITTEXT,10,0
              invoke  SendDlgItemMessage,hWnd,IDC_EDIT1,EM_SETREADONLY,TRUE,0
              invoke  SendDlgItemMessage,hWnd,IDC_COMBO1,CB_ADDSTRING,0,addr szClassName
              invoke  SendDlgItemMessage,hWnd,IDC_COMBO1,CB_SETITEMDATA,eax,1
              invoke  SendDlgItemMessage,hWnd,IDC_COMBO1,CB_ADDSTRING,0,addr szTitle
              invoke  SendDlgItemMessage,hWnd,IDC_COMBO1,CB_SETITEMDATA,eax,2
              invoke  SendDlgItemMessage,hWnd,IDC_COMBO1,CB_ADDSTRING,0,addr szUser
              invoke  SendDlgItemMessage,hWnd,IDC_COMBO1,CB_SETITEMDATA,eax,3
              invoke  SendDlgItemMessage,hWnd,IDC_COMBO1,CB_SETCURSEL,0,0
              invoke  LoadBitmap,hInstance,IDB_BITMAP1
              mov    hBit1,eax
              invoke  SendDlgItemMessage,hWnd,IDC_BITMAP,STM_SETIMAGE,IMAGE_BITMAP,eax
              invoke  LoadBitmap,hInstance,IDB_BITMAP2
              mov    hBit2,eax

              
              invoke  SendDlgItemMessage,hWnd,IDC_LIST1,LB_ADDSTRING,0,addr szClassName
              invoke  SendDlgItemMessage,hWnd,IDC_LIST1,LB_SETITEMDATA,eax,1
              invoke  SendDlgItemMessage,hWnd,IDC_LIST1,LB_ADDSTRING,0,addr szTitle
              invoke  SendDlgItemMessage,hWnd,IDC_LIST1,LB_SETITEMDATA,eax,2
              invoke  SendDlgItemMessage,hWnd,IDC_LIST1,LB_ADDSTRING,0,addr szUser
              invoke  SendDlgItemMessage,hWnd,IDC_LIST1,LB_SETITEMDATA,eax,3
              
              invoke  SendDlgItemMessage,hWnd,IDC_LIST2,LB_DIR,DDL_DRIVES OR DDL_ARCHIVE ,addr szPath
              ;invoke  SendDlgItemMessage,hWnd,IDC_LIST2,LB_RESETCONTENT,0,0;清除所有
              
              invoke  SendDlgItemMessage,hWnd,IDC_CUSTOM1,SBM_SETRANGE,0,100
              
              invoke  SetTimer,hWnd,ID_TIME1,1000,NULL ;1
              invoke  SetTimer,hWnd,ID_TIME3,2000,NULL ;1
              invoke  SetTimer,NULL,NULL,1000,addr _timeu ;2
              mov    dwTime,eax
              invoke  SetTimer,hWnd,ID_TIME2,4000,addr _timeu ;2
              
              invoke  FindResource,hInstance,IDR_UWMA1,addr szType
              .if    eax
                    mov    hResource,eax
                    invoke  SizeofResource,hMenu,hResource
                    invoke  LoadResource,hInstance,hResource
                    .if    eax
                          invoke  LockResource,eax
                          invoke  sndPlaySound,eax,SND_ASYNC OR SND_MEMORY
                          ;invoke  _message,wParam
                    .ENDIF
              .endif
              
              
        .elseif  eax==WM_COMMAND
              mov    eax,wParam
              .if    ax==IDC_CHECK1
                    invoke  IsDlgButtonChecked,hWnd,IDC_CHECK1
                    .if    eax==BST_CHECKED
                          invoke  SetWindowPos,hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE OR SWP_NOMOVE

⌨️ 快捷键说明

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