Deutsch
Forum

INI wird nicht geschrieben

noch eine Frage zu Trayicon

 
- Seite 1 -



Hans-Jürgen
Trog
Ich belästige Dich nochmal.

Bisher hat Tryicon funktioniert, aber jetzt nur zum Teil:

If @TrayIcon("Msg", 1) = $204 'Rechter Mausbutton gedrückt gibt keine Reaktion

aber

if @TrayIcon("Msg", 1) = $202 'linke Maustaste klappt

hast Du dafür auch eine Lösung?

Vielen Dank
 
XProfan X4
Windows-Tablet mit Win11, XProfan X4
02.08.2024  
 



 
- Seite 1 -



Hans-Jürgen
Trog
H.Brill (03.08.2024)
Scheint bei mir eher der linke Mausbutton zu sein.
Declare hIcon&, ende%
WindowTitle "XProfan 11: TrayIcon-Demo"
Cls
hIcon& = create("hIcon", "Profan")
TrayIcon("add", %hWnd, 1, hIcon&, "XProfan 11")
Print "Ende mit linkem Doppelklick!"

WhileNot ende%

    WaitInput

    Select TrayIcon("msg", 1)

        CaseOf $201 : Print "Linke Maustaste gedrückt"

        CaseOf $202: Print "Linke Maustaste losgelassen"

        CaseOf $203: ende% = 1

        CaseOf $207 : Print "Mittlere Maustaste gedrückt"

        CaseOf $208 : Print "Mittlere Maustaste losgelassen"

        CaseOf $209 : Print "Mittlere Maustaste Doppelklick"

        CaseOf $204: Print "Rechte Maustaste gedrückt"

        Case $205 : Print "Rechte Maustaste losgelassen"

        CaseOf $206: Print "Rechter Doppelklick"

    EndSelect

EndWhile

TrayIcon("delete", %hWnd, 1)
DeleteObject hIcon&
End

Aber da kann man sich ja auch über ...Button_UP behelfen, da es ja
zum gleichen Ergebnis führt.


Bei dem Quelltext reagiert das Programm auf keinen Button.

Was meinst Du mit "...Button_UP" ?
 
XProfan X4
Windows-Tablet mit Win11, XProfan X4
03.08.2024  
 




H.Brill
Bedienst du das Programm auch richtig ?
Unten in der Taskleiste Pfeil nach oben (^).
In dem Kästchen siehst du dann dein Trayicon.


Was meinst Du mit "...Button_UP" ?


So ein Mausklick besteht eigentlich aus 2 Events. Z.b. ein Linksklick aus
$0201 : wm_LButtonDown
und
$0202 : wm_LButtonUp
siehe WindowsMessages.

Besser gesagt aus dem Herunterdrücken und dem Losslassen der
Maustaste. Der Anwender merkt das aber beim Klick gar nicht. Daher
kann man so ein Mausklick auch mit dem wm_LButtonUp erkennen.
Bevor ja eine Taste losgelassen werden kann, muß sie ja erstmal gedrückt
sein. Und so ist es ja eindeutig, ob der Anwender etwas angeklickt hat.

So gibt es ja auch noch %mousepressed. Den braucht man aber eher
beim Freihandzeichnen, Drag & Drop usw.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
03.08.2024  
 




Hans-Jürgen
Trog
[QUOTE_=H.Brill (03.08.2024)  [...] 
Bedienst du das Programm auch richtig ?
Unten in der Taskleiste Pfeil nach oben (^).
In dem Kästchen siehst du dann dein Trayicon.

Hatte ich nicht. Ich habe immer in das Fenster geclickt

Wenn ich auf das Trayicon klicke, kommt bei dem linken Mausbutton immer nur "linke Maustaste losgelassen", ebenso beim Druck auf das Mausrad. Es kommen keine anderen Reaktionen.
 
XProfan X4
Windows-Tablet mit Win11, XProfan X4
03.08.2024  
 




H.Brill
Probiere mal das :
Declare Int MNummer[], String MString[], Long ende, x
MNummer[0] = $0201 : MString[0] = "wm_LButtonDown"
MNummer[1] = $0202 : MString[1] = "wm_LButtonUp"
MNummer[2] = $0204 : MString[2] = "wm_RButtonDown"
MNummer[3] = $0205 : MString[3] = "wm_RButtonUp"
MNummer[4] = $0207 : MString[4] = "wm_MButtonDown"
MNummer[5] = $0208 : MString[5] = "wm_MButtonUp"
MNummer[6] = $20A  : MString[6] = "Mausrad"
Window 600, 400
ende = 0
UserMessages $201, $202, $204, $205, $207, $208, $20A

WhileNot ende

    WaitInput
    x = 0
    Locate 10, 2
    x = IndexOf(MNummer[], %UMessage)
    Print Space$(20)
    Locate 10, 2
    Case x > -1 : Print MString[x]
    Case %Key = $10 : ende = 1

EndWhile

End

Oder hast du irgendwelche Maustasten über das Windows-System umgelegt
(z.b. Linkshänder o. ä.) ?

Ansonsten müßte das funktionieren.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
03.08.2024  
 




Hans-Jürgen
Trog
Das zeigt alles richtig an!

Wie baue ich das nun ein?
 
XProfan X4
Windows-Tablet mit Win11, XProfan X4
03.08.2024  
 




Hans-Jürgen
Trog
Ich hoffe, ich nerve Dich nicht!
 
XProfan X4
Windows-Tablet mit Win11, XProfan X4
03.08.2024  
 




H.Brill
geht denn der code, der bei den TraIcon-Befehlen steht, nicht ?

Mit den UserMessages geht das nicht. Die sind nur für das Hauptfenster
gedacht. Und ein Handle für den Systray haben wir auch nicht.
Was auf dem TrayIcon gedrückt wurde, kann uns nur die
TrayIcon("msg", 1) liefern.
Printe mal die Messages, die TrayIcon("msg", 1) zurück gibt, auf dem Fenster
aus. Wenn es normale Zahlen sind, mußt du die noch vorher mit Hex$() bearbeiten.
Vielleicht kommen wir dann weiter.

Wie schon gesagt : bei mir funktioniert es, wie es soll.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
03.08.2024  
 




Hans-Jürgen
Trog
rechte maustaste bringt 517 und kein Text

linke Maustaste bringt 514 und Text linke Maustaste losgelassen
 
Windows-Tablet mit Win11, XProfan X4
03.08.2024  
 




Hans-Jürgen
Trog
nach Umwandlung kommt rechte Maustaste losgelassen. Gedrückt kommt gar nicht.
 
XProfan X4
Windows-Tablet mit Win11, XProfan X4
03.08.2024  
 




H.Brill
Ist doch dann richtig, sind dann die normalen Zahlenwerte statt Hex :
Bringt mit Hex$(517) - 205 und Hex$(514) - 202

Das Dollarzeichen für Hex kommt natürlich noch davor. Geht ja auch
wieder zuück : Print VAL("$205"), VAL("$202").

Und ob man nun Zahlenwerte oder Hexwerte miteinander vergleicht,
ist doch schnuppe.

Wie ich oben schon erklärte : losgelassen (UP) heißt soviel wie gedrückt.
Den Wert von DOWN erhälst du nur, wenn du die Maustaste gedrückt hälst.
Die Werte von TrayIcon("Msg", 1) sind jedenfalls richtig.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
03.08.2024  
 



 
- Seite 2 -



Hans-Jürgen
Trog
vielen Dank. Dann werde ich mal sehen, wie ich das einbaue
 
XProfan X4
Windows-Tablet mit Win11, XProfan X4
03.08.2024  
 




H.Brill
Na, so wie auch andere Abfragen in einer GUI auch :
Declare Int MNummer[], String MString[], Long ende, x, hicon
hicon = Create("hIcon", "Gesicht")
WindowTitle "Mittlere Maustaste im TrayIcon beendet Programm !"
Window 600, 400
CreateMenu %HWnd
TrayIcon("add", %hWnd, 1, hIcon, "Mein Icon")
ende = 0

WhileNot ende

    WaitInput

    Select TrayIcon("msg", 1)

        CaseOf $202: SetMenuItem 101

        CaseOf $205: Aktion(2)

        CaseOf $208: Aktion(3)

    EndSelect

    Case %Key = $10 : ende = 1
    Case MenuItem(101) : MessageBox("Linke  Maustaste -> Aktion 1", "Info", 0)

EndWhile

TrayIcon("delete", %hWnd, 1)
DeleteObject hIcon

Proc Aktion

    Parameters Long action

    Select action

        'CaseOf 1 : MessageBox("Linke  Maustaste -> Aktion 1", "Info", 0)

        CaseOf 2 : MessageBox("Rechte Maustaste -> Aktion 2", "Info", 0)

        CaseOf 3 : ende = 1

    EndSelect

EndProc

End

Ob nun in der Haupt - Schleife die Aktion ausgeführt wird oder wie bei mir über
eine Proc, bleibt Geschmackssache und ist dir überlassen. Da gibt es mehrere
Möglichkeiten. Ich habe oben im Code für Aktion 1 einen Menüpunkt gesetzt
und über MenuItem(101) abgefragt.
Wichtig ist, das Menü (CreateMenu) vor dem TrayIcon zu erstellen, sonst
verschwindet das Icon plötzlich.
Ansonsten kannst du dir deiner Kreativität freien Lauf lassen. Da ginge auch
die UserMessages, indem du ans %HWnd eine eigens definierte Message schikst und mit %uMessage abfragst. Meistens aber verwende ich die Usermessages, wenn ich Multiprozessing mit dabei habe.Da kann ich bei
pExec das %Hwnd mit übergeben. Wenn ich dann im Prozess das Hauptprogramm über etwas informieren muß, geht das dann auch über SendMessage.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
04.08.2024  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

446 Betrachtungen

Unbenanntvor 0 min.
E.T. vor 7 Tagen
ByteAttack vor 8 Tagen
Gast.0815 vor 9 Tagen
H.Brill vor 16 Tagen
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Hans-Jürgen Trog (8x)
H.Brill (6x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie