AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

aktives Fensterhandle bekommen

Ein Thema von Alexander · begonnen am 28. Mär 2003 · letzter Beitrag vom 28. Mär 2003
Antwort Antwort
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

aktives Fensterhandle bekommen

  Alt 28. Mär 2003, 17:03
Hi
ich habe mal wieder eine Frage und zwar wie kann ich das Handle eines Fensters (gesamte Fenster...), das aktive und oben liegt herausfinden?
Nun kommt die Schwierigkeit. Normalerweise ginge, dass ja mit GetForeGroundWindow(), doch jetzt liegt mein Programm in der TNA und wenn auf das Icon ein Rechtsklich gemacht wird, erscheinnt ein PopUpMenü und wenn dann auf ein Item geklickt wird, soll das Handle herausgefungen werden.
Das Problem dabei ist ja, dass das Fenster nicht mehr aktiv ist (durch den Klick). D.h. ja das ich das Handle schon vorher rausbekommen muss. Nur wie?

//Nachtrag:
Folgendermaßen packe ich meine Anwendung in die TNA bzw. entferne es, usw.:
Delphi-Quellcode:
procedure TForm1.WMTASKBAREVENT(var message: TMessage);
var
  point: TPoint;
begin
  case message.LParamLo of
    WM_RBUTTONDOWN:
      begin
        GetCursorPos(point);
        popupmenu1.popup(point.x, point.y);
      end;
  end;
end;


procedure TaskBarAddIcon;
var tnid : TNOTIFYICONDATA ;
begin
    tnid.cbSize := sizeof(TNOTIFYICONDATA);
    tnid.Wnd := Form1.handle;
    tnid.uID := 1;
    tnid.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    tnid.uCallbackMessage := WM_TASKBAREVENT;
// tnid.hIcon := form1.image2.picture.icon.handle;
    tnid.hIcon := form1.Icon.Handle;
    strcopy(tnid.szTip,'TNA');
    Shell_NotifyIcon(NIM_ADD, @tnid);
end;

procedure TaskBarRemoveIcon;
var tnid : TNOTIFYICONDATA ;
begin
    tnid.cbSize := sizeof(TNOTIFYICONDATA);
    tnid.Wnd := Form1.handle;
    tnid.uID := 1;
    Shell_NotifyIcon(NIM_DELETE, @tnid);
end;
Alexander
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2
  Alt 28. Mär 2003, 17:07
Da durch den Klick im Popupmenü das aktive Fenster geändert wird, musst du das aktive Fenster ermitteln, bevor du im Popupmenü klickst.
Also z.B. bei WM_MOUSEMOVE über der Position des Popupmenüs.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#3
  Alt 28. Mär 2003, 17:58
hi, das dachte ich mir auch schon, doch irgendwie klappt, das nciht. Du meinst das so, oder?
Delphi-Quellcode:
procedure TForm1.WMTASKBAREVENT(var message: TMessage);
var
  point: TPoint;
begin
  case message.LParamLo of
    WM_RBUTTONDOWN:
      begin
        GetCursorPos(point);
        popupmenu1.popup(point.x, point.y);
      end;
    WM_MOUSEMOVE:
     begin
       test := GetForeGroundWindow();
     end;
  end;
end;
Alexander
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz