Peter,
Win32::Pipe allows you to use named pipes for interprocess communication.
One process has to act as a server, any others as clients. You might want
to have a look at the PerlIPC doc as well.
Here's a very simple Win32::Pipe server:
use Win32::Pipe;
$p = new Win32::Pipe("MyPipe"); # create pipe
$res = $p->Connect(); # wait for a process to connect
while ($data = $p->Read() ) {
print "RECEIVED: $data\n";
}
$p->Disconnect(); # disconnect
$p->Close(); # close pipe
and a client
use Win32::Pipe;
my $p = new Win32::Pipe("\\\\.\\pipe\\MyPipe"); # client must yous
\\server\pipe\pipename syntax
for ( my $i = 0; $i <=10 ; $i++) {
$p->Write("\$i = $i\n"); # could read from the pipe as well
sleep 1; # without a delay all the
writes go across at once
}
$p->Close();
The problem with this is that while waiting for a connection your server
script won't be able to
respond to user input. This is going to be a problem you hit with most IPC
methods.
Win32::GUI does give you access to SendMessage in the Win32 api so it may
be possible
to use that. I have a vague recollection that some of the messages were
user definable but
wouldn't swear to this. You could look on MSDN to find out.
SendMessage details are at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesfunctions/sendmessage.asp
Good luck.
Kev.
|---------+------------------------------------------------>
| | "Straub, Peter (Peter)" |
| | <[EMAIL PROTECTED]> |
| | Sent by: |
| | [EMAIL PROTECTED]|
| | ceforge.net |
| | |
| | |
| | 08/07/2002 17:08 |
| | |
|---------+------------------------------------------------>
>----------------------------------------------------------------------------------------------|
|
|
| To: [email protected]
|
| cc:
|
| Subject: [perl-win32-gui-users] communication between GUI scripts
|
>----------------------------------------------------------------------------------------------|
Hi all,
does anyone know of a reliable way for two Win32::GUI
scripts to communicate with each other? They run as
separated processes.
My idea was to simply write data to a file and send a
notification of some kind to the other process
(concurrent accesses not being an issue here).
What came to my mind in the first place was to use
'PostMessage'. Using Win32::GuiTest I am able to retrieve
the adressee's window handle, but what message should
I post?
As far as I know there is no support for user defined
messages (at least I have no idea how to retrieve one).
I also tried Win32::GuiTest's SendKeys function to notify
a dummy window in the other application by simulating
keystrokes. This gradually turned out to be a real horror
because the receiving control must be the foreground
window in order for SendKeys to succeed and every box
popping up at the wrong time spoils the whole thing...
Could you please help with better ideas how to
accomplish this?
TIA and Cheers,
Peter
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Oh, it's good to be a geek.
http://thinkgeek.com/sf
_______________________________________________
Perl-Win32-GUI-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users