YahELite Forum
May 19, 2013, 05:54:38 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
 
  Website   Home   Help Search Login Register  
Pages: [1] 2 3 ... 6
  Print  
Author Topic: YahVox (.Net Version) Beta  (Read 18239 times)
0 Members and 1 Guest are viewing this topic.
Dermot
Guest
« on: June 01, 2009, 03:36:29 PM »

this vox is no longer maintained, see last posts for sharpvox

This is a YahVox i made in .NET that uses Yacscom.dll version 50





Display Pictures on Right Click



This Vox should work on Vista and Windows 7 (both tested by me)

However i would like others to test it also to see the outcome as this is a Beta

If using Pcap in latest just click cog then capture info then join room for auto voice

Clicking Cog at bottom opens the Options Area where you put in the folowing information

 - Your id Example = Joesoap_2010
 - Current voice cookie = Found in INFO > Details under Voice Cookie
 - Room Name Example = Yahoo! Chat Help:1
 - Roomspace Number Example 1017 which is usually prefixed after the roomname like Yahoo! Chat Help:1::1017

Then Click Connect, You should connect fine if you entered the info correctly.

Finished Parts
 - Mute fully working
 - Ignores permently saved to xml [ignores.xml]
 - right click mic to lock mic
 - left click and hold to talk
 - Voice yacs errors handled (popup box)
 - Left Click user then click again to tick user n ignore them
 - 32 bit and 64 bit Compatible
 - Help [?] added (click it then the area you want info)
 - Display images on Right click of selected user
 - Profile opened in default browser on middle click (clicking mouse wheel in) on selected user
 - regex voice ignores
 - auto ignore loud users
 - ui redone slightly
 - balloon tips
 - system tray options
 - volume and volume control options
 - mute while speaking
 - entry message choice on/off
- auto voice with pcap

To Do
 - Handsfree by outout/input levels
 - individual volumes for users
 - profiles use either new or old

Comments are welcome and again i stress this before i get .NET complaints, This is for systems Vista + which have .NET native.

Download Removed

Smiley

« Last Edit: March 14, 2012, 09:34:07 PM by Dermot » Logged
southernhunter2006
YahELite
*****
Offline Offline

Posts: 813


« Reply #1 on: June 01, 2009, 09:09:08 PM »

 WTF!! I downloaded and followed all instructions but got this (Audio error)= Code:(1)=> Yacs Join denied, so must be doing something wrong, I use Winows XP home system 32  LMAO duh wow rant
Logged
Dermot
Guest
« Reply #2 on: June 01, 2009, 10:10:46 PM »


did you refresh your chat first to get a new voice cookie?

Logged
crash_demons
YahELite
*****
Offline Offline

Posts: 604


Sent to hell, promoted to devil instead.


WWW
« Reply #3 on: June 02, 2009, 10:43:37 AM »

Works great here on Windows XP Home (32-bit) as long as I get the cookie within the first 5 minutes (or whatever the weird expiration time is) of arriving in a room.


   I did notice something of a minor difference between this and the regular YahVox - double-clicking is not what seems to be triggering a user to be checked here.
Quote from: Dermot
- Click/double click to tick user n ignore
   While double-clicking does check the item here*, It seems that it's actually waiting for the item to be selected then clicked to check it.
(* With the user unselected to start with)

Example 1: if you have a user selected* and click them once, they are muted
Example 2: if you have a user selected* and double click them, they are quickly muted then unmuted (the most obvious contrast)
(* With the user unmuted to start with)

   In the regular YahVox, you can select and single-click all you like and it won't mute/unmute the user unless you actually double-click.
   As I said, this is a minor issue at best and it might be easier to keep it working this way - but for reference, it is possible to capture the NM_DBLCLK notification (with the NMITEMACTIVATE struct containing the item index), although I haven't tried to do it in C#.


Over-all, however, this is a great program and I can't wait to see some of the future features.
« Last Edit: June 02, 2009, 11:06:04 AM by crash_demons » Logged

Dermot
Guest
« Reply #4 on: June 02, 2009, 11:13:23 AM »


yeah i actually noticed that earlier, will have a look at it n update accordingly.

Thanks for feedback crash Smiley

Logged
crash_demons
YahELite
*****
Offline Offline

Posts: 604


Sent to hell, promoted to devil instead.


WWW
« Reply #5 on: June 02, 2009, 11:18:15 AM »

Woops, little edit for the above post, NM_DBLCLK is for ListViews. (if you ever make the switch from the ListBox)

You can use LBN_DBLCLK, however, for the listbox.

By the way, is there a reason the "Visual C# Command Line Compiler" is launched when the program is exited? (csc.exe)  (This may, of course, just be normal operation - but I didn't check what debugging options were set either.)

Note: If I don't ask the question of why the program is running another program, I'm sure someone else will - best to just get it out in the open ASAP.

Edit: Doesn't happen with my C# programs from either debug or release. *shrugs*
Edit 2: if csc.exe is denied from opening, an Unhandled Exception will occur:
Quote from: JIT
System.BadImageFormatException: Could not load file or assembly '0 bytes loaded from System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Edit 3: used processmonitor to get the command-line called:
Code:
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe" /noconfig /fullpaths @"C:\Documents and Settings\*CURRENT USER*\Local Settings\Temp\mnpidl0c.cmdline"
Edit 4: and the cmdline file contains:
Code:
/t:library /utf8output /R:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll" /out:"C:\Documents and Settings\*CURRENT USER*\Local Settings\Temp\mnpidl0c.dll" /debug- /optimize+ /nostdlib /D:_DYNAMIC_XMLSERIALIZER_COMPILATION  "C:\Documents and Settings\*CURRENT USER*\Local Settings\Temp\mnpidl0c.0.cs"
Edit 5: and the CS (C#) file contains:
Code:
#if _DYNAMIC_XMLSERIALIZER_COMPILATION
[assembly:System.Security.AllowPartiallyTrustedCallers()]
[assembly:System.Security.SecurityTransparent()]
#endif
[assembly:System.Reflection.AssemblyVersionAttribute("2.0.0.0")]
namespace Microsoft.Xml.Serialization.GeneratedAssembly {

    public class XmlSerializationWriterList1 : System.Xml.Serialization.XmlSerializationWriter {

        public void Write1_ArrayOfString(object o) {
            WriteStartDocument();
            if (o == null) {
                WriteNullTagLiteral(@"ArrayOfString", @"");
                return;
            }
            TopLevelElement();
            {
                global::System.Collections.Generic.List<global::System.String> a = (global::System.Collections.Generic.List<global::System.String>)((global::System.Collections.Generic.List<global::System.String>)o);
                if ((object)(a) == null) {
                    WriteNullTagLiteral(@"ArrayOfString", @"");
                }
                else {
                    WriteStartElement(@"ArrayOfString", @"", null, false);
                    for (int ia = 0; ia < ((System.Collections.ICollection)a).Count; ia++) {
                        WriteNullableStringLiteral(@"string", @"", ((global::System.String)a[ia]));
                    }
                    WriteEndElement();
                }
            }
        }

        protected override void InitCallbacks() {
        }
    }

    public class XmlSerializationReaderList1 : System.Xml.Serialization.XmlSerializationReader {

        public object Read1_ArrayOfString() {
            object o = null;
            Reader.MoveToContent();
            if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
                if (((object) Reader.LocalName == (object)id1_ArrayOfString && (object) Reader.NamespaceURI == (object)id2_Item)) {
                    if (!ReadNull()) {
                        if ((object)(o) == null) o = new global::System.Collections.Generic.List<global::System.String>();
                        global::System.Collections.Generic.List<global::System.String> a_0_0 = (global::System.Collections.Generic.List<global::System.String>)o;
                        if ((Reader.IsEmptyElement)) {
                            Reader.Skip();
                        }
                        else {
                            Reader.ReadStartElement();
                            Reader.MoveToContent();
                            int whileIterations0 = 0;
                            int readerCount0 = ReaderCount;
                            while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
                                if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
                                    if (((object) Reader.LocalName == (object)id3_string && (object) Reader.NamespaceURI == (object)id2_Item)) {
                                        if (ReadNull()) {
                                            a_0_0.Add(null);
                                        }
                                        else {
                                            a_0_0.Add(Reader.ReadElementString());
                                        }
                                    }
                                    else {
                                        UnknownNode(null, @":string");
                                    }
                                }
                                else {
                                    UnknownNode(null, @":string");
                                }
                                Reader.MoveToContent();
                                CheckReaderCount(ref whileIterations0, ref readerCount0);
                            }
                        ReadEndElement();
                        }
                    }
                    else {
                        if ((object)(o) == null) o = new global::System.Collections.Generic.List<global::System.String>();
                        global::System.Collections.Generic.List<global::System.String> a_0_0 = (global::System.Collections.Generic.List<global::System.String>)o;
                    }
                }
                else {
                    throw CreateUnknownNodeException();
                }
            }
            else {
                UnknownNode(null, @":ArrayOfString");
            }
            return (object)o;
        }

        protected override void InitCallbacks() {
        }

        string id3_string;
        string id1_ArrayOfString;
        string id2_Item;

        protected override void InitIDs() {
            id3_string = Reader.NameTable.Add(@"string");
            id1_ArrayOfString = Reader.NameTable.Add(@"ArrayOfString");
            id2_Item = Reader.NameTable.Add(@"");
        }
    }

    public abstract class XmlSerializer1 : System.Xml.Serialization.XmlSerializer {
        protected override System.Xml.Serialization.XmlSerializationReader CreateReader() {
            return new XmlSerializationReaderList1();
        }
        protected override System.Xml.Serialization.XmlSerializationWriter CreateWriter() {
            return new XmlSerializationWriterList1();
        }
    }

    public sealed class ListOfStringSerializer : XmlSerializer1 {

        public override System.Boolean CanDeserialize(System.Xml.XmlReader xmlReader) {
            return xmlReader.IsStartElement(@"ArrayOfString", @"");
        }

        protected override void Serialize(object objectToSerialize, System.Xml.Serialization.XmlSerializationWriter writer) {
            ((XmlSerializationWriterList1)writer).Write1_ArrayOfString(objectToSerialize);
        }

        protected override object Deserialize(System.Xml.Serialization.XmlSerializationReader reader) {
            return ((XmlSerializationReaderList1)reader).Read1_ArrayOfString();
        }
    }

    public class XmlSerializerContract : global::System.Xml.Serialization.XmlSerializerImplementation {
        public override global::System.Xml.Serialization.XmlSerializationReader Reader { get { return new XmlSerializationReaderList1(); } }
        public override global::System.Xml.Serialization.XmlSerializationWriter Writer { get { return new XmlSerializationWriterList1(); } }
        System.Collections.Hashtable readMethods = null;
        public override System.Collections.Hashtable ReadMethods {
            get {
                if (readMethods == null) {
                    System.Collections.Hashtable _tmp = new System.Collections.Hashtable();
                    _tmp[@"System.Collections.Generic.List`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]::"] = @"Read1_ArrayOfString";
                    if (readMethods == null) readMethods = _tmp;
                }
                return readMethods;
            }
        }
        System.Collections.Hashtable writeMethods = null;
        public override System.Collections.Hashtable WriteMethods {
            get {
                if (writeMethods == null) {
                    System.Collections.Hashtable _tmp = new System.Collections.Hashtable();
                    _tmp[@"System.Collections.Generic.List`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]::"] = @"Write1_ArrayOfString";
                    if (writeMethods == null) writeMethods = _tmp;
                }
                return writeMethods;
            }
        }
        System.Collections.Hashtable typedSerializers = null;
        public override System.Collections.Hashtable TypedSerializers {
            get {
                if (typedSerializers == null) {
                    System.Collections.Hashtable _tmp = new System.Collections.Hashtable();
                    _tmp.Add(@"System.Collections.Generic.List`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]::", new ListOfStringSerializer());
                    if (typedSerializers == null) typedSerializers = _tmp;
                }
                return typedSerializers;
            }
        }
        public override System.Boolean CanSerialize(System.Type type) {
            return false;
        }
        public override System.Xml.Serialization.XmlSerializer GetSerializer(System.Type type) {
            return null;
        }
    }
}
Edit 6: Seems to be related to the XML load/save of the ignorelist on program start/close, but I'm still not sure why a separate DLL has to be built just to accomplish that.
Edit 7:
Quote from: Microsoft
The XMLSerializer class performs dynamical compilation. During dynamical compilation, the Csc.exe process is started.
Thread on a similar problem
Edit 8: after some research I found out that you can, if you want, compile a non-standard serialization DLL for your specific program to save the time spent compiling on-the-fly every time you want to save the ignorelist. (see here for an article)
« Last Edit: June 02, 2009, 12:58:46 PM by crash_demons » Logged

Dermot
Guest
« Reply #6 on: June 02, 2009, 12:30:36 PM »


which would you prefer, single or double click?
Logged
Dermot
Guest
« Reply #7 on: June 02, 2009, 08:04:06 PM »


Yes the xml serializer is what opens the csc.exe on closing as it write the ignores

Yes it might cause issues on older machines or as your sample links explained, web apps on asp.net etc

The C# compiler shouldn't have the same issue really, but i'll keep an eye on it and add fixes were needed.

The double click event i added, however it still isn't working right.

So i will leave it at select the user once to highlight then just click them again to tick them

this can also be used to get selected item for other features like open profile/display pics etc.

listview has the things checkedlistbox dont and vice versa, its quite annoying at times lol

be handy to have a checkedlistboxview Tongue
Logged
BabyBoy
YahMember
***
Offline Offline

Posts: 248

Can You Feel The Magik?


« Reply #8 on: June 03, 2009, 03:06:37 AM »

TYVM Dermot!, it's really good Grin, i'll wait for new fatures!, thanks again
Logged

Music Is My Life ... Trance Is My Religion ... Tiesto Is My God ...
¨°o¤o„¸¸„o¤o°¨ ¸„o¤o°¨°o¤o„¸¨°o¤o„
¨°o¤o„ ¸Tiesto LEGEND¨°o¤o„¸
¸„o¤o°¨¸„o¤o „¸¨°o¤o„¸¸„o¤o°¨ ¸„o¤
Fre5h
YahNewbie
*
Offline Offline

Posts: 6


« Reply #9 on: June 03, 2009, 08:36:40 PM »

im on vista and it worked great for me bro... afro
Logged
Venom
Guest
« Reply #10 on: June 03, 2009, 10:28:22 PM »

Yep, this is an awesome project. Smiley
Logged
BabyBoy
YahMember
***
Offline Offline

Posts: 248

Can You Feel The Magik?


« Reply #11 on: June 03, 2009, 11:18:48 PM »

Something amazing!, i'm last night installed latest version of messenger (9.0.0.2162,) and after i sleeped, LOL, after this i don't installed YCabby or anything for registering yacscom because i forgot..., and today i arrived to room and i opened YahVox .Net version, and i got voice and i can speaking or hearing sound!, i tried with old yahvox and yazak to see i can get voice or not, and i see i can't, LOL, someone know what happening?, it's only for me or for everyone?
Thanks Dermot!
Logged

Music Is My Life ... Trance Is My Religion ... Tiesto Is My God ...
¨°o¤o„¸¸„o¤o°¨ ¸„o¤o°¨°o¤o„¸¨°o¤o„
¨°o¤o„ ¸Tiesto LEGEND¨°o¤o„¸
¸„o¤o°¨¸„o¤o „¸¨°o¤o„¸¸„o¤o°¨ ¸„o¤
Dermot
Guest
« Reply #12 on: June 04, 2009, 12:59:22 AM »


YahVox.net uses the latest Yacscom.dll version 1.0.0.50 that comes with the latest Yahoo! Messengers

Yazak i imagine would use yacscom.dll 1.0.0.45 or 1.0.0.48

This means you can update your messenger without worrying about losing voice in YahVox.net

YahVox.net also requires you have yacscom.dll 1.0.0.50 registered which messenger does on installation anyways

YCabby or YCabby2 would register 1.0.0.45/48 which would stop YahVox.net from working.

csc.exe is a commandline compiler for compiling classes on the fly like crash said

this file is not hidden nor is it malicious but part of the .NET framework specifically System.xml which handles the "ignores.xml"

Various info about csc.exe can be found below

http://www.fbmsoftware.com/spyware-net/process/csc_exe/1456/
http://www.filename.info/f/csc.exe.html
http://www.prevx.com/filenames/2165974484723383117-X1/CSC.EXE.html
http://www.fileresearchcenter.com/C/CSC.EXE-6207.html

plus im just about to upload a updated version with display pics on right click n profiles on middle click

Smiley
Logged
Fre5h
YahNewbie
*
Offline Offline

Posts: 6


« Reply #13 on: June 04, 2009, 01:46:15 AM »

will this be added to yahelite for voice with vista versions or is just just a seperate tool to use for voice in yahelite...
Logged
BabyBoy
YahMember
***
Offline Offline

Posts: 248

Can You Feel The Magik?


« Reply #14 on: June 04, 2009, 08:06:34 AM »

okay Dermot, TY for information..., i have a problem now, today a voice lagger freezing room, and i freezed many times, i tried to use vc guard beta, but vc guard beta not working with .net version, i opened vc guard and after this yahvox got not responding, and i can't use yahvox.net anymore i restarted but not responding is there and i can't use,  do you have any suggestion ?, you can add a dominance to .net version of yahvox ?, it's really good thing Tongue
BTW new features is really nice, i'll wait to you uploading Smiley
Thanks
« Last Edit: June 04, 2009, 08:17:53 AM by l3413y13oy » Logged

Music Is My Life ... Trance Is My Religion ... Tiesto Is My God ...
¨°o¤o„¸¸„o¤o°¨ ¸„o¤o°¨°o¤o„¸¨°o¤o„
¨°o¤o„ ¸Tiesto LEGEND¨°o¤o„¸
¸„o¤o°¨¸„o¤o „¸¨°o¤o„¸¸„o¤o°¨ ¸„o¤
Pages: [1] 2 3 ... 6
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.125 seconds with 25 queries.