|
|
|
Dll & Oracle Forms
|
|||
|---|---|---|---|
|
#18+
Есть форма в Oracle forms Вызывает пару функций из DLL. Все работает замечательно. НО!!!! Когда в dll идет вызов окна Win32 (обычная формочка или Сообщение какое-либо). То когда функция отработает и происходит возрат в форму от Oracle forms при попытке смены раскладки клавиатуры происходит зависание IE. Зависает не на всех компах. Может кто сталкивался??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2011, 13:35 |
|
||
|
Dll & Oracle Forms
|
|||
|---|---|---|---|
|
#18+
-=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. Какие ходят, куда приходят, какое окно активно. *в Вашем случае, это возможно "языковая панель" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2011, 18:05 |
|
||
|
Dll & Oracle Forms
|
|||
|---|---|---|---|
|
#18+
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. А как посомтреть??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2011, 11:13 |
|
||
|
Dll & Oracle Forms
|
|||
|---|---|---|---|
|
#18+
-=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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2011, 13:45 |
|
||
|
|

start [/forum/topic.php?fid=51&tid=1878680]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
158ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 495ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...