passer des données à un programme en cours d'exécution
6 réponses
Bul
bonjour à tous,
J'ai un petit programme, un "éditeur de textes, multi-documents".
Lorsqu'il est actif, j'aimerais ne pas lancer une nouvelle instance
mais lui transmettre le nom du nouveau fichier à traiter.
Pourriez-vous me dire où trouver des informations pour réaliser ça ?
ou mieux : un exemple ? Merci d'avance. @+
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
david
salut,
en fait, même si tu retrouve le PID de ton processus d'édition de texte lorsqu'il est en exécution, il n'existe pas de possibilités système d'interconnecter avec un processus après (ou durant l'exécution) sans que celui-ci en face aussi la demande...
Par contre, un petit système (bricolage soit) qui fonctionne très bien : utilise un petit fichier texte (par exemple: command.txt) dans le dossier d'installation de ton programme d'éditeur de texte. Régulièrement (toutes les secondes par exemple), le programme va tester si ce fichier existe. Si c'est le cas, il exécute les commandes à l'intérieur et le supprime...
Voila, A+, david
Bul a écrit :
bonjour à tous, J'ai un petit programme, un "éditeur de textes, multi-documents". Lorsqu'il est actif, j'aimerais ne pas lancer une nouvelle instance mais lui transmettre le nom du nouveau fichier à traiter. Pourriez-vous me dire où trouver des informations pour réaliser ça ? ou mieux : un exemple ? Merci d'avance. @+
salut,
en fait, même si tu retrouve le PID de ton processus d'édition de
texte lorsqu'il est en exécution, il n'existe pas de possibilités
système d'interconnecter avec un processus après (ou durant
l'exécution) sans que celui-ci en face aussi la demande...
Par contre, un petit système (bricolage soit) qui fonctionne très
bien :
utilise un petit fichier texte (par exemple: command.txt) dans le
dossier d'installation de ton programme d'éditeur de texte.
Régulièrement (toutes les secondes par exemple), le programme va
tester si ce fichier existe.
Si c'est le cas, il exécute les commandes à l'intérieur et le
supprime...
Voila, A+, david
Bul a écrit :
bonjour à tous,
J'ai un petit programme, un "éditeur de textes, multi-documents".
Lorsqu'il est actif, j'aimerais ne pas lancer une nouvelle instance
mais lui transmettre le nom du nouveau fichier à traiter.
Pourriez-vous me dire où trouver des informations pour réaliser ça ?
ou mieux : un exemple ? Merci d'avance. @+
en fait, même si tu retrouve le PID de ton processus d'édition de texte lorsqu'il est en exécution, il n'existe pas de possibilités système d'interconnecter avec un processus après (ou durant l'exécution) sans que celui-ci en face aussi la demande...
Par contre, un petit système (bricolage soit) qui fonctionne très bien : utilise un petit fichier texte (par exemple: command.txt) dans le dossier d'installation de ton programme d'éditeur de texte. Régulièrement (toutes les secondes par exemple), le programme va tester si ce fichier existe. Si c'est le cas, il exécute les commandes à l'intérieur et le supprime...
Voila, A+, david
Bul a écrit :
bonjour à tous, J'ai un petit programme, un "éditeur de textes, multi-documents". Lorsqu'il est actif, j'aimerais ne pas lancer une nouvelle instance mais lui transmettre le nom du nouveau fichier à traiter. Pourriez-vous me dire où trouver des informations pour réaliser ça ? ou mieux : un exemple ? Merci d'avance. @+
Jacques93
Bonjour Bul Bul a écrit :
bonjour à tous, J'ai un petit programme, un "éditeur de textes, multi-documents". Lorsqu'il est actif, j'aimerais ne pas lancer une nouvelle instance mais lui transmettre le nom du nouveau fichier à traiter. Pourriez-vous me dire où trouver des informations pour réaliser ça ? ou mieux : un exemple ? Merci d'avance. @+
Plusieurs méthode permettent la communication InterProcess :
Clipboard COM Data Copy DDE File Mapping Mailslots Pipes RPC Windows Sockets
Avec le composant Winsock par exemple, du côté serveur (ton éditeur en l'occurence) :
Private Sub Form_Load() Me.Winsock1.LocalPort = 5000 ' à adapter Me.Winsock1.Listen End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) Me.Winsock1.Close Me.Winsock1.Accept requestID End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim s As String
Me.Winsock1.GetData s MsgBox s End Sub
et du côté client
Private Sub Command1_Click() Me.Winsock2.Connect Me.Winsock2.LocalIP, 5000 Do DoEvents ' Prévoir une gestion d'erreur pour sortir de la boucle Loop While Me.Winsock2.State <> sckConnected Me.Winsock2.SendData "NOUVEAU FICHIER" End Sub
-- Cordialement,
Jacques.
Bonjour Bul
Bul a écrit :
bonjour à tous,
J'ai un petit programme, un "éditeur de textes, multi-documents".
Lorsqu'il est actif, j'aimerais ne pas lancer une nouvelle instance
mais lui transmettre le nom du nouveau fichier à traiter.
Pourriez-vous me dire où trouver des informations pour réaliser ça ?
ou mieux : un exemple ? Merci d'avance. @+
Plusieurs méthode permettent la communication InterProcess :
Clipboard
COM
Data Copy
DDE
File Mapping
Mailslots
Pipes
RPC
Windows Sockets
Avec le composant Winsock par exemple, du côté serveur (ton éditeur en
l'occurence) :
Private Sub Form_Load()
Me.Winsock1.LocalPort = 5000 ' à adapter
Me.Winsock1.Listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Me.Winsock1.Close
Me.Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s As String
Me.Winsock1.GetData s
MsgBox s
End Sub
et du côté client
Private Sub Command1_Click()
Me.Winsock2.Connect Me.Winsock2.LocalIP, 5000
Do
DoEvents
' Prévoir une gestion d'erreur pour sortir de la boucle
Loop While Me.Winsock2.State <> sckConnected
Me.Winsock2.SendData "NOUVEAU FICHIER"
End Sub
bonjour à tous, J'ai un petit programme, un "éditeur de textes, multi-documents". Lorsqu'il est actif, j'aimerais ne pas lancer une nouvelle instance mais lui transmettre le nom du nouveau fichier à traiter. Pourriez-vous me dire où trouver des informations pour réaliser ça ? ou mieux : un exemple ? Merci d'avance. @+
Plusieurs méthode permettent la communication InterProcess :
Clipboard COM Data Copy DDE File Mapping Mailslots Pipes RPC Windows Sockets
Avec le composant Winsock par exemple, du côté serveur (ton éditeur en l'occurence) :
Private Sub Form_Load() Me.Winsock1.LocalPort = 5000 ' à adapter Me.Winsock1.Listen End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) Me.Winsock1.Close Me.Winsock1.Accept requestID End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim s As String
Me.Winsock1.GetData s MsgBox s End Sub
et du côté client
Private Sub Command1_Click() Me.Winsock2.Connect Me.Winsock2.LocalIP, 5000 Do DoEvents ' Prévoir une gestion d'erreur pour sortir de la boucle Loop While Me.Winsock2.State <> sckConnected Me.Winsock2.SendData "NOUVEAU FICHIER" End Sub
-- Cordialement,
Jacques.
Bul
merci à vous, vous m'avez donné les pistes ( et plus ! ) à suivre. @+
merci à vous,
vous m'avez donné les pistes ( et plus ! ) à suivre.
@+
merci à vous, vous m'avez donné les pistes ( et plus ! ) à suivre. @+
Bul
>> Jacques93 : Plusieurs méthode permettent la communication InterProcess...
simplement pour signaler la méthode adoptée pour l'instant : '################################################### Private Sub winsock1_DataArrival(ByVal bytesTotal As Long) '## autres lancements ## '################################################## Dim tmp as string Winsock1.GetData tmp ... traitement de tmp End Sub '########################### Private Sub Form_Load() '## initialisation ## '########################## If VB.App.PrevInstance Then '~~ le programme est déjà en mémoire With Winsock2 .Protocol = sckUDPProtocol .RemoteHost = "127.0.0.1" .RemotePort = 1002 .Bind 1001 .SendData "*" & Command$ End With Unload Form1 End End If With Winsock1 .Protocol = sckUDPProtocol .RemoteHost = "127.0.0.1" .RemotePort = 1001 .Bind 1002 End With ....
je vais bien entendu rendre les adresses paramétrables. si vous avez des remarques/critiques... elles sont les bienvenues. @+
>> Jacques93 : Plusieurs méthode permettent la communication
InterProcess...
simplement pour signaler la méthode adoptée pour l'instant :
'###################################################
Private Sub winsock1_DataArrival(ByVal bytesTotal As Long) '## autres
lancements ##
'##################################################
Dim tmp as string
Winsock1.GetData tmp
... traitement de tmp
End Sub
'###########################
Private Sub Form_Load() '## initialisation ##
'##########################
If VB.App.PrevInstance Then '~~ le programme est déjà en mémoire
With Winsock2
.Protocol = sckUDPProtocol
.RemoteHost = "127.0.0.1"
.RemotePort = 1002
.Bind 1001
.SendData "*" & Command$
End With
Unload Form1
End
End If
With Winsock1
.Protocol = sckUDPProtocol
.RemoteHost = "127.0.0.1"
.RemotePort = 1001
.Bind 1002
End With
....
je vais bien entendu rendre les adresses paramétrables.
si vous avez des remarques/critiques... elles sont les bienvenues.
@+
>> Jacques93 : Plusieurs méthode permettent la communication InterProcess...
simplement pour signaler la méthode adoptée pour l'instant : '################################################### Private Sub winsock1_DataArrival(ByVal bytesTotal As Long) '## autres lancements ## '################################################## Dim tmp as string Winsock1.GetData tmp ... traitement de tmp End Sub '########################### Private Sub Form_Load() '## initialisation ## '########################## If VB.App.PrevInstance Then '~~ le programme est déjà en mémoire With Winsock2 .Protocol = sckUDPProtocol .RemoteHost = "127.0.0.1" .RemotePort = 1002 .Bind 1001 .SendData "*" & Command$ End With Unload Form1 End End If With Winsock1 .Protocol = sckUDPProtocol .RemoteHost = "127.0.0.1" .RemotePort = 1001 .Bind 1002 End With ....
je vais bien entendu rendre les adresses paramétrables. si vous avez des remarques/critiques... elles sont les bienvenues. @+
Zoury
Salut Bul ! :O)
si vous avez des remarques/critiques... elles sont les bienvenues. Unload Form1 End
Voici mon seul conseil... n'utilise JAMAIS, JAMAIS, JAMAIS la fonction End()... ;O) http://faq.vb.free.fr/index.php?question
-- Cordialement Yanick MVP pour Visual Basic
Salut Bul ! :O)
si vous avez des remarques/critiques... elles sont les bienvenues.
Unload Form1
End
Voici mon seul conseil... n'utilise JAMAIS, JAMAIS, JAMAIS la fonction
End()... ;O)
http://faq.vb.free.fr/index.php?question