Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Windows API
  4. Problem with DDE under Vista.

Problem with DDE under Vista.

Scheduled Pinned Locked Moved Windows API
helpc++sysadmin
4 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    Jackson86
    wrote on last edited by
    #1

    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.

    J 1 Reply Last reply
    0
    • J Jackson86

      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.

      J Offline
      J Offline
      Jonathan Darka
      wrote on last edited by
      #2

      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]

      J 1 Reply Last reply
      0
      • J Jonathan Darka

        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]

        J Offline
        J Offline
        Jackson86
        wrote on last edited by
        #3

        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.

        J 1 Reply Last reply
        0
        • J Jackson86

          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.

          J Offline
          J Offline
          Jonathan Darka
          wrote on last edited by
          #4

          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]

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • World
          • Users
          • Groups