Problem with DDE under Vista.
-
Hello. My program (DDE - client ) connects to DDE - server (MFC) by calls of following functions:DdeInitialyze, DdeConnect, DdeClientTransact. Wnen DdeClientTransact function is calling in client program, OnDDECommand method must be calling in DDE - server. DDE - client and DDE - server are working properly under Windows XP. But there are some problems in Windows Vista. 1. DDE - server has been run with checkbox "Run as administrator" (Compatiblity tab on exe-file properties) turned on. In that case OnDDECommand function in DDE - server is not calling. But DdeInitialyze, DdeConnect, DdeClientTransact functions in client program are not returning any error codes or hanles, which are equal to NULL. If checkbox "Run as administrator" is turned off, all programs work as properly as under WindowsXP. 2. If DDE server has not been run, DdeClientTransact function call must return NULL handle of conversation (HCONV) in client program. But under Windows Vista DdeClientTransact function call returns HCONV, which is not equal to NULL. Please help me in fixing this behavior on vista. Every help will be very useful.
-
Hello. My program (DDE - client ) connects to DDE - server (MFC) by calls of following functions:DdeInitialyze, DdeConnect, DdeClientTransact. Wnen DdeClientTransact function is calling in client program, OnDDECommand method must be calling in DDE - server. DDE - client and DDE - server are working properly under Windows XP. But there are some problems in Windows Vista. 1. DDE - server has been run with checkbox "Run as administrator" (Compatiblity tab on exe-file properties) turned on. In that case OnDDECommand function in DDE - server is not calling. But DdeInitialyze, DdeConnect, DdeClientTransact functions in client program are not returning any error codes or hanles, which are equal to NULL. If checkbox "Run as administrator" is turned off, all programs work as properly as under WindowsXP. 2. If DDE server has not been run, DdeClientTransact function call must return NULL handle of conversation (HCONV) in client program. But under Windows Vista DdeClientTransact function call returns HCONV, which is not equal to NULL. Please help me in fixing this behavior on vista. Every help will be very useful.
Hi, Didn't realise anyone was still using DDE :-) As far as I know DDE is still supported by the Vista shell, but you really should think about removing DDE as it is pretty ancient 16 bit technology. Can you answer the following: 1 - What does DDEInitialise() return ? Are you saying they return NULL ? 2 - If DDEInitialise failes what does DdeGetLastError() give you ? 3 - Is the client on the same machine as the server ? Network DDE is not supported on Vista, also DDE Share is not available. regards,
Jonathan Wilkes Darka[Xanya.net]
-
Hi, Didn't realise anyone was still using DDE :-) As far as I know DDE is still supported by the Vista shell, but you really should think about removing DDE as it is pretty ancient 16 bit technology. Can you answer the following: 1 - What does DDEInitialise() return ? Are you saying they return NULL ? 2 - If DDEInitialise failes what does DdeGetLastError() give you ? 3 - Is the client on the same machine as the server ? Network DDE is not supported on Vista, also DDE Share is not available. regards,
Jonathan Wilkes Darka[Xanya.net]
Hello Jonathan. Thank you for your answer. You see, I'm working with old code. My task is adapt it for Windows Vista. My boss doesn't want to make serious changes to code without serious reasons. What technology can you suggest instead of DDE? It must provide possibility to send messages from one process to another. 1. DDEInitialize returns integer value, which is equal to 0 ( DMLERR_NO_ERROR ). It also return instance idientifier. If any error occurs, this id must be equal to NULL. But id seems to be valid, although OnDDECommand method in server doesn't run. Other DDE functions doesn't return any errors too. 2. DDEInitialize doesn't fails. And DdegetLastError returns DMLERR_NO_ERROR. So, all DDE functions in client don't fail, but OnDDECommand method in server doesn't run. 3. Yes, the client is on the same machine as the server. The main problem is that, DdeConnect doesn't fail, if even DDE - server has not been run. regards, Jackson.
-
Hello Jonathan. Thank you for your answer. You see, I'm working with old code. My task is adapt it for Windows Vista. My boss doesn't want to make serious changes to code without serious reasons. What technology can you suggest instead of DDE? It must provide possibility to send messages from one process to another. 1. DDEInitialize returns integer value, which is equal to 0 ( DMLERR_NO_ERROR ). It also return instance idientifier. If any error occurs, this id must be equal to NULL. But id seems to be valid, although OnDDECommand method in server doesn't run. Other DDE functions doesn't return any errors too. 2. DDEInitialize doesn't fails. And DdegetLastError returns DMLERR_NO_ERROR. So, all DDE functions in client don't fail, but OnDDECommand method in server doesn't run. 3. Yes, the client is on the same machine as the server. The main problem is that, DdeConnect doesn't fail, if even DDE - server has not been run. regards, Jackson.
Hi Jackson, I am afraid it's been many years since I worked on DDE so I can only suggest a few things. Have you tried using DDE Spy to see if that can help diagnose the problem. Also, see this link as it has a lot of DDE Infomation[^] Also, has the client been started as administrator or just the server ? Alternative technologies for inter-process communication include: Memory mapped files, named pipes, tcp/ip, etc. regards,
Jonathan Wilkes Darka[Xanya.net]