Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Setzt andere Programme in die TNA (https://www.delphipraxis.net/6237-setzt-andere-programme-die-tna.html)

Alexander 4. Jul 2003 15:10


Setzt andere Programme in die TNA
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe gestern auch mal wieder was programmiert.
Nur weiß ich einfach nicht wie ich es nennen soll...Deswegen habe ich bisher auch noch nichts am ayout gemacht.
Also das Programm entfernt fremde Programme/FEnster aus der Taskbar und setzt sie in ein PopUp-Menü in die TNA (links neben der Uhr).
Zusätzlich gibt es einen Fenster-Manager, mit dem man die Fenster verstecken und wieder in die Taskbar einfügen kann.
Manchmal kommt es allerdings mit dem Fenstermanager zu einer Zugriffsverletzung. Bisher weiß ich nicht woran es liegt. Vielleicht könnt ihr mir helfen?
Vielen Dank schon mal für eure konstruktive Kritik!

sakura 4. Jul 2003 15:16

Doppelpost gelöscht, passiert ja jedem mal ;-)

...:cat:...

Alexander 4. Jul 2003 15:18

Danke!!
Freue mich schon auf eure Kritik :wink:

sakura 4. Jul 2003 15:18

Lade die Datei doch bitte noch einmal hoch, die Forensoftware hat da einen Fehler gemacht :twisted:

...:cat:...

Daniel B 4. Jul 2003 15:22

Zitat:

Zitat von sakura
Lade die Datei doch bitte noch einmal hoch, die Forensoftware hat da einen Fehler gemacht :twisted:

Du bist Schuld! :twisted: :mrgreen:

Das liegt daran, das beide angehängten Datei, weil Doppelpost, die gleiche ID haben, löscht Du ein Attachment oder gar den ganzen Beitrag, so erschwinden alle Files. Ist leider so.

Grüsse, Daniel :hi:

Alexander 4. Jul 2003 15:24

Hi,
jetzt sollte es funktionieren.
Wäre toll, wenn ihr nen tollen Namen hättet. Mir fällt einfach gar nichts ein...Danke!! Auch für die Kritik wie oben schon erwähnt

Luckie 4. Jul 2003 15:49

Taskbar-Button-Manager = TBM :wink:

Nicht schlecht die Idee. Nur das mit dem "aktives fenster hinzufügen" ist etwas buggy. Jedes mal, wen ich da drauf klickke haut der mir alle Fenster noch mal in die Liste rein.
Desweiteren reagiert das StringGrid nicht auf mein MouseWheel. Nimm mal einen Listview.
Dann würde ich vor jeden Eintrag eine Checkbox setzten, ob es als Icon in die TNA soll oder nicht und auf den Button zum Verstecken bzw. Anzeigen verzichten.

Wie hast du denn das eigentlich gelöst?

Ach wa sichg jetzt nicht ausprobiert habe: Reagieren die Icons, die du mit deinem programm in die ZNA gepackt hast eigenmtlich auch auf Klicks? Dann wäre es geil und wenn man dann so ein fenster minimiert, dass es dann automatisch wieder in die TNA geht. dann könnte man was drauß machen auf Downloadportalen oder sogar als Shareware.

Alexander 4. Jul 2003 16:10

Hi Luckie,
erstmal danke, dass du dir die Mühe machst mein Programm zu testen.
Das mit der checkbox gefällt mir auch besser. Dann kann ich mir auch die Sternchen sparen. Das werde ich morgen oder so ändern.
Ich bentze ein ValueListEditor. Kann eine Listview auch "Tabellen" darstellen? So dass ich Handle und Caption des Fensters ins Listview aufnehmen kann? (habe noch nie mit gearbeitet.)
Zitat:

Ach wa sichg jetzt nicht ausprobiert habe: Reagieren die Icons, die du mit deinem programm in die ZNA gepackt hast eigenmtlich auch auf Klicks?
Meinst du die Items im PopUpMenue (also die in der TNA?)? Ja, wenn man drauf klickt öffnet sich das FEnster und das Item entfernt sich

Ähm was ist am "aktives Fenster verstecken" denn so buggy? Das letzte Fenster was aktiv war, wird in die TNA (mein PopUp-Menü) minimiert.
Bei mir klappt es wunderbar

Das mit dem verstecken bzw an zeigen mache ich ganz einfach so:
Delphi-Quellcode:
  ShowWindow(StrToInt(fenster[High(fenster), 0]), SW_HIDE);
Oder was meintest du?

Luckie 4. Jul 2003 18:39

Ja ein Listview ist die rechte Seite vom Explorer zum Beispiel.

Nun, ich meine, wie du das fremde Programm in die TNA mit seinen Anwendungsicon bekommst.

Dann wäre noch schön, wenn man das Irgendwo speichern könnte so dass es beim nächsten Start wieder in der TNA ist, ohne, dass man es erneut der Liste Hinzufügen muß.

Jens Schumann 4. Jul 2003 18:58

Hallo,
Du solltest den Explorer nicht zum verstecken anbieten. Wenn man den Explorer versteckt, verschwindet die Shell bzw der Desktop.
Ist mir gerade passiert.

Alexander 4. Jul 2003 19:12

@Luckie: Achja der Explorer. Stimmt. Wusste doch das ich was übersehen habe
Ich muss wohl ein Genie sein. Die Anwendungsicons von den Programmen werden eigentlich gar nicht mit ins PopUp-Menü aufgenommen :mrgreen:
Ich speichere Handle und Titel in einem Array of String (dynamisch). eigentlich ganz simpel.
Das mit dem Speichern baue ich auch noch ein, das ist eine gute Idee.
Morgen werde ich das aber erstmal auf eine ListView umbauen.

@Jens Schumann
Du meinst jetzt nciht den Windows Explorer (also den Datei-Explorer), sondern den Explorer, oder?
Wie hast du denn den Explorer versteckt bekommen?
Eigentlich sollten nämlich im Fenster-Manager nur die FEnster aufgelistet werden, die auch in der Taskbar sind. Oder hast du es über "aktives Fenster hinzufügen" gemacht? Wenn ja dann muss ich das auch noch überprüfen :(

Danke aber schon mal für's testen und für die Ideen. Noch mehr Ideen und TEst's schaden natürlich nicht ;-)

Jens Schumann 4. Jul 2003 19:17

Hallo Alexander,
ich habe den Fenstermanager aufgerufen. Im TStringGrid werden mir die gestarteten Windows Explorer Instanzen angezeigt. Die sind ja auch in der TaskBar zu sehen. Dann habe ich eine Explorer Instanz markiert und auf verstecken geklickt. Und - schwubs war der TaskBar verschwunden.

Alexander 4. Jul 2003 19:19

Och ne...Wie kommmt das denn. Bei mir tritt dieser FEhler nicht auf.
Welches Windows benutzt du?

toms 4. Jul 2003 20:36

Delphi Anwendungen lassen sich nicht verstecken.

Alexander 5. Jul 2003 11:03

Hi,
vielen Dank für's testen.
Doch meinst du Anwendungen die mit Delphi erstellt worden sind oder Delphi selbst?
Denn mit normalen Anwendungen wie beispielsweise der IE sollte keine Probleme machen.
Einzig MDI-Anwendungen und solche wie Delphi (mit verschiedenen Forms) machen Probleme. Da über "aktives Fenster verstecken" bisher nur das aktive Fenster versteckt wird. Also bei Delphi nur das Fenster (z.B. der Editor), das aktiv ist, versteckt wird. Die anderen bleiben sichtbar.
Hat vielleicht wer eine Lösung wie ich von einem Handle des "Child-Fensters" das "Main-Fenster-Handle" bekommen kann?

Chewie 5. Jul 2003 11:19

Zitat:

Zitat von alexander
Hat vielleicht wer eine Lösung wie ich von einem Handle des "Child-Fensters" das "Main-Fenster-Handle" bekommen kann?

Das sollte so gehen:
Delphi-Quellcode:
ShowWindow(GetWindow(Form1.Handle, GW_OWNER), SW_HIDE);

Alexander 6. Jul 2003 09:26

Liste der Anhänge anzeigen (Anzahl: 1)
So nun ist Version 0.8 fertig.
Ich habe nun eine Listview verwendet. Und in die Listview Checkboxen für's anzeigen und verbergen mit eingebaut.
Dann wurde noch ein Bug enfernt. (manchmal kan eine Zugriffsverletzung.)
Außerdem hat das Programm jetzt dank Luckie einen Namen und das Design wurde dementsprechend geändert.

In der nächsten Verison werde ich dann die anderen Vorschläge berücksichtigen wie zb der von Luckie, dass man die versteckten Fenster speichern und somit beim nächsten Start gleich verstecken kann, usw.

Vielen Dank schonmal für's weitere Testen.

PS: @mods könnt ihr vielleicht in meinem ersten Post die zip ersetzen oder einen Verweiß hierauf setzen? Danke!

Tom 6. Jul 2003 09:55

Version 0.8

Ein paar "Unschönheiten":
- Wieso wird Deine eigenes Programm angezeigt? Entbehrt einem gewissen Sinn.
- Wieso reagiert Dein TNA-Icon nicht auf Klick bzw. Doppelklick.
- Das Popup schließt sich nicht, wenn man daneben klickt.
- Wieso zeigt das Hint der TNA "TNA" ab?

Die Bug-Abteilung:
- Ein Programm mal ausgewählt in der Fensterliste
- Fenstermanager schließen
- Es wird doppelt im TNA-Popup angezeigt ...
- Fenstermanager wieder aufrufen: auch doppelt ...
- Beim 1. der dopplten mal die Checkbox angeklickt ...
- Eine kleine Zugriffsverletzung ...

Und noch einer:
- Akitves Fenster hinzufügen (wird jetzt nur einmal angezeigt ...)
- Dein Programm schließen
- Und nun, wie komme ich wieder an mein Programm?

Testsystem: W2k

Alexander 6. Jul 2003 10:13

Hi,
das mit dem ersten Bug ist mir auch gerade aufgefallen.
Doch irgendwie ist das total unlogisch.
wollte kucken ob vielleicht meine Funktion 2 mal ausgeführt wird (wäre ja logisch), also schreibe ich ShowMessage(''); dahin, dann tritt dieser Fehler mit den 2 Einträgen nicht auf, nehme ich das ShowMessage wieder weg, ist er wieder da.
Kann mir irgendwer mal sagen, was sich delphi dabei denkt? :mrgreen:

Diese "Unschönheiten" wollte ich eigentlich auch schon korrigiert haben, wusste das ich was vergessen habe...Bisauf das sich das PopUp nicht schließt weiß irgendwer wie das geht?

Und der 2. "bug" das weiß ich kommt auch noch....

Gast 6. Jul 2003 12:28

GetParent() ist sogar noch simpler als GetWindow *grins*

Zeig deinen Code mal komplett, dann kann man dir evtl. helfen.

Alexander 6. Jul 2003 12:34

Hi Assarbad,
habe jetzt schon einen neuen Thread aufgemacht...
http://www.delphipraxis.net/viewtopi...e397585e98994a
Danke schon mal!! ;-)

Alexander 6. Jul 2003 14:14

so neue Version (0.9.3).
es wurden nun auch die kleineren Sachen sowie beide Bugs, von denen Tom berichtet hat, behoben, sowie noch ein paar kleinere Sachen...
Download diesmal hier: www.alexander-franz.de/downloads/datei/tbm.zip
Danke schon mal für's weitere Testen ;-)

Alexander 10. Jul 2003 14:19

Re: Setzt andere Programme in die TNA
 
und wieder eine neue Version (V 1.02)
es wurde wieder Bugs entfernt, ein paar kleinere Mängel entfernt und und und...
Unter anderem werden jetzt im PopUpMenü die Bildchen der einzelnen Fenster angezeigt. (sehen aber teilweise etwas schrarz aus. Liegt irgendwie an der ImageList. Wisst ihr wieso?)
Wäre toll wenn ihr es euch nochmals ankucken könntet.
Danke schon mal!!
Download
PS: Was könnte man noch ergänzen?

Uncle Cracker 10. Jul 2003 15:39

Re: Setzt andere Programme in die TNA
 
Hi alexander,

Eine kleine Änderung wer gut, nämlich man sollte den Fenstermanager aktualiesieren können.

Sonst eigentlich ganz gut :thuimb:

Alexander 10. Jul 2003 15:59

Re: Setzt andere Programme in die TNA
 
Hi Uncle Cracker,
super Idee, Danke!!
neue Version: Klick
In der neuen Verison wurde nur die Akutalisierung mit F5 mit eingebaut.
Habt ihr weitere Ideen?

FriFra 10. Jul 2003 16:08

Re: Setzt andere Programme in die TNA
 
Zitat:

Zitat von alexander
und wieder eine neue Version (V 1.02)
es wurde wieder Bugs entfernt, ein paar kleinere Mängel entfernt und und und...
Unter anderem werden jetzt im PopUpMenü die Bildchen der einzelnen Fenster angezeigt. (sehen aber teilweise etwas schrarz aus. Liegt irgendwie an der ImageList. Wisst ihr wieso?)
Wäre toll wenn ihr es euch nochmals ankucken könntet.
Danke schon mal!!
Download
PS: Was könnte man noch ergänzen?


Das schwarz liegt am Alpha-Blending (WinXP) und ist wohl ein kleiner Bug in der Komponente...
Das Problem kann man aber wie folgt lösen:
Delphi-Quellcode:
var
  SHFileInfo: TSHFileInfo;
  SysIcons: THandle;
  SystemIcons: TImageList;
begin
  SysIcons := SHGetFileInfo('', 0, SHFileInfo, SizeOf(SHFileInfo),
    SHGFI_SYSICONINDEX or SHGFI_SMALLICON);

  SystemIcon := TImageList.Create;
  SystemIcons.Handle := SysIcons; //SystemImagelist zuweisen...
  SystemIcons.ShareImages := True;

  {Wenn ImageList1 einmal der Inhalt der SystemImageList zugewiesen wurde
  unterstützt diese fortan 32Bit Icons mit Alphablending}
  ImageList1.Assign(SystemIcons);
  ImageList1.Clear;

  SystemIcons.Free;
Falls Du 32x32 Icons verwenden willst, musst Du natürlich SHGFI_SMALLICON gegen SHGFI_LARGEICON tauschen.

Alexander 10. Jul 2003 16:40

Re: Setzt andere Programme in die TNA
 
Super, Danke!!!
neue Version ist dank FriFra wieder unter der gleichen Adresse wie zu vor erreichbar
Habt irh noch Erweiterungsideen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 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