Я замечаю дескриптор приложений, когда я использую функцию оболочки, чтобы открыть его. Затем я использую этот дескриптор, чтобы закрыть приложение позже. Однако пользователь может также закрыть это другое приложение. Может ли этот дескриптор использоваться повторно, поэтому, когда я использую этот дескриптор, я закрываю другой процесс. Если возможно, возможно?Как часто обрабатываются дескрипторы окон
ответ
Нет, вам не о чем беспокоиться. Обработчик, возвращаемый, например, OpenProcess, ShellExecuteEx() или CreateProcess, сохраняет объект процесса в активном состоянии. Вот как можно вызвать GetExitCodeProcess() для извлечения кода выхода после завершения процесса.
Объект не освобождается до тех пор, пока последний ручка на нем не будет закрыта. В отличие от предыдущих советов, приведенных в этом потоке, очень важно, чтобы вы вызывали CloseHandle() или у вас была утечка.
Вы можете подождать, пока ручка процесса не появится, когда она выйдет.
WaitForSingleObject (hProcess, INFINITE);
Как только это вернется, вы знаете, что процесс завершился, и вам не нужно его закрывать.
Нет, для предотвращения утечки требуется вызвать CloseHandle(). –
спасибо за это, но кажется, что дескриптор не будет использоваться повторно, потому что он остается открытым до тех пор, пока приложение, закрывающее его, не закроет его. – jjb
- 1. Получить дескрипторы всех окон процесса
- 2. Почему мои обработчики окон обрабатываются вечно?
- 3. Получить дескрипторы всех окон на панели задач
- 4. Как работают дескрипторы функций?
- 5. Дескрипторы файлов и файловые дескрипторы (и C)
- 6. Как обрабатываются хэш-столкновения?
- 7. Как обрабатываются потоки?
- 8. Как обрабатываются параллельные транзакции?
- 9. FOSUserBundle - Как обрабатываются роли?
- 10. Как обрабатываются макросы препроцессором?
- 11. Как обрабатываются параметры текстуры?
- 12. Как обрабатываются музыкальные команды?
- 13. Как обрабатываются файлы XSLT?
- 14. Как изображения обрабатываются Facebook?
- 15. Как обрабатываются статические константы?
- 16. Как обрабатываются массивы Java?
- 17. Как обрабатываются несколько форм?
- 18. Apache Flink: Как обрабатываются последние события?
- 19. дескрипторы аудиоисточников USB 24bits
- 20. D Метапрограммирование, как дескрипторы Python?
- 21. Как работают дескрипторы файлов node.js?
- 22. Как часто вызывать функцию, вызываемую слишком часто
- 23. Перечислить все оконные дескрипторы на рабочем столе
- 24. дескрипторы исключений с атрибутами
- 25. атрибуты Python и дескрипторы
- 26. запросы приложений обрабатываются как напоминание
- 27. Как обрабатываются сигналы в Unix?
- 28. Как исключения обрабатываются в PHP?
- 29. Как обрабатываются строки в bootstrap
- 30. Как исключения обрабатываются в EJB?
Спасибо, но я не совсем понимаю. Утечка памяти здесь в результате закрытия handle(), не вызываемого. Будет ли он очищен, как только приложение, которое вызвало вызов оболочки, было правильно закрыто? – jjb
Да, Windows очищает ручки, которые не были закрыты. Не позволяйте этому зайти так далеко. –
wont just call sendmessage Call SendMessage (intHandle, const_CLOSE, 0 &, 0 &) оба делают приложение и выполняют задание closehandle() в одно и то же время? – jjb