AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi wie würdest ihr es anstellen, Buttons in fremde Titelleisten

wie würdest ihr es anstellen, Buttons in fremde Titelleisten

Ein Thema von stoxx · begonnen am 9. Sep 2006 · letzter Beitrag vom 10. Sep 2006
Antwort Antwort
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

wie würdest ihr es anstellen, Buttons in fremde Titelleisten

  Alt 9. Sep 2006, 20:42
wie würdest ihr es anstellen, Buttons in fremde Titelleisten zu integrieren.

dass es so wie im Anhang aussieht ?

ich wollte ein kleines Desktop Managment Programm schreiben, um in alle Titelleisten (von allen offenen Fenstern) einen Button nach links und rechts zu haben, die bewirken, dass das Fenster bei einer Mehrmonitorlösung auf den anderen Monitor geschoben werden.
So in etwa, wie das Beispiel aus meiner Software .. (Anhang)
Arbeite mit 3 Monitoren, und es würde die Handhabung ziemlich vereinfachen ..

Danke Euch !
Gruß stoxx
Miniaturansicht angehängter Grafiken
bsp_208.png  
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#2

Re: wie würdest ihr es anstellen, Buttons in fremde Titellei

  Alt 9. Sep 2006, 21:24
Versuch doch mal die Hilfe zu bemühen. Etwa mit den Schlagwörtern "Titelleiste, Button"

Du kannst allerdings auch einfach einen neuen Button ins Systemmenü einfügen.
Luckie hatte da mal was:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure WndProc(var msg: TMessage); override;
  end;

var
  Form1 : TForm1;

implementation

{$R *.dfm}

const
  MY_MENU_ID = 999;

procedure TForm1.Button1Click(Sender: TObject);
var
  hMenu : THandle;
begin
  hMenu := GetSystemMenu(Handle, False);
  if hMenu <> 0 then
  begin
    if not DeleteMenu(hMenu, 6, MF_BYPOSITION) then
      ShowMessage(SysErrorMessage(GetLastError));
    DrawMenuBar(hMenu);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  hMenu : THandle;
begin
  hMenu := GetSystemMenu(Handle, False);
  if hMenu <> 0 then
  begin
    if not InsertMenu(hMenu, 6, MF_BYPOSITION, MY_MENU_ID, 'Mein Menüitem') then
      ShowMessage(SysErrorMessage(GetLastError));
    DrawMenuBar(hMenu);
  end;
end;

procedure TForm1.WndProc(var msg: TMessage);
begin
  inherited;
  case msg.Msg of
    WM_SYSCOMMAND:
      begin
        if hiword(msg.WParam) = 0 then
        begin
          case loword(msg.WParam) of
            MY_MENU_ID: ShowMessage('Buuuh!');
          end;
        end;
      end;
  end;
end;
Christian
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#3

Re: wie würdest ihr es anstellen, Buttons in fremde Titellei

  Alt 9. Sep 2006, 21:30
Zitat:
Versuch doch mal die Hilfe zu bemühen. Etwa mit den Schlagwörtern "Titelleiste, Button"

Du kannst allerdings auch einfach einen neuen Button ins Systemmenü einfügen.
Das habe ich schon gelöst ( übrigens mit der JVCL .. die bietet eine recht komfortable Lösung für diese Buttons) .. vom eingestellten Style angepasste Buttons.

Ich möchte den Button z.b. in den Internet Explorer haben, hast Du da Ideen dazu ?

Vielen Dank !
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: wie würdest ihr es anstellen, Buttons in fremde Titellei

  Alt 9. Sep 2006, 21:43
wenn du weißt wie du den button für die eigene anwendung hinn bekommst musst du das ganze nur noch per hook in andere anwendungen integrieren
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#5

Re: wie würdest ihr es anstellen, Buttons in fremde Titellei

  Alt 9. Sep 2006, 21:47
Vielleicht schaffst du es ja die Buttons nach links zu versetzen, mittlerweile nutzen mir zu viele Anwendungen die rechte Seite, nur doof das dann Buttons übereinander liegen.
Servus...
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#6

Re: wie würdest ihr es anstellen, Buttons in fremde Titellei

  Alt 9. Sep 2006, 21:55
Zitat:
musst du das ganze nur noch per hook in andere anwendungen integrieren
ja genau ! . . deswegen hab ich meine Frage ja auch in das API Forum gestellt

nur leider habe ich mit der Windows API bisher noch nicht so intensiv gearbeitet, dass ich mir einen Lösungsweg selber überlegen könnte !
Hättest Du einen im Kopf ?
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: wie würdest ihr es anstellen, Buttons in fremde Titellei

  Alt 9. Sep 2006, 23:37
Mein Ansatz wäre:

1. Packe die Funktionalität in eine DLL
2. Erzeuge einen globalen Hook (z.B. WH_MOUSE) mit einer Funktion, die ebenfalls in der DLL liegt -> deine DLL wird in jeden Prozess injeziert.
3. Beim Laden der DLL ermittle alle Hauptfenster des jeweiligen Prozesses und merke sie dir (EnumWindows / GetWindowThreadProcessId).
4. Hooke die Funktionen CreateWindow und CreateWindowEx, um neue Hauptfenster abzufangen (die ohne WS_CHILD).
5. Ein WM_DESTROY in der Fensterprozedur entfernt ein Fenster aus deiner Liste.

Diesen Fenstern musst du dann deine Buttons zuordnen.

Entweder erzeugst du ein kleines Panel mit den Buttons, das du dann zusammen mit dem Fenster verschiebst, oder du arbeitest ohne Fenster und behandelst die Meldungen WM_NCLBUTTONDOWN, WM_NCMOUSEMOVE, WM_NCLBUTTONUP und WM_NCPAINT selbst.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: wie würdest ihr es anstellen, Buttons in fremde Titellei

  Alt 10. Sep 2006, 09:28
Ich befürchte, daß du dabei nicht um einen Hook der entsprechenden Fensterfunktionen herumkommen wirst (es sei denn du verwendest API-Hooks statt Fenster-Hooks).

Mein (veraltetes) Tut hast du sicher schonmal überflogen, oder? Wenn du WH_CALLWNDPROC (global) benutzt, solltest du auf der sicheren Seite sein. Inwieweit das die Performance negativ beeinflußt kann ich nicht sagen, müßtest du testen. Denn logischerweise existieren auf einem normalen System eine Menge Fenster (und damit Fensterfunktionen). Vorzugsweise sollte deine Hookfunktion also hochoptimiert sein um alle Fälle auszuschließen wo es ohnehin unnötig ist einzugreifen (bspw. bestimmte Nachrichten).
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:37 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