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

📄 symlinks.asm

📁 符号链接名查看器
💻 ASM
📖 第 1 页 / 共 2 页
字号:
					mov [esi].pszText, eax
					ListView_SetItem g_hwndListView, esi

				.endif
				invoke lstrlen, ebx
				mov  cl, [ebx+eax+1]
				.break .if cl == 0
				lea  ebx, [ebx+eax+1]
				inc lvi.iItem
			.endw
		.endif

		invoke free, edi
		assume esi:nothing

	.endif

	invoke SendMessage, g_hwndListView, WM_SETREDRAW, TRUE, 0

	ret

FillListView endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                       Dlg_OnNotify                                                
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Dlg_OnNotify proc uses esi edi hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

option PROLOGUE:NONE
option EPILOGUE:NONE

	mov eax, lParam
	mov eax, (NMHDR ptr [eax]).hwndFrom
	.if eax == g_hwndListView
		; Notify message from Process List
		mov edi, lParam

		assume edi:ptr NMHDR
		.if [edi].code == LVN_COLUMNCLICK			
			assume edi:ptr NM_LISTVIEW
			mov eax, g_uPrevClickedColumn
			.if [edi].iSubItem != eax
				; Remove bitmap from prev header column
				invoke ImageToHeaderItem, g_hwndHeader, g_uPrevClickedColumn, NULL
				mov g_uSortOrder, SORT_NOT_YET
				m2m g_uPrevClickedColumn, [edi].iSubItem
			.endif					
					
			.if g_uSortOrder == SORT_NOT_YET || g_uSortOrder == SORT_DESCENDING
				mov g_uSortOrder, SORT_ASCENDING
				invoke ImageToHeaderItem, g_hwndHeader, [edi].iSubItem, g_hbmpHeaderArrowDown
			.else
				mov g_uSortOrder, SORT_DESCENDING
				invoke ImageToHeaderItem, g_hwndHeader, [edi].iSubItem, g_hbmpHeaderArrowUp
				.endif					
			invoke SendMessage, g_hwndListView, LVM_SORTITEMSEX, [edi].iSubItem, addr CompareFunc
			invoke UpdatelParam
		.endif
	.endif

	pop eax
	jmp eax								; jmp LeaveDlgProc1

option PROLOGUE:PROLOGUEDEF
option EPILOGUE:EPILOGUEDEF

Dlg_OnNotify endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                       Dlg_OnCommand                                               
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Dlg_OnCommand proc uses esi edi hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

option PROLOGUE:NONE
option EPILOGUE:NONE

	mov eax, $LOWORD(wParam)
	.if eax == IDCANCEL
		invoke EndDialog, hDlg, 0
	.endif

	pop eax
	jmp eax								; jmp LeaveDlgProc1

option PROLOGUE:PROLOGUEDEF
option EPILOGUE:EPILOGUEDEF

Dlg_OnCommand endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                       Dlg_OnSize                                                  
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Dlg_OnSize proc uses esi edi hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

option PROLOGUE:NONE
option EPILOGUE:NONE

	; accommodate ListView size to main dialog

	mov eax, lParam
	and eax, 0FFFFh									; width of main dlg client area

	mov ecx, lParam
	shr ecx, 16										; height of main dlg client area
	invoke MoveWindow, g_hwndListView, 0, 0, eax, ecx, TRUE

	pop eax
	jmp eax								; jmp LeaveDlgProc1

option PROLOGUE:PROLOGUEDEF
option EPILOGUE:EPILOGUEDEF

Dlg_OnSize endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                       Dlg_OnDestroy                                               
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Dlg_OnDestroy proc uses esi edi hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

option PROLOGUE:NONE
option EPILOGUE:NONE

	invoke DeleteHeaderBitmap

	pop eax
	jmp eax								; jmp LeaveDlgProc1

option PROLOGUE:PROLOGUEDEF
option EPILOGUE:EPILOGUEDEF

Dlg_OnDestroy endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                       Dlg_OnInitDialog                                            
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Dlg_OnInitDialog proc uses esi edi hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

option PROLOGUE:NONE
option EPILOGUE:NONE

	m2m g_hDlg, hDlg

	mov g_uPrevClickedColumn, -1
	mov g_uSortOrder, SORT_NOT_YET

	; Set Dialog Icon
	mov g_hMainIcon, $invoke(LoadIcon, g_hInstance, IDI_MAIN_ICON)
	invoke SendMessage, hDlg, WM_SETICON, ICON_BIG, g_hMainIcon

	mov g_hwndListView, $invoke(GetDlgItem, hDlg, IDC_LISTVIEW)

	ListView_SetExtendedListViewStyle g_hwndListView, LVS_EX_GRIDLINES + LVS_EX_FULLROWSELECT

	mov g_hwndHeader, $invoke(SendMessage, g_hwndListView, LVM_GETHEADER, 0, 0)

	; Change List View Header Stiles
	invoke GetWindowLong, g_hwndHeader, GWL_STYLE
	or eax, HDS_HOTTRACK
	invoke SetWindowLong, g_hwndHeader, GWL_STYLE, eax
		
    invoke LoadHeaderBitmap

	; Add about menu
	invoke GetSystemMenu, hDlg, FALSE
	mov esi, eax
	invoke InsertMenu, esi, -1, MF_BYPOSITION + MF_SEPARATOR, 0, 0
	invoke InsertMenu, esi, -1, MF_BYPOSITION + MF_STRING, IDM_ABOUT, offset szAbout

	invoke InsertListViewColumn
	invoke FillListView

	pop eax
	jmp eax								; jmp LeaveDlgProc1

option PROLOGUE:PROLOGUEDEF
option EPILOGUE:EPILOGUEDEF

Dlg_OnInitDialog endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                       Dlg_OnClose                                                 
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Dlg_OnClose proc uses esi edi hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

option PROLOGUE:NONE
option EPILOGUE:NONE

	invoke EndDialog, hDlg, 0

	pop eax
	jmp eax								; jmp LeaveDlgProc1

option PROLOGUE:PROLOGUEDEF
option EPILOGUE:EPILOGUEDEF

Dlg_OnClose endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                     Dlg_OnSysCommand                                              
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Dlg_OnSysCommand proc uses esi edi hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

option PROLOGUE:NONE
option EPILOGUE:NONE

	.if wParam == IDM_ABOUT
		invoke MessageBox, hDlg, addr szWrittenBy, addr szAbout, MB_OK + MB_ICONINFORMATION
	.endif

	pop eax
	jmp LeaveDlgProc0

option PROLOGUE:PROLOGUEDEF
option EPILOGUE:EPILOGUEDEF

Dlg_OnSysCommand endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                   Dlg_OnSysColorChange                                            
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Dlg_OnSysColorChange proc uses esi edi hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

option PROLOGUE:NONE
option EPILOGUE:NONE

	invoke DeleteHeaderBitmap
	invoke LoadHeaderBitmap

	pop eax
	jmp LeaveDlgProc0

option PROLOGUE:PROLOGUEDEF
option EPILOGUE:EPILOGUEDEF

Dlg_OnSysColorChange endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                        Dlg_DlgProc                                                
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

DlgProc proc uses esi edi hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

DLG_PROC_LOCAL

	push LeaveDlgProc1
	mov eax, uMsg

	IF_MSG	WM_NOTIFY,			Dlg_OnNotify
	IF_MSG	WM_COMMAND,			Dlg_OnCommand
	IF_MSG	WM_SIZE,			Dlg_OnSize
	IF_MSG	WM_CLOSE,			Dlg_OnClose
	IF_MSG	WM_DESTROY,			Dlg_OnDestroy
	IF_MSG	WM_INITDIALOG,		Dlg_OnInitDialog
	IF_MSG	WM_SYSCOMMAND,		Dlg_OnSysCommand
	IF_MSG	WM_SYSCOLORCHANGE,	Dlg_OnSysColorChange



	pop eax						; remove LeaveDlgProc1 from stack
	; default 
	LeaveDlgProc0::
	xor eax, eax
	ret							; return FALSE

	LeaveDlgProc1::
	xor eax, eax
	inc eax
	ret							; return TRUE
    
DlgProc endp

;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                                                                                   
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

start:

    mov g_hInstance, $invoke(GetModuleHandle, NULL)
    invoke DialogBoxParam, g_hInstance, IDD_MAIN_DIALOG, NULL, addr DlgProc, 0

	invoke ExitProcess, eax
    invoke InitCommonControls

end start

⌨️ 快捷键说明

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