Michael Van Canneyt wrote:
>
> On Mon, 29 Aug 2005, Micha Nelissen wrote:
>
>
>>On Mon, 29 Aug 2005 09:22:31 +0200 (CEST)
>>Michael Van Canneyt <[EMAIL PROTECTED]> wrote:
>>
>>
>>>
>>>On Mon, 29 Aug 2005, SteveG wrote:
>>>
>>>
>>>>Could anybody tell me if it is yet possible to send messages between apps in
>>>>Lazarus ?
>>>>eg -WM_USER in Windows
>>>>If not, any suggestions on how to send a signal to another app (no data)
>>>>would
>>>>be really appreciated
>>>
>>>You can always send a message to any application in Windows,
>>>so also in Lazarus. The question is what the LCL will do if
>>>it encounters a message that it doesn't recognize.
>>
>>Throw it away :-) Same as with the systray messages. Isn't there a
>>cross-platform IPC unit yet in the FCL ? ;-)
>>
>>At least, that would seem to me a cleaner solution.
>
>
> I am open for suggestions. The following questions need answers:
> 1. How will you identify the application ?
> 2. What with multiple instances of an application ?
> 3. How to integrate the IPC with the message loop ?
> The IPC does not need a message loop, but it must be
> implemented in such a way that it can easily be
> implemented in the message loop.
>
> What I've thought of so far:
>
> In windows, it's relatively easy:
> - Create a window handle with name appname_apphandle.
> (can be reduced to simply appname if only one
> instance will be running, see the thread about
> single instances for my suggestion about that)
> - Use this handle to send a message to with WM_COPY.
>
>
> On linux/Unix:
> - Create a unix socket /tmp/appname.appid under /tmp
> or under ~/.appname/appid
> (same remark about single instance)
>
> - Use this socket to send message to with standard socket
> functions.
>
> And generally:
> - Implement some CheckMessage() function which can be
> used to check for a message.
>
> Wrap all this in a non-visual component which you can
> drop on a form, and that is it.
>
> Michael.
I assume that under windows full duplex Named Pipes are very similiar to
Unix sockets.One process (server) can create Named Pipe (or anonymous
but it can operate only inside one process memory) and the client can
write/read (server of course can read/write too!)
The main problem is that creating named pipes is limited to Windows
NT/XP. Windows 9X can only work as client of created named pipe.
Named Pipes are of course under NT/XP security model like files.
You can easly find Delphi examples for Named Pipes client /server.
Named Pipes operate outside message loops.
Regards
Boguslaw Brandys
_________________________________________________________________
To unsubscribe: mail [EMAIL PROTECTED] with
"unsubscribe" as the Subject
archives at http://www.lazarus.freepascal.org/mailarchives