IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Accès à la propriété Handle


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Services de proximité

    Informations forums :
    Inscription : Août 2012
    Messages : 74
    Points : 37
    Points
    37
    Par défaut Accès à la propriété Handle
    Bonjour à tous,

    Je suis sous Visual Studio 2013 et je créé une application en vb.net et je voudrais associer à un programme externe à mon formulaire. Voici le code que j'ai récupéré sur google:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Imports System.Runtime.InteropServices
    Public Class Form1
        Private p As Process
        <DllImport("user32.dll", SetLastError:=True)> _
        Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
        End Function
        <DllImport("user32.dll")> _
        Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As UInteger) As <MarshalAs(UnmanagedType.Bool)> Boolean
        End Function
        Private Shared ReadOnly HWND_TOP As New IntPtr(0)
        Public Const SWP_NOACTIVATE As Integer = &H10
        Public Const SWP_SHOWWINDOW As Integer = &H40
        'Public Function StartProcess(ByVal ProcessName As String, ByVal ContainerHandle As IntPtr, ByVal Rect As Rectangle) As Boolean
        Public Function StartProcess(ByVal ProcessName As String, ByVal ContainerHandle As IntPtr) As Boolean
            Try
                p = New Process()
                p.StartInfo.FileName = ProcessName
                p.Start()
                p.WaitForInputIdle(-1)
                'SetWindowPos(p.MainWindowHandle, HWND_TOP, Rect.Left, Rect.Top, Rect.Width, Rect.Height, SWP_NOACTIVATE Or SWP_SHOWWINDOW)
                SetWindowPos(p.MainWindowHandle, HWND_TOP, 0, 0, 1920, 1080, SWP_NOACTIVATE Or SWP_SHOWWINDOW)
                SetWindowPos(p.MainWindowHandle, IntPtr.Zero, 50, 50, 60, 50, 0)
            Catch ex As Exception
                Return False
            End Try
            Return True
        End Function
        Public Function ParentResize(ByVal rect As Rectangle) As Boolean
            Try
                SetWindowPos(p.MainWindowHandle, HWND_TOP, rect.Left, rect.Top, rect.Width, rect.Height, SWP_NOACTIVATE Or SWP_SHOWWINDOW)
            Catch ex As Exception
                Return False
            End Try
            Return True
        End Function
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            StartProcess("C:\Windows\System32\notepad.exe", Me.Handle)
        End Sub
    End Class
    Si je tape me. il ne me donne pas la propriété handle pour le StartProcess...Pourquoi?
    Comme vous voyer, j'ai modifier deux lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Public Function StartProcess(ByVal ProcessName As String, ByVal ContainerHandle As IntPtr, ByVal Rect As Rectangle) As Boolean
    SetWindowPos(p.MainWindowHandle, HWND_TOP, Rect.Left, Rect.Top, Rect.Width, Rect.Height, SWP_NOACTIVATE Or SWP_SHOWWINDOW)
    car je ne savais pas comment déclarer Rect. Comment entrer plusieurs paramètre dans une variable à savoir 0,0,1920,1080...
    Sauf erreur de ma part, je crois que sais avec new string{} mais j'ai un doute
    Si quelqu'un peut m’aiguiller...
    Merci à vous tous pour toute vos réponses et bonne journée!

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Citation Envoyé par programmes Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Function StartProcess(ByVal ProcessName As String, ByVal ContainerHandle As IntPtr, ByVal Rect As Rectangle) As Boolean
    SetWindowPos(p.MainWindowHandle, HWND_TOP, Rect.Left, Rect.Top, Rect.Width, Rect.Height, SWP_NOACTIVATE Or SWP_SHOWWINDOW)
    car je ne savais pas comment déclarer Rect. Comment entrer plusieurs paramètre dans une variable à savoir 0,0,1920,1080...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private r As Rectangle = New Rectangle(0, 0, 1920, 1080)
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            StartProcess("C:\Windows\System32\notepad.exe", Me.Handle, r)
        End Sub
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            StartProcess("C:\Windows\System32\notepad.exe", Me.Handle, New Rectangle(0, 0, 1920, 1080))
        End Sub
    et les 2 lignes sont ok.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Public Function StartProcess(ByVal ProcessName As String, ByVal ContainerHandle As IntPtr, ByVal Rect As Rectangle) As Boolean
            Try
                p = New Process()
                p.StartInfo.FileName = ProcessName
                p.Start()
                p.WaitForInputIdle(-1)
                SetWindowPos(p.MainWindowHandle, HWND_TOP, Rect.Left, Rect.Top, Rect.Width, Rect.Height, SWP_NOACTIVATE Or SWP_SHOWWINDOW)
    '...
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. Accès à une propriété protégée
    Par diogene dans le forum C++Builder
    Réponses: 1
    Dernier message: 27/07/2006, 15h43
  2. Réponses: 4
    Dernier message: 22/12/2005, 11h43
  3. Interdire l'accès au propriétés de l'affichage
    Par ET_UHP dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 09/12/2005, 12h02
  4. [Problème] Accès aux propriétés de listes nommées avec []
    Par VincentL dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/10/2005, 16h13
  5. Accès aux propriétés ScrollBar d'un composant TMemo
    Par fausto dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/10/2003, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo