Passer des valeurs d'un application a une autre

Résolu
cs_Axen Messages postés 49 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 24 mars 2010 - 24 mars 2010 à 04:47
cs_Axen Messages postés 49 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 24 mars 2010 - 24 mars 2010 à 15:42
Bonjour,

Voila en fait je me pose la question depuis quelques heures maintenant sur la façon de passer des paramètres d'une application vb à une autre pour repositionner la 2eme application par rapport à la première !

La solution que j'ai trouvée pour le moment est l'utilisation du presse-papier mais je ne suis pas sur que cela soit très "propre" comme méthode :

Ma première application enregistre sa position quand je bouge le formulaire (assez lourd mais je n'ai pas trouvé de méthode pour utiliser le mouseUp sur la barre de titre, mais si c'est là la solution je peux créer ma propre barre de titre)
Private Sub FormLauncher_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Move
    Try
        Dim x As Integer = Me.Left
        Dim y As Integer = Me.Top
        Clipboard.SetText("position" & vbTab & x & vbTab & y)
    Catch exc As Exception
        MessageBox.Show(exc.Message)
    End Try
End Sub

Alors que la deuxième récupère ces valeurs sur un timer
Private Sub TimerDeplacement_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerDeplacement.Tick
    Try
        Dim position = Clipboard.GetText()
        If position.Contains("position" & vbTab) Then
            Dim temp as string = position.Split(vbTab)
            Me.Left = Int(temp(1)) + 122
            Me.Top = Int(temp(2))
            Clipboard.Clear()
        End If
    Catch exc As Exception
        MessageBox.Show(exc.Message)
    End Try
End Sub


J'avais bien pensé a stocker ces infos dans un fichier mais comme cela se fait en quasi instantané ça me parait encore plus lourd comme solution !

Si vous pouviez me donner une meilleure voix à suivre ou me confirmer celle que j'utilise ça serait bien aimable,

Merci d'avance

13 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mars 2010 à 15:11
En gros, voir :

www.vbfrance.com/codes/COMMUNICATION-INTER-PROCESS-PARTAGE-MEMOIRE_39615.aspx

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mars 2010 à 08:53
pas de top de monopoliser ainsi le presse papier, effectivement...

plus simple de mettre en place une surveillance plus fine....

un SubClassing, par exemple. Ainsi tu sera avertit si ta form bouge, et ne consommera que peu de temps processeur si ta form ne bouge pas.


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 mars 2010 à 11:06
salut,

... pourquoi form1 ne déplace pas directement form2

[hr]
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mars 2010 à 11:48
pas la même appli, semble-til

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mars 2010 à 11:49
mais je vois où tu veux en venir....

je partait du principe (erronné) qu'on a pas la main sur le code de Form1 ...


du coup, oui, dans ton Form_Move, suffit de demander a Form2 de se mettre au diapason


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_Axen Messages postés 49 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 24 mars 2010
24 mars 2010 à 11:51
Salut et merci pour vos réponse,

@Renfield : je viens de regarder ce qu'était le SubClassing et je t'avoue que je ne vois pas ce que m'apporterais de plus cette méthode par rapport au form_move qui m'indique déjà si ma form bouge et cela seulement quand elle bouge (non ?), surement une subtilité que je ne connais pas, je suis développeur autodidacte et le .net n'est sur mon pc que depuis 1 mois ^^

@PCPT : car comme je l'ai dit dans ma question il ne s'agit pas simplement de 2 form, mais de 2 form dans 2 applications différentes, sinon c'est surement ce que j'aurais fait

@Renfield : a moins que tu ne parles d'un SubClassing sur la 2eme application qui vérifierais si la 1ere bouge mais je ne vois pas comment je pourrais surveiller la 1ere appli à partir de la 2eme
0
cs_Axen Messages postés 49 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 24 mars 2010
24 mars 2010 à 12:10
ah bin ma réponse à croisée les votre...

@Renfield : je sais déplacer un formulaire en rapport au déplacement d'un autre mais dans la même application pas dans 2 application différente !
ça donnerais un truc du genre (je sais que c'est faux Appli2.FormRenomp3_move mais c'est pour comprendre l'idée) :

Appli_1
Private Sub FormLauncher_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Move
    Appli2.FormRenomp3_move()
End Sub

Appli_2 rien
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 mars 2010 à 12:23
j'ai lu l'énoncé trop vite en effet, désolé ^^

umm le subclassing n'est pas forcément le plus approprié

regarde les sources "communiquer entre 2 applis", çà me semble plus correspondre au besoin

l'idée étant alors en effet juste de se passer du timer et du presse-papier

++
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mars 2010 à 13:13
Le subclassing (easy en .Net) est bien un moyen de communication...

au Form_Move de FOrm1, tu fais un SendMessage à Form2 avec un message convenu (RegisterWindowsMessage) et zou...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_Axen Messages postés 49 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 24 mars 2010
24 mars 2010 à 14:29
Je suis en train de plancher sur le SendMessage - RegisterWindowMessage, je n'ai trouvé qu'une source en vb6 et aucun tuto (pour vb en tout cas) donc j'essaie de la transposer en vb.net pour le moment le bloque coté réception. C'est marrant comme ça à l'air facile quand vous en parlez mais comme ça devient compliqué par la suite ^^

Voila ou j'en suis
Appli envoyant le message à priori aucun souci

Appli recevant le message souci avec AddressOf
'On remplace l'adresse de la routine Standard par celle de notre procedure => Capture_Message_Windows
'Cela permet de faire passer les messages Windows dans notre procédure Capture_Message_Windows
'Save_WndProc_adresse, récupère l'adresse de la routine standard Windows
'ATTENTION, NE PAS MODIFIER LE NAME (Form1) DE LA Form1 CAR APPEL DU HANDLE (Me.hwnd)
Save_WndProc_Adresse = SetWindowLong(Me.Handle, GWL_WNDPROC, AddressOf Capture_Message_Windows)

le souci : l'expression AddresOf ne peut pas être convertie en Long, car Long n'est pas un type délégué
Est-ce que cela peut venir du fait que mon formulaire ne s'appelle pas Form1 ? ou bien du changement de Me.hwnd par Me.Handle ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 mars 2010 à 15:02
côté api, long (général) à déclarer en integer
long de handle en intptr
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mars 2010 à 15:07
euh, non, on passe pas par cette PI pour le Subclassing.... c'est terminé, ca en .NET

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
cs_Axen Messages postés 49 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 24 mars 2010
24 mars 2010 à 15:42
Encore merci pour votre patience, voila une méthode que je suis capable d'utiliser
Me reste plus qu'a bien la comprendre ça ne m'a pas l'air bien compliqué
0
Rejoignez-nous