[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