A
AMI
Hi,
I'm trying to use DDE (Dynamic Data Exchange) to establish a link with
some Windows program using JAVA code. I use Classes provided by NEVA:
http://www.nevaobject.com/_docs/_javadde/JavaDde.pdf . I'm using j2SE
and eclipse IDE.
Basically, the example that was provided in the documentation with the
library was accessing an excel sheet , I checked it and it works fine.
But when I try to connect to the application that I want to link to,
it gives a windows error and terminates and my code gives an error
"Execution failure: DdeConnect doesn't return (see MS Q136218)"
Well, I checked for this error and the soln that I found was to add a
message loop to the thread that created the window, I donnu what does
this mean or how I can do it. So would someone help me with this?
Thanks,
Iman.
This is the bug description as I found::
SYMPTOMS
A 32-bit application calls DdeConnect when all previous DDEML
initialization has been performed. DdeConnect never returns.
CAUSE
Any thread that creates a top-level window and doesn't have a message
loop will cause DdeConnect to block. This is because DdeConnect calls
SendMessage(HWND_BROADCAST...). In this call, SendMessage will put the
message in the target thread's message queue and block the calling
thread. If the target thread doesn't have a message loop, it will never
process this message and therefore never return.
One complication is that some things create windows without the
knowledge of the calling thread. It is known that some SQL, RPC, and
DDEML function calls will do this. Any top-level window that is created
by a thread that has no message loop will cause this to happen.
RESOLUTION
The only current solution is to add a message loop to the thread that
created the window.
I'm trying to use DDE (Dynamic Data Exchange) to establish a link with
some Windows program using JAVA code. I use Classes provided by NEVA:
http://www.nevaobject.com/_docs/_javadde/JavaDde.pdf . I'm using j2SE
and eclipse IDE.
Basically, the example that was provided in the documentation with the
library was accessing an excel sheet , I checked it and it works fine.
But when I try to connect to the application that I want to link to,
it gives a windows error and terminates and my code gives an error
"Execution failure: DdeConnect doesn't return (see MS Q136218)"
Well, I checked for this error and the soln that I found was to add a
message loop to the thread that created the window, I donnu what does
this mean or how I can do it. So would someone help me with this?
Thanks,
Iman.
This is the bug description as I found::
SYMPTOMS
A 32-bit application calls DdeConnect when all previous DDEML
initialization has been performed. DdeConnect never returns.
CAUSE
Any thread that creates a top-level window and doesn't have a message
loop will cause DdeConnect to block. This is because DdeConnect calls
SendMessage(HWND_BROADCAST...). In this call, SendMessage will put the
message in the target thread's message queue and block the calling
thread. If the target thread doesn't have a message loop, it will never
process this message and therefore never return.
One complication is that some things create windows without the
knowledge of the calling thread. It is known that some SQL, RPC, and
DDEML function calls will do this. Any top-level window that is created
by a thread that has no message loop will cause this to happen.
RESOLUTION
The only current solution is to add a message loop to the thread that
created the window.