On 03/11/13 15:58, Vardar Sahin wrote:
Environment.GetCommandLineArgs is an internal call and my assumption was
that the internal call is not registered to a C function. But now I see
that I can call Environment.GetCommandLineArgs.
I checked it out and Environment.GetCommandLineArgs returns null if you
embed mono into your application.

So you have to check for a null reference.

Ok thanks, I updated the pull request adding a null check


And and maybe you have to set
GLib.Global.ProgramName to static name in case.

What do you mean? GLib.Global.ProgramName is already static.

Thanks




2013/11/2 "Andrés G. Aragoneses" <[email protected]
<mailto:[email protected]>>


    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" <[email protected]
        <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>>


             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>
             <https://github.com/mono/gtk-__sharp/pull/90/files
        <https://github.com/mono/gtk-sharp/pull/90/files>>


             Thanks


             ___________________________________________________
             Mono-devel-list mailing list
             [email protected].____com
             <mailto:Mono-devel-list@lists.__ximian.com
        <mailto:[email protected]>>
        http://lists.ximian.com/____mailman/listinfo/mono-devel-____list
        <http://lists.ximian.com/__mailman/listinfo/mono-devel-__list>

        <http://lists.ximian.com/__mailman/listinfo/mono-devel-__list
        <http://lists.ximian.com/mailman/listinfo/mono-devel-list>>





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



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




_______________________________________________
Mono-devel-list mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/mono-devel-list



_______________________________________________
Mono-devel-list mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to