Help Me Now
A Remote Help library for your customers
HelpMeNow is a library for software developers to provide quick help to their customers.
Features:
- Vista or later
- x64/x86 DLLs
- Can view or interact remote screen
- Reverse connection: Client is not required to setup NAT or firewall.
- Chat, clipboard and file transfer.
- Sound chat support
- DLL library update mechanism
- Black background and disabled animations while in remote session
- Use HMN to allow your client to request support from your software. HMN is a two-part library: The client runs the client-part which connects to your servers (outgoing, no incoming setup needed by the client), and the server part which is run by your support team.
Help Me Now SDK. Download.
Includes:
- x86 DLL
- x64 DLL
- client/server examples with Visual C++ solution
If you want a static library, contact us to redistribute HMN with your applications.
If you want the HMN client application, download here.
Server Setup
Your main server should call this function from the DLL:
extern "C" HRESULT __stdcall IGiveHelp(
HWND hParent,
HICON hIcon,
unsigned short Port1,
std::function <HRESULT(vector<char>& ticket, string& ip, int& port)> facc,
const wchar_t* SuppName,
int MaxUsers,
vector<tuple<string,unsigned short>>* Redirects)
This function expects:
- A HWND for the parent of the waiting dialog, can be null.
- A HICON to show in the waiting dialog
- The port number to listen for incoming connections for negotiation.
- A callback function that is called when an incoming connection is requested:
- The first parameter is the RDP ticket of the connection
- The second parameter should be set to the IP of the server that the call should be redirected. If you do not set this value, the library takes the WAN IP of the machine the server runs at.
- The second parameter is the port number for the call to be redirected. The default port is 7005.
You must return a success HRESULT from this callback. If you return an error code, the connection is rejected.
- The name that your client will see as the connecting user.
- The maximum number of clients you can take. Pass 0 for unlimited.
- A vector of a pair of IPs and ports that this connection will be redirected to. In this case, the server does not take itself the requests, but it forwards to any available client from the list.
A scenario for the redirect case would be:
- You have a main server listening to port 7004 to some public IP and your support staff with servers listening to 10.5.5.1 at port 701,702, 10.5.5.2 at port 703,704, 10.5.5.3 at port 705,706.
- Someone connects and asks from help to main server
- The main server redirects to the first list of IPs which is available
Client Setup
Your application, running in your client, should call this function from the DLL:
extern "C" HRESULT __stdcall IWantHelp(
HWND hParent,
HICON hIcon,
const char* host,
int TCPPort,
const wchar_t* MyName,
bool BlackScreen)
This function expects the HWND Parent (can be null), an HICON to show in the waiting dialog, the host name of the server and the TCP port of the server, along with a customer name. If BlackScreen is true, then the screen background is removed for the connection. If the connection fails, this function returns a HRESULT error code. If the connection succeeds, this function does not return as long as the help session is ongoing. When the help session is terminated, this function returns a HRESULT success code.