Being not registered means that accessing GetCommandLineArgs throws an exception? If yes, what kind?

On 02/11/13 22:10, Vardar Sahin wrote:
Hey Andrés,

thanks for the quick replay. I am not sure if this will fix the problem.
I think the problem is that you can not call
Environment.GetCommandLineArgs() when you embed mono.
Environment.GetCommandLineArgs() is an internal call and it seems like
it is not registered when you embed mono.

Best
Sahin




2013/11/2 "Andrés G. Aragoneses" <kno...@gmail.com
<mailto:kno...@gmail.com>>

    On 02/11/13 21:42, Vardar Sahin wrote:

        Hey monodev fellows,

        first of all I appreciate all your hard work and want to
        contribute this
        to the mono project.

        Right now it is not possible to use GTK# with an application which
        embeds mono. GTK# works just fine if you use mono as a standalone
        application eg mono.exe.

        The reason why GTK# does not works when you embed mono is as
        fallowing.

        Each GTK# Application has to call Application.Init().

        This functions is like this.

        public static void Init ()
        {
        SetPrgname ();
        IntPtr argv = new IntPtr(0);
        int argc = 0;

        gtk_init (ref argc, ref argv);

        SynchronizationContext.__SetSynchronizationContext (new
        GLib.__GLibSynchronizationContext ());}

        Init will fail on SetPrgname (); when mono is embedded in an
        application.

        static void SetPrgname ()
        {
        GLib.Global.ProgramName =
        System.IO.Path.__GetFileNameWithoutExtension
        (Environment.__GetCommandLineArgs () [0]);
        }

        When embedding Mono, Environment.GetCommandLineArgs () will fail
        because
        it is not set to anything. When you run the same on mono as a
        standalone
        application it will work because mono will pass the command line
        argument via Environment.__GetCommandLineArgs().

        I fixed it by registering the internal call for
        Environment.GetCommandLineArgs to my own fucntion and return just a
        dummy string.

        My suggestion would be to do the same in mono when you embed it
        or to
        change SetPrgname  to not relay on
        Environment.GetCommandLineArgs ().


    Sahin, wouldn't this also fix your use case?

    https://github.com/mono/gtk-__sharp/pull/90/files
    <https://github.com/mono/gtk-sharp/pull/90/files>


    Thanks


    _________________________________________________
    Mono-devel-list mailing list
    Mono-devel-list@lists.ximian.__com
    <mailto:Mono-devel-list@lists.ximian.com>
    http://lists.ximian.com/__mailman/listinfo/mono-devel-__list
    <http://lists.ximian.com/mailman/listinfo/mono-devel-list>




_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list



_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to