What happened to the Messenger Plus! forums on msghelp.net?
Shoutbox » MsgHelp Archive » Messenger Plus! for Live Messenger » Scripting » [Help] MS Agent catching clicks

Pages: (2): « First [ 1 ] 2 » Last »
[Help] MS Agent catching clicks
Author: Message:
BstrdSmkr
Junior Member
**

Avatar
Earned. Never Given.

Posts: 46
38 / Male / –
Joined: Jul 2006
O.P. Happy  [Help] MS Agent catching clicks
i've read the MS SDK for the agents, which is lacking to say the least : \   the trouble i'm having is trying to catch a click event on the agent. for example, if the user clicks on Merlin when he says something, i want the script to run a function.  any help?
07-20-2006 09:23 PM
Profile E-Mail PM Web Find Quote Report
cloudhunter
Senior Member
****


Posts: 536
Reputation: 18
37 / – / –
Joined: Dec 2005
RE: [Help] MS Agent catching clicks
Unfortuneately, it seems like it can't within the scripting system :( As it doesn't register any events apart from the built in one. I've researched it myself, but with no luck.

Cloudy
[Image: cloudy.jpg]
Sig by pirateok/marisaok/marisa ;)
quote:
Originally posted by Moulin Rouge
The greatest thing you'll ever learn, is just to love and be loved in return

6713 days, 18 hours, 40 minutes, 32 seconds ago
07-20-2006 10:48 PM
Profile E-Mail PM Find Quote Report
ddunk
Veteran Member
*****

Avatar

Posts: 1228
Reputation: 51
35 / Male / Flag
Joined: Mar 2004
RE: [Help] MS Agent catching clicks
Actually, I was researching this a few days back because I wanted to play with the control and I came across
quote:
Programming the Microsoft Agent Control
ActiveX® technology for interactive software agents
Microsoft Corporation
October 1998
A 113 page .doc file explaining everything you did and didn't want to know about the agent control. :P There are a few jscript examples, but it's mostly vbscript.
I'll attach the docs, but here's the click event.
code:
Click Event
Description
Occurs when the user clicks a character or the character’s icon.
Syntax
Sub agent_Click (ByVal CharacterID, ByVal Button, ByVal Shift, ByVal X, ByVal Y)

CharacterID     
Returns the ID of the clicked character as a string.

Button   
Returns an integer that identifies the button that was pressed and released to cause the event. The button argument is a bit field with bits corresponding to the left button (bit 0), right button (bit 1), and middle button (bit 2). These bits correspond to the values 1, 2, and 4, respectively. Only one of the bits is set, indicating the button that caused the event. If the character includes a taskbar icon, and bit 13 is also set, the click occurred on the taskbar icon.

Shift
Returns an integer that corresponds to the state of the SHIFT, CTRL, and ALT keys when the button specified in the button argument is pressed or released. A bit is set if the key is down. The shift argument is a bit field with the least-significant bits corresponding to the SHIFT key (bit 0), the CTRL key (bit 1), and the ALT key (bit 2). These bits correspond to the values 1, 2, and 4, respectively. The shift argument indicates the state of these keys. Some, all, or none of the bits can be set, indicating that some, all, or none of the keys are pressed. For example, if both CTRL and ALT were pressed, the value of shift would be 6.

X,Y
Returns an integer that specifies the current location of the mouse pointer. The X and Y values are always expressed in pixels, relative to the upper left corner of the screen.

Remarks
This event is sent only to the input-active client of a character. When the user clicks a character or its taskbar icon with no input-active client, the server sends the event to its active client. If the character is visible (Visible = True), the user’s action also sets the character’s last input-active client as the current input-active client, sending the ActivateInput event to that client, and then sending the Click event. If the character is hidden (Visible = False), and the user clicks the character’s taskbar icon using button 1, the character is also automatically shown.
Note  Clicking a character does not disable all other character output (all characters). However, pressing the Listening key does flush the input-active character’s output and triggers the RequestComplete event, passing a Request.Status that indicates that the client’s queue was interrupted.

(page 19)

http://ponynugget.net/progagentcontrol.doc

This post was edited on 07-20-2006 at 10:57 PM by ddunk.
07-20-2006 10:57 PM
Profile E-Mail PM Web Find Quote Report
alexp2_ad
Scripting Contest Winner
****

Avatar
Who love the chocolate?

Posts: 691
Reputation: 26
36 / Male / –
Joined: May 2004
Status: Away
RE: RE: [Help] MS Agent catching clicks
quote:
Originally posted by cloudhunter
Unfortuneately, it seems like it can't within the scripting system :( As it doesn't register any events apart from the built in one. I've researched it myself, but with no luck.

Cloudy

It can, and here's how.  Add this format for a variable to your code somewhere (outside other functions):

code:
var Clicked = function(){
    function agent::Click(dwCharID,fwKeys,x,y){
        MsgPlus.DisplayToast('Clicked','You clicked Merlin!');
    }
}

Assuming your ActiveXObject("Agent.Control.1") is called "agent".  Then when you declare the agent (eg.  in initialize) add "Clicked();"

Tested and working with that script that made him say what contacts said.  :)


EDIT:  I know this from catching events in iTunes, for iTunes+... was a pain!

This post was edited on 07-20-2006 at 11:05 PM by alexp2_ad.
07-20-2006 11:01 PM
Profile E-Mail PM Find Quote Report
cloudhunter
Senior Member
****


Posts: 536
Reputation: 18
37 / – / –
Joined: Dec 2005
RE: [Help] MS Agent catching clicks
Well just shows what a noob I am then ;) Thanks, it's gonna help alot :)

Cloudy
[Image: cloudy.jpg]
Sig by pirateok/marisaok/marisa ;)
quote:
Originally posted by Moulin Rouge
The greatest thing you'll ever learn, is just to love and be loved in return

6713 days, 18 hours, 40 minutes, 32 seconds ago
07-20-2006 11:04 PM
Profile E-Mail PM Find Quote Report
alexp2_ad
Scripting Contest Winner
****

Avatar
Who love the chocolate?

Posts: 691
Reputation: 26
36 / Male / –
Joined: May 2004
Status: Away
RE: RE: [Help] MS Agent catching clicks
quote:
Originally posted by cloudhunter
Well just shows what a noob I am then ;)

Oh no, not at all, it's a pain and a very weird way of declaring events, but it seems to be how you declare events for objects.  I only know it because I needed to catch iTunes events...
07-20-2006 11:06 PM
Profile E-Mail PM Find Quote Report
cloudhunter
Senior Member
****


Posts: 536
Reputation: 18
37 / – / –
Joined: Dec 2005
RE: [Help] MS Agent catching clicks
Well I saw that method of detecting the event done while I was searching the web... I just didn't understand it ;) I knew there must be a way to do it, as when you released a new version of your script, you said youd switched from timers to events.

Thanks for the information :)

Cloudy
[Image: cloudy.jpg]
Sig by pirateok/marisaok/marisa ;)
quote:
Originally posted by Moulin Rouge
The greatest thing you'll ever learn, is just to love and be loved in return

6713 days, 18 hours, 40 minutes, 32 seconds ago
07-20-2006 11:13 PM
Profile E-Mail PM Find Quote Report
deAd
Scripting Contest Winner
*****

Avatar

Posts: 1060
Reputation: 28
– / Male / Flag
Joined: Jan 2006
RE: [Help] MS Agent catching clicks
Well the JScript parser loads events/functions before variables and stuff, so if you don't use a wrapper it tells you the object is not defined. -dt- posted how to wrap it in some other thread...
07-20-2006 11:14 PM
Profile PM Find Quote Report
BstrdSmkr
Junior Member
**

Avatar
Earned. Never Given.

Posts: 46
38 / Male / –
Joined: Jul 2006
O.P. RE: [Help] MS Agent catching clicks
quote:
Originally posted by alexp2_ad


code:
var Clicked = function(){
    function agent::Click(dwCharID,fwKeys,x,y){
        MsgPlus.DisplayToast('Clicked','You clicked Merlin!');
    }
}



i saw this and others similar to it when i was researching it, but i don't understand it. i understand your post and how to implement your solution, but i'm wondering if you could expand a bit about how this works?  once i've got my head around it, i'll put it all together and post it in "noob-format" for everyone to see lol.

also to clarify:   dwCharID is the name of the agent (merlin, peedy, etc)   
fwKeys is the state of the shift key (boolean)
X and Y are the coords of the pointer when the event occoured.

this is what i gathered between here and my research.  is this correct?
07-21-2006 03:30 PM
Profile E-Mail PM Web Find Quote Report
alexp2_ad
Scripting Contest Winner
****

Avatar
Who love the chocolate?

Posts: 691
Reputation: 26
36 / Male / –
Joined: May 2004
Status: Away
RE: [Help] MS Agent catching clicks
deAd sort of explained why this works.

The thing is, the JScript parser that runs the code will create the functions and event functions before it makes the objects and does the rest of the code, so when it sees "function agent::Click"  (ie.  the event "Click" for the object "agent") it hasn't made the agent object, so it would complain that it is undefined.  However, if you put the function inside a variable, it's ignored and the event function isn't defined until you call the variable.  (The "Clicked();" bit)  And when you call the variable, it should be after the agent object is made, so it will understand it and not say it's undefined.

And according to the agent documentation those variables are what you said, yeah.  Though I don't think fwKeys is just the shift key, I think it has numbers to represent other keys like ctrl and such.  Can't remember where I saw that now though.
07-21-2006 03:40 PM
Profile E-Mail PM Find Quote Report
Pages: (2): « First [ 1 ] 2 » Last »
« Next Oldest Return to Top Next Newest »


Threaded Mode | Linear Mode
View a Printable Version
Send this Thread to a Friend
Subscribe | Add to Favorites
Rate This Thread:

Forum Jump:

Forum Rules:
You cannot post new threads
You cannot post replies
You cannot post attachments
You can edit your posts
HTML is Off
myCode is On
Smilies are On
[img] Code is On