Ik heb hier een een .asm bestand wat ik aan de praat moet krijgen. Heb zelf alleen asm kennis als korte loops met veel data optimizen met mmx/sse als inline assembler in Delphi, geen dingen als dit. Ik zou een schermpje moeten krijgen wat effe wacht op een bepaalde window en dan wordt er wat code uitgevoerd. Ik krijg het schermpje echter al niet. De 'uit te voeren code', timers, etc heb ik er dus uitgerukt en geprobeerd puur de DialogBox tevoorschijn te toveren en zelfs dat gebeurd niet (ik neem dus ook aan dat hier de fout zit). Met vkdebug blijkt dat DlgProc zelfs totaal niet aangeroepen wordt dus ik vermoed verder dat de fout in 'invoke DialogBoxParam...' zit. Iemand enig idee wat het probleem is?
GAS:
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
| .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD .data hInstance dd 0 sometext db "Some text",0 .data? .const IDM_EXIT equ 32002 .code start: invoke GetModuleHandle, NULL mov hInstance,eax invoke DialogBoxParam, hInstance, 100,NULL,addr DlgProc,NULL invoke ExitProcess,eax DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .IF uMsg==WM_INITDIALOG invoke SetDlgItemText, hWnd, 668, offset sometext .ELSEIF uMsg==WM_CLOSE invoke SendMessage,hWnd,WM_COMMAND,IDM_EXIT,0 .ELSEIF uMsg==WM_COMMAND mov eax,wParam .IF ax==102 invoke ExitProcess,0 .ENDIF .ELSE mov eax,FALSE ret .ENDIF mov eax,TRUE ret DlgProc endp end start |