| |
|
|
- Page 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 |
|
|
| |
|
|
|
| |
|
- Page 1 - |
|
Hans-Jürgen Trog | H.Brill (03.08.2024)
Scheint bei mir eher der linke Mausbutton zu sein. Aber da kann man sich ja auch circa ...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" ? |
|
|
| |
|
|
|
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. |
|
|
| |
|
|
|
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 circa 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? |
|
|
| |
|
|
|
Hans-Jürgen Trog | Ich hoffe, ich nerve Dich nicht! |
|
|
| |
|
|
|
H.Brill | geht denn der code, der bei den TraIcon-Befehlen steht, nicht ?
Mit den UserMessages geht das nicht. Die sind nur per das Hauptfenster gedacht. Und ein Handle per 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 |
|
|
| |
|
|
|
Hans-Jürgen Trog | nach Umwandlung kommt rechte Maustaste losgelassen. Gedrückt kommt gar nicht. |
|
|
| |
|
|
|
H.Brill | Ist doch dann richtig, sind dann die normalen Zahlenwerte statt Hex : Bringt mit Hex$(517) - 205 und Hex$(514) - 202
Das Dollarzeichen per Hex kommt naturalmente 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) è 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 ▲ |
|
|
|
| |
|
- Page 2 - |
|
|
Hans-Jürgen Trog | vielen Dank. Dann werde ich mal sehen, wie ich das einbaue |
|
|
| |
|
|
|
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 corsa wird oder wie bei mir circa eine Proc, bleibt Geschmackssache und ist dir überlassen. Da gibt es mehrere Möglichkeiten. Ich habe oben im Code per Aktion 1 einen Menüpunkt gesetzt und circa 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 trasferimento. Wenn ich dann im Prozess das Hauptprogramm circa etwas informieren muß, geht das dann auch circa 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 ▲ |
|
|
|