473,573 Members | 2,510 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

C# control causes VB6 application to crash on exit

Hi,
We have a VB6 application that needs to use a new control written in
..NET v1.1 C#, imported as a COM control.
We have tried adding the C# control to the VB6 control both dynamically
(using Controls.Add) and using the VB6 designer. In both approaches
the behavior was identical: the control was functional and accessible,
but the application crashed on exit with the message <app name> "has
encountered a problem and needs to close. We are sorry for the
inconvenience." etc.

I have searched the web, with no luck. Any ideas will be greatly
appreciated. The C# code is embedded below.

Thanks
Asaf.
using System;
using System.Collecti ons;
using System.Componen tModel;
using System.Drawing;
using System.Data;
using System.Windows. Forms;
using System.Runtime. InteropServices ;
using System.Text;
using System.Reflecti on;
using Microsoft.Win32 ;
[assembly:ClassI nterface(ClassI nterfaceType.Au toDual)]
namespace MyCtrlLib
{
///
/// Summary description for UserControl1.
///
[ GuidAttribute(" F321BAC9-5019-4c6f-BADF-8D104A499870") ]
[InterfaceTypeAt tribute(ComInte rfaceType.Inter faceIsDual)]
public interface ICSharpCOMInter face
{
void MethodA();
void MethodB(int a);
}

[ComVisible(fals e)]
public delegate void CSharpEventHand lerA ();
[ComVisible(fals e)]
public delegate void CSharpEventHand lerB (int a);

[GuidAttribute(" 03018F99-263B-417e-94F3-F367471F6679"),
InterfaceTypeAt tribute(ComInte rfaceType.Inter faceIsIDispatch )]
public interface ICSharpCOMEvent s
{
[DispId(1)]void EventA();
[DispId(2)]void EventB(int a);
}

[GuidAttribute(" E022271B-63C8-4878-8C9E-712E776C4785")]
[ProgIdAttribute ("MyCtrlLib.CSh arpUserControl" )]
//[ComSourceInterf acesAttribute(t ypeof (ICSharpCOMEven ts))]
[ComSourceInterf acesAttribute(t ypeof(MyCtrlLib .ICSharpCOMEven ts))]
[ClassInterfaceA ttribute(ClassI nterfaceType.No ne)]
public class CSharpUserContr ol : System.Windows. Forms.UserContr ol,
ICSharpCOMInter face
{
private System.Windows. Forms.TextBox textBox1;
private System.Windows. Forms.Button button1;
///
/// Required designer variable.
///
private System.Componen tModel.Containe r components = null;

[Category("Actio n")]
public event CSharpEventHand lerA EventA;
[Category("Actio n")]
public event CSharpEventHand lerB EventB;

public CSharpUserContr ol()
{
// This call is required by the Windows.Forms Form Designer.
InitializeCompo nent();
// TODO: Add any initialization after the InitForm call
}

///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
MessageBox.Show ("Dispose");
if( disposing )
{
if( components != null )
components.Disp ose();
}
base.Dispose( disposing );
}

public void MethodA()
{
this.textBox1.T ext = "MethodA";
OnMyEventA();
}

public void MethodB(int a)
{
OnMyEventB(a);
}

protected void OnMyEventA()
{
if (EventA != null)
{
this.textBox1.T ext = "Event fired!";
EventA();
}
}

protected void OnMyEventB(int a)
{
if (EventB != null)
EventB(a);
}
[ComRegisterFunc tion()]
public static void RegisterClass ( Type t )
{
// Strip off HKEY_CLASSES_RO OT\ from the passed key as I don't need
it
string sb = @"CLSID\" + t.GUID.ToString ("B");
sb.Replace(@"HK EY_CLASSES_ROOT \","") ;

// Open the CLSID\{guid} key for write access
RegistryKey k = Registry.Classe sRoot.OpenSubKe y(sb.ToString() ,true);
// And create the 'Control' key - this allows it to show up in
// the ActiveX control container
RegistryKey ctrl = k.CreateSubKey ( "Control" ) ;
ctrl.Close ( ) ;

using( RegistryKey subkey = k.CreateSubKey( "MiscStatus ") )
{
subkey.SetValue ("", "131473");
}

using( RegistryKey subkey = k.CreateSubKey( "MiscStatus\\1" ) )
{
subkey.SetValue ("", "197009");
}

// Next create the CodeBase entry - needed if not string named and
GACced
RegistryKey inprocServer32 = k.OpenSubKey ( "InprocServer32 " , true
);
inprocServer32. SetValue ( "CodeBase" ,
Assembly.GetExe cutingAssembly( ).CodeBase ) ;
inprocServer32. Close ( ) ;

// Now create the Version entry
RegistryKey vers = k.CreateSubKey( "Version");
vers.SetValue(" ", "1.0");
vers.Close();

RegistryKey inst = k.CreateSubKey ( "Insertable " ) ;
inst.Close ( ) ;

// And the Type Lib Entry
using( RegistryKey subkey = k.CreateSubKey( "TypeLib") )
{
Guid libid = Marshal.GetType LibGuidForAssem bly(t.Assembly) ;

subkey.SetValue ("", libid.ToString( "B"));
}
// Finally close the main key
k.Close ( ) ;
}
[ComUnregisterFu nction()]
public static void UnregisterClass ( string key )
{
StringBuilder sb = new StringBuilder ( key ) ;
sb.Replace(@"HK EY_CLASSES_ROOT \","") ;

// Open HKCR\CLSID\{gui d} for write access
RegistryKey k = Registry.Classe sRoot.OpenSubKe y(sb.ToString() ,true);
// Delete the 'Control' key, but don't throw an exception if it does
not exist
k.DeleteSubKey ( "Control" , false ) ;

// Next open up InprocServer32
RegistryKey inprocServer32 = k.OpenSubKey ( "InprocServer32 " , true
);

// And delete the CodeBase key, again not throwing if missing
k.DeleteSubKey ( "CodeBase" , false ) ;

k.DeleteSubKey ( "TypeLib" , false ) ;

k.DeleteSubKey ( "Version" , false ) ;

// Finally close the main key
k.Close ( ) ;
}

#region Component Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeCompo nent()
{
this.textBox1 = new System.Windows. Forms.TextBox() ;
this.button1 = new System.Windows. Forms.Button();
this.SuspendLay out();
//
// textBox1
//
this.textBox1.L ocation = new System.Drawing. Point(8, 8);
this.textBox1.N ame = "textBox1";
this.textBox1.S ize = new System.Drawing. Size(192, 20);
this.textBox1.T abIndex = 0;
this.textBox1.T ext = "textBox1";
//
// button1
//
this.button1.Lo cation = new System.Drawing. Point(8, 32);
this.button1.Na me = "button1";
this.button1.Si ze = new System.Drawing. Size(192, 24);
this.button1.Ta bIndex = 1;
this.button1.Te xt = "button1";
this.button1.Cl ick += new System.EventHan dler(this.butto n1_Click);
//
// CSharpUserContr ol
//
this.Controls.A dd(this.button1 );
this.Controls.A dd(this.textBox 1);
this.Name = "CSharpUserCont rol";
this.Size = new System.Drawing. Size(208, 64);
this.ResumeLayo ut(false);
}
#endregion

private void button1_Click(o bject sender, System.EventArg s e)
{
OnMyEventA();
}
}
}

Jan 1 '06 #1
3 2670
Seems to me that you'd be better off on a C# forum, as the problems seems to
be related to your control rather than to VB6.

BTW I'd be suspicious of any attempt to do manual disposing...

"Asaf" <as***@marvell. com> wrote in message
news:11******** *************@g 44g2000cwa.goog legroups.com...
Hi,
We have a VB6 application that needs to use a new control written in
.NET v1.1 C#, imported as a COM control.
We have tried adding the C# control to the VB6 control both dynamically
(using Controls.Add) and using the VB6 designer. In both approaches
the behavior was identical: the control was functional and accessible,
but the application crashed on exit with the message <app name> "has
encountered a problem and needs to close. We are sorry for the
inconvenience." etc.

I have searched the web, with no luck. Any ideas will be greatly
appreciated. The C# code is embedded below.

Thanks
Asaf.
using System;
using System.Collecti ons;
using System.Componen tModel;
using System.Drawing;
using System.Data;
using System.Windows. Forms;
using System.Runtime. InteropServices ;
using System.Text;
using System.Reflecti on;
using Microsoft.Win32 ;
[assembly:ClassI nterface(ClassI nterfaceType.Au toDual)]
namespace MyCtrlLib
{
///
/// Summary description for UserControl1.
///
[ GuidAttribute(" F321BAC9-5019-4c6f-BADF-8D104A499870") ]
[InterfaceTypeAt tribute(ComInte rfaceType.Inter faceIsDual)]
public interface ICSharpCOMInter face
{
void MethodA();
void MethodB(int a);
}

[ComVisible(fals e)]
public delegate void CSharpEventHand lerA ();
[ComVisible(fals e)]
public delegate void CSharpEventHand lerB (int a);

[GuidAttribute(" 03018F99-263B-417e-94F3-F367471F6679"),
InterfaceTypeAt tribute(ComInte rfaceType.Inter faceIsIDispatch )]
public interface ICSharpCOMEvent s
{
[DispId(1)]void EventA();
[DispId(2)]void EventB(int a);
}

[GuidAttribute(" E022271B-63C8-4878-8C9E-712E776C4785")]
[ProgIdAttribute ("MyCtrlLib.CSh arpUserControl" )]
//[ComSourceInterf acesAttribute(t ypeof (ICSharpCOMEven ts))]
[ComSourceInterf acesAttribute(t ypeof(MyCtrlLib .ICSharpCOMEven ts))]
[ClassInterfaceA ttribute(ClassI nterfaceType.No ne)]
public class CSharpUserContr ol : System.Windows. Forms.UserContr ol,
ICSharpCOMInter face
{
private System.Windows. Forms.TextBox textBox1;
private System.Windows. Forms.Button button1;
///
/// Required designer variable.
///
private System.Componen tModel.Containe r components = null;

[Category("Actio n")]
public event CSharpEventHand lerA EventA;
[Category("Actio n")]
public event CSharpEventHand lerB EventB;

public CSharpUserContr ol()
{
// This call is required by the Windows.Forms Form Designer.
InitializeCompo nent();
// TODO: Add any initialization after the InitForm call
}

///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
MessageBox.Show ("Dispose");
if( disposing )
{
if( components != null )
components.Disp ose();
}
base.Dispose( disposing );
}

public void MethodA()
{
this.textBox1.T ext = "MethodA";
OnMyEventA();
}

public void MethodB(int a)
{
OnMyEventB(a);
}

protected void OnMyEventA()
{
if (EventA != null)
{
this.textBox1.T ext = "Event fired!";
EventA();
}
}

protected void OnMyEventB(int a)
{
if (EventB != null)
EventB(a);
}
[ComRegisterFunc tion()]
public static void RegisterClass ( Type t )
{
// Strip off HKEY_CLASSES_RO OT\ from the passed key as I don't need
it
string sb = @"CLSID\" + t.GUID.ToString ("B");
sb.Replace(@"HK EY_CLASSES_ROOT \","") ;

// Open the CLSID\{guid} key for write access
RegistryKey k = Registry.Classe sRoot.OpenSubKe y(sb.ToString() ,true);
// And create the 'Control' key - this allows it to show up in
// the ActiveX control container
RegistryKey ctrl = k.CreateSubKey ( "Control" ) ;
ctrl.Close ( ) ;

using( RegistryKey subkey = k.CreateSubKey( "MiscStatus ") )
{
subkey.SetValue ("", "131473");
}

using( RegistryKey subkey = k.CreateSubKey( "MiscStatus\\1" ) )
{
subkey.SetValue ("", "197009");
}

// Next create the CodeBase entry - needed if not string named and
GACced
RegistryKey inprocServer32 = k.OpenSubKey ( "InprocServer32 " , true
);
inprocServer32. SetValue ( "CodeBase" ,
Assembly.GetExe cutingAssembly( ).CodeBase ) ;
inprocServer32. Close ( ) ;

// Now create the Version entry
RegistryKey vers = k.CreateSubKey( "Version");
vers.SetValue(" ", "1.0");
vers.Close();

RegistryKey inst = k.CreateSubKey ( "Insertable " ) ;
inst.Close ( ) ;

// And the Type Lib Entry
using( RegistryKey subkey = k.CreateSubKey( "TypeLib") )
{
Guid libid = Marshal.GetType LibGuidForAssem bly(t.Assembly) ;

subkey.SetValue ("", libid.ToString( "B"));
}
// Finally close the main key
k.Close ( ) ;
}
[ComUnregisterFu nction()]
public static void UnregisterClass ( string key )
{
StringBuilder sb = new StringBuilder ( key ) ;
sb.Replace(@"HK EY_CLASSES_ROOT \","") ;

// Open HKCR\CLSID\{gui d} for write access
RegistryKey k = Registry.Classe sRoot.OpenSubKe y(sb.ToString() ,true);
// Delete the 'Control' key, but don't throw an exception if it does
not exist
k.DeleteSubKey ( "Control" , false ) ;

// Next open up InprocServer32
RegistryKey inprocServer32 = k.OpenSubKey ( "InprocServer32 " , true
);

// And delete the CodeBase key, again not throwing if missing
k.DeleteSubKey ( "CodeBase" , false ) ;

k.DeleteSubKey ( "TypeLib" , false ) ;

k.DeleteSubKey ( "Version" , false ) ;

// Finally close the main key
k.Close ( ) ;
}

#region Component Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeCompo nent()
{
this.textBox1 = new System.Windows. Forms.TextBox() ;
this.button1 = new System.Windows. Forms.Button();
this.SuspendLay out();
//
// textBox1
//
this.textBox1.L ocation = new System.Drawing. Point(8, 8);
this.textBox1.N ame = "textBox1";
this.textBox1.S ize = new System.Drawing. Size(192, 20);
this.textBox1.T abIndex = 0;
this.textBox1.T ext = "textBox1";
//
// button1
//
this.button1.Lo cation = new System.Drawing. Point(8, 32);
this.button1.Na me = "button1";
this.button1.Si ze = new System.Drawing. Size(192, 24);
this.button1.Ta bIndex = 1;
this.button1.Te xt = "button1";
this.button1.Cl ick += new System.EventHan dler(this.butto n1_Click);
//
// CSharpUserContr ol
//
this.Controls.A dd(this.button1 );
this.Controls.A dd(this.textBox 1);
this.Name = "CSharpUserCont rol";
this.Size = new System.Drawing. Size(208, 64);
this.ResumeLayo ut(false);
}
#endregion

private void button1_Click(o bject sender, System.EventArg s e)
{
OnMyEventA();
}
}
}

Jan 1 '06 #2
Asaf,

Unfortunately, ActiveX controls are not able to be exported from .NET to
automation-compatable clients.

There is an unsupported hack to do this, but I wouldn't recommend it,
since it is not supported in the least.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard. caspershouse.co m

"Asaf" <as***@marvell. com> wrote in message
news:11******** *************@g 44g2000cwa.goog legroups.com...
Hi,
We have a VB6 application that needs to use a new control written in
.NET v1.1 C#, imported as a COM control.
We have tried adding the C# control to the VB6 control both dynamically
(using Controls.Add) and using the VB6 designer. In both approaches
the behavior was identical: the control was functional and accessible,
but the application crashed on exit with the message <app name> "has
encountered a problem and needs to close. We are sorry for the
inconvenience." etc.

I have searched the web, with no luck. Any ideas will be greatly
appreciated. The C# code is embedded below.

Thanks
Asaf.
using System;
using System.Collecti ons;
using System.Componen tModel;
using System.Drawing;
using System.Data;
using System.Windows. Forms;
using System.Runtime. InteropServices ;
using System.Text;
using System.Reflecti on;
using Microsoft.Win32 ;
[assembly:ClassI nterface(ClassI nterfaceType.Au toDual)]
namespace MyCtrlLib
{
///
/// Summary description for UserControl1.
///
[ GuidAttribute(" F321BAC9-5019-4c6f-BADF-8D104A499870") ]
[InterfaceTypeAt tribute(ComInte rfaceType.Inter faceIsDual)]
public interface ICSharpCOMInter face
{
void MethodA();
void MethodB(int a);
}

[ComVisible(fals e)]
public delegate void CSharpEventHand lerA ();
[ComVisible(fals e)]
public delegate void CSharpEventHand lerB (int a);

[GuidAttribute(" 03018F99-263B-417e-94F3-F367471F6679"),
InterfaceTypeAt tribute(ComInte rfaceType.Inter faceIsIDispatch )]
public interface ICSharpCOMEvent s
{
[DispId(1)]void EventA();
[DispId(2)]void EventB(int a);
}

[GuidAttribute(" E022271B-63C8-4878-8C9E-712E776C4785")]
[ProgIdAttribute ("MyCtrlLib.CSh arpUserControl" )]
//[ComSourceInterf acesAttribute(t ypeof (ICSharpCOMEven ts))]
[ComSourceInterf acesAttribute(t ypeof(MyCtrlLib .ICSharpCOMEven ts))]
[ClassInterfaceA ttribute(ClassI nterfaceType.No ne)]
public class CSharpUserContr ol : System.Windows. Forms.UserContr ol,
ICSharpCOMInter face
{
private System.Windows. Forms.TextBox textBox1;
private System.Windows. Forms.Button button1;
///
/// Required designer variable.
///
private System.Componen tModel.Containe r components = null;

[Category("Actio n")]
public event CSharpEventHand lerA EventA;
[Category("Actio n")]
public event CSharpEventHand lerB EventB;

public CSharpUserContr ol()
{
// This call is required by the Windows.Forms Form Designer.
InitializeCompo nent();
// TODO: Add any initialization after the InitForm call
}

///
/// Clean up any resources being used.
///
protected override void Dispose( bool disposing )
{
MessageBox.Show ("Dispose");
if( disposing )
{
if( components != null )
components.Disp ose();
}
base.Dispose( disposing );
}

public void MethodA()
{
this.textBox1.T ext = "MethodA";
OnMyEventA();
}

public void MethodB(int a)
{
OnMyEventB(a);
}

protected void OnMyEventA()
{
if (EventA != null)
{
this.textBox1.T ext = "Event fired!";
EventA();
}
}

protected void OnMyEventB(int a)
{
if (EventB != null)
EventB(a);
}
[ComRegisterFunc tion()]
public static void RegisterClass ( Type t )
{
// Strip off HKEY_CLASSES_RO OT\ from the passed key as I don't need
it
string sb = @"CLSID\" + t.GUID.ToString ("B");
sb.Replace(@"HK EY_CLASSES_ROOT \","") ;

// Open the CLSID\{guid} key for write access
RegistryKey k = Registry.Classe sRoot.OpenSubKe y(sb.ToString() ,true);
// And create the 'Control' key - this allows it to show up in
// the ActiveX control container
RegistryKey ctrl = k.CreateSubKey ( "Control" ) ;
ctrl.Close ( ) ;

using( RegistryKey subkey = k.CreateSubKey( "MiscStatus ") )
{
subkey.SetValue ("", "131473");
}

using( RegistryKey subkey = k.CreateSubKey( "MiscStatus\\1" ) )
{
subkey.SetValue ("", "197009");
}

// Next create the CodeBase entry - needed if not string named and
GACced
RegistryKey inprocServer32 = k.OpenSubKey ( "InprocServer32 " , true
);
inprocServer32. SetValue ( "CodeBase" ,
Assembly.GetExe cutingAssembly( ).CodeBase ) ;
inprocServer32. Close ( ) ;

// Now create the Version entry
RegistryKey vers = k.CreateSubKey( "Version");
vers.SetValue(" ", "1.0");
vers.Close();

RegistryKey inst = k.CreateSubKey ( "Insertable " ) ;
inst.Close ( ) ;

// And the Type Lib Entry
using( RegistryKey subkey = k.CreateSubKey( "TypeLib") )
{
Guid libid = Marshal.GetType LibGuidForAssem bly(t.Assembly) ;

subkey.SetValue ("", libid.ToString( "B"));
}
// Finally close the main key
k.Close ( ) ;
}
[ComUnregisterFu nction()]
public static void UnregisterClass ( string key )
{
StringBuilder sb = new StringBuilder ( key ) ;
sb.Replace(@"HK EY_CLASSES_ROOT \","") ;

// Open HKCR\CLSID\{gui d} for write access
RegistryKey k = Registry.Classe sRoot.OpenSubKe y(sb.ToString() ,true);
// Delete the 'Control' key, but don't throw an exception if it does
not exist
k.DeleteSubKey ( "Control" , false ) ;

// Next open up InprocServer32
RegistryKey inprocServer32 = k.OpenSubKey ( "InprocServer32 " , true
);

// And delete the CodeBase key, again not throwing if missing
k.DeleteSubKey ( "CodeBase" , false ) ;

k.DeleteSubKey ( "TypeLib" , false ) ;

k.DeleteSubKey ( "Version" , false ) ;

// Finally close the main key
k.Close ( ) ;
}

#region Component Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeCompo nent()
{
this.textBox1 = new System.Windows. Forms.TextBox() ;
this.button1 = new System.Windows. Forms.Button();
this.SuspendLay out();
//
// textBox1
//
this.textBox1.L ocation = new System.Drawing. Point(8, 8);
this.textBox1.N ame = "textBox1";
this.textBox1.S ize = new System.Drawing. Size(192, 20);
this.textBox1.T abIndex = 0;
this.textBox1.T ext = "textBox1";
//
// button1
//
this.button1.Lo cation = new System.Drawing. Point(8, 32);
this.button1.Na me = "button1";
this.button1.Si ze = new System.Drawing. Size(192, 24);
this.button1.Ta bIndex = 1;
this.button1.Te xt = "button1";
this.button1.Cl ick += new System.EventHan dler(this.butto n1_Click);
//
// CSharpUserContr ol
//
this.Controls.A dd(this.button1 );
this.Controls.A dd(this.textBox 1);
this.Name = "CSharpUserCont rol";
this.Size = new System.Drawing. Size(208, 64);
this.ResumeLayo ut(false);
}
#endregion

private void button1_Click(o bject sender, System.EventArg s e)
{
OnMyEventA();
}
}
}

Jan 1 '06 #3
Thanks
Asaf

Jan 1 '06 #4

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

Similar topics

1
7956
by: Vetrivel | last post by:
Application architecture : Develop interface between two existing systems, a. Enterprise CRM system b. Web based intranet system. Environment : Intranet Server : IIS and ASP. Script : VBScript and Javascript Client : 1. IE browser. 2. VBForm embedded with WebBrowser control (MS Internet
1
2198
by: Adam Hearn | last post by:
Sorry if this difficult to understand but I'm pulling my hair out and could do with some good ideas please... I've developed an application which in .NET as a Windows service which is simply crashing but with no signs/details on where the crash is occuring. Please not that the crash is happening on the server and only when the server is...
0
2471
by: MarkD | last post by:
I have an ASP.NET (VB.NET) application that calls all VB6 COM DLL via Interop. The DLL uses functionality contained in a Custom OCX Control (Also VB6) that in turn contains a standard TreeView control. The Custom OCX is not used for visual purposes, but has some functionality that we require (hence hosting an OCX in a DLL). Everything...
1
288
by: Adam Hearn | last post by:
Sorry if this difficult to understand but I'm pulling my hair out and could do with some good ideas please... I've developed an application which in .NET as a Windows service which is simply crashing but with no signs/details on where the crash is occuring. Please not that the crash is happening on the server and only when the server is...
0
7674
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
0
7989
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
0
8182
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
0
8039
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
0
6369
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
1
5559
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 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 a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
5271
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
0
3708
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2170
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system

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.