473,378 Members | 1,360 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,378 software developers and data experts.

ASP.NET 2.0 - Dynamically create ActiveX object using HtmlGenericControl and call methods / functions all from code behind

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 19 '05 #1
4 3372
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

qu*********@hotmail.com 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.


Nov 19 '05 #2
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 19 '05 #3
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)


<qu*********@hotmail.com> wrote in message
news:11**********************@g44g2000cwa.googlegr oups.com...
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 19 '05 #4
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 19 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

12
by: Joel | last post by:
Hi all, Forgive me if I've expressed the subject line ill. What I'm trying to do is to call a c++ function given the following: a. A function name. This would be used to fetch a list of...
8
by: Falc2199 | last post by:
Hi, Does anyone know how to make this work? var sectionId = 5; repeat_section_sectionId(); function repeat_section_5(){ alert("firing"); }
11
by: Steven D'Aprano | last post by:
Suppose I create a class with some methods: py> class C: .... def spam(self, x): .... print "spam " * x .... def ham(self, x): .... print "ham * %s" % x .......
1
by: Craig | last post by:
I am having problems getting an ActiveX DLL written in VB6 to call a method in a C# class library component. My C# DLL is called CSharpProject.dll and contains a public class called CSharpClass....
0
by: theo | last post by:
Hello..I have a similar issue as yesterday but the situation has slightly changed so perhaps someone can shed some more light on the issue... Program flow - load file,extract xml text tags from...
4
by: Sachin_M | last post by:
Hi Friends, I've developed an activeX control (.ocx) using VB 6.0 it has two Public functions, which chages some values of text boxes of the control. Fun1(int a) Fun2() How to use this...
3
by: Quentin | last post by:
Hey there ! I made my own WebControl, that inherits from WebControls, and i added an HtmlTable to it. I would like to include a file, dynamically, to one of its cells... I've already searched,...
1
by: Reza Nabi | last post by:
Bakground: I have a webform (LoadCtl.aspx) which loads the user control to a placeholder dynamically based on the ctlName querystring passed in the URL. Webform (LoadCtl.aspx) also passes a...
5
by: Angel | last post by:
Is there a way to create an IFRAME dynamically via VB.NET. In other words creating the HTML element in the server side code? thanks in advance....
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.