Re: Python Windows Scripting Engine

Mark Hammond <[email protected]> Tue, 30 Jul 2024 17:58:12 -0400
Newsgroups gmane.comp.python.windows
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--===============0843291773137666069==
Content-Type: multipart/alternative;
 boundary="------------nEs0tPytXqDkMi0mnsPABEAF"
Content-Language: en-US

This is a multi-part message in MIME format.
--------------nEs0tPytXqDkMi0mnsPABEAF
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit


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 <[email protected]> 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
>     <[email protected]> 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
>>         [email protected]
>>         https://mail.python.org/mailman/listinfo/python-win32
>
--------------nEs0tPytXqDkMi0mnsPABEAF
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 2024-07-30 4:29 p.m., Valentin
      Abrutski wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CADtR_MMbS9dJ209jexd8M9c1k+KJ44i4Oi6hEDtppPwiHkyrzw@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">Hi Mark. <br>
        <br>
        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.
        <div><br>
        </div>
        <div>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.</div>
        <div><br>
        </div>
        <div>Obviously I need to add a new ActiveScript Engine for
          Python. to system</div>
        <div><br>
        </div>
        <div>What I did. I installed python and installed the pywin32
          package.</div>
        <div>Then I found this script
          Python311\Lib\site-packages\win32comext\axscript\client\pyscript.py
          and run it : <br>
          <font face="monospace">python pyscript.py                    
                                                                       
                                                      </font></div>
        <div><font face="monospace">Requesting elevation and retrying...</font></div>
        <div><font face="monospace">Registered: Python</font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="arial, sans-serif">After that, I go to my
            application code and do the same we already do for Standard
            JScript or VBScript engines.</font></div>
        <div><font face="arial, sans-serif">For example, import of COM
            JScript class  is defined</font></div>
        <div><font face="monospace">    [ComImport,
            Guid("F414C260-6AC0-11CF-B6D1-00AA00BBBB58")]<br>
                public class JScript<br>
                {<br>
                }</font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="arial, sans-serif">So I defined import class
            for Python using GUID from python class implementation</font></div>
        <div><font face="monospace">    [ComImport,
            Guid("DF630910-1C1D-11d0-AE36-8C0F5E000000")]<br>
                public class PythonScript<br>
                {<br>
                }<br>
          </font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="arial, sans-serif">Then my expectation is that
            I can cast it to IAcriveScript and IActiveScripParse (like I
            do with standard languages)</font></div>
        <div><font face="monospace">    _engine = new PythonScript();<br>
                _iap = _engine as IActiveScriptParse;<br>
                _ias = _engine as IActiveScript;<br>
          </font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="arial, sans-serif">But IActiveScriptParse still
            is null, IActiveScript - is good.</font></div>
        <div><font face="arial, sans-serif">I suppose that probably I
            did initialization in wrong way? or something like that?</font></div>
      </div>
    </blockquote>
    <p>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.</p>
    <p>HTH,</p>
    <p>Mark<br>
    </p>
    <p><br>
    </p>
    <blockquote type="cite"
cite="mid:CADtR_MMbS9dJ209jexd8M9c1k+KJ44i4Oi6hEDtppPwiHkyrzw@mail.gmail.com">
      <div dir="ltr">
        <div><br>
        </div>
        <div>                       <br>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Tue, Jul 30, 2024 at
          10:54 PM Valentin Abrutski &lt;<a href="mailto:[email protected]"
            moz-do-not-send="true" class="moz-txt-link-freetext">[email protected]</a>&gt;
          wrote:<br>
        </div>
        <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div dir="ltr">Hi Mark
            <div><br>
            </div>
            <div>Appreciate for fast response. I will look into it.
              Thank you. </div>
            <div><br>
            </div>
          </div>
          <br>
          <div class="gmail_quote">
            <div dir="ltr" class="gmail_attr">On Tue, Jul 30, 2024 at
              5:56 PM Mark Hammond &lt;<a
                href="mailto:[email protected]" target="_blank"
                moz-do-not-send="true" class="moz-txt-link-freetext">[email protected]</a>&gt;
              wrote:<br>
            </div>
            <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
              <div>
                <p>IActiveScriptParse is supported - check out the
                  com/win32comext/axscript directory.</p>
                <p>Cheers,<br>
                </p>
                <p>Mark<br>
                </p>
                <div>On 2024-07-30 10:14 a.m., Valentin Abrutski wrote:<br>
                </div>
                <blockquote type="cite">
                  <div dir="ltr">Hello all, 
                    <div><br>
                    </div>
                    <div>Hopefully somebody can help me.</div>
                    <div><br>
                    </div>
                    <div>Microsoft provides implementations for
                      Microsoft Scripting Engine - VbScript and JScript.</div>
                    <div>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. <br>
                      <br>
                      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.</div>
                  </div>
                  <br>
                  <fieldset></fieldset>
                  <pre>_______________________________________________
python-win32 mailing list
<a href="mailto:[email protected]" target="_blank"
                  moz-do-not-send="true" class="moz-txt-link-freetext">[email protected]</a>
<a href="https://mail.python.org/mailman/listinfo/python-win32"
                  target="_blank" moz-do-not-send="true"
                  class="moz-txt-link-freetext">https://mail.python.org/mailman/listinfo/python-win32</a>
</pre>
                </blockquote>
              </div>
            </blockquote>
          </div>
        </blockquote>
      </div>
    </blockquote>
  </body>
</html>

--------------nEs0tPytXqDkMi0mnsPABEAF--

--===============0843291773137666069==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
python-win32 mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-win32

--===============0843291773137666069==--