powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Dll & Oracle Forms
4 сообщений из 4, страница 1 из 1
Dll & Oracle Forms
    #37291236
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть форма в Oracle forms

Вызывает пару функций из DLL. Все работает замечательно.

НО!!!!

Когда в dll идет вызов окна Win32 (обычная формочка или Сообщение какое-либо). То когда функция отработает и происходит возрат в форму от Oracle forms при попытке смены раскладки клавиатуры происходит зависание IE.

Зависает не на всех компах.

Может кто сталкивался???
...
Рейтинг: 0 / 0
Dll & Oracle Forms
    #37292091
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-....
в форму от Oracle forms при попытке смены раскладки клавиатуры происходит зависание IE.


Зависает IE, окна Forms или окна DLL?

Воспоминание из прошлого N 1 (уже лет 5 на C писать не приходилось):

Вообще, если в DLL используется MFC то вроде в функциях экспортируемых DLL нужно как-то специально инициализировать MFC.

Кроме того, могут быть проблемы с использованием типа MFC'шных DLL'ек. Single threaded DLL, multi threaded DLL и т.д. Собственно проблемы не помню, но осталось воспоминание, что это у меня как-то долго глючило пока наконец не выставил правильные параметры линковки.

Предположение N 2:

Возможно Вы просто теряете фокус ввода. Т.е. могу представить такую картину, окно Forms, окно DLL. Сообщения обрабатываются только окном DLL (обработчик событий в DLL не вызывает дефолтный обработчик), фокус ввода переходит на другое приложение*, а возврашается не в окно DLL, а в окно IE/Forms'а.

Т.е. возвращается, вы видите окно IE/Forms'а, а рабочее окно DLL оказывает под ним и не видно. А сообщения продолжают приходит в окно-DLL (т.к. его никто не закрывал).

Т.е. пользователь в окне-DLL работает ))), но этого не видит, т.к. поверх окна DLL нарисовалось окно IE/Forms'ов.

Если проблему можно повторить, то тогда легко посмотреть Spy сообщения Windows. Какие ходят, куда приходят, какое окно активно.

*в Вашем случае, это возможно "языковая панель"
...
Рейтинг: 0 / 0
Dll & Oracle Forms
    #37296441
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev-=Koba=-....
в форму от Oracle forms при попытке смены раскладки клавиатуры происходит зависание IE.


Зависает IE, окна Forms или окна DLL?

Воспоминание из прошлого N 1 (уже лет 5 на C писать не приходилось):

Вообще, если в DLL используется MFC то вроде в функциях экспортируемых DLL нужно как-то специально инициализировать MFC.

Кроме того, могут быть проблемы с использованием типа MFC'шных DLL'ек. Single threaded DLL, multi threaded DLL и т.д. Собственно проблемы не помню, но осталось воспоминание, что это у меня как-то долго глючило пока наконец не выставил правильные параметры линковки.

Предположение N 2:

Возможно Вы просто теряете фокус ввода. Т.е. могу представить такую картину, окно Forms, окно DLL. Сообщения обрабатываются только окном DLL (обработчик событий в DLL не вызывает дефолтный обработчик), фокус ввода переходит на другое приложение*, а возврашается не в окно DLL, а в окно IE/Forms'а.

Т.е. возвращается, вы видите окно IE/Forms'а, а рабочее окно DLL оказывает под ним и не видно. А сообщения продолжают приходит в окно-DLL (т.к. его никто не закрывал).

Т.е. пользователь в окне-DLL работает ))), но этого не видит, т.к. поверх окна DLL нарисовалось окно IE/Forms'ов.

Если проблему можно повторить, то тогда легко посмотреть Spy сообщения Windows. Какие ходят, куда приходят, какое окно активно.

*в Вашем случае, это возможно "языковая панель"

Dll написана на Delphi

Oracle Forms вызывает Dll и там просто вывожу сообщение ShowMessage('Hello World')
Все отрабатывает нормально и по возращение в IE и попытке изменить раскладку наглухо виснет IE

На некоторых машинах все работает отлично, на некоторых виснет каждый раз

Если проблему можно повторить, то тогда легко посмотреть Spy сообщения Windows. А как посомтреть???
...
Рейтинг: 0 / 0
Dll & Oracle Forms
    #37296735
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Если проблему можно повторить, то тогда легко посмотреть Spy сообщения Windows. А как посомтреть???


1. Приведи пример C-шного кода, пример вызова.
2. В средствах разработки должно быть средство просмотра/мониторинга сообщений Windows . Если кто-то "зависает", это скорее всего значит, что сообщения Windows приходящие в оконную функцию обрабатываются не правильно. Тут IMHO одно из двух:
2.1. Они приходят не в ту "оконную функцию". Т.е. сообщения приходят не в то окно
2.2. Они приходят туда куда нужно, но обрабатываются не правильно или не обрабатываются
3. Возможно все зависает, т.к. ты программу радостно "завалил". Попортил стек вызова (например в C функция не объявлена как __stdcall), попортил контекст приложения (на MS C: если программа на MFC и вызывается dll с вызовами MFC и ф-ции инициализации MFC вызываются не правильно), что-то еще. Можно только гадать.
Я всю жизнь при разработке dll старался не пользоваться никакими библиотеками высокого уровня (MFC, VCL) все пытался делать на чистом Windows API )))

Насчет Spy - спроси на Delphy форуме, есть ли в Delphi средство просмотра сообщений Windows, как называется, как им пользоваться.
Или поищи в google по словам "windows message spy". Я всю время пользовался MS тулзой из MS VC, т.ч. сторонних не знаю.

IMHO
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Dll & Oracle Forms
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]