Page 1 of 1

Anyone ever get a handle on DDEML client server operation?

Posted: Mon Sep 16, 2024 9:21 am
by Randy Walker
My main project could really benefit from use of DDEML but all efforts to get a handle on it escapes me. :(

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Mon Sep 16, 2024 9:50 am
by mk-soft
Little more code ...

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Mon Sep 16, 2024 10:39 pm
by Randy Walker
mk-soft wrote: Mon Sep 16, 2024 9:50 am Little more code ...
Huh??? :?

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Mon Sep 16, 2024 11:48 pm
by idle
I've never used it and yes it does look a little complicated
https://learn.microsoft.com/en-us/windo ... nt-library

What are you doing that you think DDE is the right solution. There are loads of IPC methods you could use

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Tue Sep 17, 2024 12:18 am
by PBJim
Randy Walker wrote: Mon Sep 16, 2024 10:39 pm
mk-soft wrote: Mon Sep 16, 2024 9:50 am Little more code ...
Huh??? :?
Exactly, I feel the same way. I rarely bother to ask honest questions on the forum most of the time, because of this kind of agenda that they have. I've blocked the three of them whom I've seen do it to others, so I just never bother to read their replies.

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Tue Sep 17, 2024 2:27 am
by Demivec
PBJim wrote: Tue Sep 17, 2024 12:18 am
Randy Walker wrote: Mon Sep 16, 2024 10:39 pm
mk-soft wrote: Mon Sep 16, 2024 9:50 am Little more code ...
Huh??? :?
Exactly, I feel the same way. I rarely bother to ask honest questions on the forum most of the time, because of this kind of agenda that they have. I've blocked the three of them whom I've seen do it to others, so I just never bother to read their replies.
The original post stated this (emphasis added):
Randy Walker wrote: Mon Sep 16, 2024 9:21 am My main project could really benefit from use of DDEML but all efforts to get a handle on it escapes me. :(
People using this forum speak different languages natively and the OP gave one sentence, not even a question.

Here is one interpretation:
If the OP says he has a problem getting a handle then he should post the code that he used to try and get the handle.


Here is a second interpretation of this sentence:
The OP understands nothing about anything dealing with DDEML. In that case he needs to add more information about what he doesn't understand and possibly what little he does understand as well as why he feels his project would benefit from it.

In both cases more information is needed from the original poster. It is a common requirement for such things to be included in the original positing so that someone can give assistance and to give more focus on what may be needed. If the information is not provided it is customary and natural to request it if someone desires to help if they can.

@PBJim: What do you mean by 'an honest question'?

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Tue Sep 17, 2024 6:36 am
by Randy Walker
idle wrote: Mon Sep 16, 2024 11:48 pm I've never used it and yes it does look a little complicated
What are you doing that you think DDE is the right solution. There are loads of IPC methods you could use
I could grasp enough about DDE that I understand it is used to allow two apps to communicate between each other. I'm really only looking to send data from one app to the other. Cannot get any useful info on your IPC so you're just talking over my head, like the URL you sent. But thanks for the reply anyway. :mrgreen:

I did a web search for DDE example and found a powerbasic example but no clue how to adapt that code. Anytime I run into anything using structures and types, I am immediately lost without working PB sample code. It only covers the DDE client.
https://forum.powerbasic.com/forum/user ... nt-example

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Tue Sep 17, 2024 7:11 am
by idle
IPC (inter process communications) for windows programs

copy data strucure cds messaging
file mapping
tcp.

Are easy to achieve but if DDE is what you really need it helps to explain what your specific requirements are which might be more beneficial in getting answers abd also helps others too.

DDE looks Like some over complicated ms solution to a problem that can be solved by much simpler means.

Search for copy data structure that might be what you need

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Tue Sep 17, 2024 7:49 am
by Randy Walker
mk-soft wrote: Mon Sep 16, 2024 9:50 am Little more code ...
Randy Walker wrote: Mon Sep 16, 2024 9:21 am My main project could really benefit from use of DDEML but all efforts to get a handle on it escapes me. :(
People using this forum speak different languages natively and the OP gave one sentence, not even a question.
[/quote]

Ah yes. Something I did not take into account when I wrote my OP. I Should have wrote:
"All efforts to try to get an understanding of DDE escapes me."
Here... "get a handle on" = "get an understanding of" but may not translate so well.
Sorry for the confusion. :(
AND, now I understand what mk-soft was asking when he/she wrote "Little more code", but I have no code since I have NO idea how to begin.

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Tue Sep 17, 2024 7:58 am
by Randy Walker
People using this forum speak different languages natively and the OP gave one sentence, not even a question.
BTW = By The Way... The question was in the subject line:
Anyone ever get a handle on DDEML client server operation?

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Wed Sep 18, 2024 1:12 am
by idle
here's a CDS example
run without debugger
then run with debugger ; this one will have the window ID of the 1st windows so send from it

Code: Select all


EnableExplicit 

Global mhwnd,apphwnd 

Procedure SendToApp(hwnd,type,*mdata)

Protected *cds.COPYDATASTRUCT,str.s   

*cds = AllocateMemory(SizeOf(COPYDATASTRUCT))
 Select type 
    Case #PB_String 
      str = PeekS(*mdata,-1)  
      *cds\dwData = type  
      *cds\cbData = StringByteLength(str) 
      *cds\lpData = @str 
 EndSelect    
   
 SendMessage_(hwnd, #WM_COPYDATA, mhwnd, *cds)
    
 FreeMemory(*cds)
 
EndProcedure 

Procedure WinCallback(hWnd, uMsg, WParam, LParam) 
  
  Protected *cds.COPYDATASTRUCT
    
  Select umsg 
    Case #WM_COPYDATA 
      *cds = LParam 
      
      Select *cds\dwData 
          Case #PB_String 
          SetGadgetText(0,PeekS(*cds\lpData,-1))  
      EndSelect 
   EndSelect    
      
   ProcedureReturn #PB_ProcessPureBasicEvents 
   
EndProcedure   

Procedure FindWindowByName(name.s) 
  
  Protected hwnd,TitleSize.l,Title.s  
  
  hwnd = GetWindow_(GetDesktopWindow_(), #GW_CHILD)
  While hwnd
	TitleSize.l = GetWindowTextLength_(hwnd) + 2
	Title = Space(TitleSize)
	GetWindowText_(hwnd, Title, TitleSize)
	If FindString(LCase(Title), LCase(name))
		If hwnd <> WindowID(mhwnd) 
		   ProcedureReturn hwnd
		EndIf   
	EndIf
	hwnd = GetWindow_(hwnd, #GW_HWNDNEXT)
Wend

EndProcedure   

Procedure SendString() 
  
  Protected  str.s = GetGadgetText(0) 
  If apphwnd = 0 
     apphwnd = FindWindowByName("Sendit")
  EndIf 
  If apphwnd 
    SendToApp(apphwnd,#PB_String,@str)
    SetGadgetText(0,"")
  EndIf  
  
EndProcedure  

mhwnd = OpenWindow(#PB_Any,0,0,200,100,"Sendit") 
apphwnd = FindWindowByName("Sendit")

EditorGadget(0,10,10,180,30) 
ButtonGadget(1,10,50,60,30,"Send url")
BindGadgetEvent(1,@SendString(),#PB_EventType_LeftClick) 
SetWindowCallback(@WinCallback(),mhwnd) 

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
 



Re: Anyone ever get a handle on DDEML client server operation?

Posted: Wed Sep 18, 2024 3:05 am
by Randy Walker
idle wrote: Wed Sep 18, 2024 1:12 am here's a CDS example
Hahaaa I searched "CDS example" on the web and got many hits for "Credit default swap".
I see now looking back at your previous post you were talking about copy data strucure cds messaging.

Well either way. THANKS MUCH for the code sample. It is quite complex. Much more so than I imagined.

Re: Anyone ever get a handle on DDEML client server operation?

Posted: Wed Sep 18, 2024 3:46 am
by Randy Walker
idle wrote: Tue Sep 17, 2024 7:11 am
Are easy to achieve but if DDE is what you really need it helps to explain what your specific requirements are which might be more beneficial in getting answers abd also helps others too.
DDE looks Like some over complicated ms solution to a problem that can be solved by much simpler means.

Search for copy data structure that might be what you need
I did search for copy data structure and got one hit with C++ example but my brain melts just looking at C code.
I have two programs. The main app provides the user access to a customer database, logging and troubleshooting. All the data is shared through an FTP server. The 2nd app is responsible for uploading new data and downloading any files that change on the server, parsing and files as required and building cache files used for reporting in the main app. I have been using Global Atoms to simulate communication between the two apps so the main app can notify the user on progress of the 2nd app. Global Atoms as you might imagine is a very complex and clumsy means of communication. This is a list of my Atoms, basically used as flags to notify the main app as the 2nd app enters each stage of its process. The main app has to constantly monitor Atoms:
; ATOMS INDEX / Main app is oneLook.exe / 2nd app is AutoFTP.exe / 3rd app is Update.exe used to update the first 2 apps.
;GlbX0.W) Does nothing in AutoFTP
;GlbX1.W) ; Cheking server status
;GlbX2.W) ; Downloading files
;GlbX3.W) ; FTP failed (jumps to 11)
;GlbX4.W) ; Decompressing customer and help files
;GlbX5.W) ; Decompressing user history files
;GlbX6.w) ; Parsing customer records
;GlbX7.w) ; Indexing history records
;GlbX8.w) ; Refresh now / No changes or actions required
;GlbX9.w) ; Download / parsing complete
;GlbX10.w) ; Ok to commence oneLook refresh
;GlbX11.w) ; Please check connection
;GLBXLog.W) ; Let Update know oneLook not running
;GlbXLook.W) ; Let Update know oneLook not running
;GLBXFTP.W) ; Let Update know oneLook not running
;GlbDL.W) ; Let Update know oneLook not running
;GlbXadmin.W) ; Let Update know oneLook not running

Oh!! And the 2nd app is dependant on the MS native ftp.exe because that was the only option when I created the original code back in the 16bit GFA Basic Era, Long before I even learned of PB. I am tentatively rewriting the 2nd app now using PB native FTP and figured it would be a good time to do away with Atoms if possible. It took me a year to port my 20k+ lines of GFA code into PB, keeping in mind I am NOT a programmer by any stretch of my imagination :)