forked from AgileEhsan/winasm-studio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BrowseProc.asm
140 lines (129 loc) · 3.38 KB
/
BrowseProc.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
.CODE
SelectInTheCombo Proc hWin:DWORD,nLine:DWORD,hCombo:HWND
Invoke InProcedure,hWin,nLine
.If EAX==FALSE
Invoke SendMessage,hCombo,CB_SETCURSEL,0,0
.Else
Invoke SendMessage,hCombo,CB_SELECTSTRING ,-1,EAX
.EndIf
RET
SelectInTheCombo EndP
DeleteProcTreeItems Proc hWndEdit:DWORD
Local lvfi:LV_FINDINFO
MOV lvfi.flags,LVFI_PARAM
M2M lvfi.lParam,hWndEdit
@@:
Invoke SendMessage,WinAsmHandles.hBlocksList,LVM_FINDITEM,-1,ADDR lvfi
.If EAX!=-1 ;i.e if there is such text in the list
Invoke SendMessage,WinAsmHandles.hBlocksList,LVM_DELETEITEM,EAX,0
JMP @B
.EndIf
RET
DeleteProcTreeItems EndP
UpdateProcCombo Proc Uses ESI hWndEdit:DWORD,hCombo:DWORD
Local nLine:DWORD
Invoke SendMessage,hCombo,CB_RESETCONTENT,0,0
Invoke SendMessage,hCombo,CB_ADDSTRING,0,Offset szSelectProcedureOrGoToTop
MOV nLine,-1
@@:
Invoke SendMessage,hWndEdit,CHM_NXTBOOKMARK,nLine,1
.If EAX!=-1
MOV nLine,EAX
Invoke SendMessage,hWndEdit,CHM_ISLINE,nLine,Offset szProc
.If EAX !=-1
CALL AddName
.EndIf
JMP @B
.EndIf
MOV nLine,-1
@@:
Invoke SendMessage,hWndEdit,CHM_NXTBOOKMARK,nLine,2
.If EAX!=-1
MOV nLine,EAX
Invoke SendMessage,hWndEdit,CHM_ISLINE,nLine,Offset szProc
.If EAX !=-1
CALL AddName
.EndIf
JMP @B
.EndIf
Invoke SendMessage,hCombo,CB_SETCURSEL,0,0
RET
;-----------------------------------------------------------------------
AddName:
Invoke GetLineText,hWndEdit,nLine,Offset tmpBuffer
.If szProc[0]=="$"
Invoke GetFirstWordOfLine,Offset tmpBuffer
.Else
Invoke GetSecondWordOfLine,Offset tmpBuffer
.EndIf
Invoke SendMessage,hCombo,CB_ADDSTRING,0,EAX
RETN
UpdateProcCombo EndP
UpdateBlocksList Proc Uses ESI EDI hWndEdit:DWORD
LOCAL nLine :DWORD
LOCAL Buffer[256] :BYTE
Local lvi :LVITEM
;PrintHex 1
MOV lvi.imask, LVIF_TEXT OR LVIF_PARAM OR LVIF_IMAGE
M2M lvi.lParam,hWndEdit
MOV lvi.iSubItem, 0
MOV lvi.cchTextMax,256
MOV nLine,-1
@@:
Invoke SendMessage,hWndEdit,CHM_NXTBOOKMARK,nLine,1
.If EAX!=-1
MOV nLine,EAX
Invoke SendMessage,hWndEdit,CHM_ISLINE,nLine,Offset szProc
.If EAX !=-1
MOV EDI, Offset szProc
MOV lvi.iImage,7
.Else
Invoke SendMessage,hWndEdit,CHM_ISLINE,nLine,Offset szMacro
.If EAX!=-1
MOV EDI, Offset szMacro
MOV lvi.iImage,3
.Else ;szStruct
MOV EDI, Offset szStruct
MOV lvi.iImage,8
.EndIf
.EndIf
CALL AddName
JMP @B
.EndIf
MOV nLine,-1
@@:
Invoke SendMessage,hWndEdit,CHM_NXTBOOKMARK,nLine,2
.If EAX!=-1
MOV nLine,EAX
Invoke SendMessage,hWndEdit,CHM_ISLINE,nLine,Offset szProc
.If EAX !=-1
MOV EDI, Offset szProc
MOV lvi.iImage,7
.Else
Invoke SendMessage,hWndEdit,CHM_ISLINE,nLine,Offset szMacro
.If EAX!=-1
MOV EDI, Offset szMacro
MOV lvi.iImage,3
.Else ;szStruct
MOV EDI, Offset szStruct
MOV lvi.iImage,8
.EndIf
.EndIf
CALL AddName
JMP @B
.EndIf
RET
;-----------------------------------------------------------------------
AddName:
Invoke GetLineText,hWndEdit,nLine,Offset tmpBuffer
.If BYTE PTR [EDI]=="$"
Invoke GetFirstWordOfLine,Offset tmpBuffer
.Else
Invoke GetSecondWordOfLine,Offset tmpBuffer
.EndIf
;Invoke GetFirstWordOfLine,hWndEdit,nLine,ADDR tmpBuffer
MOV lvi.iItem,0
MOV lvi.pszText,EAX
Invoke SendMessage,WinAsmHandles.hBlocksList,LVM_INSERTITEM,0,ADDR lvi
RETN
UpdateBlocksList EndP