Les Snippets

Connexion

Envoyer une chaîne vers notepad sans enregistrement de fichier

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 24/09/2008 15:05:08 et initié par Exploreur [Liste]
Date de mise à jour : 24/09/2008 15:13:14
Vue : 649
Catégorie(s) : API
Langages dispo pour ce code :
- VB6, VBA



Langage : VB6 , VBA
Date ajout : 24/09/2008
Posté par Exploreur [Liste]
DateMAJ : 24/09/2008
Private Const WM_SETTEXT    As Long &HC&
Private Const WM_CLOSE      As Long &H10&
Private Const HTCAPTION     As Long 2&
' API : retourne le handle d'une sous-fenêtre depuis le handle  d'une fenêtre parente
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWndParent As LongByVal hwndChildAfter As Long, ByVal lpszClass As String, ByVal lpszWindow As String) As Long
' API : envoie un message à  un handle (fenêtre ou system)
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As LongByVal Msg As Long, wParam As Any, lParam As Any) As  Long
' API : change le texte d'une fenêtre  identifiée par son handle
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As LongByVal lpString As String) As Long
'
Public Function SendTextToNotepad(ByVal sString As String, Optional ByVal vsTitle As Variant) As Boolean
' sString   -> chaîne à transmettre à notepad
' vsTitle   -> chaîne optionnelle pour personnaliser le caption  de notepad
' retourne l'état de  réussite
' *nécessite la fonction 'InstanceToWnd'  disponible ici :  http://www.codyx.org/snippet_recuperer-hwnd-handle-partir-pid-process-id_451.aspx#1462
'   lance notepad
    Dim lPID As Long
    lPID = Shell("notepad.exe", vbNormalFocus)
    DoEvents
    
    If lPID Then
'       récupère le handle du notepad  ouvert
        Dim nhWnd As Long
        nhWnd = InstanceToWnd(lPID)
        
        If nhWnd Then
'           récupère le handle  de la zone de texte du notepad
            Dim thWnd As Long
            thWnd = FindWindowEx(nhWnd, 0&, "Edit", vbNullString)
            
            If thWnd Then
'               envoie le texte  dans la zone de texte
                If SendMessage(thWnd, WM_SETTEXT,  ByVal 0&, ByVal sString) Then
'                   réussite, on personalise le  titre
                    SendTextToNotepad = True
                    If Not IsMissing(vsTitle) Then
                        If VarType(vsTitle) = vbString Then Call  SetWindowText(nhWnd, CStr(vsTitle))
                    End If
                Else
'                   échec de  l'envoi, on ne laisse pas la fenêtre vide  ouverte
                    Call SendMessage(nhWnd, WM_CLOSE, ByVal  HTCAPTION, ByVal  vbNullString)
                End If
            End If
        End If
    End If
End Function


' ------------------------ ' 3 EXEMPLES D'UTILISATION ' ------------------------ Private Sub Command1_Click() '   va ouvrir 3 "nouveaux documents notepad non-enregistrés", et y mettre : '   1 : une chaine en paramètre (exemple VB6 et VBA)     If Not SendTextToNotepad("je suis un texte" & vbCrLf & "multiligne non enregistré. " & _                              "Une aide sur une méthode par exemple...""'Developed By Exploreur'"Then _         MsgBox "Echec de l'envoi du texte vers notepad" '   2 : le contenu du presse-papier, s'il y a (exemple VB6 uniquement)     If Clipboard.GetFormat(vbCFText) Then SendTextToNotepad Clipboard.GetText '   3 : le listing des DLL présentes dans SYSTEM32 (exemple VB6 et VBA nécessitant OS Win2000 ou supp)     Dim asRet() As String, sPath As String     sPath = Environ$("WINDIR") & "\system32\"     'http://www.codyx.org/snippet_lister-tous-fichiers-repertoire_198.aspx#688     If GetFilesPathFromDirectory(sPath, asRet, "*.dll") > -1 Then SendTextToNotepad Join(asRet, vbCrLf), "Listing des DLL"     Erase asRet      End Sub

Snippets en rapport avec : Send, Api, Hwnd, Notepad, Pid



Codes sources en rapport avec : Send, Api, Hwnd, Notepad, Pid

{Visual Basic, VB6, VB.NET, VB 2005} TUER UNE/DES SESSION(S) CACHÉE(S) D'EXCEL À PARTIR D'UNE AUTRE SESSION
Cette source(fichier excel) permet d'arreter une ou plusieurs session excel caché et ce a partir d'u...

{Visual Basic, VB6, VB.NET, VB 2005} LABEL UNICODE
Voici un petit control label qui permet d'afficher des cacarctères unicodes. certe iln'est pas tota...

{Visual Basic, VB6, VB.NET, VB 2005} GÉNÉRER UN DOCUMENT RTF EN VBA/VB AMÉLIORÉ
Bonjour, Souvenez vous le Orohena à déposé une source GÉNÉRER UN DOCUMENT RTF EN VBA/VB le 07/11/20...

{C / C++ / C++.NET} [WIN32] AGENDA / ORGANISEUR (GESTION DU CONTRÔLE "CALENDRIER")
Bonjour, Pour continuer dans la lignée des petits utilitaires pratiques, mais sans plus, voici main...

{Visual Basic, VB6, VB.NET, VB 2005} INFORMATIONS SYSTÈME
Classe pour récupérer quelques informations système. - Version de windows (à partir de windows 95 e...

{Visual Basic, VB6, VB.NET, VB 2005} INITIALISER LA COULEUR PAR DEFAUT D'UNE BOITE DE DIALOGUE COULEUR
Permet d'ouvrir une boite de de dialogue couleur et d'initiliser la couleur par défaut grâce à l'api...

{Visual Basic, VB6, VB.NET, VB 2005} VBZIP ZIP ET UNZIP EN VB.NET
application simple qui traite les archives au format Zip création d'archive , ajout de fichiers ,...

{Visual Basic, VB6, VB.NET, VB 2005} COMPARER DEUX AVI ET EN TROUVER LES POINTS COMMUNS (GENERIQUES)
Salut, A terme ce programme serra capable de trouver les génériques dans une série d'aimés. ...

{Delphi} COMPOSANT TDBPTRACKBARVOLUME - JOUEZ AVEC LE SON !
Hello, suite à cette source : http://www.delphifr.com/codes/VOLUMESYSTRAY-OUVRIR-SNDVOL32-EXE-PLUS...

{Visual Basic, VB6, VB.NET, VB 2005} API WIN32 FACILE
petit exemple d'utilisation des api j'ai utilisé P/Invoke Interop Assistant pour les quelques fo...