Pass parameters to running application


I have a Delphi application with a lot of features. I would like to pass a parameter from another windows application (just a couple of small numbers or text) to run one or multiple features in my app. My app,  running app, is going to be idle, waiting for either user input (user running features manually) or input from other application, which is not delphi based and I have limited options to call/execute external applications. I can execute OS commands, so I can start my app with parameters, but the app is already running, so I need to pass some info, for example 2 numbers or a text and a number or 2 simple 20 chars texts.

1) I need to have my app ready to receive some parameters and execute menus/features based on received parameters and
2) I need to be able to pass these parameters from other app. - I assume using OS command

Any suggestions how to start?

Who is Participating?
Delphi_developerAuthor Commented:
@MerijnB: you mentioned a couple of solutions are available.. if you can give more details, I would appreciate.

@lopem: Manuel, thank you for the suggestion, although it doesn't fit my problem. Or I can't figure out how to modify it for me.

Right now, I have decided to do it the way I thought I wouldn't need to go:
1. other app will write file with all the info into 'watched' folder
2. My app will watch folder for files and read and execute based on written info in the file
It is not good solution, but this is the only one I can make work right now.

I think I would like to go the way of .Net (C#) <-> Delphi connection, some kind... so, I guess I will have to find a programmer who knows both technologies and can make this work. I understand this is very unique knowledge, so I hope I will find someone.

MerijnBSr. Software EngineerCommented:
There are several ways to achieve this, and the best way will probably depend on what and how much data you want to sent from one app to the next. Is there data which is much larger then the 20 characters etc you mentioned.

Are you writing the apps you want to sent these commands from yourself? What languages?
Delphi_developerAuthor Commented:
Well, i really don't need a lot of data. For start, i f i can get 2 integers is great. Maybe at some point I would like to have a record of 30 variables, 25 integers and 5 strings (255 chars max), but that is ideally.
From the other application I can use
1: os command, so I can execute any .bat files that receive parameters and execute 'call' to my app
2: I can call dll, so maybe I can create middle-man (it will be created with delphi)
3: the other app has limited .Net capabilities, so in theory I could execute .Net code that would do the work

My delphi app is mine, so I can create anynkind of interface (stdcall?) I need for this to work.

Currently, I don't need to return any feedback, just 'receiving'.

I hope this gives more info.

Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

I have a similar problem. I was writing a delphi program that connects to a chess engine vía the standard input/output. The chess engine uses a Universal Chess Interface (UCI), a communication protocol between chess applications and chess GUIs.

I found a component, threated TPipes ( that works perfectly for me. Maybe this can help you.

Manuel Lopez (lopem)
Despite the variety of possible ways of doing this, I would pick Client/Server TCP approach (or UDP, depends on what you want to do). You can control your application locally or remotely. You can send commands, others can send as well if you share the communications (If you allow others to transmit to your application). Encryption is possible if you need particular client to connect to the Server. So basically you get flexibility in tackling different aspects.

1) I need to have my app ready to receive some parameters and execute menus/features based on received parameters
Then your app will be a Server. Upon starting, the app will listen for incoming connections on a particular port.
Executing received commands, from clients, based on predefined protocol.

2) I need to be able to pass these parameters from other app. - I assume using OS command
You can use Client/Server approach similar to telnet. The commands can be sent from different applications.
Delphi_developerAuthor Commented:
Thank you all for your suggestions!
I started playing around with SendMessages and WM_COPYDATA, so I have opened a new question here:
MerijnBSr. Software EngineerCommented:
Hi Delphi_developer, sorry for late reply.
The 3 easiest methods are all mentioned already (sockets (tcp or udp), pipes and messages using WM_COPYDATA).
Delphi_developerAuthor Commented:
This seems to be working so far, although it is not best solution for my problem, so I decided to ask another questions with WM_COPYDATA solution.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.