Avatar billede mahh Nybegynder
18. april 2000 - 15:06 Der er 3 kommentarer og
2 løsninger

Hvordan finder man vinduer?

Hvordan får jeg fat i handle til alle de vinduer/programmer der kører?

Jeg er klar over at det skal gøres med nogle API kald og jeg har forsøgt mig med GetWindow, men det giver en del problemer da det lader til at den løber for langt en gang imellem...

Lidt source kode ville ikke være af vejen.
Avatar billede sjensen Nybegynder
18. april 2000 - 15:34 #1
prøv at kigge i hjælpen under FindWindow. Det vil hjælpe dig lidt på vej.

For alle aktive winduer skal du først "enumerate" dem. D.v.s. at lade windows give dig en liste over hvilke vinduer der findes. EnumWindows kaldes det api. Denne funktion giver dig også en handle til hvert vindue.

For kode eks. kan jeg henvise til et svar Lange gav i et tidligere spm.:

http://www.eksperten.dk/spm.asp?id=2289

og hvis du kan bruge det og vil acceptere det som svar burde der falde lidt point af til ham også !!
Avatar billede jensaa Nybegynder
18. april 2000 - 17:56 #2
Jeg har et eksempel jeg baksede sammen til et program for et stykke tid siden.
Du kan lige sende en mail til rayman@superbruger.dk hvis du vil have det...
Avatar billede mahh Nybegynder
19. april 2000 - 07:08 #3
sjensen og jensaa > Det lader til at i begge to har ca. samme svar til det jeg leder efter, men efter jeg postede dette spørgsmål fandt jeg selv ud af det. Jeg vil dog fordele point'ene imellem jer og da jensaa sendte ikke mindre en 2 mail's med source kode til mig vil jeg give lidt flere point til ham, desuden ser det heller ikke ud til at sjensen har brug for point'ene.

Tak for jeres hurtige svar.
Avatar billede cybermike Nybegynder
19. april 2000 - 08:47 #4
Hvis du selv fandt ud af det kunne du så ikke lige smide koden herud så vi andre også kunne få glæde af den?
Avatar billede mahh Nybegynder
19. april 2000 - 09:51 #5
cybermike > Ok, jeg lægger min kode frem, men jeg vil ikke garentere noget som helst. Det virker ved mig.

Lav en Form med en Memo og en knap på.
Når der trykkes på knappen skal denne funktion køres:

procedure TForm1.Button1Click(Sender: TObject);
Var
WorkHandle : HWND;
Arr : Array[1..210] Of Char;
Streng : PChar;

begin
Memo1.Lines.Clear;
Streng := @Arr;
WorkHandle := GetForegroundWindow;
If WorkHandle <> 0 Then Begin
  If IsWindow(WorkHandle) Then Begin
  If IsWindowVisible(WorkHandle) Then Begin
    GetWindowText(Workhandle, Streng, 200);
    Memo1.Lines.Add(String(Streng));
  End;
  End;
  Repeat
  WorkHandle := GetWindow(WorkHandle, GW_HWNDNEXT);
  If WorkHandle <> 0 Then Begin
    If IsWindow(WorkHandle) Then Begin
    If IsWindowVisible(WorkHandle) Then Begin
      GetWindowText(WorkHandle, Streng, 200);
      Memo1.Lines.Add(String(Streng));
    End;
    End;
  End;
  Until WorkHandle = 0;
End;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester