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)
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.


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

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Newbie Thread Programming 1 161
Find and Replace Stream with 0s 8 69
Wincontrol not (correctly) drawn 15 40
Delphi: making a BW image transparent 10 59
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

809 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