begin process at 2008 07 05 13:29:16
1 205 182 membres
158 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Copier (ok) mais coller ? [ Divers / Débutant(e) ] (JulioDelphi)

Copier (ok) mais coller ? le 06/05/2008 20:28:31

JulioDelphi
Membre Club
(Admin CS)
iop !

Petit soucis avec un collage provenant du presse-papier, voila mon bout de code :

je pose un edit et 2 boutons, sur le bouton 1 (ajouter ClipBrd dans les uses) :
 ClipBoard.AsText := edit1.text;

puis sur le 2eme, je voudrais qu'il prenne la "prochaine application ouverte" (comme si je fais un alt-tab ou un application.minimise) et qu'il "colle" (puis entrer tant qu'on y est.)

J'avais bidouillé un keyb_event avec alt+tab puis ctrl + V puis enter mais c'est crade et c'est pas fiable DU TOUT (d'ailleurs rien ne s'est collé car tout est executé trop rapidement).

Donc existe t-il la possibilité - une fois mon application réduite ou alt-tabbée - de faire comme un "ClipBoard.Paste;" ou un "Api_Windows_que_je_ne_connais_pas.WMESSAGEPASTE;" peut importe l'endroit où je me trouve (sur un navigateur dans un champs de recherche, sous MSN en train de chatter, etc) ?

Re : Copier (ok) mais coller ? le 06/05/2008 22:22:00

Caribensila
Membre Club
Salut,

Et un glisser/coller ne te conviendrait-il pas?
L'application source envoie le msg msgInDrag à la fenêtre qui se trouve sous le curseur et... hop! 
Mais encore faut-il que l'application destinataire soit sensible à ce message...

Re : Copier (ok) mais coller ? le 06/05/2008 23:02:41

JulioDelphi
Membre Club
(Admin CS)
Non, enf ait, dans l'appli, il y a 2 boutons et 1 edit.
Le 1er mets simplement le texte de l'edit en clipboard et le second doit coller ce contenu dans l'appli suivante (alt-tab ou minimize).
Le glisser n'est pas possible :(

Re : Copier (ok) mais coller ? le 07/05/2008 10:05:34

cirec
Membre Club
(Admin CS)
Salut,

envoie un WM_PASTE

 
@+
Cirec


Re : Copier (ok) mais coller ? le 07/05/2008 10:07:58

cirec
Membre Club
(Admin CS)
j'ai oublié ...

tu pouvais le faire directement à la place de passer par l'unité ClipBrd

            Edit1.SelectAll;
            Edit1.CopyToClipboard;
            Application.ProcessMessages;




 
@+
Cirec


Re : Copier (ok) mais coller ? le 07/05/2008 10:41:00

JulioDelphi
Membre Club
(Admin CS)
Cirec: envoie un WM_PASTE
Mais encore ? ^^

Re : Copier (ok) mais coller ? le 07/05/2008 10:56:26

cirec
Membre Club
(Admin CS)
ben tu récupères le Handle de la fenêtre courante
puis:

  SendMessage(HandleFenetreCourante, WM_PASTE, 0, 0);
c'est tout

 
@+
Cirec


Re : Copier (ok) mais coller ? le 07/05/2008 12:21:54

JulioDelphi
Membre Club
(Admin CS)
okok, donc je fais un "application.minimize;" puis "recup le handle de la fenetre courante" puis "sendmsg wpaste", je tente ça dès que j'ai le temps :]
 (je bosse un minimum quand meme)

Re : Copier (ok) mais coller ? le 07/05/2008 14:43:42

JulioDelphi
Membre Club
(Admin CS)
Test non concluant :

procedure TForm1.Button2Click(Sender: TObject);
var
 fHandle:HWND;
begin
  application.ProcessMessages;
  application.minimize; // pour que la prochaine appli active soit le bon handle
  sleep(1000); // même sans, meme en passant par un timer pour faire un pause.
  fHandle:=GetFocus; // le handle en question
  SendMessage(LeHandle, WM_PASTE, 0, 0); // je lui envoie un "coller"
end;



so why ça marche pas donc !?

Re : Copier (ok) mais coller ? le 07/05/2008 15:42:05

cirec
Membre Club
(Admin CS)
Il  ne faut pas seulement récuperer le Handle de la fen^tre mais aussi celui de l'Edit ou du control qui doit recevoir le teste:

ce code fonctionne avec NotePad juste derièrre l'application

procedure TForm1.Button2Click(Sender: TObject);
Var LeHandle: THandle;
begin
  Edit1.SelectAll;
  Edit1.CopyToClipboard;
  Application.Minimize;
  Application.ProcessMessages;
  LeHandle := GetForeGroundWindow;
  LeHandle := FindWindowEx(LeHandle, 0, 'Edit', Nil);
  Sleep(50);
  SendMessage(LeHandle, WM_PASTE, 0, 0);
end;


 
@+
Cirec



[Page 1 Page 2]
Classé sous : alt, application, ok, copier, coller

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Redaction texte pour s...
Budget : 180€
Travail graphique- ill...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS