![]() |
Active und Inactive Fesnter Auflisten?
Hi Leute,
weiss jemand, wie ich das gerade avtie Fenster ermitteln kann? Gibts da vielleicht 'n Event? Wie bekomme ich die Liste der inaktiven Anwendungen heraus, also die, die normalerweise in der taskleiste rechts neben dem Start-button stehen? Die Aktiviere ich eine Anwendung? MFG Thomas |
Mit EnumWindows kannst du alle Fenster auflisten. Und mit IsWindowVisible kannst du alle sichtbaren rausfiltern.
Code:
[b]type[/b]
PMyEnumParam = ^TMyEnumParam; TMyEnumParam = [b]record[/b] lv: TListview; [b]end[/b]; [b]function[/b] GetWindows([b]const[/b] hWnd : Longword; Param: PMyEnumParam): LongBool; [b]stdcall[/b]; [b]var[/b] Len : Longint; S : [b]String[/b]; li: TListItem; [b]begin[/b] Result := True; [b]if[/b] [b]not[/b] ( IsWindow(hWnd) [b]and[/b] IsWindowVisible(hWnd) ) [b]then[/b] Exit; Len := SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0); [b]if[/b] Len > 0 [b]then[/b] [b]begin[/b] SetLength(S, Len); SendMessage(hWnd, WM_GETTEXT, Len + 1, Longint(Pchar(S))); li := Param.lv.Items.Add; li.Caption := s; li.SubItems.Add(IntToStr(hWnd)); [b]end[/b]; [i]// mit Result = False kann die Callbackfunktion vorzeitig verlassen werden[/i] [b]end[/b]; [b]procedure[/b] TForm1.Button1Click(Sender: TObject); [b]var[/b] Param: TMyEnumParam; [b]begin[/b] Param.lv := Listview1; EnumWindows(@GetWindows, LPARAM(@Param)); [b]end[/b]; |
Hi,
erstmal Vielen Dank an Luckie, für den Code. Der code zeigt mir aber alle fenster an, ich wollt ja nur die auf der Task-Leiste haben. Ich bin nämlich dabei eine eigene Shell zu proggen, und da muss ich ja wissen welche Fenster da sind. Das tükische ist nur, dass Delphi zum Besipiel 3 Fenster hat, die ja nicht alle auf der Task-Leiste angezeigt werden. Kann man die noch irgendwie filtern? MFG Thomas |
Taskleiste oder DNU-Leiste :?:
(DNU = Ding neben der Uhr) :mrgreen: |
Liste der Anhänge anzeigen (Anzahl: 1)
Diese Leiste Meine ich:
http://www.delphipraxis.net/attached...1031989623.jpg |
Hm, das wird schwer, wenn nicht sogar unmöglich.
Was willst du denn machen? Eventuell gibt es einen anderen gangebaren Weg. |
Ich möchte gerne eine eigene Shell Programmieren, also eine eigene Explorer.exe. Mit einer Task-Leiste....
Und für die Taskleiste muss ich ja die einträge wissen ;-) MFG Thomas |
Ach du meine Güte. :shock: Hast du schlecht geschlafen oder was?
Hm, aber sorry, da kann ich dir nicht weiterhelfen. Ich hätte noch nicht mal eine Ansatz für so etwas. |
Na, Luckie? Du müsstest es doch eigentlich wissen, immerhin hat doch Microsoft bei dir abgeschrieben? :wink:
PSDK: Indexeintrag "Taskbar Buttons, Managing" ... und lesen, Thomas! |
Ups. Hm, ist wohl nocht etwas früh. :?
Aber mir waren die Stichworte nicht geläufig. |
Darin steht nur, wie man ein button anlegen kann, nicht aber, wie man vorhandene Buttons ausliest.
MFg Thomas |
Muß auch andersrum gehen sonst macht das ja keinen Sinn.
Das wäre wohl der Einstieg: ![]() Einfach mal etwas rumwühlen. |
Mathias kannst du mir mal den Link schicken, den du meintest, ich find den indexeintrag net?
MFG thomas |
Ähm... Wenn du deinen Explorer-Ersatz schreibst, heißt das, es gibt gar keine Taskleiste, die du auslesen kannst...
Aber in eurem tollen Artikel steht's doch drin: Zitat:
|
Hi OregonGhost.
Hat ja keiner gesagt, dass es einfach werden würde. Die Alternative wäre dann wohl ein Shell-Hook (WH_SHELL), mit dem du prüfst ob ein Fenster erzeugt (HSHELL_WINDOWCREATED) oder entfernt (HSHELL_WINDOWDESTROYED) wird. Es gibt ja inzwischen ein paar freie Shell-Ersatze (Ersätze? :wink:) für den Win-Desktop. In der aktuellen Ausgabe 10 der PC WELT wurden einige vorgestellt. Vielleicht gibt´s zu einem dazu ja auch den Source, so dass Thomas zumindest mal schauen könnte, wie die das gemacht haben. @Thomas: Link? Keine Ahnung, ich nutze das PSDK offline, da wäre der Link der hier:
Code:
mk:@MSITStore:<Dein PSDK-Ordner>\help\shellcc.chm::/platform/shell/programmersguide/shell_int/shell_int_programming/taskbar.htm
|
Hi,
kannst du mir sagen, wo ich es downloaden kann? |
Ich hab mir die shells bei pc-welt mal angeschaut, und festgestellt, dass die tatsächlich mit Source-Code erhältlich sind.
Leider sind sämtliche Shells in C++ oder C geschriben. Da ich null ahnung von beidem Habe helfen mir diese Shells auch net weiter :-( Hier die Liste der Shells: ![]() Vielleicht hat ja der ein oder andere ahnung von C oder C++, und kann mir dann sagen wie ich es in Delphi machen muss??? MFG Thomas |
Was du machen könntest, wäre nach den Funktionen, die du laut SDK mit den Taskbarbuttons zu tun haben, in dem Source zu suchen und zu schauen, wie die Funktionen da verwendet wurden. Dafür brauchst du kaum C/C++-Kenntnisse.
|
Also Hier:
![]() und dann Downloads->Full Downloaded. Dann wird alles heruntergeladen und du kannst, nach dem downloaden, aussuchen was du installieren willst. Wenn du nicht alles runterladen willst kannst du unter Downloads->Install auswählen was du haben willst dann wird auch nur das installiert und reuntergeladen. Wenn du z.B. Direct X.X Programmierung nicht haben willst!!! Allerdings bei einer Neuistallation hast du, vorrausgesetzt du hast nicht den PSDK-Ordner gesichert, keine Installation mehr und du musst es nochmal machen! |
Weiss Jemand denn, wie ich fenster einzelnen prozessen zuordnen kann?
|
Mit GetWindowThreadProcessID.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz