Вопрос № 142873: Здравствуйте уважаемые эксперты. Мой вопрос в следующем. Что и как надо сделать чтобы консольное (или приложение с формой) в Delphi 6 возвращало значение - результат (выполнилось или нет и по какой причине). Т.к. данный exe файл будет вызываться ...Вопрос № 142895: Здравствуйте все! Покажите плиз как грамотно сделать чтобы при потери фокуса Popup меню на иконке в трее исчезало. Т.е. если клик будет за областью меню, то
меню убрать....
Вопрос № 142.873
Здравствуйте уважаемые эксперты. Мой вопрос в следующем. Что и как надо сделать чтобы консольное (или приложение с формой) в Delphi 6 возвращало значение - результат (выполнилось или нет и по какой причине). Т.к. данный exe файл будет вызываться из другого приложения - из Oracle Forms и в случае не корректного завершения exe файла - принимать необходимые действия
Для возврата с кодом ошибки в консольном приложении можно использовать процедуру Halt: procedure Halt [ ( Exitcode: Integer) ];
Для VCL так не рекомендуют, но пользовался - никаких особых эксцессов не заметил - процесс все равно терминируется и все лишнее из памяти убирается.
При нормальном завершении вроде бы 0 возвращается.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 02.09.2008, 11:06 Оценка за ответ: 5 Комментарий оценки: Да, все получилось.
Просто, я в вызываемой программе не могу отловить только код возврата - 0 не 0
Вопрос № 142.895
Здравствуйте все! Покажите плиз как грамотно сделать чтобы при потери фокуса Popup меню на иконке в трее исчезало. Т.е. если клик будет за областью меню, то меню убрать.
Отправлен: 02.09.2008, 12:45
Вопрос задал: Maximus777 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PavelGM
Здравствуйте, Maximus777!
За это отвечате система - это свойство Popup меню. Т.е. Popup меню так и работает - "если клик будет за областью меню, то меню убрать". У меня с этим проблем не было (WinXP/Win2K/WinNT4). Вызывал его появление по перехвату нотификационного сообщения от иконки как-то так
Если же у вас не-Popup меню, то есть "самодельное", то попробуйте с функциями SetCaptureMouse/ReleaseCapture и будете получать все сообщения от мыши даже за пределами вашего окна.
Еще есть вариант с ловушками (но это уже "тяжелая артиллерия" :)) SetWindowsHookEx с WH_MOUSE_LL - а дальше анализируйте, где мышь и ч
то делает.
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 03.09.2008, 11:27 Оценка за ответ: 5 Комментарий оценки: Спасибо. Теперь всё ясно. Вот эта строка SetForegroundWindow(Handle); меняет всё дело. По-моему компонент TrayIcon мог бы сам вставлять эту строку в код, раз уж без неё там никак.