Je souhaite développer une application en VB6 sans fenètre.
Cette appli utilise un composant winsock.
J'ai donc crée un fenetre MaForm dans laquelle j'ai associé le dit composant
Winsock. Dans un module j'ai une procédure Main qui Loade ma fenetre,
excécute mon code et ferme la fenètre :
Load MaForm
MaForm.MonCode
Unload MaForm
MonCode est bien excécuté (si je met des msgbox ou des espions) mais mon
composant Winsock ne fonctionne pas.
Si je fais la même chose sans le Unload : tout est OK.
Quelle est la solution la plus rationnelle pour utiliser un composant sans
que l'utilisateur ai de fenetre (et sans que le programme reste en mémoire,
bien entendu).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LE TROLL
Salut, ben on va voir les autres réponses, mais souvent un objet, je crois bien qu'il faut qu'il soit vu... ---------
"dorlag" a écrit dans le message de news:
Bonjour à tous,
Je souhaite développer une application en VB6 sans fenètre. Cette appli utilise un composant winsock.
J'ai donc crée un fenetre MaForm dans laquelle j'ai associé le dit composant Winsock. Dans un module j'ai une procédure Main qui Loade ma fenetre, excécute mon code et ferme la fenètre : Load MaForm MaForm.MonCode Unload MaForm MonCode est bien excécuté (si je met des msgbox ou des espions) mais mon composant Winsock ne fonctionne pas. Si je fais la même chose sans le Unload : tout est OK.
Quelle est la solution la plus rationnelle pour utiliser un composant sans que l'utilisateur ai de fenetre (et sans que le programme reste en mémoire, bien entendu).
Merci de vos réponses
Salut, ben on va voir les autres réponses, mais souvent un
objet, je crois bien qu'il faut qu'il soit vu...
---------
"dorlag" <dorlag@chezfree.fr> a écrit dans le message de
news: 727ACA87-A5C5-4993-889D-4220D806A606@microsoft.com...
Bonjour à tous,
Je souhaite développer une application en VB6 sans
fenètre.
Cette appli utilise un composant winsock.
J'ai donc crée un fenetre MaForm dans laquelle j'ai
associé le dit composant
Winsock. Dans un module j'ai une procédure Main qui Loade
ma fenetre,
excécute mon code et ferme la fenètre :
Load MaForm
MaForm.MonCode
Unload MaForm
MonCode est bien excécuté (si je met des msgbox ou des
espions) mais mon
composant Winsock ne fonctionne pas.
Si je fais la même chose sans le Unload : tout est OK.
Quelle est la solution la plus rationnelle pour utiliser
un composant sans
que l'utilisateur ai de fenetre (et sans que le programme
reste en mémoire,
bien entendu).
Salut, ben on va voir les autres réponses, mais souvent un objet, je crois bien qu'il faut qu'il soit vu... ---------
"dorlag" a écrit dans le message de news:
Bonjour à tous,
Je souhaite développer une application en VB6 sans fenètre. Cette appli utilise un composant winsock.
J'ai donc crée un fenetre MaForm dans laquelle j'ai associé le dit composant Winsock. Dans un module j'ai une procédure Main qui Loade ma fenetre, excécute mon code et ferme la fenètre : Load MaForm MaForm.MonCode Unload MaForm MonCode est bien excécuté (si je met des msgbox ou des espions) mais mon composant Winsock ne fonctionne pas. Si je fais la même chose sans le Unload : tout est OK.
Quelle est la solution la plus rationnelle pour utiliser un composant sans que l'utilisateur ai de fenetre (et sans que le programme reste en mémoire, bien entendu).
Merci de vos réponses
Jacques93
Bonjour, dorlag a écrit :
Bonjour à tous,
Je souhaite développer une application en VB6 sans fenètre. Cette appli utilise un composant winsock.
J'ai donc crée un fenetre MaForm dans laquelle j'ai associé le dit composant Winsock. Dans un module j'ai une procédure Main qui Loade ma fenetre, excécute mon code et ferme la fenètre : Load MaForm MaForm.MonCode Unload MaForm MonCode est bien excécuté (si je met des msgbox ou des espions) mais mon composant Winsock ne fonctionne pas. Si je fais la même chose sans le Unload : tout est OK.
Quelle est la solution la plus rationnelle pour utiliser un composant sans que l'utilisateur ai de fenetre (et sans que le programme reste en mémoire, bien entendu).
Je souhaite développer une application en VB6 sans fenètre.
Cette appli utilise un composant winsock.
J'ai donc crée un fenetre MaForm dans laquelle j'ai associé le dit composant
Winsock. Dans un module j'ai une procédure Main qui Loade ma fenetre,
excécute mon code et ferme la fenètre :
Load MaForm
MaForm.MonCode
Unload MaForm
MonCode est bien excécuté (si je met des msgbox ou des espions) mais mon
composant Winsock ne fonctionne pas.
Si je fais la même chose sans le Unload : tout est OK.
Quelle est la solution la plus rationnelle pour utiliser un composant sans
que l'utilisateur ai de fenetre (et sans que le programme reste en mémoire,
bien entendu).
Je souhaite développer une application en VB6 sans fenètre. Cette appli utilise un composant winsock.
J'ai donc crée un fenetre MaForm dans laquelle j'ai associé le dit composant Winsock. Dans un module j'ai une procédure Main qui Loade ma fenetre, excécute mon code et ferme la fenètre : Load MaForm MaForm.MonCode Unload MaForm MonCode est bien excécuté (si je met des msgbox ou des espions) mais mon composant Winsock ne fonctionne pas. Si je fais la même chose sans le Unload : tout est OK.
Quelle est la solution la plus rationnelle pour utiliser un composant sans que l'utilisateur ai de fenetre (et sans que le programme reste en mémoire, bien entendu).
Si je cache la feuille (maform.hide) c'est OK, mon code marche à merveille. Si j'inclue à la fin de ma procedure main un unload maform : le code ne marche plus (alors que je l'appelle AVANT de fermer la fenetre). Je suis un peu perplexe. J'ai essayé de passe par un objet pour ne pas avoir à traiter le composant (Set Winsock = CreateObject("MSWinsock.Winsock")) mais dans ce cas je ne sais pas gérer l'évenement Winsock_DataArrival.
Merci de vos éclaircissements.
Merci de vos réponses,
Si je cache la feuille (maform.hide) c'est OK, mon code marche à merveille.
Si j'inclue à la fin de ma procedure main un unload maform : le code ne
marche plus (alors que je l'appelle AVANT de fermer la fenetre).
Je suis un peu perplexe. J'ai essayé de passe par un objet pour ne pas avoir
à traiter le composant (Set Winsock = CreateObject("MSWinsock.Winsock")) mais
dans ce cas je ne sais pas gérer l'évenement Winsock_DataArrival.
Si je cache la feuille (maform.hide) c'est OK, mon code marche à merveille. Si j'inclue à la fin de ma procedure main un unload maform : le code ne marche plus (alors que je l'appelle AVANT de fermer la fenetre). Je suis un peu perplexe. J'ai essayé de passe par un objet pour ne pas avoir à traiter le composant (Set Winsock = CreateObject("MSWinsock.Winsock")) mais dans ce cas je ne sais pas gérer l'évenement Winsock_DataArrival.
Merci de vos éclaircissements.
Jacques93
Bonjour, dorlag a écrit :
Merci de vos réponses,
Si je cache la feuille (maform.hide) c'est OK, mon code marche à merveille. Si j'inclue à la fin de ma procedure main un unload maform : le code ne marche plus (alors que je l'appelle AVANT de fermer la fenetre). Je suis un peu perplexe. J'ai essayé de passe par un objet pour ne pas avoir à traiter le composant (Set Winsock = CreateObject("MSWinsock.Winsock")) mais dans ce cas je ne sais pas gérer l'évenement Winsock_DataArrival.
Merci de vos éclaircissements.
Pour gérer les évenements, il faut passer soit par une feuille en y mettant un contrôle Winsock, soit par un module de classe en déclarant :
Private WithEvents MySocket As Winsock
-- Cordialement,
Jacques.
Bonjour,
dorlag a écrit :
Merci de vos réponses,
Si je cache la feuille (maform.hide) c'est OK, mon code marche à merveille.
Si j'inclue à la fin de ma procedure main un unload maform : le code ne
marche plus (alors que je l'appelle AVANT de fermer la fenetre).
Je suis un peu perplexe. J'ai essayé de passe par un objet pour ne pas avoir
à traiter le composant (Set Winsock = CreateObject("MSWinsock.Winsock")) mais
dans ce cas je ne sais pas gérer l'évenement Winsock_DataArrival.
Merci de vos éclaircissements.
Pour gérer les évenements, il faut passer soit par une feuille en y
mettant un contrôle Winsock, soit par un module de classe en déclarant :
Si je cache la feuille (maform.hide) c'est OK, mon code marche à merveille. Si j'inclue à la fin de ma procedure main un unload maform : le code ne marche plus (alors que je l'appelle AVANT de fermer la fenetre). Je suis un peu perplexe. J'ai essayé de passe par un objet pour ne pas avoir à traiter le composant (Set Winsock = CreateObject("MSWinsock.Winsock")) mais dans ce cas je ne sais pas gérer l'évenement Winsock_DataArrival.
Merci de vos éclaircissements.
Pour gérer les évenements, il faut passer soit par une feuille en y mettant un contrôle Winsock, soit par un module de classe en déclarant :
Private WithEvents MySocket As Winsock
-- Cordialement,
Jacques.
dorlag
Je suis désolé d'insiter mais je suis vraiment largué : peux-tu me donner un peu plus d'infos au sujet du module de classe : j'ai bien essayé mais malgré ma déclaration "Private WithEvents MySocket As Winsock" je n'arrive pas à récupérer les évènements. Malgrè mes recherches, je n'ai pas trouvé de code satisfaisant ni avec un module de classe ni en passant par l'API windows.
Merci de votre aide
"Jacques93" a écrit : Pour gérer les évenements, il faut passer soit par une feuille en y mettant un contrôle Winsock, soit par un module de classe en déclarant :
Private WithEvents MySocket As Winsock
Je suis désolé d'insiter mais je suis vraiment largué : peux-tu me donner un
peu plus d'infos au sujet du module de classe : j'ai bien essayé mais malgré
ma déclaration "Private WithEvents MySocket As Winsock" je n'arrive pas à
récupérer les évènements. Malgrè mes recherches, je n'ai pas trouvé de code
satisfaisant ni avec un module de classe ni en passant par l'API windows.
Merci de votre aide
"Jacques93" a écrit :
Pour gérer les évenements, il faut passer soit par une feuille en y
mettant un contrôle Winsock, soit par un module de classe en déclarant :
Je suis désolé d'insiter mais je suis vraiment largué : peux-tu me donner un peu plus d'infos au sujet du module de classe : j'ai bien essayé mais malgré ma déclaration "Private WithEvents MySocket As Winsock" je n'arrive pas à récupérer les évènements. Malgrè mes recherches, je n'ai pas trouvé de code satisfaisant ni avec un module de classe ni en passant par l'API windows.
Merci de votre aide
"Jacques93" a écrit : Pour gérer les évenements, il faut passer soit par une feuille en y mettant un contrôle Winsock, soit par un module de classe en déclarant :
Private WithEvents MySocket As Winsock
Jacques93
Bonjour, dorlag a écrit :
Je suis désolé d'insiter mais je suis vraiment largué : peux-tu me donner un peu plus d'infos au sujet du module de classe : j'ai bien essayé mais malgré ma déclaration "Private WithEvents MySocket As Winsock" je n'arrive pas à récupérer les évènements. Malgrè mes recherches, je n'ai pas trouvé de code satisfaisant ni avec un module de classe ni en passant par l'API windows.
Merci de votre aide
"Jacques93" a écrit : Pour gérer les évenements, il faut passer soit par une feuille en y mettant un contrôle Winsock, soit par un module de classe en déclarant :
Private WithEvents MySocket As Winsock
Quelques explications ici :
http://www.frameip.com/vb_mode_tcp_udp/
voir le paragraphe 3.3.2
NB: Dans un module de classe, il faut que winsock soit dans les références et non dans les composants.
Module de classe :
Option Explicit
Private WithEvents MySocket As Winsock
Private Sub MySocket_ConnectionRequest(ByVal requestID As Long) MySocket.Close MySocket.Accept requestID MySocket.SendData "Connecté au serveur" End Sub
Private Sub Class_Initialize() Set MySocket = New Winsock MySocket.LocalPort = 4000 ' à adapter MySocket.Listen End Sub
Private Sub Class_Terminate() Set MySocket = Nothing End Sub
-- Cordialement,
Jacques.
Bonjour,
dorlag a écrit :
Je suis désolé d'insiter mais je suis vraiment largué : peux-tu me donner un
peu plus d'infos au sujet du module de classe : j'ai bien essayé mais malgré
ma déclaration "Private WithEvents MySocket As Winsock" je n'arrive pas à
récupérer les évènements. Malgrè mes recherches, je n'ai pas trouvé de code
satisfaisant ni avec un module de classe ni en passant par l'API windows.
Merci de votre aide
"Jacques93" a écrit :
Pour gérer les évenements, il faut passer soit par une feuille en y
mettant un contrôle Winsock, soit par un module de classe en déclarant :
Private WithEvents MySocket As Winsock
Quelques explications ici :
http://www.frameip.com/vb_mode_tcp_udp/
voir le paragraphe 3.3.2
NB: Dans un module de classe, il faut que winsock soit dans les
références et non dans les composants.
Module de classe :
Option Explicit
Private WithEvents MySocket As Winsock
Private Sub MySocket_ConnectionRequest(ByVal requestID As Long)
MySocket.Close
MySocket.Accept requestID
MySocket.SendData "Connecté au serveur"
End Sub
Private Sub Class_Initialize()
Set MySocket = New Winsock
MySocket.LocalPort = 4000 ' à adapter
MySocket.Listen
End Sub
Private Sub Class_Terminate()
Set MySocket = Nothing
End Sub
Je suis désolé d'insiter mais je suis vraiment largué : peux-tu me donner un peu plus d'infos au sujet du module de classe : j'ai bien essayé mais malgré ma déclaration "Private WithEvents MySocket As Winsock" je n'arrive pas à récupérer les évènements. Malgrè mes recherches, je n'ai pas trouvé de code satisfaisant ni avec un module de classe ni en passant par l'API windows.
Merci de votre aide
"Jacques93" a écrit : Pour gérer les évenements, il faut passer soit par une feuille en y mettant un contrôle Winsock, soit par un module de classe en déclarant :
Private WithEvents MySocket As Winsock
Quelques explications ici :
http://www.frameip.com/vb_mode_tcp_udp/
voir le paragraphe 3.3.2
NB: Dans un module de classe, il faut que winsock soit dans les références et non dans les composants.
Module de classe :
Option Explicit
Private WithEvents MySocket As Winsock
Private Sub MySocket_ConnectionRequest(ByVal requestID As Long) MySocket.Close MySocket.Accept requestID MySocket.SendData "Connecté au serveur" End Sub
Private Sub Class_Initialize() Set MySocket = New Winsock MySocket.LocalPort = 4000 ' à adapter MySocket.Listen End Sub
Private Sub Class_Terminate() Set MySocket = Nothing End Sub
-- Cordialement,
Jacques.
dorlag
Merci de ton aide,
mais je galère toujours.
Je vais poster un nouveau topic à ce sujet.
"Jacques93" a écrit :
Bonjour, dorlag a écrit : > Je suis désolé d'insiter mais je suis vraiment largué : peux-tu me donner un > peu plus d'infos au sujet du module de classe : j'ai bien essayé mais malgré > ma déclaration "Private WithEvents MySocket As Winsock" je n'arrive pas à > récupérer les évènements. Malgrè mes recherches, je n'ai pas trouvé de code > satisfaisant ni avec un module de classe ni en passant par l'API windows. > > Merci de votre aide > > "Jacques93" a écrit : > Pour gérer les évenements, il faut passer soit par une feuille en y > mettant un contrôle Winsock, soit par un module de classe en déclarant : > > Private WithEvents MySocket As Winsock >
Quelques explications ici :
http://www.frameip.com/vb_mode_tcp_udp/
voir le paragraphe 3.3.2
NB: Dans un module de classe, il faut que winsock soit dans les références et non dans les composants.
Module de classe :
Option Explicit
Private WithEvents MySocket As Winsock
Private Sub MySocket_ConnectionRequest(ByVal requestID As Long) MySocket.Close MySocket.Accept requestID MySocket.SendData "Connecté au serveur" End Sub
Private Sub Class_Initialize() Set MySocket = New Winsock MySocket.LocalPort = 4000 ' à adapter MySocket.Listen End Sub
Private Sub Class_Terminate() Set MySocket = Nothing End Sub
-- Cordialement,
Jacques.
Merci de ton aide,
mais je galère toujours.
Je vais poster un nouveau topic à ce sujet.
"Jacques93" a écrit :
Bonjour,
dorlag a écrit :
> Je suis désolé d'insiter mais je suis vraiment largué : peux-tu me donner un
> peu plus d'infos au sujet du module de classe : j'ai bien essayé mais malgré
> ma déclaration "Private WithEvents MySocket As Winsock" je n'arrive pas à
> récupérer les évènements. Malgrè mes recherches, je n'ai pas trouvé de code
> satisfaisant ni avec un module de classe ni en passant par l'API windows.
>
> Merci de votre aide
>
> "Jacques93" a écrit :
> Pour gérer les évenements, il faut passer soit par une feuille en y
> mettant un contrôle Winsock, soit par un module de classe en déclarant :
>
> Private WithEvents MySocket As Winsock
>
Quelques explications ici :
http://www.frameip.com/vb_mode_tcp_udp/
voir le paragraphe 3.3.2
NB: Dans un module de classe, il faut que winsock soit dans les
références et non dans les composants.
Module de classe :
Option Explicit
Private WithEvents MySocket As Winsock
Private Sub MySocket_ConnectionRequest(ByVal requestID As Long)
MySocket.Close
MySocket.Accept requestID
MySocket.SendData "Connecté au serveur"
End Sub
Private Sub Class_Initialize()
Set MySocket = New Winsock
MySocket.LocalPort = 4000 ' à adapter
MySocket.Listen
End Sub
Private Sub Class_Terminate()
Set MySocket = Nothing
End Sub
Bonjour, dorlag a écrit : > Je suis désolé d'insiter mais je suis vraiment largué : peux-tu me donner un > peu plus d'infos au sujet du module de classe : j'ai bien essayé mais malgré > ma déclaration "Private WithEvents MySocket As Winsock" je n'arrive pas à > récupérer les évènements. Malgrè mes recherches, je n'ai pas trouvé de code > satisfaisant ni avec un module de classe ni en passant par l'API windows. > > Merci de votre aide > > "Jacques93" a écrit : > Pour gérer les évenements, il faut passer soit par une feuille en y > mettant un contrôle Winsock, soit par un module de classe en déclarant : > > Private WithEvents MySocket As Winsock >
Quelques explications ici :
http://www.frameip.com/vb_mode_tcp_udp/
voir le paragraphe 3.3.2
NB: Dans un module de classe, il faut que winsock soit dans les références et non dans les composants.
Module de classe :
Option Explicit
Private WithEvents MySocket As Winsock
Private Sub MySocket_ConnectionRequest(ByVal requestID As Long) MySocket.Close MySocket.Accept requestID MySocket.SendData "Connecté au serveur" End Sub
Private Sub Class_Initialize() Set MySocket = New Winsock MySocket.LocalPort = 4000 ' à adapter MySocket.Listen End Sub
Private Sub Class_Terminate() Set MySocket = Nothing End Sub