2009-09-16 3 views
2

J'ai essayé le code suivant mais il ne récupère pas le texte de la fenêtre de premier plan!getwindowtext ne pas récupérer le texte

procedure TForm1.Button1Click(Sender: TObject); 
var 
    title : pansichar; 
    s : string; 
begin 
    GetWindowText(GetForegroundWindow(), title,GetWindowTextLength(GetForegroundWindow()) + 1); 
    s := title; 
    showmessage(s); 
end; 
+0

Votre code dit "Form1" pour moi. Et ceci ** est ** le titre (= texte) de la fenêtre active en cours. –

+0

Ce pointeur "title" ne devrait-il pas indiquer quelque chose sur le chemin? – mj2008

+0

son me donner accès erreur de voilation et si j'initialise le titre il donne juste valeur initialisée –

Répondre

9

Utilisez celui-ci:

var 
    hwndForeground: HWND; 
    titleLength: Integer; 
    title: string; 
begin 
    hwndForeground := GetForegroundWindow(); 
    titleLength := GetWindowTextLength(hwndForeground); 
    SetLength(title, titleLength); 
    GetWindowText(hwndForeground, PChar(title), titleLength + 1); 
    title := PChar(title); 

    ShowMessage(title); 
end; 
+0

J'ai édité ceci pour le faire fonctionner aussi bien pour les versions Unicode de Delphi. –

3

Remplacer cette ligne:

title : pansichar; 

avec ceci:

title: array[0..255] of Char; 
2

Essayez ce code

procedure TForm1.Button1Click(Sender: TObject); 
var 
    title : array[0..254] of Char; 
    s : string; 
begin 
    GetWindowText(GetForegroundWindow(), title,255); 
    s := title; 
    showmessage(s); 
end; 

Bye.

+0

maintenant je reçois cette erreur: [Erreur] Unit1.pas (31): Types incompatibles: 'Array' et 'PAnsiChar' –

+0

btw j'utilise Delphi 7 peut-être widechars ne sont pas pris en charge –

+0

oui enlever '' large '' l'a fait travail mais pourquoi widechar n'a pas fonctionné? –

1
 
procedure TForm1.Button1Click(Sender: TObject); 
var 
    liHwnd, liLength : Integer; 
    lpChar : PChar; 
begin 
    liHwnd := GetForegroundWindow(); 
    liLength := GetWindowTextLength(liHwnd) + 1; 
    lpChar := StrAlloc(liLength); 
    Try 
    GetWindowText(liHwnd, lpChar, liLength); 

    showmessage(lpChar); 
    Finally 
    StrDispose(lpChar); 
    End; 
end; 
Questions connexes