![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 24.01.2014
Сообщений: 6
|
![]()
Текст на языке ассемблер нужна на с++
.386 model flat,STDCALL include win32.inc CM_ITEM1 equ 102 CM_ITEM equ 101 IDD_DIALOG1 equ 10 IDC_EDIT1 equ 1001 IDC_STATICTEXT1 equ 1002 extrn ShellExecuteA:PROC extrn CloseHandle:PROC extrn BeginPaint:PROC extrn CreateWindowExA:PROC extrn DefWindowProcA:PROC extrn DispatchMessageA:PROC extrn ExitProcess:PROC extrn GetMessageA:PROC extrn GetModuleHandleA:PROC extrn InvalidateRect:PROC extrn LoadCursorA:PROC extrn LoadIconA:PROC extrn MessageBoxA:PROC extrn PostQuitMessage:PROC extrn RegisterClassExA:PROC extrn ShowWindow:PROC extrn TranslateMessage:PROC extrn UpdateWindow:PROC extrn CreateEventA:proc extrn GetStdHandle:proc extrn GetDlgItemTextA:proc extrn GetDlgItem:proc extrn EndDialog:proc extrn SetFocus:proc extrn DialogBoxParamA:proc .data hfn dd 0 hed dd 0 menu_name db 'menu',0 newhwnd dd 0 lppaint PAINTSTRUCT <?> msg MSGSTRUCT <?> wc WNDCLASSEX <?> hInst dd 0 szTitleName db 'Диалоговые окна',0 szClassName db 'ASMCLASS32',0 szClassName1 db 'EDIT',0 szUser db 260 dup (0) npad db 'notepad.exe',0 wpad db 'wordpad.exe',0 cmnd db 'open',0 fname db 'c:\\1.txt',0 .code start: push 0 call GetModuleHandleA mov [hInst], eax reg_class: mov [wc.cbSize], size WNDCLASSEX mov [wc.style], CS_HREDRAW + CS_VREDRAW; + CS_GLOBALCLASS mov [wc.lpfnWndProc], offset WndProc mov [wc.cbClsExtra], 0 mov [wc.cbWndExtra], 0 mov eax, [hInst] mov [wc.hInstance], eax push IDI_APPLICATION push 0 call LoadIconA mov [wc.hIcon], eax push IDC_ARROW push 0 call LoadCursorA mov [wc.hCursor], eax mov [wc.hbrBackground], COLOR_WINDOW + 1 mov dword ptr [wc.lpszMenuName],offset menu_name mov dword ptr [wc.lpszClassName], offset szClassName mov dword ptr [wc.hIconSm],0 push offset wc call RegisterClassExA push 0 push [hInst] push 0 push 0 push 240 push 320 push CW_USEDEFAULT ; y push CW_USEDEFAULT ; x push WS_OVERLAPPEDWINDOW ; Style push offset szTitleName push offset szClassName ; Class name push WS_EX_CLIENTEDGE ; extra style call CreateWindowExA mov [newhwnd], eax push SW_SHOWNORMAL push [newhwnd] call ShowWindow push [newhwnd] call UpdateWindow msg_loop: push 0 push 0 push 0 push offset msg call GetMessageA cmp ax, 0 je end_loop push offset msg call TranslateMessage push offset msg call DispatchMessageA jmp msg_loop end_loop: push [hfn] call CloseHandle push [msg.msWPARAM] call ExitProcess WndProc proc uses ebx edi esi, hwnd:DWORD, wmsg:DWORD,\ wparam:DWORD, lparam:DWORD LOCAL theDC:DWORD cmp [wmsg], WM_DESTROY je wmdestroy cmp [wmsg], WM_SIZE je wmsize cmp [wmsg], WM_CREATE je wmcreate cmp [wmsg],WM_COMMAND je wmcommand jmp defwndproc wmcommand: mov eax,lparam cmp ax,0 jne wmc1 mov eax,wparam cmp ax,CM_ITEM1 je notepad cmp ax,CM_ITEM je wordpad jp wmc1 notepad: call DialogBoxParamA,[hInst],IDD_DIALOG1,[newhwnd],offset DWNDPROC,0 cmp eax,IDOK je d1 jmp wmc1 d1: call ShellExecuteA,0,offset cmnd, offset npad, offset szUser, 0, SW_SHOWNORMAL jp wmc1 wordpad: call DialogBoxParamA,[hInst],IDD_DIALOG1,[newhwnd],offset DWNDPROC,0 cmp eax,IDOK je d11 jmp wmc1 d11: call ShellExecuteA,0,offset cmnd, offset wpad, offset szUser, 0, SW_SHOWNORMAL jp wmc1 wmc1: mov eax,0 jmp finish wmcreate: push 0 push [hInst] push 1 push [hwnd] push 0 push 0 push 0 ; y push 0 ; x push WS_VISIBLE or WS_CHILD or ES_LEFT OR ES_MULTILINE or\ ES_AUTOHSCROLL or ES_AUTOVSCROLL ; Style push 0 push offset szClassName1 ; Class name push 0 call CreateWindowExA mov [hed],eax mov eax, 0 jmp finish defwndproc: push [lparam] push [wparam] push [wmsg] push [hwnd] call DefWindowProcA jmp finish wmdestroy: push 0 call PostQuitMessage mov eax, 0 jmp finish wmsize: mov eax, 0 finish: ret WndProc endp DWNDPROC proc uses ebx edi esi,hDlg:dword,imsg:dword,wpar:dwor d,lpar:dword mov eax,[imsg] cmp eax,WM_INITDIALOG je init cmp eax,WM_COMMAND jne ret_false mov eax,[wpar] cmp eax,IDOK jne ret_false call GetDlgItemTextA,hDlg,IDC_EDIT1,offs et szUser,260 mov eax,IDOK call EndDialog,hDlg,eax ret_false: xor eax,eax ret init: call GetDlgItem,hDlg,IDC_EDIT1 call SetFocus,eax jmp ret_false DWNDPROC endp public WndProc public DWNDPROC ends end start |
![]() |
![]() |
![]() |
#2 |
Регистрация: 24.01.2014
Сообщений: 6
|
![]()
Программа запрашивает данные через диалоговое окно и использует их, как аргумент для запуска внешнего приложения
|
![]() |
![]() |
![]() |
#3 |
Lawful Evil
Участник клуба
Регистрация: 13.05.2008
Сообщений: 1,208
|
![]()
Ну нужно. Ну на с++. И чо?
Наработки/оплата?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c) |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Диалог | Garmon | Visual C++ | 0 | 26.10.2012 17:06 |
Меню codrops (стильное меню), Как сделать чтобы текст не смещался в блоке? | AlienNation | HTML и CSS | 2 | 28.09.2011 13:17 |
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) | chandrasecar | Мультимедиа в Delphi | 7 | 14.01.2009 09:20 |
Диалог | Михаил Юрьевич | Общие вопросы Delphi | 2 | 26.04.2008 22:35 |