Mam dwa pytania:
-
Jak pobrać pozycję akywnego okna?
-
Jak pobrać listę wszystkich okien w Windows?
user111 Delphi 6 Pro.
Mam dwa pytania:
Jak pobrać pozycję akywnego okna?
Jak pobrać listę wszystkich okien w Windows?
user111 Delphi 6 Pro.
Poszukaj w FAQ--You may say I am dreamer...
Jest o pozycji okien ale nie ma o liście wszystkich okien.
Na drugie? Proszę:
EnumDesktopWindows(hDesktop, * uchwyt pulpitu np. GetWindowDesktop
TwojaFunkcja, * wskaźnik do funkcji która będzie wykonywana dla każdego okna
Param // 32-bitowy parametr funkcji
);
Twoja funkcja powinna mieć deklarację:
EnumWindowsProc(UchwytOkna,Param):boolean;
Więcej szukaj w pomocy Windows SDK
--Pomoc i analiza źródeł wszystko czego potrzebujesz ( no i może odrobinę logicznego myślenia)
A można jakiś bardziej czytelny przykładzik...
i jeszcze coś do pierwszego pytania:
mam taki kod:
procedure TForm1.Button1Click(Sender: TObject);
var DC : thandle;
begin
dc:=getactivewindow;
textout(dc,0,0,PChar('QWERTY'),StrLen(PChar('QWERTY')));
end;
i umieszczam go w timerze i teraz jeśli aktywnym okem jest okno mojego programu napis wyświetli się poprawinie (na pasku tytułu) ale jeżeli aktywnym oknem jest jakieś inne okno napis wyświetli się w lewym górnym rogu ekranu. Co zrobić aby napis wyświetlał się zawsze na pasku tytułu?
Pozdrówka
thenkles napisał:
Ja bym dał nie textout, a form1.caption....
>
ale ja chcę zmienić tytuł aktywnej formy (i trochę po niej pomalować)
Pozdrówka
thenkles napisał:
No to jeżeli chcesz sobie rysować, to może canvas.textout?
ale to ma rysować po aktywnej formie (wszystko jedno jakiej) i tak też robi tyle że jeśli aktywnym formularzem jest np. Object Inspector to text wyświetla się w lewym górnym rogu ekranu (0,0) {glowa}
user111 napisał:
A można jakiś bardziej czytelny przykładzik...
Można:
function EnumWindowsProc1(UchwytOkna:HWND;Param:integer):boolean;
var
Form1: TForm1;
f:function (UchwytOkna:HWND;Param:integer):boolean;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
F:=EnumWindowsProc1;
EnumWindows(@F,0);
end;
function EnumWindowsProc1(UchwytOkna:HWND;Param:integer):boolean;
var
q:PChar;
begin
q:=nil;
if IsWindow(UchwytOkna) then begin <-tu jest jakiś błąd, nie wykrywa że to okno, ale jeszcze trochę nad tym posiedzę
GetWindowText(UchwytOkna,q,31);
Form1.ListBox1.Items.Add(StrPas(q));
end;
Result:=true;
end;
end.
--Pomoc i analiza źródeł wszystko czego potrzebujesz ( no i może odrobinę logicznego myślenia)
user111 napisał:
A można jakiś bardziej czytelny przykładzik...
Jeszcze sobie przeanalizuj tutaj
http://www.4programmers.net/forum/index.php?action=show&id=6197--Pawel {Delphi6 }
Po pierwsze: naciśnij F1