|
Trouver une ressource
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 : handle fenetre precise [ Système / Exécution ] (yannfrance)
Informations & options pour cette discussion
|
lundi 25 février 2008 à 20:36:29 |
handle fenetre precise

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 retourner le numero de handle pour ma_fenetre. Ok, mais le problème est que le titre de ma barre de dialogue change de nom souvent, donc, je ne peut pas de cette façon. Je peut recuperer aussi un handle via le Classe Name : Code : monhandle := FindWindow('#32770', nil) Ok, mais le problème est que la classe est #32770 et que cette classe me renvoie le handle de Nero, donc, ce n'est pas une solution non plus. Donc, premiere question, comment puis-je recuperer le handle de cette fenêtre? Deuxieme question et suggestion, le nom de la barre de dialogue est jamais identique, cepandant ,les derniers mot, eux le sont. Donc, ne peut-ont pas identifier le handle via le classe name #32770 et une partie du nom de la boite de dialogue (je dis bien une partie du texte) ? Merci beaucoup, cela me seras d'une grande utilité et un grand soulagement aussi
|
|
|
|
lundi 25 février 2008 à 22:19:39 |
Re : handle fenetre precise

Guillemouze
|
la classe de ta fenetre a le meme nom que celle de nero?! Avec quoi a tu recuperé la classe de ta fenetre?
|
|
|
|
mardi 26 février 2008 à 15:56:47 |
Re : handle fenetre precise

yannfrance
|
Bonjour,
Oui, je repete, la classe name est la même que nero #32770 Je l'ai récuperer avec : -WindowsSpy -Puis un scruteur de processus assez pousser qui utilise GetClassName pour récuperer les classes (classique). Donc, pas de doute, la classe est #32770 . Par consequent, il ne reste plus 36 solutions pour retrouver le handle de ma fenêtre, il me faut : Donner le classe name #32770 puis une partie seulement du texte que contient la barre de titre pour identifier le handle de cette fenêtre.
Merci beaucoup pour votre aide.
|
|
|
|
mercredi 27 février 2008 à 21:30:13 |
Re : handle fenetre precise

yannfrance
|
Bonsoir,
D'apres une longue recherche, ce serais faisable avec la fonction pos function Pos(Substr: string; S: string): Integer;
Description
La fonction Pos recherche une sous-chaîne, Substr, à l'intérieur d'une chaîne S. Substr et S sont des expressions de type chaîne.
Je ne vois pas comment l'adapter a ce que je veux faire. En attendant, je vais encore chercher.
|
|
|
|
jeudi 28 février 2008 à 09:55:48 |
Re : handle fenetre precise

Guillemouze
|
var
monHandle: THandle; MonBuffer: array[0..1024] of char; begin monHandle := findwindow(MonClassName, nil); GetWindowText(monHandle, MonBuffer, 1024); if Pos('La Chaine dans mon titre', string(MonBuffer)) <> 0 then C'est ok, la fenetre contient la sous chaine
|
|
|
|
jeudi 28 février 2008 à 18:11:58 |
Re : handle fenetre precise

yannfrance
|
Bonjour,
Merci pour la réponse que tu m'ai apporter. je ne sais pas si je m'y prend mal ou bien, mais ce code ne me retourne pas le handle que souhaite.
procedure TForm1.Button1Click(Sender: TObject); var monHandle: THandle; MonBuffer: array[0..1024] of char; begin monHandle := findwindow('#32770', Nil); GetWindowText(monHandle, MonBuffer, 1024); if Pos('la chaine', string(MonBuffer)) <> 0 then begin memo1.Text := IntToHex(monHandle, 8)+' - '+MonBuffer;
end; end; end.
Merci.
Ps, si je met <> 1 then il me retourne le handle de nero.
|
|
|
|
jeudi 28 février 2008 à 23:12:36 |
Re : handle fenetre precise
|
|
lundi 3 mars 2008 à 19:18:34 |
Re : handle fenetre precise

yannfrance
|
Bonjour
Merci pour le source, c'est exactement ce dont je chercher, ça fonctionne. Cependant, quand j'essai de l'integrer à mon projet, il me met une erreur: Non déclarer 'Ifthen' unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
const WM_CHERCHETOI = WM_USER + 1;
type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var CurrWindow: THandle; Buffer: array[0..1024] of char; CestMoi: Boolean; DemanderDeSeChercher: Boolean; begin //recherche l'instance de la classe dans la liste des fenetre windows //Si DemanderDeSeChercher est true, on envoie un message aux autres pour qu'ils se recherchent
Memo1.Lines.Clear;
CurrWindow := FindWindowEx(0, 0, PChar('#32770'), nil); //premiere fenetre while CurrWindow <> 0 do begin //lecture du caption de la fenetre GetWindowText(CurrWindow, Buffer, 1024); //verification que le titre contient mon handle CestMoi := Pos('Chat', string(Buffer)) <> 0; Memo1.Lines.Add(Format('[%s] %d "%s"', [IfThen(CestMoi, ' MOI ', 'PAS MOI'), CurrWindow, Buffer])); //envoie de la demande de se rechercher si ce n'est pas moi if (DemanderDeSeChercher) and (not CestMoi) then PostMessage(CurrWindow, WM_CHERCHETOI, 0, 0);
//fenetre suivante CurrWindow := FindWindowEx(0, CurrWindow, PChar('#32770'), nil); end; end;
Il me met une erreur sur cette ligne : Memo1.Lines.Add(Format('[%s] %d "%s"', [IfThen(CestMoi, ' MOI ', 'PAS MOI'), CurrWindow, Buffer]));
En m'informant que IfThen n'est pas déclarer. Merci beaucoup pour ce source, exelent. J'ai chercher pendant plus d'une semaine à la recherche d'informations comme ce source, et je n'ai pas trouver, pourtant, j'ai beaucoup chercher.
|
|
|
|
lundi 3 mars 2008 à 22:39:34 |
Re : handle fenetre precise

Guillemouze
|
Réponse acceptée !
selon delphiprog (dans les commentaires de la source), le ifthen est apparu avec delphi 6 (perso je l'ai compilé avec D7). sinon, cette fonction est tres simple. Son implementation doit ressembler a qqchose pret a ca :
function IfThen(const Condition: Boolean: const ValueIfTrue, ValueIfFalse: string): string; begin if Condition then ValueIfTrue else ValueIfFalse; end;
|
|
|
|
mardi 4 mars 2008 à 16:12:37 |
Re : handle fenetre precise

yannfrance
|
Bonjour,
Merci beaucoup, en faite, ça fonctionne, c'est juste que j'ai oublier de déclarer Math, StrUtils; dans uses.
Bon, par contre, comme je te l'ai dit plus haut, sans ton aide, je n'aurais jamais trouver. j'ai chercher pendant une grosse semaine sans relâche. Ou as tu trouver les informations necessaire pour créer cet exelent source? Merci beaucoup.
|
|
|
Cette discussion est classé dans : fenetre, handle, classe, dialogue, precise
Répondre à ce message
Sujets en rapport avec ce message
Recup texte d'une statusbar par handle/classe [ par replic ]
salut, j'aimerai recuperer le texte de la statusbar d'une application en execution. Puis-je y arriver par l'intermediaire du handle de celle et de la
fermeture d'une fenetre Internet Explorer ou explorer [ par lixter ]
SalutVoilà mon prblmJe récupère le handle d'une fenetre Internet explorer ou explorer et je voudrais la fermer sans tuer le processj'utilise donc une
Créer Objet sur une autre fenetre sachant son handle. [ par TiDaN326 ]
Bonjour à tous,Je voudrais savoir s'il est possible de créer un bouton sur une fenetre, sachant l'handle de celle-ci. J'imagine que la question pourra
Recuperation du HANDLE d'une fenetre [ par guy jeuniaux ]
Bonjour à tous,Je voudrais récupérer le HANDLE d'une fenetre afin de controler son état.Cette Fenetre est celle d'une commande DOS d'un batch lancé pa
handle de fenetre non valide [ par simonpelloquin ]
Bonjour, Un PC me fait des misères... J'ai une appli Delphi-Paradox qui m'affiche régulièrement (mais pas systématiquement) le message "Handle de fenê
Affichage dans une fenetre directX [ par blackharu ]
bonjour,Voilà j'ai une application faite avec directX dont je n'est pas les sources...Cependant en utilisant des fonctions windows...j'arrive à recupé
Retrouver le handle de tout les controles d'une fenetre [ par Nostaroth ]
Bonjour a tous! Donc voila je suis confronté a un probleme enorme: Je voudrai recuperer le handle de tout les controle d'une fenetre du genre:Creation
Savoir si une application est en plein écran [ par bionicleman ]
Bonjour,Je suis entrain de développer une application et je voudrais qu'elle "remplace" le programme de mise en veille de windows.J'ai un bout de code
Récupérer tous les handles des contrôles d'une fenêtre (avec TabControl) [ par jnmchl ]
Bonjour,La question est dans le titre est bien qu'un post existe quelques lignes auparavant ... Cirec me dirait : cherche au topic :<a href="http://ww
serialisation: heritage & évolutivité [ par Guillemouze ]
Salut tout le monde,je suis sur un probleme de serialisation de mes objets, et je cherche une maniere efficace pour la sauvegarde/chargement.Ma struct
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|