begin process at 2010 03 15 16:15:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Réseau & Internet

 > 

Scan Url de IEFrame


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Scan Url de IEFrame

vendredi 5 octobre 2007 à 00:19:14 | Scan Url de IEFrame

bilal

voici un code qui devrait fonctionner mais je suis bloqué a 2 lignes
je l'ai traduit pour le c++ builer 6, compilation 5/5

[CODE]
Exemple de récupération de Handle avec FindWindow et
FindWindowEx, et récupération de texte d'un Edit d'une
application externe

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{------------------------------------------------------------
ATTENTION : S'il y a plusieurs instances de l'Explorateur ou
d'Internet Explorer, ce code prendra la première fenêtre dans
l'ordre Z, si l'on veut sélectionner la bonne fenêtre, il faut
utiliser un autre code
-------------------------------------------------------------}

//Récupération de l'URL en cours dans Internet Explorer
function GetCurrentInternetExplorerURL:string;
var Explorer,ClientWork,Toolbar,ComboBox,ComboBoxChild,Edit:HWND;
Mem:integer;
begin

//Retrouve le Handle de la fenêtre principale
Explorer:=FindWindow('IEFrame',nil);
if Explorer=0 then
Result:=''
else
begin
//Cherche le Handle de la fenêtre de travail
ClientWork:=FindWindowEx(Explorer,0,'WorkerA',nil);
if ClientWork=0 then
//Compatibilité XP / 98
ClientWork:=FindWindowEx(Explorer,0,'WorkerW',nil);
//Retrouve le Handle de la ToolBar
Toolbar:=FindWindowEx(ClientWork,0,'ReBarWindow32',nil);
//Cherche le Handle du ComboBox
ComboBox:=FindWindowEx(Toolbar,0,'ComboBoxEx32', nil);
ComboBoxChild:=FindWindowEx(ComboBox,0,'ComboBox',nil);
//Atteint l'Edit et envoie un message pour avoir le texte
Edit:=FindWindowEx(ComboBoxChild,0,'Edit',nil);
Mem:=SendMessage(Edit,WM_GETTEXTLENGTH,0,0)+1;
SetLength(Result,Mem);
//Envoi du message
SendMessage(Edit,WM_GETTEXT,Mem,Integer(@Result[1]));
end;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Label1.Caption:= GetCurrentInternetExplorerURL;

end;

end.
[/CODE]

  tout est ok mais je n'obtient aucun resultat !!?  

SetLength(Result,Mem);

//Envoi du message
SendMessage(Edit,WM_GETTEXT,Mem,Integer(@Result[1]));
  j'ai traduit c'est 2 lignes mais toujours rien par :

  char *Result; 
  Result= new char[Mem+1];
  GetWindowText(Edit,Result,Mem+1);
  listView->Items->Add( Result );

  ou

   char Result[128];
   GetWindowText(Edit, Result, 256);
   SendMessage(listView->Handle , LB_ADDSTRING, 0, (long)Result);


merci d'avance
Vegeta
dimanche 7 octobre 2007 à 16:17:49 | Re : Scan Url de IEFrame

bilal

Réponse acceptée !
mon problem est resolu !

voici mon code :


Le problem que j'avais est que mon IE6 contient la toolbar msn !!

ce qui me permet d'avoir plusieurs fenettres dans 1 grace aux onglets



la methode de lire les url ne fonctionne pas si on utilise des onglets !!!



je vais quant meme essayer trouver une solution global !

pour Mozilla qu'elle est le chemin ?

Avec ma methode je peux afficher les classes enfants et ......



voici ma methode pour c++builder 6


void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Form1->listView->Items->Clear();
   EnumWindows(WNDENUMPROC (EnumWindowsProc), 0);
}

LRESULT CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
  char szClass[128];
  GetClassName( hwnd, szClass, sizeof(szClass) );

 if(!strcmp(szClass, "IEFrame"))
 {
   // Recherche des classes Enfants
     EnumChildWindows(hwnd, WNDENUMPROC(EnumChildProc),0); 

    char szTitre[128];
    GetWindowTextA(hwnd, szTitre, sizeof(szTitre));

   bool trouver = false;
  for(  int i=0; i<Form1->listView->Items->Count  && trouver==false;           i++ )
    {
      if( AnsiString(szTitre) == Form1->listView->Items->Strings[i] )
      trouver = true;
    }

    if(!trouver)   // titre des nouvelles fenetre IE
    Form1->listView->Items->Add( szTitre ); 
 }
  return true;
}


LRESULT CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
{
  // Type de classe enfant :
 // WorkerW/A; ReBarWindow32; ComboBoxEx32; ComboBox; Edit.

  char szClass[128];
  GetClassName( hwnd, szClass, sizeof(szClass) );

  if(!strcmp(szClass, "Edit"))
  {
    char szTitre[128];
    SendMessage(hwnd,WM_GETTEXT,sizeof(szTitre),LPARAM(szTitre));
    Form1->listView->Items->Add( szTitre );
  }

 return true;
}

Voilà

Vegeta


Cette discussion est classée dans : edit, handle, result, nil, mem


Répondre à ce message

Sujets en rapport avec ce message

Nom d'une Font à partir de son handle. [ par HeavenForsaker ] Bonjour, J'aimerai obtenir le nom de la police d'un contrôle Edit d'une application externe à partir de son handle. Pour le handle la fonction est l police d'edit de boite de dialogue [ par by_rabbit_08 ] Bonsoir!J'ai une boite de dialogue, crée dans un fichier resource, dans la quelle j'ai un edit. Comment est-ce que je fais changer la police de cet ed HINSTANCE / HANDLE [ par Ombitious_Developper ] Salut :Quelle est la différence entre un HANDLE et un HINSTANCE? Est ce que la conversion HANDLE-->HINSTANCE est valide? Est ce que la fonctions mem ou str ? [ par HeavenForsaker ] Bonjour,Quels fonctions doit on utiliser de préférence entre memcpy et strncpy par exemple, sont elles strictement identique point de vue performance getoenfilename -> ??? [ par stefbuet ] salut,sur une source (http://www.cppfrance.com/code.aspx?ID=28478)j'ai extrait une fonction de la librairy créé et ais essayé de la faire fonctioner, edit box message box et une button [ par unionx ] bonjour a tous sous MFC j'ai une button et un edit box et quand on click sur le button le text de edit box va affiché sur un MessageBox , comment je v Problème de compilation [ par killer75 ] Voici donc mon pb:helpers.h #ifndef _HELPERS_H# define _HELPERS_H#include long strToLong(std::string const &a, int b);long strToLongDef(std::stri HEXADECIMALE [ par nicompx ] Bonjour,Pouvez-vous me dire comment placer le résultat d'une requête MySQL (API C) dans un emplacement mémoire et l'afficher?En sachant que le résulta Mask Edit sous fond transparent [ par toxjamescook ] Bonjour,j'aimerais savoir si il est possible de rendre le fond transparent d'un Mask Edit ou d'un Edit. j'ai pu voir pas mal de code permettant de cha


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales