This article was contributed by Phil Petree.
Environment and Other Notes
- Compiler: VC++ 5
- Libs: Standard plus netapi32.lib
- Source: Included, compiles cleanly at warning 4, non MFC
- Copyright: None
- Unicode: Yes, required
This article demonstrate the proper usage of some of the NT NetMessageXXX functions by sending a pop-up message to any logged in user on the network or list the user names on your NT server.
When I started this little code sample, I needed a way to programmatically send a pop-up message to a specific user. I found the documentation to be sparse and the sample code to be non-existent.
In sending a pop-up message to a user using NetMessageBufferSend() I found that many of the documented parameters were hard to understand and once understood I could obtain that information programmatically too (i.e. server name). So, basically I implemented four basic calls to the NetXxx API:
- NetMessageNameEnum() – Which gets the names of the alias (user names) on the specified server.
- NetMessageBufferSend() – Which sends a message to a specified user.
- NetServerGetInfo() – Which gets the name of the server we’re running on.
- NetWkstaUserGetInfo() – Which gets the name of the user account we’re logged in as.
Viewing the code you can see how calls are made to each of the above functions and how NT will allocate a data buffer for you (the Get functions) and you must then release the data buffer yourself using GlobalFree().
I did not implement the remote server aspects of these calls. I played around with them a little but was not successful in determining the proper format for the server string. Since, for my own purposes I only needed local access I did not pursue this issue (but I would like to know how it works).
Also, the NetMessageBufferSend() does not return an accurate return code if you don’t have proper security rights. Logged on to an NT Workstation under a user id that does not have Administrator rights and attempting to send a message to anyone, including your self and NetMessageBufferSend() returns immediately with an error code of NERR_NameNotFound. When logged in with Administrator rights this return code is not seen and the message is indeed sent (even to yourself). The documentation clearly states that you do not need special rights to use this API unless you are accessing a server remotely and this proved to not be the case.
As for the program, it accepts a user name to send a pop-up message to and a message to send. The message must be surrounded by quotes or else just the first word of the message will be sent.
Date Posted: January 16, 2000