cs_Axen
Messages postés49Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention24 mars 2010
-
24 mars 2010 à 04:47
cs_Axen
Messages postés49Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention24 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,
cs_Axen
Messages postés49Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention24 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
cs_Axen
Messages postés49Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention24 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
cs_Axen
Messages postés49Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention24 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 ?
cs_Axen
Messages postés49Date d'inscriptionmercredi 8 novembre 2000StatutMembreDernière intervention24 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é