AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[module, ahk & dotNet] IPC 2.6 
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions
View previous topic :: View next topic  
Author Message
majkinetor



Joined: 24 May 2006
Posts: 4052
Location: Belgrade

PostPosted: Thu Aug 02, 2007 9:49 am    Post subject: [module, ahk & dotNet] IPC 2.6  Reply with quote


_________________


Last edited by majkinetor on Mon Aug 10, 2009 1:43 pm; edited 23 times in total
Back to top
View user's profile Send private message
BoBoĻ
Guest





PostPosted: Thu Aug 02, 2007 10:19 am    Post subject: Reply with quote

A Chat ! Shocked
Back to top
MoMo
Guest





PostPosted: Thu Aug 02, 2007 10:52 am    Post subject: Reply with quote

Un chat ! Very Happy
Back to top
daniel2



Joined: 23 Jul 2007
Posts: 47

PostPosted: Thu Aug 02, 2007 9:30 pm    Post subject: Reply with quote

This is an excellant example of WM_COPYDATA!!! Smile
Script to script communication has been asked frequently-- & this function couldn't be easier to use!

Thanks for wrapping this functionality up so neatly (as always..). Its also nice seeing you pop up in the forum again.. evan if only briefly Very Happy
Back to top
View user's profile Send private message
corrupt



Joined: 29 Dec 2004
Posts: 2446

PostPosted: Fri Aug 03, 2007 12:20 am    Post subject: Reply with quote

Nice example Smile

BoBoĻ wrote:
A Chat ! Shocked
If you like talking to yourself... Wink

MoMo wrote:
Un chat ! Very Happy
Shocked n'est pas un chat...
Back to top
View user's profile Send private message Visit poster's website
MoMo
Guest





PostPosted: Fri Aug 03, 2007 10:25 pm    Post subject: Reply with quote

And the english chat comes from the french word tchatche and from the verb tchatcher which is popular language comming for south of France and which means to speak a lot. This word come itself from the spanish verb chacharear, which was transformed by the algerian slang to become the french verb tchatcher... So nothing to see with the french chat, which is ... an english cat... What else ? Only that : thank to majkinetor, the (big) blue and purple cat, with long teeth, for this (again) good script.
Back to top
corrupt



Joined: 29 Dec 2004
Posts: 2446

PostPosted: Mon Aug 06, 2007 6:54 pm    Post subject: Reply with quote

MoMo wrote:
And the english chat comes from the french word tchatche and from the verb tchatcher which is popular language comming for south of France and which means to speak a lot. This word come itself from the spanish verb chacharear, which was transformed by the algerian slang to become the french verb tchatcher... So nothing to see with the french chat, which is ... an english cat... What else ? Only that : thank to majkinetor, the (big) blue and purple cat, with long teeth, for this (again) good script.
pussy != talking
Nice try though... Laughing Razz
Back to top
View user's profile Send private message Visit poster's website
Jey123456
Guest





PostPosted: Sat Aug 18, 2007 4:36 am    Post subject: Just a little add-on Reply with quote

I don't know if there is any others way to do the communication between 2 app without any GUI, but there is a little function that activate the onMessageHandler with a completely invisible GUI.

this function is meant to be used with the IPC.ahk file.

Code:

IPC_OnMessageNoGui( pLabel ) {
   Gui +LastFound -AlwaysOnTop -Caption +ToolWindow
   Gui, Show   
   IPC_OnMessage(pLabel)
}


I know its very simple, but well, it may help some people.
Back to top
SecurityAnalysis
Guest





PostPosted: Sun Jan 27, 2008 10:54 pm    Post subject: Reply with quote

Does your script require GUI majkinetor?
Back to top
majkinetor



Joined: 24 May 2006
Posts: 4052
Location: Belgrade

PostPosted: Tue Jan 29, 2008 11:14 pm    Post subject: Reply with quote

No, you can use a message-only window. But that requires some coding. IIRC, some scripts on the forum create them.
_________________
Back to top
View user's profile Send private message
Lexikos



Joined: 17 Oct 2006
Posts: 4364
Location: Qld, Australia

PostPosted: Wed Jan 30, 2008 10:48 am    Post subject: Reply with quote

You could use the script's main window...
Back to top
View user's profile Send private message Visit poster's website
majkinetor



Joined: 24 May 2006
Posts: 4052
Location: Belgrade

PostPosted: Wed Jan 30, 2008 3:04 pm    Post subject: Reply with quote

I was asking myself once, is it smart to subclass main window of AHK. Due to the fact that ahk proc is called for every message, it can probably reduce performance of the script. I am not sure about this though, but it seems logical. I was always hesistant to subclass wndproc in AHK.

He can also use CreateWindowEx to create hidden control and subclass it, in which case it will not receive large number of messages. Then it can receive IPC messages.
_________________


Last edited by majkinetor on Wed Jan 30, 2008 5:46 pm; edited 1 time in total
Back to top
View user's profile Send private message
Zoulou
Guest





PostPosted: Wed Jan 30, 2008 5:26 pm    Post subject: Reply with quote

majkinetor wrote:
He can also use CreateWindowEx to create hidden control and subclass it, in which case it will not receive large number of messages. Then it can receive IPC messages.
I'm a noob but very interested by IPC. Can you please give us an example ? Thanks by advance.
Back to top
Lexikos



Joined: 17 Oct 2006
Posts: 4364
Location: Qld, Australia

PostPosted: Wed Jan 30, 2008 9:20 pm    Post subject: Reply with quote

majkinetor wrote:
I was asking myself once, is it smart to subclass main window of AHK.
No. The biggest problem is perhaps that ListLines becomes unusable since interacting with the main window executes script. There's no need to subclass the window anyway.

Creating a message window is only of benefit in the off chance that some other part of the script uses OnMessage(WM_COPYDATA).
Back to top
View user's profile Send private message Visit poster's website
majkinetor



Joined: 24 May 2006
Posts: 4052
Location: Belgrade

PostPosted: Thu Jan 31, 2008 12:22 pm    Post subject: Reply with quote

Quote:
There's no need to subclass the window anyway.

Ah, yes.... there is no need for this in this case, thx for the note.

Quote:
I'm a noob but very interested by IPC. Can you please give us an example ? Thanks by advance.

This is a sample of server and client. Client asks for some information that require some time to be calculated (like db access). Client can ask for new information again, before server finishes previous one. Server buffers requests, and sends them back as soon as it calculates. Ports are used as transaction IDs so this can work ok for 2^32 transactions.

This approach was needed because IPC doesn't use PostMessage to send WM_COPYDATA, but SendMessage which waits. PostMessage can't be used with WM_COPYDATA.

Server.ahk
Code:
#SingleInstance, off   ;allow multiple instances

   target := "Klijent"

   Gui, +LastFound     +AlwaysOnTop
   hScript := WinExist()
   
   Gui, Font, s8
   Gui, Add, ListBox,xm   w350 h300 vMyLB,

   Gui, Show,   x600 AutoSize

   IPC_OnMessage("OnMessage")
return

OnMessage:
    GuiControl, , MyLB, %IPC_Port% : %IPC_Message%
   buf .= IPC_PORT " "
   aMessage_%IPC_PORT% := IPC_Message
   if !Timer
   {
      SetTimer, DBGet, -50
      Timer := true
   }
return

DBGet:
   loop
   {
      j := InStr(buf, " "),  port := SubStr(buf, 1, j-1), buf := SubStr(buf, j+1)
       msg := aMessage_%port%

       data := SQLGetData(msg)
       IPC_Send(WinExist(target), data, port)
      
      IfEqual, buf,, break
   }
   Timer := false
return


SQLGetData(msg) {
   sleep 5000
   return "data for:  " msg
}

GuiClose:
   exitapp
return

#include IPC.ahk


Klijent.ahk
Code:
#SingleInstance, off   ;allow multiple instances

   target := "Server"

   Gui, +LastFound     +AlwaysOnTop
   hScript := WinExist()

   Gui, Font, s10
   Gui, Add, Edit,    vMyMsg  w310      , select * from table

   Gui, Font, s8
   Gui, Add, Button, x+5      gOnSend      , Send

   Gui, Add, ListBox,xm   w350 h300 vMyLB,

   Gui, Show,   x200 AutoSize

   port := 0
   IPC_OnMessage("OnMessage")
return

OnMessage:   
     GuiControl, , MyLB, %IPC_Port% : %IPC_Message%
return


OnSend:
   Gui, Submit, NoHide
   port++
   res := IPC_Send( WinExist( target ), MyMsg, port)
return

GuiClose:
   exitapp
return

#include IPC.ahk

_________________
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions All times are GMT
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group