Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
4 / 4 / 5
Регистрация: 19.08.2016
Сообщений: 137
1

Почему программа продолжает выполняться после закрытия?

16.10.2016, 08:22. Показов 1517. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!

Код на MASM32:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
.586
.model flat, stdcall
 
extern ShellExecuteA@24:near
 
includelib D:\masm32\lib\shell32.lib
 
data segment
    calc db "calc.exe",0
data ends
 
text segment
start:
    push 1
    push 0
    push 0
    push offset calc
    push 0
    push 0
    call ShellExecuteA@24
    
    ret
text ends
end start
ml /c /coff proga.asm
link /subsystem:windows proga.obj

Программа действительно запускает калькулятор, НО продолжает выполняться! Даже если калькулятор закрыть, proga.exe так и будет висеть в оперативной памяти...

При таком варианте:

Assembler
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
.586
.model flat, stdcall
 
extern ShellExecuteA@24:near
extern ExitProcess@4:near
 
includelib D:\masm32\lib\shell32.lib
includelib D:\masm32\lib\kernel32.lib
 
data segment
    calc db "calc.exe",0
data ends
 
text segment
start:
    push 1
    push 0
    push 0
    push offset calc
    push 0
    push 0
    call ShellExecuteA@24
    
    push 0
    call ExitProcess@4
text ends
end start
Всё выполняется как надо, калькулятор запускается, программа завершается. Так в чём же дело?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2016, 08:22
Ответы с готовыми решениями:

Почему программа после закрытия открывается вновь
Всем привет.Ребят начал изучение ассемблера и сталкнулся на примере одной программы ,которая при...

После закрытия приложения пользователем код в таймере продолжает выполняться
Если запустить таймер в android с периодом в пять секунд выполнения действия и в функции run()...

Почему процесс продолжает существовать после закрытия окна?
1. К MS Access 2000 подключил COM Add-in написанный на VBA. При соединении Add-in'а вызывается...

После закрытия окон программа продолжает работать
Апс фаил выгледит вот так <Application x:Class="Общие.App" ...

2
601 / 396 / 72
Регистрация: 29.03.2013
Сообщений: 827
17.10.2016, 10:34 2
Цитата Сообщение от Nell_core Посмотреть сообщение
Так в чём же дело?
Может (анти)вирус какой шалит, стэк портит? Али ещё чего. Бери дебагер, смотри ESP перед первым пушем и сравнивай его с ESP после вызова ShellExecute, они должны быть равны.
0
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
17.10.2016, 10:41 3
Цитата Сообщение от Nell_core Посмотреть сообщение
Программа действительно запускает калькулятор, НО продолжает выполняться!
Потому что надо вызывать ExitProcess.
Если этого не сделать, то поток просто завершится и все. И если в процессе
есть еще какие-то другие потоки, то процесс будет продолжать висеть в памяти.
0
17.10.2016, 10:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2016, 10:41
Помогаю со студенческими работами здесь

После закрытия программа продолжает висеть в процессе
Ребят, подскажите как правильней сделать, у меня есть форма логина, при удачной авторизации она...

Почему после изменения кода продолжает выполняться сценарий старого кода?
ВОПРОС Почему после изменения кода продолжает выполняться сценарий старого кода? ИМЕЕТСЯ...

Почему программа продолжает работать после удаления конструктора?
Что хочет от меня препод про конструкторы? Что здесь делает данный конструктор? #include...

Почему после ввода данных программа не продолжает свое выполнение?
Не могу понять почему после ввода данных программа не продолжает свое выполнение. Вот код: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru