Łindołsowe okna

0

Mam dwa pytania:

  1. Jak pobrać pozycję akywnego okna?

  2. Jak pobrać listę wszystkich okien w Windows?


user111 Delphi 6 Pro.

0

Poszukaj w FAQ--You may say I am dreamer...

0

Jest o pozycji okien ale nie ma o liście wszystkich okien.

0

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)

0

A można jakiś bardziej czytelny przykładzik...

0

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?

0

Ja bym dał nie textout, a form1.caption....---------------------------
Delphi 6

Pozdrówka

0

thenkles napisał:
Ja bym dał nie textout, a form1.caption....
&gt

ale ja chcę zmienić tytuł aktywnej formy (i trochę po niej pomalować)

0

No to jeżeli chcesz sobie rysować, to może canvas.textout?---------------------------
Delphi 6

Pozdrówka

0

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}

0

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 &lt-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)

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1