Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2015, 14:45   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как сделать не консоль и запуск .exe
Скомпилировать проект соответственно с нужными параметрами )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2015, 14:47   #12
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Разобрался с запуском .exe

Код:
    .386
    .model flat,stdcall
    option casemap:none
    include \masm32\include\windows.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc
    include \masm32\include\gdi32.inc
    include \masm32\include\comdlg32.inc
    include \masm32\include\shell32.inc
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    includelib \masm32\lib\gdi32.lib
    includelib \masm32\lib\comdlg32.lib
    includelib \masm32\lib\shell32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
RGB macro red,green,blue
    xor     eax,eax
    mov     ah,blue
    shl     eax,8
    mov     ah,green
    mov     al,red
endm
szText MACRO Name,Text:VARARG
    LOCAL   lbl
    jmp     lbl
    Name    db Text,0
    lbl:
ENDM
.const
Button1ID       equ 1
Button2ID       equ 2
Button3ID       equ 3
.data?
hwndButton1     HWND ?
hwndButton2     HWND ?
hwndButton3     HWND ?
hInstance       HINSTANCE ?
CommandLine     LPSTR ?
SUInfo  	STARTUPINFO <>
PrcInfo 	PROCESS_INFORMATION <>
.data
TextButton1     db "Info",0
TextButton2     db "Test",0
TextButton3     db "Exit",0
Program1 	db "C:\Windows\System32\systeminfo.exe",0
Program2 	db "C:\Windows\system32\MdSched.exe",0
;_______________
ClassName       db "mbuilder",0
BtnClName       db "button",0
FormCaption     db "Form",0
;_______________
.code
start:
    invoke  GetModuleHandle,NULL
    mov     hInstance,eax
    invoke  GetCommandLine
    invoke  WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
    invoke  ExitProcess,eax
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc    :WNDCLASSEX
LOCAL msg   :MSG
LOCAL hwnd  :HWND
    mov     wc.cbSize,SIZEOF WNDCLASSEX
    mov     wc.style,CS_HREDRAW or CS_VREDRAW
    mov     wc.lpfnWndProc,offset WndProc
    mov     wc.cbClsExtra,NULL
    mov     wc.cbWndExtra,NULL
    push    hInst
    pop     wc.hInstance
    mov     wc.hbrBackground,COLOR_BTNFACE+1
    mov     wc.lpszClassName,OFFSET ClassName
    invoke  LoadIcon,NULL,IDI_APPLICATION
    mov     wc.hIcon,eax
    mov     wc.hIconSm,eax
    invoke  LoadCursor,NULL,IDC_ARROW
    mov     wc.hCursor,eax
    invoke  RegisterClassEx,addr wc
invoke CreateWindowEx,0,ADDR ClassName,ADDR FormCaption,WS_SYSMENU or WS_SIZEBOX,448,84,384,291,0,0,hInst,0
    mov     hwnd,eax
    INVOKE  ShowWindow,hwnd,SW_SHOWNORMAL
    INVOKE  UpdateWindow,hwnd
    .WHILE TRUE
        invoke  GetMessage,ADDR msg,0,0,0
        .BREAK .IF (!eax)
        invoke  TranslateMessage,ADDR msg
        invoke  DispatchMessage,ADDR msg
    .ENDW
    mov eax,msg.wParam
    ret
WinMain endp
WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
    .IF uMsg == WM_DESTROY
        invoke  PostQuitMessage,NULL
    .ELSEIF uMsg == WM_CREATE
invoke CreateWindowEx,0,ADDR BtnClName,ADDR TextButton1,WS_CHILD or BS_DEFPUSHBUTTON or WS_VISIBLE,150,70,75,25,hWnd,Button1ID,hInstance,0
invoke CreateWindowEx,0,ADDR BtnClName,ADDR TextButton2,WS_CHILD or BS_DEFPUSHBUTTON or WS_VISIBLE,150,100,75,25,hWnd,Button2ID,hInstance,0
invoke CreateWindowEx,0,ADDR BtnClName,ADDR TextButton3,WS_CHILD or BS_DEFPUSHBUTTON or WS_VISIBLE,150,130,75,25,hWnd,Button3ID,hInstance,0
    .ELSEIF uMsg == WM_COMMAND
        mov eax,wParam
        .IF lParam != 0
            .IF ax == Button1ID
                shr eax,16
                .IF ax == BN_CLICKED
                    INVOKE  CreateProcess,ADDR Program1,NULL,NULL, NULL,NULL,CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS,NULL,NULL,ADDR SUInfo,ADDR PrcInfo
                .ENDIF
            .ENDIF
		.IF ax == Button2ID
                shr eax,16
                .IF ax == BN_CLICKED
                    INVOKE  CreateProcess,ADDR Program2,NULL,NULL, NULL,NULL,CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS,NULL,NULL,ADDR SUInfo,ADDR PrcInfo
                .ENDIF
            .ENDIF
		.IF ax == Button3ID
                shr eax,16
                .IF ax == BN_CLICKED
                    invoke  ExitProcess, 0
                .ENDIF
            .ENDIF
        .ENDIF
    .ELSE
        invoke  DefWindowProc,hWnd,uMsg,wParam,lParam
        ret
    .ENDIF
    xor     eax,eax
    ret
WndProc endp
end start
Осталось избавиться от консоли и вуаля.
nactyx вне форума Ответить с цитированием
Старый 27.11.2015, 14:48   #13
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Скомпилировать проект соответственно с нужными параметрами )
Вот и вопрос: какие параметры указывают на то, что консоль или нет?
nactyx вне форума Ответить с цитированием
Старый 27.11.2015, 15:10   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да я х.з. как МАСМ то работает )))
Не помню. Надо читать его мануал.
Вот в FASM есть такая опция: format PE console
Указывается прямо в исходнике. Может и в МАСМ так же.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2015, 15:32   #15
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Разобрался и с этим.
Дело было в одном из параметров запуска

У меня был вот такой .bat файл:
cd c:\masm32\bin
ml.exe /c /coff menu.asm
link.exe /SUBSYSTEM:CONSOLE /LIBPATH:c:\masm32\lib menu.obj

Убрал оттуда SUBSYSTEM:CONSOLE и все стало как надо

Спасибо за помощь, Stilet
nactyx вне форума Ответить с цитированием
Старый 27.11.2015, 16:23   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Достань себе MASM Builder, раз уж окна на асме штопаешь. Очень полезная штуковина.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2015, 19:47   #17
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

А зачем такая морока с ассемблером? Не проще на С?
waleri вне форума Ответить с цитированием
Старый 27.11.2015, 19:55   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не проще на С?
Академический интерес
Мне тоже раньше нравилось... Хотя я и сейчас иногда так "прикалываюсь", но чисто для себя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2015, 10:14   #19
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А зачем такая морока с ассемблером? Не проще на С?
Stilet прав
nactyx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Панель с кнопками. Kozlov Помощь студентам 1 09.07.2015 22:16
Проблема с кнопками countteran Помощь студентам 2 15.11.2011 23:35
Непонятки с кнопками Devoto Общие вопросы Delphi 2 16.11.2008 20:47
Окно с кнопками ппц полный Droid Win Api 1 30.10.2008 07:29
проблема с кнопками blackstersl Общие вопросы Delphi 3 12.10.2008 14:31