Desktop Benachrichtigung
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 175
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Desktop Benachrichtigung
Hallo zusammen,
kann im Forum nichts finden. Sendet jemand Desktop-Benachrichtigungen mittels Xbase++?
kann im Forum nichts finden. Sendet jemand Desktop-Benachrichtigungen mittels Xbase++?
Gruß Dominik
- AUGE_OHR
- Marvin
- Beiträge: 12862
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 18 Mal
- Danksagung erhalten: 42 Mal
Re: Desktop Benachrichtigung
hi,
wenn ja dann schau dir mal CLASS TNotifyIcon() aus OT4XB an
meinst du Benachrichtigungen die rechts unten "rauskommen"Dominik Krebs hat geschrieben: ↑Fr, 17. Feb 2023 16:07kann im Forum nichts finden. Sendet jemand Desktop-Benachrichtigungen mittels Xbase++?

wenn ja dann schau dir mal CLASS TNotifyIcon() aus OT4XB an
gruss by OHR
Jimmy
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9116
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 82 Mal
- Danksagung erhalten: 281 Mal
- Kontaktdaten:
Re: Desktop Benachrichtigung
Ich nutze (immer noch) das Popup-Control von Codejock, aber eigentlich wollte ich das längst loswerden.
Herzlich,
Tom
Tom
-
- Rekursionen-Architekt
- Beiträge: 175
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Re: Desktop Benachrichtigung
Ja die von Tom meine ich.
Ich dachte das ist irgend ein DLL Aufruf, der nicht so kompliziert ist.
Codejock sagt mir leider nichts.
Ot4xb nutze ich tatsächlich nicht.
Ich dachte das ist irgend ein DLL Aufruf, der nicht so kompliziert ist.
Codejock sagt mir leider nichts.
Ot4xb nutze ich tatsächlich nicht.
Gruß Dominik
- AUGE_OHR
- Marvin
- Beiträge: 12862
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 18 Mal
- Danksagung erhalten: 42 Mal
Re: Desktop Benachrichtigung
hi,
das ganze basiert auf der Shell_NotifyIcon API und der NOTIFYICONDATA Structure unter Xbase++ v2.x gibt es inzwischen auch Structure und man braucht kein BAP dafür
es ist also "möglich" ohne Ot4xb das ganze nachzubauen da Pablo Ot4xb "scheinbar" nicht weiter entwickelt
das ganze basiert auf der Shell_NotifyIcon API und der NOTIFYICONDATA Structure unter Xbase++ v2.x gibt es inzwischen auch Structure und man braucht kein BAP dafür
es ist also "möglich" ohne Ot4xb das ganze nachzubauen da Pablo Ot4xb "scheinbar" nicht weiter entwickelt
gruss by OHR
Jimmy
Jimmy
-
- Rekursionen-Architekt
- Beiträge: 175
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Re: Desktop Benachrichtigung
Das ist schon mal ein guter Anfang. Danke.
Jetzt muss ich mich erstmal mit dem STRUCTURE UND EXTERN beschäftigen.
Hab das noch nicht so ganz verstanden.
Hast du etwas woran ich mich orientieren kann?
Jetzt muss ich mich erstmal mit dem STRUCTURE UND EXTERN beschäftigen.
Hab das noch nicht so ganz verstanden.
Hast du etwas woran ich mich orientieren kann?
Gruß Dominik
-
- Rekursionen-Architekt
- Beiträge: 175
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Re: Desktop Benachrichtigung
Ich habe mich am STRUCT versucht, aber ich bekomme immer wieder dllprepare fehler.
Sehe ich das richtig das Konstanten als HEX werte angegeben werden müssen?
Sehe ich das richtig das Konstanten als HEX werte angegeben werden müssen?
Gruß Dominik
-
- Rekursionen-Architekt
- Beiträge: 175
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Re: Desktop Benachrichtigung
Also ich bin jetzt soweit, bekomme aber immer noch folgenden Fehler:
Code: Alles auswählen
EXTERN BOOL Shell_NotifyIconA(nTYPE AS LONG, oNotificationData AS STRUCTURE) IN SHELL32.DLL
Code: Alles auswählen
STRUCTURE NOTIFYICONDATAA
VAR cbSize AS UINTEGER
VAR hWnd AS UINTEGER
VAR uID AS UINTEGER
VAR uFlags AS UINTEGER
VAR uCallbackMessage AS UINTEGER
VAR hIcon AS UINTEGER
VAR szTip AS STRING[32]
ENDSTRUCTURE
Code: Alles auswählen
LOCAL oNotificationData AS STRUCTURE NOTIFYICONDATAA
oNotificationData:hWnd := oOwner:gethwnd()
oNotificationData:uID := 100
oNotificationData:uFlags := 0x00000004
*oNotificationData:uCallbackMessage := 0x00000001
*oNotificationData:hIcon := 0x00000000
oNotificationData:szTip := "Test"
oNotificationData:cbSize := oNotificationData:SizeOf()
Shell_NotifyIconA(0x00000004,oNotificationData)
Gruß Dominik
- Marcus Herz
- 1000 working lines a day
- Beiträge: 746
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 37 Mal
- Danksagung erhalten: 161 Mal
- Kontaktdaten:
Re: Desktop Benachrichtigung
Eventuell hilft es aber die Structur mit @ zu übergeben
Laut meiner API Doku muss es lauten
PS:
scheint mir falsch zu sein, hier wird ein Handle auf eine hWnd Fenster erwartet, übergib 0
Code: Alles auswählen
LOCAL oNotificationData AS STRUCTURE NOTIFYICONDATAA
oNotificationData:hWnd := oOwner:gethwnd()
oNotificationData:uID := 100
oNotificationData:uFlags := 0x00000004
*oNotificationData:uCallbackMessage := 0x00000001
*oNotificationData:hIcon := 0x00000000
oNotificationData:szTip := "Test"
oNotificationData:cbSize := oNotificationData:SizeOf()
Shell_NotifyIconA(0x00000004,@oNotificationData)
Code: Alles auswählen
STRUCTURE NOTIFYICONDATAA
VAR cbSize AS UINTEGER
VAR hWnd AS UINTEGER
VAR uID AS UINTEGER
VAR uFlags AS UINTEGER
VAR uCallbackMessage AS UINTEGER
VAR hIcon AS UINTEGER
VAR szTip AS STRING[64]
VAR dwState AS UINTEGER
VAR dwStateMask AS UINTEGER
VAR szInfo AS STING[256]
VAR uTimeout AS UINTEGER
VAR szInfoTitle AS STRING[ 64]
VAR dwInfoFlags AS UINTEGER
VAR guidItem AS STRUCTURE GUID
// ALTERNATIV, wenn man die GUID nicht braucht, kann man einfach die Größe als String deklarieren
// VAR guiditem AS STRING[16]
VAR hBalloonIcon AS UINTEGER
ENDSTRUCTURE
STRUCTURE GUID
VAR Data1 AS UINTEGER
VAR Data2 AS SHORT
VAR Data3 AS SHORT
VAR Data4 as STRING[8]
ENDSTRUCTURE
Code: Alles auswählen
*oNotificationData:uCallbackMessage := 0x00000001
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
-
- Rekursionen-Architekt
- Beiträge: 175
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Re: Desktop Benachrichtigung
Hallo Marcus,
ich habe meinen Code angepasst.
Als Ergebnis erhalte ich auch ein TRUE zurück.
Es erscheint ein Icon in der Taskbar, aber keine Balloon-Notification. Auch der "Tip" des Icons hat Chinesische Zeichen.
ich habe meinen Code angepasst.
Code: Alles auswählen
STRUCTURE NOTIFYICONDATAW
VAR cbSize AS UINTEGER
VAR hWnd AS UINTEGER
VAR uID AS UINTEGER
VAR uFlags AS UINTEGER
VAR uCallbackMessage AS UINTEGER
VAR hIcon AS UINTEGER
VAR szTip AS STRING[128]
VAR dwState AS UINTEGER
VAR dwStateMask AS UINTEGER
VAR szInfo AS STRING[128]
VAR szInfoTitle AS STRING[64]
VAR dwInfoFlags AS UINTEGER
VAR guidItem AS STRING[16]
VAR hBalloonIcon AS UINTEGER
ENDSTRUCTURE
Code: Alles auswählen
LOCAL oNotificationData AS STRUCTURE NOTIFYICONDATAW
LOCAL oIcon
oIcon := XbpIcon():New():Create()
oIcon:Load(,22)
oNotificationData:cbSize := oNotificationData:SizeOf()
oNotificationData:hWnd := oOwner:gethwnd()
oNotificationData:uID := oNotificationData:SizeOf()
oNotificationData:uFlags := BOr(NIF_MESSAGE,NIF_ICON,NIF_TIP,NIF_INFO)
oNotificationData:uCallbackMessage := oOwner:gethwnd()
oNotificationData:hIcon := oIcon:Handle
oNotificationData:hBalloonIcon := oIcon:Handle
oNotificationData:szTip := "Dies ist ein Beispiel-Tooltip"
oNotificationData:szInfo := "Dies ist ein Beispiel-Tooltip"
oNotificationData:szInfoTitle := "Test"
oNotificationData:dwInfoFlags := NIIF_INFO
Shell_NotifyIconW(NIM_ADD ,oNotificationData)
Es erscheint ein Icon in der Taskbar, aber keine Balloon-Notification. Auch der "Tip" des Icons hat Chinesische Zeichen.
Gruß Dominik
- Marcus Herz
- 1000 working lines a day
- Beiträge: 746
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 37 Mal
- Danksagung erhalten: 161 Mal
- Kontaktdaten:
Re: Desktop Benachrichtigung
Du hast die W = unicode Version aufgerufen. Du musst die A = ansi nehmen
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
- Marcus Herz
- 1000 working lines a day
- Beiträge: 746
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 37 Mal
- Danksagung erhalten: 161 Mal
- Kontaktdaten:
Re: Desktop Benachrichtigung
Du kannst bei der extern Deklaration sowohl das A als sich das W weglassen. Xbase lädt automatisch die richtige Funktion.
Aber die Idee mit der notifikation gefällt mir. Werd ich nächste Woche gleich implementieren
Aber die Idee mit der notifikation gefällt mir. Werd ich nächste Woche gleich implementieren
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
-
- Rekursionen-Architekt
- Beiträge: 175
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Re: Desktop Benachrichtigung
Super, damit wird der Text richtig angezeigt.
Aber ich bekomme immer noch keine Balloon-Notification, lediglich ein Icon im Task bereich.
Aber ich bekomme immer noch keine Balloon-Notification, lediglich ein Icon im Task bereich.
Gruß Dominik
-
- Rekursionen-Architekt
- Beiträge: 175
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Re: Desktop Benachrichtigung
Also ich habe alles versucht, aber ich bekomme es nicht hin.
Mehr als ein icon in der Taskleiste kommt einfach nicht bei raus.
Mehr als ein icon in der Taskleiste kommt einfach nicht bei raus.
Gruß Dominik
- ssemleit
- UDF-Programmierer
- Beiträge: 97
- Registriert: Di, 08. Mär 2016 11:32
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 7 Mal
Re: Desktop Benachrichtigung
Weil ich auch gerade an der EXTERN Front mit einer Structur zu tun hatte.
Markus meinte ja schon, dass vielleicht die Structur als Referenz übergeben werden sollte.
Das muss aber bei der Deklaration per EXTERN und nicht beim Aufruf erfolgen.
Also statt: EXTERN BOOL Shell_NotifyIconA(nTYPE AS LONG, oNotificationData AS STRUCTURE) IN SHELL32.DLL
so: EXTERN BOOL Shell_NotifyIconA(nTYPE AS LONG, @oNotificationData AS STRUCTURE) IN SHELL32.DLL
Gruß
Stefan
Markus meinte ja schon, dass vielleicht die Structur als Referenz übergeben werden sollte.
Das muss aber bei der Deklaration per EXTERN und nicht beim Aufruf erfolgen.
Also statt: EXTERN BOOL Shell_NotifyIconA(nTYPE AS LONG, oNotificationData AS STRUCTURE) IN SHELL32.DLL
so: EXTERN BOOL Shell_NotifyIconA(nTYPE AS LONG, @oNotificationData AS STRUCTURE) IN SHELL32.DLL
Gruß
Stefan
Gruß
Stefan
Stefan
-
- Rekursionen-Architekt
- Beiträge: 175
- Registriert: Mo, 15. Apr 2019 16:19
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Re: Desktop Benachrichtigung
Hallo Stefan,
ich habe die Übergabe als Referenz bereits durchgespielt und es funktioniert auch nur als Referenzübergabe.
Ich versuche im Laufe des Tages meinen aktuellen Code zu teilen.
Mein Problem ist das ich es nicht schaffe eine Ballon Notification anzuzeigen.
Lediglich ein Icon in der Taskbar lässt sich hinzufügen, verändern sowie löschen.
Aber die Benachrichtigung bleibt aus, das Icon hingegen brauche ich eigentlich gar nicht...
ich habe die Übergabe als Referenz bereits durchgespielt und es funktioniert auch nur als Referenzübergabe.
Ich versuche im Laufe des Tages meinen aktuellen Code zu teilen.
Mein Problem ist das ich es nicht schaffe eine Ballon Notification anzuzeigen.
Lediglich ein Icon in der Taskbar lässt sich hinzufügen, verändern sowie löschen.
Aber die Benachrichtigung bleibt aus, das Icon hingegen brauche ich eigentlich gar nicht...
Gruß Dominik
- Marcus Herz
- 1000 working lines a day
- Beiträge: 746
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 37 Mal
- Danksagung erhalten: 161 Mal
- Kontaktdaten:
Re: Desktop Benachrichtigung
Ja ich bin da auch dran, und genausoweit wie du. Obwohl ich einen C++ Code identisch umgesetzt habe, der Balloon kommt nicht.
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
- ssemleit
- UDF-Programmierer
- Beiträge: 97
- Registriert: Di, 08. Mär 2016 11:32
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 7 Mal
Re: Desktop Benachrichtigung
Bei meinem Problem ging es um eine andere Funktion, nicht um die Shell_NotifyIconA, aber eben mit einer Structure.
Ich dachte nur, weil das @ bei der EXTERN Deklaration fehlte, dass ich das hier anspreche.
Sorry, wenn ihr dachtet, dass ich auch an den Balloon-Notifications arbeite.
Gruß
Stefam
Ich dachte nur, weil das @ bei der EXTERN Deklaration fehlte, dass ich das hier anspreche.
Sorry, wenn ihr dachtet, dass ich auch an den Balloon-Notifications arbeite.
Gruß
Stefam
Gruß
Stefan
Stefan
- Marcus Herz
- 1000 working lines a day
- Beiträge: 746
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 37 Mal
- Danksagung erhalten: 161 Mal
- Kontaktdaten:
Re: Desktop Benachrichtigung
Jetzt hab ich mal das C++ Beispiel von Microsoft von GitHub runtergeladen und mit VS die EXE erzeugt. Das kommt auch kein Balloon. ;-(
Jetzt ist aber erst mal Wochenende
Jetzt ist aber erst mal Wochenende
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
- AUGE_OHR
- Marvin
- Beiträge: 12862
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 18 Mal
- Danksagung erhalten: 42 Mal
Re: Desktop Benachrichtigung
hi Marcus,
es funktioniert mit der aktuellen Version 10.0.19045.2673, aber nur in der 32 Bit Version in einem 32 Bit OS !
Microsoft hat "irgendwann" es in der 64 Bit "unbrauchbar" gemacht wohl auch wegen Taskleiste von Windows 11 was nur 64 Bit ist
ein "Gerücht" besagt das die "Mitteilungen", welche nur für Windows sein sollten, auch für Werbung (!) genutzt wurde
daraufhin hat Microsoft die "Rechte" verändert so das es nicht mehr funktioniert ... aber nur in der 64 Bit Version
bei einem 32 Bit OS scheint es nicht "zu wirken" ,,, vermutlich hat sich da keine Gedanken darüber gemacht
---
ich nutze noch die "alte" Hotplug.DLL womit man ein USB-Device "auswerfen" konnte
"das" hat Microsoft auch blockiert aber es gibt einen Aufruf an den man noch ran kommt
das "abmelden", was "blockiert wurde, habe ich nun selbst geschrieben aber das "fly-out" ...
das ist nun die Stelle wo der "Ballon" raus kommt und "meinen" Text anzeigt
das funktioniert auch unter 64 Bit und Windows 11
es gibt also immer noch einen Notify Event auf den "fly-out" reagiert. man muss den "nur" finden ...
---
ich habe mal im FiveWin Forum gefragt und man sagte mir das solche Sachen nun mit TOAST gemacht werden
ich habe mir die Fivewin CLASS TToast man angesehen
es wird nun viel "gemalt", mit Windows API Function, und Notify Events "abgefangen"
https://msdn.microsoft.com/en-us/librar ... mplatetype
---
nur wird das ganze viel zu "aufwendig" wenn man "selbst" das "fly-out" einleitet
ein Fenster ohne Titlebar und mit Timeout was per "Animation" raus kommt ist doch ein "Klacks"
das ist nicht ganz richtig soMarcus Herz hat geschrieben: ↑Fr, 10. Mär 2023 16:23 Jetzt hab ich mal das C++ Beispiel von Microsoft von GitHub runtergeladen und mit VS die EXE erzeugt. Das kommt auch kein Balloon. ;-(
es funktioniert mit der aktuellen Version 10.0.19045.2673, aber nur in der 32 Bit Version in einem 32 Bit OS !
Microsoft hat "irgendwann" es in der 64 Bit "unbrauchbar" gemacht wohl auch wegen Taskleiste von Windows 11 was nur 64 Bit ist
ein "Gerücht" besagt das die "Mitteilungen", welche nur für Windows sein sollten, auch für Werbung (!) genutzt wurde
daraufhin hat Microsoft die "Rechte" verändert so das es nicht mehr funktioniert ... aber nur in der 64 Bit Version
bei einem 32 Bit OS scheint es nicht "zu wirken" ,,, vermutlich hat sich da keine Gedanken darüber gemacht
---
ich nutze noch die "alte" Hotplug.DLL womit man ein USB-Device "auswerfen" konnte
"das" hat Microsoft auch blockiert aber es gibt einen Aufruf an den man noch ran kommt
das "abmelden", was "blockiert wurde, habe ich nun selbst geschrieben aber das "fly-out" ...
das ist nun die Stelle wo der "Ballon" raus kommt und "meinen" Text anzeigt
Code: Alles auswählen
LOCAL cRoot := "RUNDLL32.EXE "
LOCAL cPath := GETENV( "TEMP" ) + "\"
LOCAL cAction := GETENV( "SYSTEMROOT" ) + "\SYSTEM32\HOTPLUG.DLL"
cAction += ",HotPlugSafeRemovalDriveNotification "
cAction += VOLUMENAME( cDriveLetter + ":\" )
cAction += " ("
cAction += cDriveLetter + ":)"
MEMOWRIT( cPath + "ShowMsg.BAT", cRoot + cAction )
ShellExecute( 0, "open", cPath + "ShowMsg.BAT",,, SW_HIDE )
hb_IdleSleep( 2.0 )
FERASE( cPath + "ShowMsg.BAT" )

es gibt also immer noch einen Notify Event auf den "fly-out" reagiert. man muss den "nur" finden ...
---
ich habe mal im FiveWin Forum gefragt und man sagte mir das solche Sachen nun mit TOAST gemacht werden
ich habe mir die Fivewin CLASS TToast man angesehen
es wird nun viel "gemalt", mit Windows API Function, und Notify Events "abgefangen"
https://msdn.microsoft.com/en-us/librar ... mplatetype
---
nur wird das ganze viel zu "aufwendig" wenn man "selbst" das "fly-out" einleitet
ein Fenster ohne Titlebar und mit Timeout was per "Animation" raus kommt ist doch ein "Klacks"
gruss by OHR
Jimmy
Jimmy