• Кто б сомневался © (05.05.16 14:22) [0]
    Приветствую.

    Нужно при помощи delphi выполнить vbs скрипт (с нужными параметрами) и получить результат скрипта в переменную. Подскажите как это делается.

    Я нашел http://citforum.ru/programming/delphi/msdelphi/, но там инфа 2004 года, и там используется TScriptControl, еще похожее нашел здесь http://www.sql.ru/forum/867925/delphi-wsh-wscript , 2011 года, там тоже TScriptControl.

    Вобщем как это правильно делается в XE версиях delphi, куда смотреть?
    Направьте мой разум в нужном направлении.

    Спасибо.
  • Rouse_ © (05.05.16 14:39) [1]
    Мы что-то похожее используем: http://delphiworld.narod.ru/base/active_script.html
  • Кто б сомневался © (05.05.16 14:46) [2]
  • Rouse_ © (05.05.16 14:47) [3]
    Это она-же, ничего не поменялось.

    По сути те-же

       FEngine: IActiveScript;
       FParser: IActiveScriptParse;
       FSite: IActiveScriptSite;


    ... и работа с ними
  • Кто б сомневался © (05.05.16 14:48) [4]
    Rouse_ ©  [1]

    Кстати, эта та самая статья с королевства.
    Как мы одинаково попали :)
  • sniknik © (05.05.16 15:57) [5]
    > ничего не поменялось.
    и не поменяется... на vbs забили давно, не развивается, 64-х разрядной версии не будет. ;(
  • hjk © (05.05.16 16:03) [6]
    csscript & wscript разрядность имеют такую же как и  ось.
  • Rouse_ © (05.05.16 16:40) [7]

    > sniknik ©   (05.05.16 15:57) [5]
    > и не поменяется... на vbs забили давно, не развивается,
    > 64-х разрядной версии не будет. ;(

    О как, вот это ты меня обрадовал, реально интерфейс не поддерживается кажет, о дела... А я как раз щас на 64 бита все перевожу...
  • Eraser © (05.05.16 17:25) [8]
    предлагают переходить на PowerShell https://technet.microsoft.com/en-us/library/ee221101.aspx
  • Кто б сомневался © (05.05.16 18:52) [9]

    > Rouse_ ©   (05.05.16 16:40) [7]
    >
    >
    > > sniknik ©   (05.05.16 15:57) [5]
    > > и не поменяется... на vbs забили давно, не развивается,
    >  
    > > 64-х разрядной версии не будет. ;(
    >
    > О как, вот это ты меня обрадовал, реально интерфейс не поддерживается
    > кажет, о дела... А я как раз щас на 64 бита все перевожу.
    > ..


    Чтот я не понял. В x64 exe не работают чтоли IActiveScript, IActiveScriptParse, ActiveScriptSite?
  • Palladin © (05.05.16 19:22) [10]

    > Кто б сомневался ©   (05.05.16 18:52) [9]

    Сам по себе нет.
    Есть http://www.eonet.ne.jp/~gakana/tablacus/scriptcontrol_en.html .
  • sniknik © (05.05.16 20:10) [11]
    > предлагают переходить на PowerShell
    ага, цирк с зоопарком закрылись, предлагают водить ребенка в театр.

    там же .NET не будет проблем с встраиванием/чем еще не net-овским?
  • Кто б сомневался © (05.05.16 20:19) [12]
    Мда вот это новость для меня..
    Откомпилил под x64 - пишет Interface not supported.


    > Palladin ©   (05.05.16 19:22) [10]
    >
    >
    > > Кто б сомневался ©   (05.05.16 18:52) [9]
    >
    > Сам по себе нет.
    > Есть http://www.eonet.ne.jp/~gakana/tablacus/scriptcontrol_en.
    > html .


    А что с ним делать? Я установил его, а дальше что? Прога все так же пишет Interface not supported.
  • Кто б сомневался © (05.05.16 20:24) [13]
    А, нуда это ж уже ScriptControl.

    А вот еще нашел:

    http://stackoverflow.com/questions/31429095/access-violation-in-iactivescript-addnameditem-delphi-64-bit

    Щас попробую..


    SCATID_ActiveScript = '{F0B7A1A1-9847-11cf-8F20-00805F2CD064}';
     SCATID_ActiveScriptParse = '{F0B7A1A2-9847-11cf-8F20-00805F2CD064}';
     SID_IActiveScript =        '{BB1A2AE1-A4F9-11cf-8F20-00805F2CD064}';
     {$IFDEF WIN64}
       SID_IActiveScriptParse =  '{C7EF7658-E1EE-480E-97EA-D52CB4D76D17}';
       SID_IActiveScriptParseProcedureOld ='{21F57128-08C9-4638-BA12-22D15D88DC5C}';
       SID_IActiveScriptParseProcedure = '{C64713B6-E029-4CC5-9200-438B72890B6A}';
       SID_IActiveScriptError =  '{B21FB2A1-5B8F-4963-8C21-21450F84ED7F}';
     {$ELSE}
       SID_IActiveScriptParse =  '{BB1A2AE2-A4F9-11cf-8F20-00805F2CD064}';
       SID_IActiveScriptParseProcedureOld ='{1CFF0050-6FDD-11d0-9328-00A0C90DCAA9}';
       SID_IActiveScriptParseProcedure =   '{AA5B6A80-B834-11d0-932F-00A0C90DCAA9}';
       SID_IActiveScriptError =     '{EAE1BA61-A4ED-11cf-8F20-00805F2CD064}';
     {$ENDIF}
     SID_IActiveScriptSite =        '{DB01A1E3-A42B-11cf-8F20-00805F2CD064}';
     SID_IActiveScriptSiteWindow =  '{D10F6761-83E9-11cf-8F20-00805F2CD064}';
     SID_IActiveScriptSiteInterruptPoll ='{539698A0-CDCA-11CF-A5EB-00AA0047A063}';
     SID_IBindEventHandler =  '{63CDBCB0-C1B1-11d0-9336-00A0C90DCAA9}';
     SID_IActiveScriptStats = '{B8DA6310-E19B-11d0-933C-00A0C90DCAA9}';
  • Кто б сомневался © (05.05.16 20:41) [14]
    [13]

    ПАШЕТ!!! Азазазаза! :)
    Запускал на XP x64 (delphi XE5) такой скрипт (из примера королевства):

    Public Function Test(X, Str)
     Test = "X=" & X & vbCrLf & "Str=" & Str
    End Function

    Dim FloatVar
    StrVar = "Hello, world."

    FloatVar = 7.89

    MsgBox Test(FloatVar, StrVar)


  • Кто б сомневался © (05.05.16 20:50) [15]
    [14]>> Тестовый проект тоже x64.
Есть новые Нет новых   [134434   +28][b:0][p:0.001]