[python-win32] Python Windows Scripting Engine

Mark Hammond mhammond at skippinet.com.au
Thu Aug 1 17:21:10 EDT 2024


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 <va at 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 <va at zaptest.com>
>     wrote:
>
>         Thank you Mark. I will try that. Appreciate
>
>         ср, 31 июл. 2024 г., 17:01 Mark Hammond
>         <mhammond at 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
>>             <mhammond at 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
>>>                 <va at 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
>>>                     <mhammond at 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 at python.org
>>>>                         https://mail.python.org/mailman/listinfo/python-win32
>>>
>>
>>             _______________________________________________
>>             python-win32 mailing list
>>             python-win32 at python.org
>>             https://mail.python.org/mailman/listinfo/python-win32
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.python.org/pipermail/python-win32/attachments/20240801/82e84784/attachment-0001.html>


More information about the python-win32 mailing list