[DUG] Sending notification between programs
Dennis Chuah
dennis_cs_chuah at hotmail.com
Wed Aug 18 19:14:29 NZST 2010
John,
Hi. What I'd suggest is you use FILE_NOTIFY_CHANGE_FILE_NAME. Program A
creates the file and writes to it using a temporary filename. When it is
done writing, it renames the file to something that program B recognises.
This will trigger a FILE_NOTIFY_CHANGE_FILE_NAME and B can then pick up the
file. Actually, creating the file will also trigger a
FILE_NOTIFY_CHANGE_FILE_NAME, but A is using a temporary filename that B
does recognise, B ignores it.
Regards,
Dennis.
--------------------------------------------------
From: "John Bird" <johnkbird at paradise.net.nz>
Sent: Wednesday, August 18, 2010 6:02 PM
To: "NZ Borland Developers Group - Delphi List" <delphi at delphi.org.nz>
Subject: Re: [DUG] Sending notification between programs
> The property
> FILE_NOTIFY_CHANGE_LAST_WRITE
>
> looks like a possibility, as if structured data has just been written to a
> file this event should be triggered. The only gotcha seems to be that
> the
> better the caching is the less likely the event will fire - according to
> the
> help. Tricky.
>
> John
>
>>
>> John,
>>
>> Hi. What you want to use is WinAPI: FindFirstChangeNotification,
>> FindNextChangeNotification and FindCloseChangeNotification in program B.
>> Essentially, A writes to a file, and renames it. This causes the handle
>> returned by FindFirstChangeNotification to be signaled. You can test for
>> this using a loop and WaitForSingleObject / WaitForMulitipleObjects. You
>> can even specify a timeout in the WaitXXX calls so that B wakes
>> periodically, even if there are nothing signaled. When the WaitXXX
>> function
>> returns, you can check for the existence of the file.
>>
>> Regards,
>> Dennis.
>>
>> --------------------------------------------------
>> From: "John Bird" <johnkbird at paradise.net.nz>
>> Sent: Wednesday, August 18, 2010 4:43 PM
>> To: "NZ Borland Developers Group - Delphi List" <delphi at delphi.org.nz>
>> Subject: [DUG] Sending notification between programs
>>
>>> Which way would you favour to do the following ?
>>>
>>> I have two Delphi programs (A and B) that I will pass data from A to B -
>>> I
>>> will probably use a file to put the data in because its quite
>>> structured.
>>> B will sleep on a timer loop until this something is triggered.
>>>
>>> What I want to do is send a simple notification from program A to B that
>>> there is something to do - i.e. trigger an event in B to wake and do
>>> something to process this.
>>>
>>> There are various ways I could communicate this notification
>>>
>>> 1 - Has to add minimal overhead of size and processing to programs A and
>>> B
>>> 2 - A can tolerate B not responding immediately without freezing but
>>> preferably will know
>>>
>>> The ways I have considered to be candidates are
>>>
>>> a - Windows messaging
>>> b - TCP/IP Indy (which could send the data too. (adds complexity of
>>> needs to be done in a thread to not affect the main program A)
>>> c - make program B a DLL
>>> d - Roll my own - make a timer in B which polls for for some condition
>>> and
>>> otherwise continues to sleep
>>> e - something else.
>>>
>>> Kindly share your favoured options how you might do this.
>>>
>>> John
>>
>>
>>
>>> _______________________________________________
>>> NZ Borland Developers Group - Delphi mailing list
>>> Post: delphi at delphi.org.nz
>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject:
>>> unsubscribe
>>
>> _______________________________________________
>> NZ Borland Developers Group - Delphi mailing list
>> Post: delphi at delphi.org.nz
>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject:
>> unsubscribe
>
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at delphi.org.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject:
> unsubscribe
>
More information about the Delphi
mailing list