This project is read-only.

home.png Desktop Alerts

Outlook-style Desktop Alerts for VFP applications.


Note: this project has moved to GitHub:

The Desktop Alerts project, managed by Kevin Ragsdale, provides VFP developers with a reliable mechanism to add Outlook-style Desktop Alerts to VFP applications.

If you are interested in helping Kevin on this project, please contact him at kevinragsdale (AT)

vfpxreleasesmall.png Latest Release of Desktop Alerts

Last edited Apr 9, 2017 at 2:15 PM by DougHennig, version 16


KevinRagsdale Feb 10, 2013 at 2:00 PM 
Hi gabirom,

Can you provide some details about what you're trying to accomplish?


gabirom Feb 5, 2013 at 4:06 PM 
how i can use desktop alert on terminal server (windows server 2008) ??

nmeza May 5, 2012 at 3:09 PM 
buenas días, logre que me mostrará la alerta, pero no la puedo cerrar o mover, a pesar de incluir el código para esto ultimo, la alerta se cierre sola pasados unos 12 segundos.

¿que puede estar pasado? gracias de antemano

jrfrye1 Mar 22, 2012 at 7:51 PM 
Hi Modakindia, the reason you are getting that error is because you have to register the VFPAlert in your Windows system. Please see el_oskaros solution... It successfully registers vfpalert in Windows 7 64 bit OS

modakindia Feb 3, 2012 at 4:30 PM 
I am getting error when trying to run sample form from deskalert project. Error : Class definition VFPALERT.ALERTMANAGER is not found. Please help.

vaday Dec 30, 2011 at 5:31 PM 
Excellent work.. It was just what I needed for replacing all WAIT NOWAIT NOCLEAR and ACTIVATE POPUP NOWAIT.
By changing ‘myregularclass’ (soto voce) to return ‘NULL’ till the user made a selection… and then pooling for this value only in subsequent DoEvents greatly extends functionality.

bentam Dec 30, 2011 at 5:23 AM 
Hi Kevin

Is it possible to send message to other PCs via VFPAlert?

Ben Tam

el_oskaros Apr 6, 2010 at 10:38 AM 
I used Shell.Application object to register Desktop Alerts in Windows Vista, 7 (with UAC)
local oApi
oApi = createobject('Shell.Application')
if os(3) >= '6'
release oApi

KevinRagsdale Apr 2, 2010 at 8:25 PM 
Hi Randy. Yes, you really need to use an installer, since it runs with Admin privileges. Batfink's issue, IIRC, had more to do with *where* the app was being installed... Kevin

RandyJean Apr 1, 2010 at 9:28 PM 
Wound up running the app using "Run as Administrator" (even though the user I was logged in as was an administrator) and this got it to register. So, I may wind up adding vfpalert.exe to our application installer rather than trying to install & register it on the fly.

RandyJean Apr 1, 2010 at 9:04 PM 
Having the same problem as Batfink91 trying to register on Windows 7.

MHawksworth Feb 15, 2010 at 8:10 AM 
Not sure of this but if you are running the 64bit version of Win7 it could be that you are registering it into the 64 bit area and it won't run as it is only 32bits or, and this I think more likely, it is registering into the 32bit area but the windows task manager only looks at the 64bit area.
I have had fun and games with ODBC and a few other bits with things like this. try using the 32 bit task manager in the WOW64 folder if there is one. As to getting it to actually run (ie the 32bit task manager service) I have no idea :(

Batfink91 Feb 14, 2010 at 9:29 PM 
This does not appear to be working in Windows 7. I am running vfpalert.exe /REGSERVER as Administrator and it seems to accept this (i.e. no confirmation but no error message either). However vfpalert.exe does not show in the Task Manager and it does not work in VFP. Works great in Windows XP. Any ideas on how to get this working in Windows 7? Thanks

righthere Dec 4, 2009 at 10:22 AM 
That's great. I wanted to have sticky notes like you get on the desktop in win7.


Have added a property to the alert class
Hidden _lStickyNote

In the init of the alert:
._lStickyNote = .F.

A new procedure used by the client who wants a sticky note
Procedure SetStickyNote()
This._lStickyNote = .T.

So i have done that in the init of the form;

.cntPin.lPinned = toParams.StickyNote

StickyNote is an extra property of the cargo passed to the init of the form

Finally in the fader timer,

.tmrWait.Enabled = Not .cntPin.lPinned (instead of explicitly turning it to true)

I works like a dream! Thank you very much Kev

KevinRagsdale Dec 4, 2009 at 2:32 AM 

The easiest way is to set the lPinned property of the cntPin object to .T. in the Init() method of the frmAlert form class.

I added it at the end of the Init() right before the ENDWITH:

.cntPin.lPinned = .T.

The cntPin object as an assign method for lPinned, which updates the UI and disables the wait Timer.

Hope this helps!


righthere Dec 4, 2009 at 12:43 AM 
Kevin, the alerts work great, many thanks. I know I can add some enhancements but i wanted to ask in case i had missed what was already working. I wouldlike to be able to default the alert startup with pushpin pushed in, in other timer suspended (i think). Is there a way to achieve as is?

paulbose Sep 18, 2008 at 9:21 PM 
Hi Kevin

Thanks for your Alert

When alert Pops up, couldn't work with other to make it run in new thread so it wouldn't stop my other work


e_alexs Aug 30, 2008 at 7:29 PM 
Hello, my english is bad, i have problem, this file no found, my i help you