|
1 / 1 / 0
Регистрация: 20.09.2015
Сообщений: 69
|
||||||
Использование функции SetTimer для завершения процесса23.02.2016, 19:09. Показов 1569. Ответов 12
Метки нет (Все метки)
Прошу помощи в использовании данной функции. Нужно применить ее так, чтобы она закрывала процесс (калькулятор) по истечении 10 секунд после запуска.
Вот код, который имеется (+волокна не в тему).
0
|
||||||
| 23.02.2016, 19:09 | |
|
Ответы с готовыми решениями:
12
Нужна команда для принудительного завершения процесса steam.exe Как дождаться завершения одного процесса для начала другого? |
|
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
|
||
| 24.02.2016, 19:17 | ||
|
Запускать не пробовал, но мне кажется написана фигня, потому что:
1) строка 35: из функции Open при вызове AddProcessToJob передаются указатели на локальные адреса, а никакой синхронизации нету. 2) строка 85: мьютексов наделал, а нигде они не используются 3)
0
|
||
|
1 / 1 / 0
Регистрация: 20.09.2015
Сообщений: 69
|
|
| 24.02.2016, 21:49 [ТС] | |
|
Все работает, несмотря на лишний текст. Название функции указано в заголовке темы.
0
|
|
|
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
|
|
| 25.02.2016, 18:57 | |
|
А, да, пока код глядел про название забыл.
Работать то работает, но при многопоточности так делать нельзя: когда нибудь все-таки нагнется. Все запущенные калькуляторы добавляются в один job. А через 10 сек они все сразу закрыться должны или кажды индивидуально в зависимости от времени своего запуска?
0
|
|
|
1 / 1 / 0
Регистрация: 20.09.2015
Сообщений: 69
|
|
| 25.02.2016, 22:07 [ТС] | |
|
Каждый индивидуально желательно.
0
|
|
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
||||||
| 25.02.2016, 22:29 | ||||||
|
Для консоли никогда не юзал SetTimer.. (сам найдёш, яндекс сразу дал на запрос "C++ SetTimer console")
В Windows режиме в WM_CREATE устанавливаеш:
В обработке WM_TIMER уже делаеш то что надо. (поидее если всё статично на 10 секундах, то вместо 250, ставиш свои 10сек в милисекундах, и на сообщении WM_TIMER просто убиваеш thread, наверное так) Добавлено через 3 минуты Мм, если несколько запущенных, то тогда не так... брать время старта калькулятора, и по WM_TIMER если 10 сек прошли - то убивать.
0
|
||||||
|
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
|
|||||||||||
| 26.02.2016, 19:24 | |||||||||||
|
Хм, интересно получилось: SetTimer можно запустить с калбеком, но без цикла обработки оконных сообщений он работать не будет. Поэтому, если дело происходит в консоли (у которой этого цикла нет), то придется либо запускать цикл GetMessage(...)/DispatchMessage(...), либо пользоваться функцией CreateTimerQueueTimer. Второй вариант мне показался проще. Предлагаю сделать так, добавить это:
0
|
|||||||||||
|
1 / 1 / 0
Регистрация: 20.09.2015
Сообщений: 69
|
|
| 01.03.2016, 21:23 [ТС] | |
|
Все сделал, как Вы сказали, но результата нет.
0
|
|
|
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
|
|
| 01.03.2016, 22:34 | |
|
А что есть? Какие-нибудь ошибки, предупреждения? Калькуляторы то хоть запускаются? Что возвращает CreateTimerQueueTimer ?
Если уж совсем никак не взлетает, выкладывай проект целиком - лучше один раз увидеть, чем 100 раз по кусочкам.
0
|
|
|
1 / 1 / 0
Регистрация: 20.09.2015
Сообщений: 69
|
|
| 03.03.2016, 18:32 [ТС] | |
|
Ошибок нет, калькулятор запускает, но не закрывает по истечении десяти секунд. Это и есть весь "проект", а если быть точнее, то лабораторная работа (:
Значение CreateTimerQueueTimer: 0x00007ff69b952dc4 {spo_kolinko01.exe!CreateTimerQueueTimer }
0
|
|
|
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
|
|||||||||||
| 03.03.2016, 19:46 | |||||||||||
|
Да, там хэндл таймера теряется. Вот более надёжный вариант с синхронизацией: (вместо мьютексов)
0
|
|||||||||||
|
1 / 1 / 0
Регистрация: 20.09.2015
Сообщений: 69
|
|
| 03.03.2016, 22:47 [ТС] | |
|
Теперь по прошествии десяти секунд выскакивает исключение:
Необработанное исключение по адресу 0x00007FF86DAA5B6B (ntdll.dll) в spo_kolinko01.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x0000000000000024.
0
|
|
|
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
|
|
| 05.03.2016, 10:14 | |
|
Вот проект, компилился Visual Studio 2008, у меня работает:
0
|
|
| 05.03.2016, 10:14 | |
|
Помогаю со студенческими работами здесь
13
Создание процесса из программы для защиты основного от несанкционированного завершения Ожидание запуска и завершения процесса для работы с потоками ввода
Использование функциональных клавиш для завершения программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|