Appeler une WinForm c# à partir d'une application VB6
Bonjour,
Je travaille actuellement sur la possibilité de faire appel à des classes ou des form provenant de .net à partir de vb6. Pour ce faire j'ai donc créé à partir d'un exemple trouvé sur le net en c# une dll qui référence "System.EnterpriseServices" et qui me permet d'avoir une classe de laquelle j'ai extrais une interface et effectuer une signature "forte" de l'assembly.
le code de ma classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
[ClassInterface(ClassInterfaceType.None)]
public class Person : System.EnterpriseServices.ServicedComponent, com.IPerson
{
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsMale { get; set; }
public void Persist(string FilePath)
{
StreamWriter oFile = new StreamWriter(FilePath);
XmlSerializer oXmlSerializer = new XmlSerializer(typeof(Person));
oXmlSerializer.Serialize(oFile, this);
oFile.Flush();
oFile.Close();
}
public void showForm()
{
Form1 dial = new Form1() ;
if(dial.ShowDialog () == System.Windows.Forms.DialogResult.Yes )
{
}
}
} |
L'interface générée :
Code:
1 2 3 4 5 6 7 8 9
|
public interface IPerson
{
string FirstName { get; set; }
bool IsMale { get; set; }
string LastName { get; set; }
void Persist(string FilePath);
void showForm();
} |
Après compilation j'utilise la ligne suivante pour enregistrer ma dll com :
regsvcs /appname:com D:\Dropbox\Developpements\com\com\bin\Debug\com.dll
En Vb6 j'appelle mes fonctions (après référencement de mon objet com) comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Private Sub Command1_Click()
Dim proxy As Person
Set proxy = New Person
proxy.FirstName = "Bejaoui"
proxy.LastName = "Bechir"
proxy.Persist ("d:\\myFile.xml")
Call proxy.showForm
End Sub |
Tout fonctionne bien mais je me pose quelques questions :
- Comment debbuger ce genre de chose (seule solution que j'ai trouvé pour le moment c'est de debbuger la partie dll avec une application de test en .net. Dommage de ne pas pouvoir le faire à partir du code vd6 (et d'un autre coté tout à fait logique)
- Comment savoir ou est le fichier regsvcs.exe et lequel utiliser. Je l'ai dans plusieurs dossiers en fonction des différents framework installé. Et comment déployer tout cela sur un autre poste ? (j'avais pensé à un fichier .bat pour enregistrer mon composant mais le répertoire regsvcs n'est pas dans la variable PATH.
- Je suppose que le retour de paramètre de la fonction C# vers le programme vb6 se fait de manière habituel, mais comment créer des événements consommables dans l'application vb6 ?