Pass parameters to running application

Posted on 2015-01-29
Last Modified: 2015-02-06

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?

Question by:Delphi_developer
LVL 19

Assisted Solution

MerijnB earned 167 total points
ID: 40579261
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?

Author Comment

ID: 40579616
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.


Assisted Solution

lopem earned 166 total points
ID: 40580398
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)
Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.


Accepted Solution

Delphi_developer earned 0 total points
ID: 40581124
@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.

LVL 24

Assisted Solution

jimyX earned 167 total points
ID: 40581164
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.

Author Comment

ID: 40583015
Thank you all for your suggestions!
I started playing around with SendMessages and WM_COPYDATA, so I have opened a new question here:
LVL 19

Expert Comment

ID: 40583428
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).

Author Closing Comment

ID: 40593209
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.

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
In a recent question ( here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

808 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question