ASP.NET 2.0 - Dynamically create ActiveX object using HtmlGenericControl and call methods / function

Discussion in 'ASP .Net' started by qualitynice@hotmail.com, Nov 3, 2005.

  1. Guest

    HELP :)... I'm creating an embedded activex object in an asp.net page
    using the HtmlGenericControl class. I'm doing this because when I
    tried to embed it directly in the aspx page, it stopped working once I
    changed it to run on the server (runat="server"). It said the GUID was
    wrong. I found code showing how to implement an activex control using
    the HtmlGenericControl class from the code behind file, but I can't
    figure out how to call functions or methods on it. Any help would be
    greatly appreciated.
     
    , Nov 3, 2005
    #1
    1. Advertising

  2. xhead Guest

    Is the ActiveX object you are calling actually a control? If it is, you
    need to use the client-side object scripting model to call it's
    functions and methods from within the browser. I don't have much
    experience with that, because I try to stay away from client-side
    scripting (its yucky to write and debug).

    If it is just an ActiveX COM object, then to use it on the server side,
    you create a Project Reference to that component in your web project,
    and then you can instantiate it in your server-side code like this:

    Dim myObject as New CustomActiveXComponent
    myObject.DoSomething()

    If it is referenced correctly, it should show up in Intellisense when
    you declare the object, and when you hit the period, you should see the
    methods and properties of the class.

    Mike

    wrote:
    > HELP :)... I'm creating an embedded activex object in an asp.net page
    > using the HtmlGenericControl class. I'm doing this because when I
    > tried to embed it directly in the aspx page, it stopped working once I
    > changed it to run on the server (runat="server"). It said the GUID was
    > wrong. I found code showing how to implement an activex control using
    > the HtmlGenericControl class from the code behind file, but I can't
    > figure out how to call functions or methods on it. Any help would be
    > greatly appreciated.
     
    xhead, Nov 3, 2005
    #2
    1. Advertising

  3. Guest

    Thanks for the reply...

    I'm trying to use client-side scripting now, but can't seem to get my
    function to recognize the dynamically created object. The script error
    I keep getting is "object required". It is however an ActiveX COM
    object, but when I create an instance of it, I can't figure out how to
    then place it into the webpage. It works fine with windows forms
    because when I add a reference to it, it automatically creates the
    wrapper and places it into the tool box. In asp, it creates the
    wrapper, but won't add it to the tool box for a nice and easy drag and
    drop. Thanks again Mike for the reply.

    Mike.
     
    , Nov 3, 2005
    #3
  4. Bruce Barker Guest

    if use put a runat=server on an <object> tag, asp.net assumes you are
    creating a server side active/x control by guid, not rendering an client
    side object tag. it simular to putting a runat=server on <script>. so your
    approach is correct.

    to access the control from client side (assumming the control is marked safe
    for scripting and the browser's security level allows active/x controls),
    you need an id tag on the object. because you are using a serverside
    control, it generates the id. (view source to see it).

    now in browser active/x controls are loaded async, and have a readyState
    property that the client script checks to see if its ready. at page load
    time, the object should be defined (but may not be ready). so try:

    var obj = document.getElementById('name');
    if (obj && obj.readyState == 4)
    {
    // can talk to the object
    }


    -- bruce (sqlwork.com)




    <> wrote in message
    news:...
    > HELP :)... I'm creating an embedded activex object in an asp.net page
    > using the HtmlGenericControl class. I'm doing this because when I
    > tried to embed it directly in the aspx page, it stopped working once I
    > changed it to run on the server (runat="server"). It said the GUID was
    > wrong. I found code showing how to implement an activex control using
    > the HtmlGenericControl class from the code behind file, but I can't
    > figure out how to call functions or methods on it. Any help would be
    > greatly appreciated.
    >
     
    Bruce Barker, Nov 3, 2005
    #4
  5. Guest

    I finally got the client side script to work. What is strange is how
    all of my controls are set to runat="server". I have a button, a text
    box, and an activex component all running with the runat="server" tag,
    but when I run them remotely, the app behaves as if they are all
    running on the local client. It is strange that if I take this code
    and just define everything in the aspx page instead of going about from
    code behind, I get the guid error. If I take the wrapped activex
    control and define it in code behind, I can't seem to figure out how to
    add it to the webpage. In a windows form, I just drag and drop the
    object onto the form.

    {
    HtmlInputText rdpText = new HtmlInputText();
    rdpText.Attributes.Add("type", "text");
    rdpText.Attributes.Add("id", "text1");
    //rdpText.Attributes.Add("value", "text");
    rdpText.Attributes["runat"] = "server";
    Page.Controls.Add(rdpText);

    HtmlInputButton rdpButton = new HtmlInputButton();
    rdpButton.Attributes.Add("type", "button");
    rdpButton.Attributes.Add("id", "button1");
    rdpButton.Attributes.Add("name", "button1");
    rdpButton.Attributes.Add("value", "Connect");
    rdpButton.Attributes["runat"] = "server";
    rdpButton.Attributes.Add("onclick", "return
    Button1_onclick()");
    Page.Controls.Add(rdpButton);

    HtmlGenericControl rdp = new HtmlGenericControl("object");
    rdp.Attributes["id"] = "rdp";
    rdp.Attributes["name"] = "rdp";
    rdp.Attributes.Add("classid",
    "clsid:7584c670-2274-4efb-b00b-d6aaba6d3850");
    rdp.Attributes["runat"] = "server";
    rdp.Attributes["width"] = "1034";
    rdp.Attributes["height"] = "778";
    Page.Controls.Add(rdp);

    HtmlGenericControl rdpFunctions = new
    HtmlGenericControl("script");
    rdpFunctions.Attributes.Add("type", "text/javascript");
    rdpFunctions.Attributes.Add("language", "javascript");
    rdpFunctions.Attributes["runat"] = "server";

    string rdpConnect = "function Button1_onclick()" +
    "{" +
    "rdp.Width=1034;" +
    "rdp.Height=778;" +
    "rdp.DesktopWidth=1024;" +
    "rdp.DesktopHeight=768;" +
    "rdp.Server=text1.value;" +
    "rdp.Connect();" +
    "}";

    string rdpDisconnect = " function disconnect()" +
    "{" +
    "rdp.Disconnect();" +
    "}";

    rdpFunctions.InnerHtml = rdpConnect;
    rdpFunctions.InnerHtml = rdpFunctions.InnerHtml +
    rdpDisconnect;
    Page.Controls.Add(rdpFunctions);
     
    , Nov 4, 2005
    #5
    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. =?Utf-8?B?RUoxMDAz?=
    Replies:
    4
    Views:
    44,693
    teluksridhar
    Aug 18, 2006
  2. Martin Eyles

    <object> as server side HtmlGenericControl

    Martin Eyles, Aug 30, 2006, in forum: ASP .Net
    Replies:
    2
    Views:
    1,706
    Martin Eyles
    Sep 4, 2006
  3. Jeff

    div and HtmlGenericControl

    Jeff, Jan 13, 2009, in forum: ASP .Net
    Replies:
    1
    Views:
    9,165
    Anthony Jones
    Jan 13, 2009
  4. Marius Horak

    <br> and HtmlGenericControl - VS2003

    Marius Horak, Aug 26, 2003, in forum: ASP .Net Web Controls
    Replies:
    2
    Views:
    229
    Teemu Keiski
    Aug 27, 2003
  5. Replies:
    0
    Views:
    383
Loading...

Share This Page