JavaScript ActiveXObject error

Discussion in 'Javascript' started by forum7, Oct 26, 2004.

  1. forum7

    forum7 Guest

    I need some immediate guidance with an error I am facing using an
    ActiveXObject to instantiate a DLL and use the object to launch a
    command on the local client. I use this great DLL called LaunchinIE
    which works for the most part. But I am running into a hurdle in my
    application, as described below...

    I have set up an ASP page with the following code on the web server:

    <html>
    <head>
    <title>Testing Application Launch In IE</title>
    <script language="JavaScript">
    function launchApp(strCmdLine)
    {
    var obj = new ActiveXObject("LaunchinIE.Launch");
    obj.LaunchApplication(strCmdLine);
    }
    </script>
    </head>
    <body>
    <script language="JavaScript">
    var qt = '"';
    var strCmdLine = 'C:\\ddc32\\ddc32.exe ';
    strCmdLine += 'ddc(dsp(30, Application Login, Logging in to
    Application..., 3) if w4w(2, Missing Client ID) else if w4i(40,GenQL,)
    wait(6) skw(0,GenQL TSTUSER{enter}TSTPWD{enter}) endif endif dsp()) &&
    ';
    strCmdLine += qt+'C:\\Program Files\\GenQL\\genql.exe'+qt + ' ';
    strCmdLine += 'GenQL.App Name=Desktop70';
    launchApp(strCmdLine);
    </script>
    </body>
    </html>

    On the client system, I registered the launchinIE.dll component that
    suppresses the IE security prompt for opening or saving an executable.
    Now, when I try to access this page from the client, the first part of
    the command works, i.e. the ddc32 winbatch executable. But the second
    part of the command is not recognized and a message box shows up
    stating that the command is unknown.

    Surprisingly, if I try the exact two commands from the DOS command
    line, i.e.

    C:\ddc32\ddc32.exe ddc(dsp(30, Application Login, Logging in to
    Application..., 3) if w4w(2, Missing Client ID) else if w4i(40,GenQL,)
    wait(6) skw(0,GenQL TSTUSER{enter}TSTPWD{enter}) endif endif dsp()) &&
    "C:\Program Files\GenQL\genql.exe" GenQL.App Name=Desktop70

    .... both commands are executed in sequence and work just fine. Since
    the command is included in JavaScript, I had to escape the reverse
    slash and alias the double quote character with a variable "qt". Also,
    the && is more like Unix, where the result of the first command
    decides whether or not to execute the second command. In other words,
    if the first command returns TRUE, the second command is executed only
    then. I know your DLL works just fine, because if I replace this long
    command with something simpler like...

    C:\ddc32\display1.bat ashwin && C:\ddc32\display2.bat raj

    .... it works just fine. I feel this may be a JavaScript type of issue,
    and it is somehow unable to parse the argument to the first command
    ddc32, thereby failing the second command.

    I greatly appreciate any help!
    forum7, Oct 26, 2004
    #1
    1. Advertising

  2. > ... I use this great DLL called LaunchinIE
    > which works for the most part. But I am running into a hurdle in my
    > application, as described below...


    In that you are callng a method of a 3rd party component, your best bet is
    to contact the author (email address from the site:
    rockin_AT_whirlywiryweb.com).

    --
    Michael Harris
    Microsoft.MVP.Scripting
    Sammamish WA US
    Michael Harris \(MVP\), Oct 27, 2004
    #2
    1. Advertising

  3. forum7

    forum7 Guest

    Mike,

    I have done that too, and I think the author has been very forthcoming
    in his support. Even then, this is an issue related to JavaScript,
    because I can replace that long command string with something similar
    like...

    myObj.launchApplication("mdisplay1.bat ashwin && display2.bat raj");

    ....within LaunchinIE and it works just fine. But the similar syntax
    and a different pair of commands (below) do not work. I think it may
    have something to do with escaping the parentheses, ampersands or some
    other character(s). The exact same pair of commands executed in a DOS
    window works just fine, but not when invoked from the LaunchinIE
    component the exact same way.

    Thanks for your response.

    --Ashwin

    "Michael Harris \(MVP\)" <mikhar at mvps dot org> wrote in message news:<>...
    > > ... I use this great DLL called LaunchinIE
    > > which works for the most part. But I am running into a hurdle in my
    > > application, as described below...

    >
    > In that you are callng a method of a 3rd party component, your best bet is
    > to contact the author (email address from the site:
    > rockin_AT_whirlywiryweb.com).
    forum7, Oct 27, 2004
    #3
  4. forum7 wrote:
    > Mike,
    >
    > I have done that too, and I think the author has been very forthcoming
    > in his support. Even then, this is an issue related to JavaScript,
    > because I can replace that long command string with something similar
    > like...
    >
    > myObj.launchApplication("mdisplay1.bat ashwin && display2.bat raj");
    >


    The rules for command lines executed via the component's LaunchApplication
    method are probably the same as those for WshShell.Run since it is likely
    just a wrapper around ShellExecuteEx.

    Since the && only has meaning to the command shell (e.g. cmd.exe), you have
    to be explicit and include the command processor in your command line

    "%comspec% /c ...all that other stuff..."

    A command line like

    c:\foo.bat && c:\foo.bat

    works because the command shell instance is started implicitly via the BAT
    file association.

    A command line like

    notepad.exe && notepad.exe

    would fail at the && since the command shell is not launched implicitly.

    A command line like

    %comspec% /c notepad.exe && notepad.exe

    would work because the command shell is launched explicitly...


    > ...within LaunchinIE and it works just fine. But the similar syntax
    > and a different pair of commands (below) do not work. I think it may
    > have something to do with escaping the parentheses, ampersands or some
    > other character(s). The exact same pair of commands executed in a DOS
    > window works just fine, but not when invoked from the LaunchinIE
    > component the exact same way.
    >
    > Thanks for your response.
    >
    > --Ashwin
    >
    > "Michael Harris \(MVP\)" <mikhar at mvps dot org> wrote in message
    > news:<>...
    >>> ... I use this great DLL called LaunchinIE
    >>> which works for the most part. But I am running into a hurdle in my
    >>> application, as described below...

    >>
    >> In that you are callng a method of a 3rd party component, your best
    >> bet is to contact the author (email address from the site:
    >> rockin_AT_whirlywiryweb.com).


    --
    Michael Harris
    Microsoft.MVP.Scripting
    Michael Harris \(MVP\), Oct 27, 2004
    #4
  5. forum7

    forum7 Guest

    Mike,

    Your suggestion did help! Now, I am able to get the two commands to
    get executed via the component's LaunchApplication method. The
    problem, however, is that the command shell window (blank) is open for
    the duration of execution of the two commands. I tried looking up the
    argument list for cmd.exe to see if there was some way to suppress
    this window or auto-close in a given amount of time. I could not find
    anything. This is not a show-stopper, but there may be risks
    associated with having that window open for a long time. Do you have
    any suggestions?

    You have been extremely helpful -- thank you so much!

    --Ashwin

    "Michael Harris \(MVP\)" <> wrote in message news:<>...
    >
    > The rules for command lines executed via the component's LaunchApplication
    > method are probably the same as those for WshShell.Run since it is likely
    > just a wrapper around ShellExecuteEx.
    >
    > Since the && only has meaning to the command shell (e.g. cmd.exe), you have
    > to be explicit and include the command processor in your command line
    >
    > "%comspec% /c ...all that other stuff..."
    >
    > A command line like
    >
    > c:\foo.bat && c:\foo.bat
    >
    > works because the command shell instance is started implicitly via the BAT
    > file association.
    >
    > A command line like
    >
    > notepad.exe && notepad.exe
    >
    > would fail at the && since the command shell is not launched implicitly.
    >
    > A command line like
    >
    > %comspec% /c notepad.exe && notepad.exe
    >
    > would work because the command shell is launched explicitly...
    forum7, Oct 29, 2004
    #5
  6. > Your suggestion did help! Now, I am able to get the two commands to
    > get executed via the component's LaunchApplication method. The
    > problem, however, is that the command shell window (blank) is open for
    > the duration of execution of the two commands. I tried looking up the
    > argument list for cmd.exe to see if there was some way to suppress
    > this window or auto-close in a given amount of time. I could not find
    > anything. This is not a show-stopper, but there may be risks
    > associated with having that window open for a long time. Do you have
    > any suggestions?


    Unless the author of the component included support in the LaunchApplication
    method for a window style argument (such as WshShell.Run does) to run in a
    hidden window, then I don't know of any way for cmd.exe to hide itself.

    --
    Michael Harris
    Microsoft.MVP.Scripting
    Sammamish WA US
    Michael Harris \(MVP\), Oct 29, 2004
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Oren

    ActiveXObject

    Oren, Nov 23, 2003, in forum: ASP .Net
    Replies:
    1
    Views:
    974
    Chris Jackson
    Nov 24, 2003
  2. =?Utf-8?B?T3Jlbg==?=

    ListBox, ActiveXObject

    =?Utf-8?B?T3Jlbg==?=, Apr 8, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    544
    Viktor Jevdokimov
    Apr 8, 2004
  3. =?Utf-8?B?RXVnZW5l?=

    javascript, new ActiveXObject() and events

    =?Utf-8?B?RXVnZW5l?=, Aug 14, 2007, in forum: ASP .Net
    Replies:
    3
    Views:
    13,321
    =?Utf-8?B?RXVnZW5l?=
    Aug 15, 2007
  4. K. Wilder
    Replies:
    1
    Views:
    543
    Dan Brussee
    Sep 16, 2003
  5. hukoh
    Replies:
    0
    Views:
    1,359
    hukoh
    Jun 15, 2012
Loading...

Share This Page