1 Востаннє редагувалося Torbins (25.10.2014 17:55:32)

Тема: Де можливо знайти змістовний довідник з Win32 API

Наприклад у мене є код п 50-345 вказанний нижче і мені потрібно знайти відповіть на запитання стосовно значеня кожного слова коду. У мене були кілька довідників по WinAPI, але вони нажаль не містять змістовну і повну інформацію. Наприклад по ним я не можу знайти значення як усіх слів окремо узятих так і сполучення-шляху : п 70\ includelib \masm32\lib\Comctl32.lib , і не тільки п 70 але і багато інших, де знайти повний довідник чи щось інше по якому можливо знайти зміст усього цього ?

Прихований текст
50)      .386
51)      .model flat,stdcall
52)      option casemap:none
53)      include \masm32\include\windows.inc
54)      include \masm32\include\masm32.inc
55)      include \masm32\include\gdi32.inc
 include \masm32\include\user32.inc
57)      include \masm32\include\kernel32.inc
58)      include \masm32\include\Comctl32.inc
59)      include \masm32\include\comdlg32.inc
60)      include \masm32\include\shell32.inc
61)      include \masm32\include\oleaut32.inc
62)      include \masm32\include\msvcrt.inc
63)      include \masm32\include\dialogs.inc
64)      include \masm32\macros\macros.asm
65)      include \masm32\include\winmm.inc

66)      includelib \masm32\lib\masm32.lib
67)      includelib \masm32\lib\gdi32.lib
68)      includelib \masm32\lib\user32.lib
69)      includelib \masm32\lib\kernel32.lib
70)      includelib \masm32\lib\Comctl32.lib
71)      includelib \masm32\lib\comdlg32.lib
72)      includelib \masm32\lib\shell32.lib
73)      includelib \masm32\lib\oleaut32.lib
74)      includelib \masm32\lib\msvcrt.lib
75)      includelib \masm32\lib\winmm.lib
      
76)      WinMain proto :DWORD,:DWORD,:DWORD,:DWORD    
77)      Data proto :DWORD,:DWORD

78) .data
79) flag db 0h
80) pidl dd 0h
81) n1 db "C:\WINDOWS\system32\avicap32.dll",0
82) n2 db "-",0
83) n3 db "-",0
84) n4 db "VIDEOSOURCE",0
85) n5 db "стоп",0
86) n6 db "-",0
87) n7 db "снять фото",0
88) n8 db "Начать запись видео",0
89) n9 db "настройка сжатия видео",0

90) n10 db "папка для файлов",0
91) n11 db "формат",0
92) ButtonClassName db "button",0
93) ClassName db "SimpleWinClass",0   
94) AppName db "oko",0  
95) funcap db "capCreateCaptureWindowA",0
96) infof db "Выберете папку для файлов",0
97) str1 dd 0
98) buf db 550 dup (0h)
99) papkaf db 550 dup (0h)

100) .data?
101) hdll dd ?
102) afun dd ?
103) hCapWindow dd ?
104) hInstance HINSTANCE ?  
105) CommandLine LPSTR ?  
106) hBut2 HWND ?
107) hBut1 HWND ?
108) hBut3 HWND ?
109) hBut4 HWND ?
110) hBut5 HWND ?
111) hBut6 HWND ?
112) hBut7 HWND ?
113) hBut8 HWND ?

114) CAPTUREPARMS STRUCT
115) dwRequestMicroSecPerFrame          DWORD       ?
116) fMakeUserHitOKToCapture                BOOL          ?
117) wPercentDropForError                       UINT            ?
118) fYield                                                      BOOL         ?
119) dwIndexSize                                        DWORD      ?
120) wChunkGranularity                             UINT           ?
121) fUsingDOSMemory                              BOOL          ?
122) wNumVideoRequested                      UINT            ?
123) fCaptureAudio                                     BOOL          ?
124) wNumAudioRequested                      UINT            ?
125) vKeyAbort                                            UINT           ?
126) fAbortLeftMouse                                 BOOL          ?
127) fAbortRightMouse                               BOOL          ?
128) fLimitEnabled                                      BOOL          ?
129) wTimeLimit                                          UINT           ?
130) fMCIControl                                         BOOL          ?
131) fStepMCIDevice                                  BOOL          ?
132) dwMCIStartTime                                 DWORD      ?
133) dwMCIStopTime                                  DWORD      ?
134) fStepCaptureAt2x                              BOOL          ?
135) wStepCaptureAverageFrames        UINT           ?
136) dwAudioBufferSize                             DWORD      ?
137) fDisableWriteCache                            BOOL         ?
138) AVStreamMaster                                UINT           ?
139) CAPTUREPARMS ENDS

140) BROWSEINFO STRUCT
141)  hwndOwner          dd ?
142)  pidlRoot                 dd ?
143)  pszDisplayName dd ?
144)  lpszTitle                dd ?
145)  ulFlags                  dd ?
146)  lpfn                        dd ?
147)  lParam                  dd ?
148)  iImage                  dd ?
149)  BROWSEINFO ENDS

150) .const
151) ButID2 equ 2
152) ButID1 equ 1
153) ButID3 equ 3
154) ButID4 equ 4
155) ButID5 equ 5
156) ButID6 equ 6
157) ButID7 equ 7
158) ButID8 equ 8

159) .code
160) start:
161) invoke LoadLibrary, addr n1
162) mov hdll, eax
163) invoke GetProcAddress, hdll, addr funcap
164) mov afun, eax
165) invoke GetModuleHandle, NULL  
166) mov hInstance,eax   
167) invoke GetCommandLine    
168) mov CommandLine,eax
169) invoke WinMain, hInstance,NULL, CommandLine, SW_SHOWDEFAULT 
170) invoke ExitProcess,eax 
171) WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD        
172) LOCAL wc:WNDCLASSEX   
173) LOCAL msg:MSG 
174) LOCAL hwnd:HWND
175) mov wc.cbSize,SIZEOF WNDCLASSEX 
176) mov wc.style, CS_HREDRAW or CS_VREDRAW 
177) mov wc.lpfnWndProc, OFFSET WndProc 
178) mov wc.cbClsExtra,NULL
179) mov wc.cbWndExtra,NULL
180) push hInstance
181) pop wc.hInstance
182) invoke LoadIcon, NULL, IDI_EXCLAMATION
183) mov   wc.hIcon, eax
184) invoke LoadCursor, NULL, IDC_ARROW
185) mov   wc.hCursor, eax
186) mov wc.hIconSm,NULL
187) mov wc.hbrBackground,COLOR_BTNFACE+1  
188) mov wc.lpszMenuName,NULL 
189) mov wc.lpszClassName,OFFSET ClassName 
190) invoke RegisterClassEx, addr wc 
191) invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,WS_MINIMIZEBOX or WS_SYSMENU,0,0, 700 , 500 ,NULL,NULL,hInst,NULL
192) mov hwnd,eax 
193) invoke ShowWindow, hwnd,SW_SHOWNORMAL  
194) invoke UpdateWindow, hwnd 
195)    .WHILE TRUE  
196) invoke GetMessage, ADDR msg,NULL,0,0  
197)     .BREAK .IF (!eax)
198) invoke TranslateMessage, ADDR msg 
199) invoke DispatchMessage, ADDR msg 
200)     .ENDW   
201) mov eax,msg.wParam 
202) ret
203) WinMain endp
204) WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
205) LOCAL cam:CAPTUREPARMS
206) LOCAL forb:BROWSEINFO
207) .IF uMsg==WM_COMMAND
208) mov eax, wParam
209) ;//////////////////////////////////////////////////////////////////////////////////////
210) .IF   ax==ButID1
211) shr eax,16
212) .IF ax==BN_CLICKED 
213) invoke Beep, 1111, 111   ; Гц, мс
214) xor eax,eax
215) .ENDIF
216) .ENDIF
217) ;-------------------------------------------------------------------------------------------------------------
218) .IF   ax==ButID2
219) shr eax,16
220) .IF ax==BN_CLICKED 
221) invoke Beep, 1144, 111
222) xor eax,eax
223) .ENDIF
224) .ENDIF
225) ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

226) .IF   ax==ButID3
227) shr eax,16
228) .IF ax==BN_CLICKED 
229) invoke SendMessage, hCapWindow, WM_CAP_DLG_VIDEOSOURCE, 0, 0
230) xor eax,eax
231) .ENDIF
232) .ENDIF
233) ;//////////////////////////////////////////////////////////////////////////////////////
234) .IF   ax==ButID4
235) shr eax,16
236) .IF ax==BN_CLICKED 
237) invoke Data, addr papkaf, SADD("bmp") 
238) invoke SendMessage, hCapWindow, WM_CAP_FILE_SAVEDIBA, 0, str1
239) xor eax,eax
240) .ENDIF
241) .ENDIF
242) ;//////////////////////////////////////////////////////////////////////////////////////
243) .IF   ax==ButID5
244) shr eax,16
245) .IF ax==BN_CLICKED 
246) .if flag==0h
247) invoke Data, addr papkaf, SADD("avi") 
248) invoke SendMessage, hCapWindow, WM_CAP_FILE_SET_CAPTURE_FILEA, 0, str1
249) mov cam.dwRequestMicroSecPerFrame, 50000       ; мкс,  ~15 кадров в секунду
250) mov cam.fMakeUserHitOKToCapture, FALSE            ; TRUE- dlg,   FALSE- no dlg
251) mov cam.wPercentDropForError, 10                         ; максимально допустимый процент выпадения кадров 1-100%
252) mov cam.fYield, TRUE                                                  ; TRUE- отдельный фоновый поток       (или FALSE)
253) mov cam.dwIndexSize, 34952                                  ;Значения находятся в диапазоне от 1800 до 324000   (если 0, то значение по умолчанию 34952 не используется)
254) mov cam.wChunkGranularity, 0                               ;Размер логического блока файла AVI в байтах (наверно)
255) mov cam.fUsingDOSMemory, 0                               ;не используется
256) mov cam.wNumVideoRequested, 2                       ;максимальное количество выделяемых видеобуферов, область памяти буфера указана в fUsingDOSMemory
257) mov cam.fCaptureAudio, TRUE                              ;флаг захвата звука. если TRUE(по умолчанию), то запись звука, FALSE без звука
258) mov cam.wNumAudioRequested, 2                      ;Kоличество аудио буферов. Максимальное количество 10.
259) mov cam.vKeyAbort, VK_ESCAPE                        ;Виртуальный код клавиши, используется для прерывания записи. Можно использовать комбинации
260) mov cam.fAbortLeftMouse, FALSE                      ;Завершение записи левой кнопкой мыши- TRUE(по умолчанию)
261) mov cam.fAbortRightMouse, FALSE                    ;Завершение записи правой кнопкой мыши- TRUE(по умолчанию)
262) mov cam.fLimitEnabled, FALSE                           ;включить(TRUE) или выключить(FALSE)  wTimeLimit
263) mov cam.wTimeLimit, 0                                       ;секунды. длительность записи. актуально если fLimitEnabled TRUE
264) mov cam.fMCIControl, FALSE                             ;Флаг MCI-устройства видеозахвата.(если FALSE, то три следующие параметра не используются)
265) mov cam.fStepMCIDevice, 0                               ;Флаг шагового захвата. TRUE-включен шаговый захват. FALSE- обычный захват.
266) mov cam.dwMCIStartTime, 0                               ;миллисекунды. исходное положение для захвата
267) mov cam.dwMCIStopTime, 0                                ;мс. время до остановки захвата.
268) mov cam.fStepCaptureAt2x, TRUE                      ;флаг масштаба захвата.Если TRUE,то включено уменьшение масштаба. FALSE- полномасштабный захват(если поддерживается)
269) mov cam.wStepCaptureAverageFrames, 5      ; хрен его знает
270) mov cam.dwAudioBufferSize, 330000                ; размер звукового буфера, байты
271) mov cam.fDisableWriteCache, 0                         ; не используется
272) mov cam.AVStreamMaster, AVSTREAMMASTER_AUDIO            ; AVSTREAMMASTER_AUDIO- время аудиодорожки равно времени видеодорожки. AVSTREAMMASTER_NONE- продолжительность аудио и видео могут различаться.
273) invoke SendMessage, hCapWindow, WM_CAP_SET_SEQUENCE_SETUP, 57 , addr cam    ; 57- 60
274) invoke SendMessage, hCapWindow, WM_CAP_SEQUENCE, 0, 0
275) mov flag, 01h
276) invoke SetWindowText, hBut5, addr n5
277) jmp metka
278) .endif
279) .if flag==01h
280) invoke SendMessage, hCapWindow, WM_CAP_ABORT, 0, 0
281) mov flag, 0h
282) invoke SetWindowText, hBut5, addr n8
283) .endif
284) metka:
285) xor eax,eax
286) .ENDIF
287) .ENDIF
288) ;//////////////////////////////////////////////////////////////////////////////////////
289) .IF   ax==ButID6
290) shr eax,16
292) .IF ax==BN_CLICKED 
293) invoke SendMessage, hCapWindow, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0
294) xor eax,eax
295) .ENDIF
296) .ENDIF
297) ;//////////////////////////////////////////////////////////////////////////////////////
298) .IF   ax==ButID7
299) shr eax,16
230) .IF ax==BN_CLICKED 
231) mov eax, hWnd
232) mov forb.hwndOwner, eax
233) mov forb.pidlRoot, 0
234) mov forb.pszDisplayName, 0
235) lea eax, infof
236) mov forb.lpszTitle, eax
237) mov forb.ulFlags, BIF_USENEWUI
268) mov forb.lpfn, 0
239) mov forb.lParam, 0
240) mov forb.iImage, 0
241) invoke SHBrowseForFolder, addr forb
242) mov pidl,eax
242) invoke SHGetPathFromIDList, eax, addr papkaf
243) xor eax,eax
244) .ENDIF
245) .ENDIF
246) ;//////////////////////////////////////////////////////////////////////////////////////
247) .IF   ax==ButID8
248) shr eax,16
249) .IF ax==BN_CLICKED 
250) invoke SendMessage, hCapWindow, WM_CAP_DLG_VIDEOFORMAT, 0, 0
251) xor eax,eax
252) .ENDIF
253) .ENDIF
254) ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
255) .ENDIF
256) .IF uMsg==WM_CREATE 
257) push 0
258) push hWnd
259) push 500
260) push 500
261) push 0
262) push 0
263) push WS_VISIBLE or WS_CHILD
264) push 0
265) call afun
266) mov hCapWindow, eax
267) invoke SendMessage, hCapWindow, WM_CAP_DRIVER_CONNECT, 0, 0
268) invoke SendMessage, hCapWindow, WM_CAP_SET_SCALE , 1, 0
269) invoke SendMessage, hCapWindow, WM_CAP_SET_PREVIEWRATE , 20, 0
270) invoke SendMessage, hCapWindow, WM_CAP_SET_PREVIEW , 1, 0
271) invoke ShowWindow, hCapWindow, SW_SHOW
272) invoke CreateWindowEx, NULL, ADDR ButtonClassName, ADDR n2,WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,510, 12, 70, 25, hWnd, ButID1, hInstance, NULL
273) mov  hBut1, eax
274) invoke ShowWindow, hBut1, SW_HIDE
275) invoke CreateWindowEx, NULL, ADDR ButtonClassName, ADDR n3,WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,510, 45, 70, 25, hWnd, ButID2, hInstance, NULL
276) mov  hBut2, eax
277) invoke ShowWindow, hBut2, SW_HIDE
278) invoke CreateWindowEx, NULL, ADDR ButtonClassName, ADDR n4,WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,510, 80, 110, 25, hWnd, ButID3, hInstance, NULL
279) mov  hBut3, eax
280) invoke ShowWindow, hBut3, SW_SHOW
281) invoke CreateWindowEx, NULL, ADDR ButtonClassName, ADDR n7,WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,510, 115, 110, 25, hWnd, ButID4, hInstance, NULL
282) mov  hBut4, eax
283) invoke ShowWindow, hBut4, SW_SHOW
284) invoke CreateWindowEx, NULL, ADDR ButtonClassName, ADDR n8,WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,510, 150, 175, 25, hWnd, ButID5, hInstance, NULL
285) mov  hBut5, eax
286) invoke ShowWindow, hBut5, SW_SHOW
287) invoke CreateWindowEx, NULL, ADDR ButtonClassName, ADDR n9,WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,510, 185, 175, 25, hWnd, ButID6, hInstance, NULL
388) mov  hBut6, eax
289) invoke ShowWindow, hBut6, SW_SHOW
290) invoke CreateWindowEx, NULL, ADDR ButtonClassName, ADDR n10,WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,510, 255, 135, 25, hWnd, ButID7, hInstance, NULL
291) mov  hBut7, eax
292) invoke ShowWindow, hBut7, SW_SHOW
293) invoke CreateWindowEx, NULL, ADDR ButtonClassName, ADDR n11,WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,510, 220, 70, 25, hWnd, ButID8, hInstance, NULL
294) mov  hBut8, eax
295) invoke ShowWindow, hBut8, SW_SHOW
296) .ENDIF
297) .IF uMsg==WM_CLOSE
298) invoke SendMessage, hCapWindow, WM_CAP_DRIVER_DISCONNECT, 0, 0
299) invoke FreeLibrary, hdll
300) call ExitProcess
301) .ENDIF
302) .IF uMsg==WM_DESTROY  
303) invoke SendMessage, hCapWindow, WM_CAP_DRIVER_DISCONNECT, 0, 0
304) invoke FreeLibrary, hdll
305) call ExitProcess
306) .ELSE
307) invoke DefWindowProc,hWnd,uMsg,wParam,lParam  
308) ret
309) .ENDIF
310) xor eax,eax
311) ret
312) WndProc endp
313) ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
314) Data proc put:DWORD, rash:DWORD
315)     LOCAL Year:DWORD
316)     LOCAL Month:DWORD
317)     LOCAL Day:DWORD
318)    LOCAL hour:DWORD
319)    LOCAL minute:DWORD
320)    LOCAL second:DWORD
321)    LOCAL stm:SYSTEMTIME
322)    mov eax, ptr$(buf)
323)    mov str1, eax
324)    invoke GetLocalTime,ADDR stm
325)    movzx eax, stm.wYear
326)    mov Year, ustr$(eax)
            
327)    movzx eax, stm.wMonth
328)    mov Month, ustr$(eax)
            
329)     movzx eax, stm.wDay
330)     mov Day, ustr$(eax)

331)    movzx eax, stm.wHour
332)    mov hour, ustr$(eax)
            
333)    movzx eax, stm.wMinute
334)    mov minute, ustr$(eax)
            
335)     movzx eax, stm.wSecond
336)     mov second, ustr$(eax)
337) .if pidl==0
338)  mov str1, cat$(str1,Year,".",Month,".",Day,"_",hour,"h",minute,"m",second,"s.",rash)
339) ret
340) .endif
341) mov str1, cat$(str1,put,"\",Year,".",Month,".",Day,"_",hour,"h",minute,"m",second,"s.",rash)
342) ret
343) Data endp
344) ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
345) end start

2 Востаннє редагувалося 0xDADA11C7 (25.10.2014 10:42:33)

Re: Де можливо знайти змістовний довідник з Win32 API

MSDN, Iczelion
для

includelib \masm32\lib\Comctl32.lib

дивіться в

include \masm32\include\Comctl32.inc

У мене були кілька довідників по WinAPI, але вони нажаль не містять змістовну і повну інформацію.

Скажіть, ви викладач?

3

Re: Де можливо знайти змістовний довідник з Win32 API

Покажіть людині що таке спойлер.

Подякували: 33355561

4 Востаннє редагувалося Torbins (25.10.2014 17:54:49)

Re: Де можливо знайти змістовний довідник з Win32 API

3335556
З усього рядка "includelib \masm32\lib\Comctl32.lib" треба вибрати лише "Comctl32" і далі вбити в пошук або в MSDN, або зразу в Гугл. Усе інше у вашому коді - звичайний асемблер.

Подякували: 33355561