Español
Fuente/ Codesnippets

NotifyIconDataA, NotifyIconDataW, TrayIcon, SysIcon

 

Georg
Teles
Mir war veces otra vez wichtig, WideStrings a el TrayIcon transferencia a puede, hauptsächlich wegen kyrillischem Texto por lo tanto hier una Codesnippet dazu - el kyrillische Texto kann mittels dieser Unit  [...]  producido y hier verwendet voluntad (habs auskommentiert)
'###############################################
'#                                             #
'# TrayIcon mittels NOTIFYICONDATAA/W erzeugen #
'#                                             #
'#          Georg Teles al 21.09.2020          #
'#                                             #
'###############################################
'$U lat2cyr.pcu = l2cPCU. ' Unit se benötigt, en kyrillischen Texto a erzeugen
Declarar OldWndProc&, ico&, ico2&, e%
'-------------# Definitionen
Def GetWindowLong(2)!"USER32","GetWindowLongA"
Def SetWindowLong(3)!"USER32","SetWindowLongA"
Def CallWindowProc(5)!"USER32","CallWindowProcA"
Def Shell_NotifyIconA(2)!"SHELL32","Shell_NotifyIconA"'ANSI
Def Shell_NotifyIconW(2)!"SHELL32","Shell_NotifyIconW"'WIDE
'-------------# NotifyIcon Konstanten
Def &TRAYMSG $500
Def &NIM_ADD $0
Def &NIM_MODIFY $1
Def &NIM_DELETE $2
Def &NIF_MESSAGE $1
Def &NIF_ICON $2
Def &NIF_TIP $4
'-------------# Estructuras
Struct NIDataA = cbSize&, hWnd&, uID&, uFlags&, uCallbackMessage&, hIcon&, szTip$(128)'reservierte Größe = 128 Signo
Struct NIDataW = cbSize&, hWnd&, uID&, uFlags&, uCallbackMessage&, hIcon&, szTip$(256)'benötigt doppelte Größe como ANSI por lo tanto = 256 en 128 Signo
'-------------# Programa
Conjunto("FastMode", 1)' erweiterte Messages
Conjunto("TrueColor",1)
Windowtitle "NotifyIconData"
Ventana de Estilo 2+4+8+16+512
Ventana 355,282
ico& = Crear("hIcon",Par$(0),0)' Icon erwünscht ?
SendMessage(%HWnd,$80,1,ico&)' Icon Setzen
'SetWindowLong(%HWnd,-16,$92CE0000) ' Fensterstil alternativ conjunto = derslebe como 2+4+8+16 s.o. aber OHNE 512 !
'-------------# NOTIFYICON después de %HWnd erzeugen ! Ejemplo 3 Icons
Declarar NID#, NID2#, NID3#
'-------------# ICON #1
Dim NID#, NIDataA' ANSI
NID#.cbSize& = SizeOf(NID#)
NID#.hWnd& = %hWnd
NID#.uID& = 0' ID #0 !
NID#.uFlags& = &NIF_MESSAGE | &NIF_ICON | &NIF_TIP
NID#.uCallbackMessage& = &TRAYMSG
NID#.hIcon& = ico&
NID#.szTip$ = "Ich bin Icon #1 !"+Chr$(0)
Shell_NotifyIconA(&NIM_ADD,NID#)' Erzeuge Icon #1
'-------------# ICON #2
Dim NID2#, NIDataA' ANSI
NID2#.cbSize& = SizeOf(NID2#)
NID2#.hWnd& = %hWnd
NID2#.uID& = 1' ID #1 !
NID2#.uFlags& = &NIF_MESSAGE | &NIF_ICON | &NIF_TIP
NID2#.uCallbackMessage& = &TRAYMSG
NID2#.hIcon& = ico&
NID2#.szTip$ = "Ich bin Icon #2 !"+Chr$(0)
Shell_NotifyIconA(&NIM_ADD,NID2#)' Erzeuge Icon #2
'-------------# ICON #3
Dim NID3#, NIDataW' WIDE
NID3#.cbSize& = SizeOf(NID3#)
NID3#.hWnd& = %hWnd
NID3#.uID& = 2' ID #2 !
NID3#.uFlags& = &NIF_MESSAGE | &NIF_ICON | &NIF_TIP
NID3#.uCallbackMessage& = &TRAYMSG
NID3#.hIcon& = ico&
NID3#.szTip$ = ansi2wideFAST("Ich bin Icon #3 !"+Chr$(0))

Proc ansi2wideFAST

    Parámetros texto$
    Declarar textneu$

    WhileLoop 0,Len(texto$)-1

        textneu$ = textneu$+Mid$(texto$,&bucle+1,1)+Chr$(0)

    EndWhile

    Volver textneu$

ENDPROC

' lat2cyr.pcu Unit se benötigt !
'NID3#.szTip$ = l2cPCU.l2l("ein Gemischter Texto - ")+l2cPCU.l2c("-Eto nebol-m-soj test <>|\q!§$%&/()=´'?^@")+l2cPCU.l2l(" mehr Text"+Chr$(0))
Shell_NotifyIconW(&NIM_ADD,NID3#)' Erzeuge Icon #3
'-------------# WindowPROC / Auswertung el Icons

Proc WindowProc

    Parámetros hWnd&, Message&, wParam&, lParam&

    If Message& = &TRAYMSG' Message auffangen

        ' alternativ ID des Icons vorschalten mittels wParam& = ID el Icons

        If lParam& = $201

            imprimir "links 1x angeklickt en Icon ID"+Str$(wParam&)

        ElseIf lParam& = $203

            imprimir "links DBL-Clic en Icon ID"+Str$(wParam&)

        ElseIf lParam& = $204

            imprimir "rechts 1x angeklickt en Icon ID"+Str$(wParam&)

        ElseIf lParam& = $206

            imprimir "rechts DBL-Clic en Icon ID"+Str$(wParam&)

        EndIf

    EndIf

    Volver CallWindowProc(OldWndProc&, hWnd&, Message&, wParam&, lParam&)

ENDPROC

OldWndProc& = GetWindowLong(%hWnd,-4)' original WndProc speichern
SetWindowLong(%hWnd,-4,ProcAddr("WindowProc",4))' WindowProc zuweisen
' Icon #1 löschen, erzeugen, ändern
var btk& = Crear("Button",%hWnd,"KILL #1",100,100,100,20)
var bts& = Crear("Button",%hWnd,"CREATE #1",100,130,100,20)
var btu& = Crear("Button",%hWnd,"UPDATE #1",100,160,100,20)

Sinestar encargado e%

    Waitinput

    If ((%Key = 2) | (%Key = 27))

        Inc e%

    EndIf

    ' Icon #1 löschen, erzeugen, ändern

    If Clicked(btk&)

        Shell_NotifyIconA(&NIM_DELETE,NID#)' Löschen

    ElseIf Clicked(bts&)

        Shell_NotifyIconA(&NIM_ADD,NID#)' Erzeugen

    ElseIf Clicked(btu&)

        NID#.szTip$ = "Ich bin Icon #1, Uhrzeit es: "+Time$(0)+":"+Time$(1)+Chr$(0)
        Case ico2&:DeleteObject ico2&
        ico2& = Crear("hIcon",Par$(0),1)
        NID#.hIcon& = ico2&' una más Icon !
        Shell_NotifyIconA(&NIM_MODIFY,NID#)' Aktualisieren

    EndIf

EndWhile

SetWindowLong(%hWnd,-4,OldWndProc&)' original WndProc wiederherstellen
Shell_NotifyIconA(&NIM_DELETE,NID#)' lösche Icon #1
Shell_NotifyIconA(&NIM_DELETE,NID2#)' lösche Icon #2
Shell_NotifyIconA(&NIM_DELETE,NID3#)' lösche Icon #3
SetFocus(%hWnd)
DeleteObject ico&, ico2&
DisPose NID#, NID2#, NID3#

Grüße
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

21.09.2020  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.633 Views

Untitledvor 0 min.
Georg Teles vor 26 Tagen
H.Brill03.08.2024
Stephan Sonneborn05.07.2021
ByteAttack21.01.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

Georg Teles (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie