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

API, COM et SDKs Delphi Discussion :

Envoyer du texte dans une autre application (ou send key)


Sujet :

API, COM et SDKs Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut Envoyer du texte dans une autre application (ou send key)
    salut

    d'après un ami, on appel ça le send key

    je vous explique ce que je cherche à faire : je voudrais faire dans un 1er temps un pti programme qui envois un msg de masse aux contacts avec qui je parle

    pour cela dans une list view j'ai listé les fenêtres de mes contacts ainsi que leur handle ...

    je voudrais taper dans un Tedit mon text et clicker sur un boutton qui utilisera les handle pour envoyer le texte à toute mes fenêtres de conversation msn

    ensuite il faudra émuler la touche entre je suppose ?

    merci

  2. #2
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    j'ai trouvé qq chsoe qui illustre exactement ce que je voulais faire !

    enfin presque ...

    en utilisant SndKey32.pas téléchargeable sur le site

    http://delphi.about.com/od/adptips2004/a/bltip1104_3.htm

    il envois bien le texte, mais le problème c'est qu'il envoit à la fenetre active :s

    il me faut donc modifier la fonction ? jai regardé vite fais mais ça ma lair assez complexe ...

    je veux choisir la fenetre grace au handle je le rappel

    j'espère qu'il existe qq chose de plsu facile ? :s

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    personne n'a une idée?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Salut,

    Pour envoyer des caractères à une fenêtre externe à ton application, tu dois connaître le Handle de la fenêtre réceptrice. Attention, ce n'est pas forcément le handle de la fenêtre de l'application mais peut être le handle du champ qui recevra ta chaine de caractère.
    Je t'ai mis un bout de code qui envoie une chaine de caractère à Notepad suivi d'un retour chariot. J'ai ajouté une proc qui passe ta fenêtre réceptrice en avant-plan mais ce n'est pas obligatoire :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    // Positionne la fenêtre en avant-plan :
    Procedure TForm1.SetForeground(Handle : Hwnd);
    begin
      If IsIconic(Handle) Then
        ShowWindow(Handle,SW_RESTORE);
      SetForegroundWindow(Handle);
    end;
     
    // Envoi d'une chaine de caractère à une fenêtre :
    // Handle = Handle de la fenêtre
    // vString = Chaine de caractère
    procedure TForm1.SendString (Handle : HWND; vString : String);
    var
      i: integer;
      vKey: longint;
    begin
      SetforeGround(Handle);  // Mise en avant plan de la fenêtre
      if vString <> '' then
      begin
        i := 1;
        While i <= length(vString) do
        begin
          vKey:= ord(vString[i]);
          PostMessage(Handle, WM_CHAR, vKey, 0);
          inc(i);
        end;
      end;
    end;
     
     
    // Envoi d'une touche système (ENTER par exemple)
    procedure TForm1.SendStringKey (Handle : HWND; vKey : LongInt );
    begin
      SetforeGround(Handle);
      PostMessage(Handle, WM_CHAR, vKey, 0);
    end;
     
     
    procedure TForm1.Envoi;
    var
      Handle : Hwnd;
    begin
      // Handle de la fenêtre Notepad :
      Handle := FindWindow(Pchar('Notepad'),Pchar('Sans titre - Bloc-notes'));
      // Handle du champ Edit de Notepad :
      Handle := GetWindow(Handle, GW_CHILD); // Ou bien utiliser FindWindowEx si GetWindow ne retourne pas la bonne fenêtre
      SendString(Handle,'ça marche !');
      SendStringKey(Handle,VK_RETURN);
    end;
    Il existe des outils qui te permettent de connaître les classes des fenêtres (utilisée par FindWindow) des applications ouverte sous windows (comme WinInspector par exemple). Mais ça tu le sais peut-être déjà

    En espérant avoir répondu à ta question ...
    Bon courage !
    Manu

Discussions similaires

  1. [XL-2010] VBA - sélection du texte dans une autre application
    Par wd_newbie dans le forum Excel
    Réponses: 3
    Dernier message: 22/06/2015, 15h39
  2. [Débutant] Simuler la saisie de texte dans une autre application
    Par shaun_the_sheep dans le forum C#
    Réponses: 7
    Dernier message: 28/11/2012, 16h58
  3. Modifier un texte dans une autre frame
    Par hotkebab99 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/02/2006, 14h46
  4. Comment envoyer du texte dans une fenêtre spéciale ?
    Par Coussati dans le forum Composants VCL
    Réponses: 11
    Dernier message: 25/10/2005, 09h00
  5. comment ecrire du texte dans une window application
    Par gaut dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/07/2003, 10h23

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