Newsgroup: it.comp.appl.access
Titolo: [ot] api per sfruttare le finestre tipo messenger

Ciao a tutti
vedo sempre più spesso software che sfruttano la zona in basso a sinistra 
dello schermo per far apparire messaggi...vedi messenger, avg, yahoo 
messenger, norton live update.
qualcuno sa come si gestiscono? se è possibile farlo da access?
Oppure qualche link
ciao, aeom 

 ciao, aeom
con vbs puoi fare unscire un msgbox al verificarsi dell'evento che vuoi.
Indipendentemente da qualsiasi applicativo aperto.
Ovvio che puoi anche accedere al tuo db verificare l'evenienza di quel che
vuoi e lě lanciarlo
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 ha scritto nel messaggio
news:PMese.29788$75.17...@news4.tin.it...

Non ho mai fatto prove, ma penso ci siano 2 possibilità:
1)Un ToolTip sull'icona della SiStray, questo è abbastanza semplice
   da gestire, nel mio Sito alla sezione API Controlli avanzati trovi
   l'EXPLORER che imposta l'icona nella SisTray, e vedi anche l'uso
   dei ToolTip con il SubClassing, forse nel tuo caso se vuoi solo
   sparare il Messaggio potresti anche evitare il SubClass.
2)Creare una Form Popup e tramite il passaggio del parametro
Const WS_EX_TOOLWINDOW = &H80
alla API SetWindowsLong ne modifichi l'aspetto, in particolare questo
parametro
rende la CaptionBar molto sottile ed anche il CloseButton, proprio come le
Form che dici....!
Quindi con  SetWindowPos passi le coordinate della Form ricalcolate
per l'angolo in basso a SX o DX come vuoi...!
La chiamata a SetWindowPos non ha solo l'effetto di spostare la Finestra
ma anche di effettuare il REPAINT passando i parametri corretti o meglio non
passando
quelli che non consentonon il Repaint: SWP_NOREDRAW
(Questo Demo lo trovi alla sezione API 1.9 Effetti su Form)
'---------------------------------------------------------------------------
------------------------------
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA"
(ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_EXSTYLE = (-20)
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long,
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As
Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOSIZE = &H1
Const WS_EX_DLGMODALFRAME = &H1
Const WS_EX_NOPARENTNOTIFY = &H4
Const WS_EX_TOPMOST = &H8
Const WS_EX_ACCEPTFILES = &H10
Const WS_EX_TRANSPARENT = &H20
Chiamale così, facendo attenzione alle coordinate di SetWindowsPos
    SetWindowLong hwnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW
    SetWindowPos hwnd, 0, 0, 0, 0, 0, _
        SWP_FRAMECHANGED Or _
        SWP_NOZORDER Or SWP_NOSIZE
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 ha scritto nel messaggio 
news:d8rusd$cki$1...@domitilla.aioe.org...

grazie dei consigli e del codice
ho creato la form simile a quella che compare quando entra un utente in 
messenger....quello che non riesco a fare è determinare come farla uscire 
sull'angolo in basso a destra in base alla risoluzione dello schermo.
qualche suggerimento?
ciao, AEOM


In base a quale evento deve uscire?
Col tuo programma aperto o chiuso?


 ciao, AEOM
Se hai usato SetWindowPos ti basta sostanzialmente sapere la risoluzione
video in PIXEL, ricavare la dimensione della Form
sempre in PIXEL per evitare inutili conversioni e per sottrazione
ricavare la nuova posizione.
Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type
Private Declare Function GetWindowRect Lib "user32" _
(ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long
'  Device Parameters for GetDeviceCaps()
Private Const LOGPIXELSX = 88        '  Logical pixels/inch in X
Private Const LOGPIXELSY = 90        '  Logical pixels/inch in Y
Private Const BITSPIXEL = 12         '  Number of bits per pixel
Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
Private Const SM_CXVSCROLL = 2
Private Const SM_CYHSCROLL = 3
Private Const SM_CXBORDER = 5
Private Const SM_CYBORDER = 6
Private Const TWIPSPERINCH = 1440&
Dim rc as RECT
Dim lret as variant
Dim m_ScreenWidth as long
Dim m_ScreenHeight as long
Dim newX as long
Dim newY as Long
' Quì ricavi la Risoluzione VIDEO
m_ScreenWidth = GetSystemMetrics(SM_CXSCREEN)
m_ScreenHeight = GetSystemMetrics(SM_CYSCREEN)
' Quì ricavi le coordinate Rettangolari in PIXEL
' vengono rese nella variabile rc passata ByRef
lRet = GetWindowRect(m_hWndSection, rc)
' Ora se fai la differenza tra Right e left trovi la
' larghezza e uguale per l'altezza...!
newX=m_ScreenWidth - (rc.Right -rc.Left)
newY=m_ScreenHeight -(rc.Bottom - rc.Top)
Dagli un pò di margine dovuto alla SysTray, che si può anche calcolare
ma al momento non ho sotto mano la possibilità di guardare...!
Ora sempre tornando a SetyWindowPos invece di passare i parametri
a 0 passa le nuove coordinate.
SetWindowPos hwnd, 0, 0, newX, newY, 0, _
        SWP_FRAMECHANGED Or _
        SWP_NOZORDER Or SWP_NOSIZE
Ricordati che la form deve essere POPUP, altrimenti devi calcolarti
le dimensioni della MDI_Access e le coordinate della Form saranno
relative alla MDI e diventa tutto un pò più laborioso.
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Col tuo programma aperto o chiuso?
Aperto
ciao, AEOM

 Se hai usato SetWindowPos ti basta sostanzialmente sapere la risoluzione
si l'ho usata
adesso provo
ciao, AEOM 

 ciao, AEOM
Interessante


 credo)
Si non è un problema interrogare il db (MSDE) volevo solo creare quel 
"simpatico" effetto grafico della piccola form che scorre su e giu tipo 
messenger quando entra un tuo contatto
ciao, AEOM
