begin process at 2012 02 11 23:10:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > DIALOGUES ENTRES APPLICATIONS

DIALOGUES ENTRES APPLICATIONS


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Niveau :Débutant Date de création :16/01/2004 Vu / téléchargé :3 633 / 324

Auteur : ORTIPIC

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

DIALOGUES ENTRES APPLICATIONS (PAR LA BASE DE REGISTRE)

plusieurs applic... pourront se parler et se repondre
savoir si une autre applic...  nommee est executee

elles se reconnaissent par leurs noms d executable ou fichier vbp

l applic....   sais qui l'appelle

je donnerai des infos sur la fonction BLOCK() si besoin

executer les deux projets ils sont identiques
mais projet1 dit bonjour
----   projet2 lui repond merci et le nomme
.....

Source

  • 'projet1------------------------------------------
  • ''form1--------------------------------*
  • Private Sub Form_Load()
  • Form1.Caption = App.EXEName ' aff le nom de son application
  • 'If dialog_test("projet2") Then End ' falcutatif : ne demarre que si le projet2 est lance
  • Call dialog_init(Form1) ' initialise le dialoge entre applications [ Form1 pour informer ou est Public Sub dialog_recu() ]
  • Timer1.Interval = 100 ' le timer qui surveil
  • Call dialog_env("projet2", "bonjour") ' envois bonjours a l apllication projet2
  • End Sub
  • '=============pour gerer les dialogues recus=====================
  • Public Sub dialog_recu(appelant, message)
  • List1.AddItem appelant & " " & message ' falcutatif
  • If message = "bonjour" Then Call dialog_env(appelant, "merci " & appelant) ' si bonjour repond par un message a appelant
  • ' ect.....
  • ' ect.....
  • DoEvents
  • End Sub
  • Private Sub Form_Terminate()
  • Timer1.Interval = 0 ' stop le timer qui surveil
  • Call dialog_fin ' stop le dialog : informe de son inactivite
  • ' et efface les traces de messages (si derniere application)
  • End Sub
  • Private Sub Timer1_Timer()
  • Call dialog_surveil
  • End Sub
  • ''module--------------------------*
  • Public Cible As Form
  • Public Sub dialog_surveil()
  • a = block(App.EXEName, 4)
  • End Sub
  • Public Sub dialog_env(app_cible, dial)
  • SaveSetting "dialog connect", app_cible, App.EXEName, dial
  • End Sub
  • Public Sub dialog_fin()
  • SaveSetting "dialog connect", "inscris", App.EXEName, "inactif"
  • a = block("inscris", 1)
  • End Sub
  • Public Sub dialog_init(cible1 As Form)
  • SaveSetting "dialog connect", "inscris", App.EXEName, "actif"
  • Set Cible = cible1
  • End Sub
  • Public Function dialog_test(a5)
  • dialog_test = GetSetting("dialog connect", "inscris", a5) = "inactif"
  • End Function
  • ''bon courage......
  • Public Function block(a2 As String, a3 As Integer) As Variant
  • Dim avnt As Variant
  • Dim bntX As Integer
  • Dim app_ins As String
  • Dim app_dial As String
  • If a3 = 0 Then Exit Function
  • block = "0": avnt = GetAllSettings("dialog connect", a2)
  • If VarType(avnt) <> 0 Then
  • For bntX = 0 To UBound(avnt, 1)
  • app_ins = avnt(bntX, 0)
  • app_dial = avnt(bntX, 1)
  • If a3 = 1 And app_dial = "actif" Then block = "1"
  • If a3 = 2 Then a = block(app_ins, 3)
  • If a3 = 3 Then DeleteSetting "dialog connect", a2, app_ins
  • If a3 = 4 Then Call Cible.dialog_recu(app_ins, app_dial)
  • Next bntX
  • If a3 = 4 Then DeleteSetting "dialog connect", App.EXEName
  • End If
  • If a3 = 1 And block = "0" Then
  • a = block("inscris", 2)
  • End If
  • DoEvents
  • End Function
  • 'projet2------------------------------------------
  • ' il vous faut form list timer
  • ''form1--------------------------------*
  • Private Sub Form_Load()
  • Form1.Caption = App.EXEName ' aff le nom de son application
  • 'If dialog_test("projet2") Then End ' falcutatif : ne demarre que si le projet2 est lance
  • Call dialog_init(Form1) ' initialise le dialoge entre applications [ Form1 pour informer ou est Public Sub dialog_recu() ]
  • Timer1.Interval = 100 ' le timer qui surveil
  • ''Call dialog_env("projet2", "bonjour") ' envois bonjours a l apllication projet2
  • End Sub
  • '=====================pour gerer les dialogues recus=====================
  • Public Sub dialog_recu(appelant, message)
  • List1.AddItem appelant & " " & message ' falcutatif
  • If message = "bonjour" Then Call dialog_env(appelant, "merci " & appelant) ' si bonjour repond par un message a appelant
  • ' ect.....
  • ' ect.....
  • DoEvents
  • End Sub
  • Private Sub Form_Terminate()
  • Timer1.Interval = 0 ' stop le timer qui surveil
  • Call dialog_fin ' stop le dialog : informe de son inactivite
  • ' et efface les traces de messages (si derniere application)
  • End Sub
  • Private Sub Timer1_Timer()
  • Call dialog_surveil
  • End Sub
  • ''module--------------------------*
  • '''le meme que projet1
'projet1------------------------------------------

''form1--------------------------------*
Private Sub Form_Load()
Form1.Caption = App.EXEName ' aff le nom de son application

'If dialog_test("projet2") Then End '  falcutatif : ne demarre que si le projet2 est lance

Call dialog_init(Form1)  ' initialise le dialoge entre applications [ Form1 pour informer ou est Public Sub dialog_recu() ]
Timer1.Interval = 100    ' le timer qui surveil

Call dialog_env("projet2", "bonjour") '  envois bonjours a l apllication projet2

End Sub

'=============pour gerer les dialogues recus=====================
Public Sub dialog_recu(appelant, message)
  List1.AddItem appelant & "   " & message ' falcutatif
  
If message = "bonjour" Then Call dialog_env(appelant, "merci " & appelant) ' si bonjour repond par un message a appelant
' ect.....
' ect.....
DoEvents
End Sub
                                                           
Private Sub Form_Terminate()
Timer1.Interval = 0 ' stop le timer qui surveil
Call dialog_fin     ' stop le dialog : informe de son inactivite
' et efface les traces de messages (si derniere application)
End Sub

Private Sub Timer1_Timer()
Call dialog_surveil
End Sub


''module--------------------------*
Public Cible As Form

Public Sub dialog_surveil()
a = block(App.EXEName, 4)
End Sub

Public Sub dialog_env(app_cible, dial)
SaveSetting "dialog connect", app_cible, App.EXEName, dial
End Sub

Public Sub dialog_fin()
SaveSetting "dialog connect", "inscris", App.EXEName, "inactif"
a = block("inscris", 1)
End Sub

Public Sub dialog_init(cible1 As Form)
SaveSetting "dialog connect", "inscris", App.EXEName, "actif"
Set Cible = cible1
End Sub

Public Function dialog_test(a5)
dialog_test = GetSetting("dialog connect", "inscris", a5) = "inactif"
End Function
''bon courage......
Public Function block(a2 As String, a3 As Integer) As Variant

Dim avnt As Variant
Dim bntX As Integer
Dim app_ins As String
Dim app_dial As String

If a3 = 0 Then Exit Function


     block = "0": avnt = GetAllSettings("dialog connect", a2)
     If VarType(avnt) <> 0 Then
     For bntX = 0 To UBound(avnt, 1)
     app_ins = avnt(bntX, 0)
     app_dial = avnt(bntX, 1)
     
     If a3 = 1 And app_dial = "actif" Then block = "1"
     If a3 = 2 Then a = block(app_ins, 3)
     If a3 = 3 Then DeleteSetting "dialog connect", a2, app_ins
     If a3 = 4 Then Call Cible.dialog_recu(app_ins, app_dial)
     
     Next bntX
     If a3 = 4 Then DeleteSetting "dialog connect", App.EXEName
     End If
     If a3 = 1 And block = "0" Then
     a = block("inscris", 2)
     End If
     DoEvents
End Function



'projet2------------------------------------------

' il vous faut form list timer
''form1--------------------------------*

Private Sub Form_Load()
Form1.Caption = App.EXEName ' aff le nom de son application

'If dialog_test("projet2") Then End '  falcutatif : ne demarre que si le projet2 est lance

Call dialog_init(Form1)  ' initialise le dialoge entre applications [ Form1 pour informer ou est Public Sub dialog_recu() ]
Timer1.Interval = 100    ' le timer qui surveil

''Call dialog_env("projet2", "bonjour") '  envois bonjours a l apllication projet2

End Sub

'=====================pour gerer les dialogues recus=====================
Public Sub dialog_recu(appelant, message)
  List1.AddItem appelant & "   " & message ' falcutatif
  
If message = "bonjour" Then Call dialog_env(appelant, "merci " & appelant) ' si bonjour repond par un message a appelant
' ect.....
' ect.....
DoEvents
End Sub
                                                           
Private Sub Form_Terminate()
Timer1.Interval = 0 ' stop le timer qui surveil
Call dialog_fin     ' stop le dialog : informe de son inactivite
' et efface les traces de messages (si derniere application)
End Sub

Private Sub Timer1_Timer()
Call dialog_surveil
End Sub

''module--------------------------*

'''le meme que projet1


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture VISION DES HANDLES WINDOWS
Source avec Zip LIS 2 PREMIUM AFFICHER DU TEXTE SUR LCD A.F.C
Source avec Zip Source avec une capture LISTBOX MULTI COLONNES
Source avec Zip GENERATEUR DE CIRCUITS SCALEXTRIC
Source avec Zip PLUSIEURS COMMAND-LINE POUR UN SEUL EXECUTABLE

 Sources de la même categorie

Source avec Zip Source avec une capture AUTORISER/REFUSER L'EXECUTION DE PROCESSUS par pierreh51
Source avec Zip Source .NET (Dotnet) CLONE/FORK DES FLUX DE LA CONSOLE : PERMETTRE LA REDIRECTION... par ShareVB
Source avec Zip Source .NET (Dotnet) DÉFRAGMENTER UN FICHIER par ShareVB
Source avec Zip Source .NET (Dotnet) ECRAN DE VEILLE : DÉTECTER LE LANCEMENT/DÉCLENCHER/EMPÊCHER par ShareVB
Source avec Zip Source avec une capture DESACTIVER / ACTIVER LES MISES EN VEILLES PC par Arsena

Commentaires et avis

Commentaire de EBArtSoft le 16/01/2004 22:14:37 administrateur CS

Je trouve que c'est une tres mauvaise idée
d'etablir une communication entre app par
la base de registre et je suis sur de ne pas
etre le seul.

Tu devrais plutot utiliser un filemapping/pipe/mailslot/sendmessage
mais pas utiliser le registre car les ajouts dans la base
doivent resper ponctuel...

enfin bref c'est une methode comme une autre
qui merite d'etre etudier (meme si je considere cela bizzard)

@+

Commentaire de legion91 le 16/01/2004 22:31:09

Ben Heu ouais je trouve la premiere source bocoup plus simple, tandi k la...

Ouais javais moi meme pensez a l'api sendmessage, mais pour la mettre en placez il fo scanner les handles c'est relativement chi*** deplus faudrait faire une boucle pour trouvez un caption de form ki pourrait changer a cause du sendmessage, ouarf je prefere la 1er soluce de ORTIPIC juste pour la simplicité mais c sur k la base de registre va morflez car un timer coller elle c un peu pas tres propre surtout avec un savesetting(j'aime pas cette fontion toute cuite).

Toutefois ta le merite d'avoir trouvez un truc simple et comprehensible du 1er coup d'oeil et rien k pour sa, sa dechire allez on va te motivez 9/10

Commentaire de BruNews le 17/01/2004 00:08:57 administrateur CS

Comme le dit EBArtSoft, tres mauvaise idee. Win32 offre tous les moyens corrects pour la communication interprocessus, voir pour cela le chapitre 'DLLs, Processes, and Threads' dans MSDN.

Commentaire de gabchampagne le 17/01/2004 18:28:18

dsl mais c poche. Perso, je préfèrerait utiliser winsock pour qui les 2 prog communiques ensemble.

Commentaire de Dede le 20/01/2004 15:37:26

Juste une tite question (un peu hors sujet, mais elle en est directement inspirée). Est-il plus judicieux de declarer :
Timer1.Interval = 0 , ou
Timer1.enabled =false
?????
Dede

Commentaire de ORTIPIC le 21/01/2004 15:32:08

merci dede

effectivement timer1.interval=0  c est nul .......
il faut mettre timer1.enabled=false


de plus si timer a une boucle imbriquee
en ajoutant

if timer1.enabled then else exit sub

la boucle sera stopper de son process

moi j ai une quest ? a tous

peu t on ajouter des variables dans les proprietes d un timer.??????
ou faire passer des variables du genre    timer1.timer(ss as string)

le simplement possible....

a+ a tous



Commentaire de FrostByte le 21/01/2004 17:30:55

On peut pas utiliser le DDE ? je me trompe peut être qu'en penses-tu EbartSoft

Commentaire de EBArtSoft le 21/01/2004 20:58:25 administrateur CS

FrostByte&gt; en effet on peut utiliser DDE comme le fait word excel etc...
mais l'initialisation est assez compliqué

Commentaire de oumlike le 24/06/2007 01:10:54

salut moi je cherche comment envoyer un interface graph du vb à un autre ordinateur

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales