Just for fun, attached a new version if RosAsm2Masm.
It expects a text file in the commandline; if there is no argument, RosAsmTest.asm is assumed. For the converted text, use Console Build All in qEditor. Here is an example:
TITLE CODE
_________________________________________________________________________
[IDD_MAINDIALOG 1000]
[IDC_OPEN 10]
[IDC_CLOSE 1]
[IDC_EXIT 2]
[IDC_TEXT 100]
[hInstance: D$ 0]
[CommandLine: D$ 0]
Main:
call 'Kernel32.GetModuleHandleA' &NULL
mov D$hInstance eax
call 'kernel32.GetCommandLineA'
mov D$CommandLine eax
call 'USER32.DialogBoxParamA' D$hinstance, IDD_MAINDIALOG, &NULL, ScanHeaderFile, &NULL
call 'kernel32.ExitProcess' eax
______________________________________________________________________________________________________________
; Tag Dialog 1000
[hEdit: D$ 0]
Proc ScanHeaderFile:
Arguments @Adressee, @Message, @wParam, @lParam
pushad
...If D@Message = &WM_COMMAND ; User action
..If D@wParam = IDC_EXIT;, D@wParam = M03_Exit ; User clicks on upper right [X] or Exited through the menu
call HeaderScanCleanUp D@Adressee
call 'USER32.EndDialog' D@Adressee &NULL
..Else_If D@wParam = IDC_CLOSE
call HeaderScanCleanUp D@Adressee
..End_If
...Else_If D@Message = &WM_INITDIALOG
;move D$hwnd D@Adressee
call 'user32.SendMessageA' D@Adressee, &WM_SETTEXT, 0, {B$ "Processes view", 0}
call 'user32.GetDlgItem' D@Adressee, IDC_TEXT | mov D$hEdit eax
call 'USER32.SendMessageA' D$hEdit, &EM_SETLIMITTEXT, 0, 0 ; extends the text limit ot the edit control to 0-1
call GetProcessList
...Else_If D@Message = &WM_CLOSE
call HeaderScanCleanUp D@Adressee
call 'USER32.EndDialog' D@Adressee &NULL
...Else
popad | mov eax &FALSE | ExitP
...End_If
L9: popad | mov eax &TRUE
EndP
____________________________________________________________________________________
Proc HeaderScanCleanUp:
Arguments @Adressee
call 'USER32.SendDlgItemMessageA' D@Adressee, IDC_TEXT, &WM_SETTEXT, 0, &NULL
EndP
TITLE BeginProcess
__________________________________________________________________________________________________
[PROCESSENTRY32.dwSizeDis 0
PROCESSENTRY32.cntUsageDis 4
PROCESSENTRY32.th32ProcessIDDis 8
PROCESSENTRY32.th32DefaultHeapIDDis 12
PROCESSENTRY32.th32ModuleIDDis 16
PROCESSENTRY32.cntThreadsDis 20
PROCESSENTRY32.th32ParentProcessIDDis 24
PROCESSENTRY32.pcPriClassBaseDis 28
PROCESSENTRY32.dwFlagsDis 32
PROCESSENTRY32.szExeFileDis 36]
[Size_Of_PROCESSENTRY32 296]
Proc GetProcessList:
Local @hSnapShot, @dwPriorityClass, @hProcess
Structure @PROCESSENTRY32 296, @PROCESSENTRY32.dwSizeDis 0, @PROCESSENTRY32.cntUsageDis 4, @PROCESSENTRY32.th32ProcessIDDis 8,
@PROCESSENTRY32.th32DefaultHeapIDDis 12, @PROCESSENTRY32.th32ModuleIDDis 16, @PROCESSENTRY32.cntThreadsDis 20,
@PROCESSENTRY32.th32ParentProcessIDDis 24, @PROCESSENTRY32.pcPriClassBaseDis 28, @PROCESSENTRY32.dwFlagsDis 32,
@PROCESSENTRY32.szExeFileDis 36
; Take a snapshot of all processes in the system.
call 'kernel32.CreateToolhelp32Snapshot' &TH32CS_SNAPPROCESS, 0
If eax = &INVALID_HANDLE_VALUE
call ReportWinError {'CreateToolhelp32Snapshot: Invalid function on the system or it is corrupted !' 0}
xor eax eax | ExitP
End_If
mov D@hSnapShot eax
; Set the size of the structure before using it.
call ZeroMemory D@PROCESSENTRY32, Size_Of_PROCESSENTRY32
mov D@PROCESSENTRY32.dwSizeDis Size_Of_PROCESSENTRY32
; Retrieve information about the first process,
; and exit if unsuccessful
call 'kernel32.Process32First' D@hSnapShot, D@PROCESSENTRY32
If eax = &FALSE
call ReportWinError {'Process32First' 0} ; show cause of failure
call 'KERNEL32.CloseHandle' D@hSnapShot ; clean the snapshot object
xor eax eax | ExitP
End_If
Converted:include \masm32\include\masm32rt.inc
.686
.xmm
.code
TITLE CODE
;________________________________________________________________________
IDD_MAINDIALOG=1000
IDC_OPEN=10
IDC_CLOSE=1
IDC_EXIT=2
IDC_TEXT=100
.data
hInstance dd 0
CommandLine dd 0
.code
Main:
invoke GetModuleHandleA, NULL
mov DWORD ptr [hInstance], eax
invoke GetCommandLineA
mov DWORD ptr [CommandLine], eax
invoke DialogBoxParamA, DWORD ptr [hinstance,], IDD_MAINDIALOG, NULL, ScanHeaderFile, NULL
invoke ExitProcess, eax
;_____________________________________________________________________________________________________________
; Tag Dialog 1000
.data
hEdit dd 0
.code
ScanHeaderFile proc @Adressee, @Message, @wParam, @lParam
pushad
.If @Message== WM_COMMAND ; User action
.If @wParam== IDC_EXIT ;, D@wParam = M03_Exit ; User clicks on upper right [X] or Exited through the menu
invoke HeaderScanCleanUp, @Adressee
invoke EndDialog, @Adressee, NULL
.Else_If @wParam== IDC_CLOSE
invoke HeaderScanCleanUp, @Adressee
.End_If
.Else_If @Message== WM_INITDIALOG
;move D$hwnd D@Adressee
invoke SendMessageA, @Adressee, WM_SETTEXT, 0, chr$("Processes view", 0))
invoke GetDlgItem, @Adressee, IDC_TEXT
mov DWORD ptr [hEdit], eax
invoke SendMessageA, DWORD ptr [hEdit,], EM_SETLIMITTEXT, 0, 0 ; extends the text limit ot the edit control to 0-1
invoke GetProcessList
.Else_If @Message== WM_CLOSE
invoke HeaderScanCleanUp, @Adressee
invoke EndDialog, @Adressee, NULL
.Else
popad
mov eax, FALSE
ExitP
.End_If
L9: popad
mov eax, TRUE
ret
ScanHeaderFile endp
;___________________________________________________________________________________
HeaderScanCleanUp proc @Adressee
invoke SendDlgItemMessageA, @Adressee, IDC_TEXT, WM_SETTEXT, 0, NULL
ret
HeaderScanCleanUp endp
TITLE BeginProcess
;_________________________________________________________________________________________________
PROCESSENTRY32.dwSizeDis=0
PROCESSENTRY32.cntUsageDis 4
PROCESSENTRY32.th32ProcessIDDis 8
PROCESSENTRY32.th32DefaultHeapIDDis 12
PROCESSENTRY32.th32ModuleIDDis 16
PROCESSENTRY32.cntThreadsDis 20
PROCESSENTRY32.th32ParentProcessIDDis 24
PROCESSENTRY32.pcPriClassBaseDis 28
PROCESSENTRY32.dwFlagsDis 32
PROCESSENTRY32.szExeFileDis 36]
Size_Of_PROCESSENTRY32=296
GetProcessList proc
Local @hSnapShot, @dwPriorityClass, @hProcess
Local @hSnapShot, @dwPriorityClass, @hProcess
@PROCESSENTRY32.th32DefaultHeapIDDis 12, @PROCESSENTRY32.th32ModuleIDDis 16, @PROCESSENTRY32.cntThreadsDis 20,
@PROCESSENTRY32.th32ParentProcessIDDis 24, @PROCESSENTRY32.pcPriClassBaseDis 28, @PROCESSENTRY32.dwFlagsDis 32,
@PROCESSENTRY32.szExeFileDis 36
; Take a snapshot of all processes in the system.
invoke CreateToolhelp32Snapshot, TH32CS_SNAPPROCESS, 0
.If eax== INVALID_HANDLE_VALUE
invoke ReportWinError,
xor eax, eax
ExitP
.End_If
You'll still get error messages, but they can more easily be corrected by hand.