Accueil > Forum > > > > ecrir dans un Fenetre etrangere ?
ecrir dans un Fenetre etrangere ?
jeudi 29 mai 2008 à 16:23:14 |
ecrir dans un Fenetre etrangere ?

Delphiturbo
|
Salut je voudrais ercrir dans cet Fenedere etrangere et avec Winspy j ai fai comme ca : var wnd: HWND; begin wnd : = FindWindow(' #32770',' Text '); wnd : = FindWindowEx(wnd, 0, ' RichEdit20A', nil); if wnd <> 0 then begin // ShowMessage('Window found. Handle: ' + IntToStr(wnd)); //writeln('Window found. Handle: ' + IntToStr(wnd)); SendMessage(wnd, WM_SetText, 0, LongInt(PChar(Edit1.Text))); end; end. mais ne marche pas!
|
|
jeudi 29 mai 2008 à 17:43:57 |
Re : ecrir dans un Fenetre etrangere ?

Bacterius
|
Bonjour, DelphiTurbo : je ne vois pas le contenu de Edit1.Text ...
Et aussi la variable WND est utilisée 2 fois : autrement dit le resultat de cette instruction "FindWindow('#32770',' Text ');" est stockée dans Wnd, mais cette valeur est ensuite écrasée par "wnd := FindWindowEx(wnd, 0, 'RichEdit20A', nil);".
Donc la première instruction ne sert à rien, puisqu'elle est écrasée ... essaye de faire 2 variables, puis :
if (wnd <> 0) and (wnd2 <> 0) then begin .... end;
Maintenant il est possible que la fenêtre soit également protégée .... et la tu ne peux rien faire !
Je n'y connais pas grand-chose en messages Windows, mais quelqu'un de plus experimenté viendra certainement à ton secours 
J'espère néanmoins t'avoir aidé ...
Cordialement, Bacterius !
|
|
jeudi 29 mai 2008 à 17:45:32 |
Re : ecrir dans un Fenetre etrangere ?

Bacterius
|
Ah oui autre chose : j'ai un mauvais souvenir de mes tentatives sur les handles, avec les
if wnd <> 0 then
parfois cela ne veut rien dire : essaye d'enlever cette ligne (pour que le SendMessage s'éxecute forcément), car il ne s'execute peut être pas ...
Cordialement, Bacterius !
|
|
jeudi 29 mai 2008 à 19:21:21 |
Re : ecrir dans un Fenetre etrangere ?

Delphiturbo
|
Salut
sa marche pas! procedure TForm1.Button2Click(Sender: TObject); var wnd1,wnd2: THandle; begin wnd1 := FindWindow('#32770',' Text '); wnd2 := FindWindowEx(wnd2, 0, 'RichEdit20A', nil); if (wnd1 <> 0) and (wnd2 <> 0) then begin SendMessage(wnd2, WM_SetText, 0, LongInt(PChar(Edit1.Text))); end;
end;
|
|
jeudi 29 mai 2008 à 19:37:39 |
Re : ecrir dans un Fenetre etrangere ?

Bacterius
|
Ok ok ...
Ben la je ne peux vraiment plus t'aider ... désolé
Cordialement, Bacterius !
|
|
jeudi 29 mai 2008 à 19:59:18 |
Re : ecrir dans un Fenetre etrangere ?
|
jeudi 29 mai 2008 à 20:33:19 |
Re : ecrir dans un Fenetre etrangere ?

Delphiturbo
|
Mais je peut fassilment touver la Fenter metrev la visible et Invisible la Fenter s' apelle Texteinstellungen
Windows.ShowWindow(FindWindow(nil,PChar('Texteinstellungen')),SW_show); //.. Windows.ShowWindow(FindWindow(nil,PChar('Texteinstellungen')),SW_HIDE);
|
|
jeudi 29 mai 2008 à 20:39:31 |
Re : ecrir dans un Fenetre etrangere ?

Bacterius
|
Bonjour, DelphiTurbo je ne peux pas t'aider (pas assez experimenté en Delphi), mais quelqu'un t'apportera de l'aide bientot, peut-être ce soir ou demain eventuellement ! Mais fais un petit effort sur l'écriture s'il te plait ... un minimum quoi ... Merci :)
Cordialement, Bacterius !
|
|
dimanche 1 juin 2008 à 18:22:30 |
Re : ecrir dans un Fenetre etrangere ?

rt15
|
Réponse acceptée !
Salut, Bacterius -> Remarque sur ton premier post la "première instruction" sert à récupérer un handle sur la fenêtre "Text". Ce handle est ensuite passé en paramètre à FindWindowEx. Donc la première ligne sert effectivement à quelque chose. DelphiTurbo -> Sous Windows, les fenêtres sont des objets avec lesquels on peut interragir en les désignant par un handle (Un numéro codé sur 32 bits). De plus, tous les composants (Boutons, zones de texts) sont composés de une ou plusieurs fenêtres (En fait certaines librairies ne se servent plus de ce système de fenêtres, mais bon restons simples.) Ton application peut récupérer un handle sur une autre fenêtre, puis s'en utiliser des fonctions de Windows en leurs passant ce handle en paramètre pour dire à Windows que tu veux interagir avec cette fenêtre et pas une autre. Les handles sont valide dans une instance d'application qui seulement (Exception exceptées... restons encore une fois simple). Ca c'était pour la théorie que tu connaissais peut être déjà. Ici : Windows.ShowWindow(FindWindow( nil,PChar(' Texteinstellungen')),SW_HIDE); tu récupères un handle sur la fenêtre principal de l'application. Tu peux effectivement afficher/cacher cette fenêtre, modifier le titre de cette fenêtre... Mais ce qui t'intéresse, ce n'est pas cette fenêtre, mais celle qui s'occupe de la zone de texte un peu plus bas. Il faut donc que tu récupères un handle sur cette fenêtre. Sous Windows, les fenêtres forment une arborescence qu'il faut que tu parcours pour parvenir à la bonne fenêtre. C'est un peu ce que tu fais dans ton premier post dans lequel tu récupère d'abord un handle de fenêtre principale pour ensuite chercher une autre fenêtre fille de celle-ci avec FindWindowEx. Il faut que tu procède de la même manière. Tu auras peut être à réaliser plusieurs FindWindowEx en fonction de la profondeur de l'arboresence des fenêtres. A la place de FindWindowEx, tu peux aussi passer par GetWindow ou encore EnumChildWindows. Dans tout les cas, il va falloire que tu récupère un maximum d'informations sur l'architecture de l'application cible : par exemple le nom et la classe de toutes les fenêtres parentes de la zone de texte. On voit que la zone de text est dans l'équivalent d'une TabSheet de Delphi. Peut être que la fenêtre de TabSheet est parente de celle de la zone de fenêtre. Peut être pas. Pour le savoir facilement, il faudrait que tu utilise un logiciel capable de t'afficher ce type de données. Si tu as Visual Studio, tu as Spy++. Sinon, tu peux utiliser ce logiciel. Tu peux aussi coder ton propre logiciel en Delphi pour afficher toute l'arbo dans un TreeView.  A la fin, ton code risque de ressembler à ça : wnd : = FindWindow(nil,' Texteinstellungen'); if wnd = 0 thenTraitement erreur
wnd : = FindWindowEx(wnd, 0, ' PageControl', nil); if wnd = 0 thenTraitement erreurwnd : = FindWindowEx(wnd, 0, ' TabSheet', 'Text'); if wnd = 0 thenTraitement erreurwnd : = FindWindowEx(wnd, 0, ' TextBox', nil); if wnd = 0 thenTraitement erreur
SendMessage(wnd, WM_SetText, 0, LongInt(PChar(Edit1.Text)));
Ah vi, comme le dit Bacterius, il se peut que la fenêtre soit "portégée", ou que modifier son contenu ne donne pas le résultat escompté. Ces problèmes, bien que peu probables dans ton cas, serait contournable en simulant un utilisateur plutôt qu'en utilisant un message WM_SETTEXT. Dans tous les cas, tu devrais pouvoir afficher/cacher cette fenêtre (Cette text box...) comme tu l'as fait avec la fenêtre principale, pour vérifier que tu disposes bien du bon handle.
Bonne chance.
|
|
dimanche 1 juin 2008 à 18:46:50 |
Re : ecrir dans un Fenetre etrangere ?

Delphiturbo
|
Merci bien sa marche tres bien maintenent
bey
|
|
Cette discussion est classée dans : fenetre, begin, ecrir, etrangere, wnd
Répondre à ce message
Sujets en rapport avec ce message
glut : redimensionement fenetre [ par stick059 ]
Bonjour tout le monde !Voila, j'ai un petit problème avec le code suivant :program Template;uses Windows, Messages, glut, OpenGL
Fenetre MDI [ par develomagaly ]
VOila j'ai une fenetre parents avec des fenetres Mdichild qui s'ouvre en cliquant sur le menu. Le but est de ne pas pouvoir ouvrir deux fenetres fille
fenetre en arriere plan [ par totolito3535 ]
Bonjour à tous, apres des recherches infructueuses, je m'adresses aux expert Delphi.Pour faire simple mon probleme est les suivant : mon application g
Question aux internautes [ par Bacterius ]
Bonjour, je voudrais juste savoir s'il est possible d'exprimer deux résultats d'une opération sans passer par "begin" "end" .Exemple :begin if
Opinion sur un composant TTreePanel [ par Francky23012301 ]
Salut à tous,Ca commence à etre de notoriété internationale : Francky et le Design, ca fait deux .Alors quitte à faire un truc autant faire un truc sy
trés urgent(probléme de programmation) [ par amine52002 ]
bonsoir ,je suis debutant en programmation et j'ai voulé creer un programme qui permet d'extraire un ensemble de points à partir de la silhouette d'un
Connexion avec IBExpert [ par grandyaka54 ]
Bonjour,Travaillant sur un projet en Delphi avec IBExpert, j'aimerai avoir la possibilité de garder mon application IBExpert ouverte pendant la progra
Comment relier deux modules de codes d'un combobox? [ par leader2000 ]
Salut á Tous! Je vous demande de me venir en aide s'il vous plait.j'ai avec moi ces codes (filtrage, somme, enregistrement, etc).En runtime, quand j
Tableau 2 dimensions [ par lusitano69 ]
Bonjour je m'explique je voudrais avec un string que j ai récupéré(contient des coordonées de X,Y par exemple) remplir un tableau à 2 dimensions mais
handle fenetre precise [ par yannfrance ]
Bonsoir,Je souhaiterais récuperer le handle d'une fenêtre bien precise.Si je fais :Code :monhandle := FindWindow(nil, ma_fenetre);-FinWindow va bien r
Livres en rapport
|
Derniers Blogs
[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|