Autor |
Beitrag |
Nano-Ware
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: So 30.10.11 21:21
Hey,
wie kann ich die Titelleiste ANDERER Programme um weitere Buttons (neben Maximieren, Minimieren, ...) erweitern? Es muss bei jedem anderen Programm sein. Geht das irgendwie? Und wenn möglich performant.
Dankeschön
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: So 30.10.11 22:26
Nein, das ist so nicht ohne weiteres möglich.
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
Nano-Ware 
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: So 30.10.11 22:40
Ich kenne viele Programme, bei denen das "scheinbar" ohne weiteres geht. Ich hab nur leider keine Idee, wie das gehen könnte, ich weis nur, dass es geht (; und ich hoff ihr könnt mir in Sachen "wie" helfen.
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: So 30.10.11 23:11
Normale Buttons und Controls kann man jedenfalls erzeugen, indem man (zb. mit CreateRemotethread) im Kontext des anderem Prozesses das Control erstellt, den Parent richtig setzt und einen Handler für die Messages bereitstellt. Das habe ich schonmal irgendwo gesehen.
|
|
Nano-Ware 
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: So 30.10.11 23:34
Ich kann mit der Antwort leider nicht anfangen. Währe es Möglich ein Codebeispiel zu geben?
Danke
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 31.10.11 02:52
So einfach ist das nicht. Ich habe es noch nicht einmal im eigenen Programm wirklich gut hinbekommen. Und es gibt auch nicht viele Programme, die das so gut hinbekommen wie z.B. TeamViewer.
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mo 31.10.11 13:59
Das Problem ist nicht, dass es möglich ist, in einem anderen Programm Buttons zu hinterlegen. Aber ich meine, dass - wenn das so einfach wäre, den Hackern wirklich JEDE Tür geöffnet wäre, das Programm nach belieben zu manipulieren, und spätestens dann wird das zu einem Problem.
Außerdem, was soll denn der zusätzlich Button bewirken? Jedes Programm hat doch sehr unterschiedliche Aufgaben. Das eine bearbeitet Texte, das andere Bilder, das nächste eine Datenbank, dann gibt es Auswerteprogramme für Messgeräte, Simulationsprogramme, Spiele .... Da kann doch ein einfacher Button nicht bei jedem Programm Sinnvolles bewirken, oder? Oder soll bloß das Programm ferngesteuert geschlossen werden oder ähnliche "globale" Operationen, die nichts mit der eigentlichen Aufgabe des Programms zu tun haben.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 31.10.11 14:56
Tranx hat folgendes geschrieben : | Da kann doch ein einfacher Button nicht bei jedem Programm Sinnvolles bewirken, oder? |
Es gibt dafür durchaus Anwendungszwecke, siehe TeamViewer, wo du das Fenster alleine fernsteuern lassen oder remote anzeigen kannst.
Ein Problem ist aber, dass die Programme voneinander nichts wissen und so die Buttons schon mal übereinander landen. Deshalb wäre da ein horizontaler manueller Offset sehr wichtig (den bisher noch kein solches Programm hat).
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mo 31.10.11 15:00
Aber Teamviwer arbeitet doch nicht über Buttons, sondern - wenn ich das recht verstehe - über Tastatur- und Maus-Ereignisse. Es nutzt die normale Softwareumgebung und macht nichts anderes, als dass nicht die Tastatur und die Maus des Arbeitsplatzrechners, sondern eines Remoterechners die Befehler gibt.
Oder liege ich da völlig verkehrt? Wenn bei uns der IT-Dienstleister mit Teamviewer auf unserem Server arbeitet, passiert genau das von mir Beschriebene.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
vagtler
      
Beiträge: 96
Erhaltene Danke: 24
Delphi 2010, C# (VS 2012), Objective-C, Java
|
Verfasst: Mo 31.10.11 16:07
TeamViewer kann noch einiges mehr - u.a. die von Sebastian beschriebenen Funktionalitäten.
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 31.10.11 16:31
Für die Phantasielosen, die nicht wissen, für was ein zusätzlicher Button sinnvoll ist:
MultiMon erzeugt für jedes Window einen zusätzlichen Button, um ein Fenster zwischen 2 Monitoren mit einem Klick hin und her zu schieben.
www.mediachance.com/free/multimon.htm
www.mediachance.com/free/mmtaskbar21.exe
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 31.10.11 17:50
@ Tranx: Das sieht so aus:

Einloggen, um Attachments anzusehen!
|
|
Nano-Ware 
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Di 01.11.11 23:53
Ja und genau sowas, wie Herr Jaenicke gepostet hat, möchte ich irgendwie hinbekommen. Das Programm an dem ich schreibe, soll das Anordnen von Fenstern leichert gestalten. Nur hängt das ganze Projekt jetzt schon an diesem kleinen Schritt. Ich hab auch im Internet nichts Brauchbares gefunden, deshalb hoffe ich auf euch, dass ihr eventuell noch Ideen habt.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 02.11.11 14:39
Nano-Ware hat folgendes geschrieben : | Nur hängt das ganze Projekt jetzt schon an diesem kleinen Schritt. Ich hab auch im Internet nichts Brauchbares gefunden |
Es ist kein kleiner Schritt, sondern wahrscheinlich der größte des gesamten Projekts.
Ich habe es bisher leider auch nie brauchbar hinbekommen (sprich so, dass es auch aussieht wie es sonst im System aussieht).
|
|
vagtler
      
Beiträge: 96
Erhaltene Danke: 24
Delphi 2010, C# (VS 2012), Objective-C, Java
|
Verfasst: Mi 02.11.11 15:34
|
|
Nano-Ware 
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Mi 02.11.11 22:03
Okay das ist mir alles zu kompliziert. Ich fang mal einfacher an: Wie kann ich einem fremdem Fenster einen Button hinzufügen und dessen Events abfangen? :3
|
|
vagtler
      
Beiträge: 96
Erhaltene Danke: 24
Delphi 2010, C# (VS 2012), Objective-C, Java
|
Verfasst: Do 03.11.11 09:59
blogs.microsoft.co.i...on-part-1-win32.aspx
blogs.microsoft.co.i...on-part-2-win32.aspx
blogs.microsoft.co.i...on-part-3-win32.aspx
Nano-Ware hat folgendes geschrieben : | [...] Ich fang mal einfacher an: Wie kann ich einem fremdem Fenster einen Button hinzufügen und dessen Events abfangen? :3 |
Das ist ungefähr das gleiche - Du musst halt nur nicht in die Title-Bar zeichnen.
|
|
Nano-Ware 
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Fr 04.11.11 00:02
Danke. Ich hab nur etwas Probleme, die C#-Codes in vernümpftiges Delphi zu ändern und Delphibeispiele zu dem Thema habe ich nicht gefunden. Ich möchte jetzt keine neue Sprache lernen, um etwas in Delphi zu programmieren. Vielleicht könnt ihr helfen
|
|
vagtler
      
Beiträge: 96
Erhaltene Danke: 24
Delphi 2010, C# (VS 2012), Objective-C, Java
|
Verfasst: Fr 04.11.11 10:17
Grundsätzlich dürfte das auf Grund der Ähnlichkeit der Sprachen eigentlich kein Problem darstellen. Frag doch bitte im Einzelfall konkret, bei welchen Sprachkonstrukten Du Schwierigkeiten siehst.
|
|
Nano-Ware 
      
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Di 08.11.11 21:12
Ich hab mir das jetzt sehr intensiv angeschaut, aber das kann keine Lösung sein. Das angehängt Demo-Projekt erstellt lediglich ein Fenster, das sich an die Position des Fensters heftet. Bei dem besagten Projekt verschiebt sich das Ganze nichteinmal mit dem Fenster. Ich kann mir auch kaum vorstellen, wenn ich das mit einem Timer macht, dass das flüssig läuft und nicht etwa ruckelt. Desweiteren müssen diese Buttons ja auf ALLEN Fenstern sein. Das würde bedeuten ich müsste für jedes offene Fenster eine einzelne Instanz der Buttonanwendung erzeugen, was ja im Grunde kein Problem ist, nur wenn man nun mal ein Fenster über ein anderes schiebt kommen Fehler durch überlappen. Ich denke mal nicht, dass es eine schöne WinAPI-Funktion gibt mit der ich die Reihenfolge aller Fenster ausgeben kann und meins dann nach Belieben dazwischenschieben kann.
Ich hoffe ihr könnt mir helfen ich möchte dazu noch sagen, dass das ein Projekt ist, dass ich immer schonmal machen wollte nur vor 3 Jahren war das nach meinem Kentnisstand einfach nicht machbar. Ich muss das jetzt irgendwie schaffen...
|
|