quote:
Originally posted by Eagle_Erwin
I'm trying to make a script that closes the conversation-window when a contact signs out.
The code I have now:
(...)
But, this doesn't work. What is wrong in this script, or what script can I use to close the conversation window of the person that signs out?
There is too much wrong to list, so here is the fixed script. Things you got wrong are corrected in in red:
code:
function OnEvent_ContactSignout(Email) {
var contact = Email;
var chats = Messenger.CurrentChats;
var e = new Enumerator(chats);
for(; !e.atEnd(); e.moveNext()) {
var chat = e.item();
var f = new Enumerator(chat.Contacts);
for(; !f.atEnd(); f.moveNext()) {
var contact1 = f.item();
if (contact == contact1.Email) {
Interop.Call("User32", "SendMessageA", chat.Handle, 0x10, 0, 0)
break;
}
}
}
}
in short:
code:
function OnEvent_ContactSignout(Email) {
for(var e = new Enumerator(Messenger.CurrentChats); !e.atEnd(); e.moveNext()) {
var chat = e.item();
for(var f = new Enumerator(chat.Contacts); !f.atEnd(); f.moveNext()) {
if (Email == f.item().Email) {
Interop.Call("User32", "SendMessageA", chat.Handle, 0x10, 0, 0);
break;
}
}
}
}
But I also advise not to use this script as-is. 2 major drawbacks:
1) Closing a convo automatically like that will make you often miss messages send by people (even when you implement a delay).
2) Using the logic you used, it will also close conversation with multiple contacts whenever 1 of those contacts signs out. See mickael9's script in the next post for a better logic and a way to fix this.