AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TrayIcon ohne MainForm

Ein Thema von Hybrid666 · begonnen am 10. Mär 2008 · letzter Beitrag vom 12. Mär 2008
Antwort Antwort
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#1

TrayIcon ohne MainForm

  Alt 10. Mär 2008, 13:58
Hi,

ich habe ein programm ohne main form, möchte aber ein TrayIcon erstellen. Zum erstellen des Tray Icons gibt es ja genug tuts, nur was ich mich fraghe, wie reagiere ich auf klicks auf das TrayIcon? In allen tuts wied der mainform das hier hinzugefügt:


Delphi-Quellcode:
uses
  ShellAPI;

const
  WM_TASKABAREVENT = WM_USER+1; //Taskbar message
[...]

type
  TMainForm = class(TForm)
[...]
private
    { Private-Deklarationen }
    procedure TaskbarEvent(var Msg: TMessage);
      Message WM_TASKABAREVENT;
[...]

{Message-Prozedur für das TrayIcon}
procedure TMainForm.TaskbarEvent(var Msg: TMessage);
var Point : TPoint;
begin

  { Die WM_TaskbarEvent-Message "Msg" gibt in Msg.LParam
    das genaue Ereignis an. Msg.LParam kann folgende Werte für
    Mausereignisse annehmen:

    WM_MouseMove
    WM_LButtonDown
    WM_LButtonUp
    WM_LButtonDblClk
    WM_RButtonDown
    WM_RButtonUp
    WM_RButtonDblClk }


  { Eventhandler-Beispiele von Robert Fischer: }
  case Msg.LParam of
    WM_LBUTTONDBLCLK:
      begin
        //Mach etwas nach einem Doppelklick...
      end;
    WM_LBUTTONUP:
      begin
        //Mach etwas nach einem Linksklick...
      end;
    WM_RBUTTONUP:
      begin
        // Rechtsklick
        // Diese Zeile ist wichtig, damit das PopupMenu korrekt
        // wieder geschlossen wird:
        SetForegroundWindow(Handle);
        // PopupMenu anzeigen:
        GetCursorPos(Point);
        PopupMenu1.Popup(Point.x, Point.y);
        //oder ohne Variable Point:
        //PopupMenu1.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y);
      end;
  end;
end;
Wie reagiere ich auf klicks ohne mainform? wo sage ich ihm welche procedure er ausführen soll sobald es geklickt wird?

Danke für alle antworten.

MfG Hybrid666
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TrayIcon ohne MainForm

  Alt 10. Mär 2008, 14:01
Wieso hast du denn kein Window in deiner Anwendung?

Ansonsten benutze ein TWincontrol oder nutze allocatehwnd um die Messages zu empfangen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#3

Re: TrayIcon ohne MainForm

  Alt 10. Mär 2008, 15:59
ansich ist es keine anwendung, sondern eine DLL, die aber im speicher geladen bleibt und wie ein programm agiert. wird ein plugin fürn anderes programm, unter anderem mit dem tool en tray icon anzuzeigen ^^.

Naja könntest du das bissle genauer ausformulieren was du das vorgeschlagen hast?

MfG
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: TrayIcon ohne MainForm

  Alt 10. Mär 2008, 16:29
Hier wird mit allocatehwnd gearbeitet

Ab D2006 gibt es übrgiens eine fertige Komponente.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#5

Re: TrayIcon ohne MainForm

  Alt 11. Mär 2008, 02:04
danke...habe mir das ding mal grob durchgeschaut, scheint alles zu haben...werde den code die tage mal durchgehen und ihn versuchen zu verstehen, wenn ich noch fragen hab werd ich posten

Danke!
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#6

Re: TrayIcon ohne MainForm

  Alt 12. Mär 2008, 13:04
servus,

ich hab mir den code nu durchgeschaut und verstehe soweit alles, nur hab ich nu ne frage: ich will das ding in der dll minimalistisch halten und keine komponenten verwenden, wie kann ich allocatehwnd auf ne normale prozedur anwenden? denn wen ich einfach so ne OnMessage prozedur erstelle und allocatehwnd drauf anwende, sagt er mir das geht nicht.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: TrayIcon ohne MainForm

  Alt 12. Mär 2008, 13:58
auf eine normale Procedure gar nicht. Aber was hält dich davon ab einfach eine Klasse selbst zu bauen? da TObject immer eingebunden ist wird sich das beim Speicherverbrauch nicht wirklich merklich auswirken.
Ansonsten musst du nonvcl mäßig ran gehen und mit CreateWindow ein unsichtbares Fenster erzeugen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#8

Re: TrayIcon ohne MainForm

  Alt 12. Mär 2008, 14:41
habs gelöst...
http://www.delphipraxis.net/internal...t=allocatehwnd

danke an alle ^^
  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 08:35 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