AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Taskliste und eigene Anwendung/Fenster ignorieren
Thema durchsuchen
Ansicht
Themen-Optionen

Taskliste und eigene Anwendung/Fenster ignorieren

Offene Frage von "Pichel"
Ein Thema von Pichel · begonnen am 2. Mai 2008 · letzter Beitrag vom 19. Mai 2008
Antwort Antwort
Benutzerbild von Pichel
Pichel

Registriert seit: 25. Feb 2005
Ort: Kassel
65 Beiträge
 
Delphi 7 Professional
 
#1

Taskliste und eigene Anwendung/Fenster ignorieren

  Alt 2. Mai 2008, 13:19
Hallöchen.

Irgendwie bin ich scheinbar zu blöd

Ich möchte eine Taskliste wie sie bei ALT-Tab angezeigt wird ermitteln und die eigene Anwendung dabei ignorieren.
Dies sollte ja eigentlich über das Handle ganz einfach möglich sein, ABER irgendwie gibt in dem Fall der Vergleich zweier Handle (die bei Debuggen exakt gleich sind) immer dass sie ungleich wären.

Ich verwende den hier im Forum gefundenen und minimal abgeänderten Code:
Code:
function myTasksListUpdate(ExcludeWindow: HWnd): Boolean;
  function EnumWin(wHdl: HWnd; FirstWnd: PCardinal): Boolean; stdcall;
  var WinText : AnsiString;
      ProcId : cardinal;
      f      : Boolean;
  begin
    Result := True;
    if IsWindowVisible(wHdl) then begin
      if (GetWindowLong(wHdl, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) <> 0
        then wHdl:= GetWindowLong(wHdl, GWL_HWNDPARENT);
      if ExcludeWindow <> wHdl then begin
        ProcId := GetWindowThreadProcessID(wHdl, nil);
        SetLength(WinText, SendMessage(wHdl, WM_GETTEXTLENGTH, 0, 0));
        SendMessage(wHdl, WM_GETTEXT, Length(WinText) + 1, integer(WinText));
        if (length(WinText) > 0) and (FirstWnd^ <> ProcId)
          then myTaskList.AddObject(WinText, Pointer(wHdl));
        FirstWnd^ := ProcId;
      end;
    end;
  end;
var FirstWnd : cardinal;
begin
  myTaskList.Clear;
  myTaskList.BeginUpdate;
  try
    Result := EnumWindows(@EnumWin, cardinal(@FirstWnd));
  finally
    myTaskList.EndUpdate;
  end;
end;
myTaskList ist eine Var vom Type TStrings und die Zeile die IMMER True ergibt auch wenn die Handles gleich sind ist:
Code:
if ExcludeWindow <> wHdl then begin
Vielleicht hat ja noch irgendjemand eine Idee dazu.
Grüße aus Kassel.

Konfuzius sprach: Etwas lernen und sich immer wieder darin üben - schafft das nicht auch Befriedigung?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Taskliste und eigene Anwendung/Fenster ignorieren

  Alt 10. Mai 2008, 19:59
Seltsamerweise gibt ShowMessage(Inttostr(ExcludeWindow)) vor dieser Zeile einen anderen Wert aus
als im Debugger angezeigt wird.
if ExcludeWindow <> wHdl then begin
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Taskliste und eigene Anwendung/Fenster ignorieren

  Alt 12. Mai 2008, 18:00
Hast du schon eine Lösung gefunden?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Pichel
Pichel

Registriert seit: 25. Feb 2005
Ort: Kassel
65 Beiträge
 
Delphi 7 Professional
 
#4

Re: Taskliste und eigene Anwendung/Fenster ignorieren

  Alt 14. Mai 2008, 06:41
Bisher keine wirklich Gute.

Nachdem ich alle Fenster habe gehe ich über die Caption und schmeisse die eigene raus. Das ist nicht das was ich suchte da es zumindestens theoretisch möglich wäre, dass ein anderes Fenster die gleiche Caption hat ;-(
Grüße aus Kassel.

Konfuzius sprach: Etwas lernen und sich immer wieder darin üben - schafft das nicht auch Befriedigung?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: Taskliste und eigene Anwendung/Fenster ignorieren

  Alt 14. Mai 2008, 07:03
Ich habe gemerkt, dass wenn ExcludeWindow global deklariert wird und nicht als Parameter übergeben wird, funktioniert der Vergleich.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Pichel
Pichel

Registriert seit: 25. Feb 2005
Ort: Kassel
65 Beiträge
 
Delphi 7 Professional
 
#6

Re: Taskliste und eigene Anwendung/Fenster ignorieren

  Alt 19. Mai 2008, 07:07
Zitat von toms:
Ich habe gemerkt, dass wenn ExcludeWindow global deklariert wird und nicht als Parameter übergeben wird, funktioniert der Vergleich.
Hab das jetzt auch mal probiert und kann es bestätigen, jedoch so richtig erklären kann ich mir das nicht.
Naja, hauptsache es funktioniert
Grüße aus Kassel.

Konfuzius sprach: Etwas lernen und sich immer wieder darin üben - schafft das nicht auch Befriedigung?
  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 16:39 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