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 : 1948
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...

{C / C++ / C++.NET} COPIE AVEC SHFILEOPERATION
Bonjour Voici un exemple de l'utilisation de la fonction SHFileOperation de l'api windows. La ...

{Visual Basic, VB6, VB.NET, VB 2005} BITBLT ENTRE 2 PICTUREBOX EN VB NET
Cette source permet de transférer une partie d'une PictureBox dans une autre PictureBox. C'est pour ...

{Delphi} ALGORITHME DE HASH LEA-128
Bonjour, voici un algorithme de hash (fait maison). Si vous ne le savez pas, le hash est le princip...

{C / C++ / C++.NET} [C/WIN32][DRIVER] DÉTECTION DE CRÉATION OU DE SUPPRESSION DE PROCESSUS.
Yop à tous, Voici un petite driver qui permet la détection de la création ou de la suppression d'...

{Visual Basic, VB6, VB.NET, VB 2005} IP_PUBLIQUE_INTERNETGETCONNECTEDSTATE
reprise du code de "Jack" pour trouver l'IP derrière un routeur avec une vérification si on est con...

{Visual Basic, VB6, VB.NET, VB 2005} FACTURATION ET GESTION DE VENTES ARTICLES
Ce code en VBA Excel permet de générer des factures numérotées pour des produits vendus à des client...

{Delphi} PACKAGE MICROSOFT
Ce package réunit la plupart des fonctionnalités de Microsoft sous forme d'ActiveX : * MsAgent *...

{Delphi} COMPOSANT TLOG UTILISANT UNE DLL
Bonjour, voici une nouvelle idée farfelue : je me suis dit que j'avais envie de faire une DLL pour ...

{C / C++ / C++.NET} [C/WIN32] INJECTION DE DLL 2 MÉTHODES (REMOTETHREAD PROPRE & REGISTRY)
Yop à tous, Je sais qu'il existe déjà quelques source sur l'injection de dll, mais ma source appo...