 |
AutoHotkey Community Let's help each other out
|
| View previous topic :: View next topic |
| Author |
Message |
majkinetor
Joined: 24 May 2006 Posts: 4052 Location: Belgrade
|
Posted: Thu Aug 02, 2007 9:49 am Post subject: [module, ahk & dotNet] IPC 2.6 |
|
|
_________________

Last edited by majkinetor on Mon Aug 10, 2009 1:43 pm; edited 23 times in total |
|
| Back to top |
|
 |
BoBoĻ Guest
|
Posted: Thu Aug 02, 2007 10:19 am Post subject: |
|
|
A Chat !  |
|
| Back to top |
|
 |
MoMo Guest
|
Posted: Thu Aug 02, 2007 10:52 am Post subject: |
|
|
Un chat !  |
|
| Back to top |
|
 |
daniel2
Joined: 23 Jul 2007 Posts: 47
|
Posted: Thu Aug 02, 2007 9:30 pm Post subject: |
|
|
This is an excellant example of WM_COPYDATA!!!
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  |
|
| Back to top |
|
 |
corrupt
Joined: 29 Dec 2004 Posts: 2446
|
Posted: Fri Aug 03, 2007 12:20 am Post subject: |
|
|
Nice example
| BoBoĻ wrote: | A Chat !  | If you like talking to yourself...
| MoMo wrote: | Un chat !  | n'est pas un chat... |
|
| Back to top |
|
 |
MoMo Guest
|
Posted: Fri Aug 03, 2007 10:25 pm Post subject: |
|
|
| 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
|
Posted: Mon Aug 06, 2007 6:54 pm Post subject: |
|
|
| 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...  |
|
| Back to top |
|
 |
Jey123456 Guest
|
Posted: Sat Aug 18, 2007 4:36 am Post subject: Just a little add-on |
|
|
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
|
Posted: Sun Jan 27, 2008 10:54 pm Post subject: |
|
|
| Does your script require GUI majkinetor? |
|
| Back to top |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4052 Location: Belgrade
|
Posted: Tue Jan 29, 2008 11:14 pm Post subject: |
|
|
No, you can use a message-only window. But that requires some coding. IIRC, some scripts on the forum create them. _________________
 |
|
| Back to top |
|
 |
Lexikos
Joined: 17 Oct 2006 Posts: 4364 Location: Qld, Australia
|
Posted: Wed Jan 30, 2008 10:48 am Post subject: |
|
|
| You could use the script's main window... |
|
| Back to top |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4052 Location: Belgrade
|
Posted: Wed Jan 30, 2008 3:04 pm Post subject: |
|
|
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 |
|
 |
Zoulou Guest
|
Posted: Wed Jan 30, 2008 5:26 pm Post subject: |
|
|
| 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
|
Posted: Wed Jan 30, 2008 9:20 pm Post subject: |
|
|
| 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 |
|
 |
majkinetor
Joined: 24 May 2006 Posts: 4052 Location: Belgrade
|
Posted: Thu Jan 31, 2008 12:22 pm Post subject: |
|
|
| 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 |
|
 |
|
|
You can post new topics in this forum You can reply to topics in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|