On 2024-08-01 4:37 p.m., Valentin Abrutski wrote:
Hello Mark.

Sorry for bothering you again. I got another issue. When I call IActiveScript method: SetScriptSite(IActiveScriptSite site) I got invalid cast exception. Mostprobably it means that IActiveScriptSite  can't be properly passed as argument to SetScriptSite.   My assumption that  my definition of IActiveScriptSite  is different from one is used in py2in32 library. I could find usages of   IActiveScriptSite   interface in the source code of the library. But I can't find definition of this interface.

I'm not sure what you are asking. IActiveScriptSite is documented at https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.debugger.interop.iactivescriptsite?view=visualstudiosdk-2019 and IActiveScript at https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.debugger.interop.iactivescript?view=visualstudiosdk-2019. The c++ "receiver" of this call for pywin32 is at https://github.com/mhammond/pywin32/blob/main/com/win32comext/axscript/src/PyGActiveScript.cpp#L5

Mark


Can you advise me where I can find it?

On Thu, Aug 1, 2024 at 4:19 PM Valentin Abrutski <v...@zaptest.com> wrote:

    Hi Mark, just to let you know. I found the root cause. I was
    trying to get 32bit version of interface and pywin32 export 64bit
    version(different GUID and slightly different function signature)

    Thank you for your help.

    On Wed, Jul 31, 2024 at 5:08 PM Valentin Abrutski <v...@zaptest.com>
    wrote:

        Thank you Mark. I will try that. Appreciate

        ср, 31 июл. 2024 г., 17:01 Mark Hammond
        <mhamm...@skippinet.com.au>:

            Sorry, I can't explain that - running pyscript.py should
            register things and support for IActiveScriptParse is
            unconditional. You could try running `pyscript.py --debug`
            which might print some debug stuff, or even add print
            statements to client.py's QueryInterface function to make
            sure it's actually being called. Also, executing
            win32comext/axscript/test/testHost.py should try and
            exercise the engine.

            HTH,

            Mark

            On 2024-07-31 9:14 a.m., Valentin Abrutski wrote:
            Hi Mark. Thank you for the idea. And appreciate your help.

            I tried it. And to be sure that I'm doing it right. I've
            tried to use this approach to get not only
            IActiveScriptParse, but also IActiveScript
            Still the same issue. I can get IActiveScript. But when
            try to get IActiveScriptParse I get error code:
            |0x80004002| (|E_NOINTERFACE|)

            I've double checked GUID of IActiveScriptParse which is
            used in QuearyInterface and it looks
            correct:  BB1A2AE2-A4F9-11cf-8F20-00805F2CD064

            I'm thinking about is it possible that the way I
            registered Python Script Engine is not correct? Is it
            possible that there are different way to do that?
            Just to remind you, I just run python pyscript.py


            On Wed, Jul 31, 2024 at 12:58 AM Mark Hammond
            <mhamm...@skippinet.com.au> wrote:


                On 2024-07-30 4:29 p.m., Valentin Abrutski wrote:
                Hi Mark.

                I double checked what I did with my previous
                attempt. And still can't get success. Probably you
                can give me an idea of what I'm doing wrong.

                I am working on an application(.Net) which provides
                scripting capabilities via AcriveScript Engine. With
                the ability to debug script step by step and etc.
                And we provide a standard set of languages VBScript
                and JScript. And now we want to provide Python support.

                Obviously I need to add a new ActiveScript Engine
                for Python. to system

                What I did. I installed python and installed the
                pywin32 package.
                Then I found this script
                
Python311\Lib\site-packages\win32comext\axscript\client\pyscript.py
                and run it :
                python pyscript.py
                Requesting elevation and retrying...
                Registered: Python

                After that, I go to my application code and do the
                same we already do for Standard JScript or VBScript
                engines.
                For example, import of COM JScript class  is defined
                [ComImport,
                Guid("F414C260-6AC0-11CF-B6D1-00AA00BBBB58")]
                    public class JScript
                    {
                    }

                So I defined import class for Python using GUID from
                python class implementation
                [ComImport,
                Guid("DF630910-1C1D-11d0-AE36-8C0F5E000000")]
                    public class PythonScript
                    {
                    }

                Then my expectation is that I can cast it to
                IAcriveScript and IActiveScripParse (like I do with
                standard languages)
                    _engine = new PythonScript();
                    _iap = _engine as IActiveScriptParse;
                    _ias = _engine as IActiveScript;

                But IActiveScriptParse still is null, IActiveScript
                - is good.
                I suppose that probably I did initialization in
                wrong way? or something like that?

                My best guess is that the "as" isn't working due to a
                lack of a typelib for the engine - but a
                QueryInterface(IID_IActiveScriptParse) on the
                IActiveScript interface should work.

                HTH,

                Mark





                On Tue, Jul 30, 2024 at 10:54 PM Valentin Abrutski
                <v...@zaptest.com> wrote:

                    Hi Mark

                    Appreciate for fast response. I will look into
                    it. Thank you.


                    On Tue, Jul 30, 2024 at 5:56 PM Mark Hammond
                    <mhamm...@skippinet.com.au> wrote:

                        IActiveScriptParse is supported - check out
                        the com/win32comext/axscript directory.

                        Cheers,

                        Mark

                        On 2024-07-30 10:14 a.m., Valentin Abrutski
                        wrote:
                        Hello all,

                        Hopefully somebody can help me.

                        Microsoft provides implementations for
                        Microsoft Scripting Engine - VbScript and
                        JScript.
                        I need to add Python Script Engine support.
                        I see that pywin32 already has a component
                        for that(COM object). But it exposes only
                        the IActiveScript interface. For my needs I
                        also need IActiveScriptParse interface.

                        please advise me if pywin32 implements it
                        also and I just missed something? or if you
                        have an idea what to do to get.. I will
                        appreciate for your help.

                        _______________________________________________
                        python-win32 mailing list
                        python-win32@python.org
                        https://mail.python.org/mailman/listinfo/python-win32


            _______________________________________________
            python-win32 mailing list
            python-win32@python.org
            https://mail.python.org/mailman/listinfo/python-win32
_______________________________________________
python-win32 mailing list
python-win32@python.org
https://mail.python.org/mailman/listinfo/python-win32

Reply via email to