VDM is a free tool. It allows you to work
on a remote computer like VNC and similar.
But there is one single but big difference
between VDM and the others ! With VDM
you do not need to load the big and often
completely unneeded desktop to your client.
You can work on the client with that single
window you want from the server even if it is
not fully visible, covered or out of screen
on server side. You can work on a server
with others on different or the same windows
without disturbing the person who works on
the server. Mouse clicks are simulated.
If a window uses subwindows its also possible to get a display with this part of the window.
For this, click in the window list "GetChildWindows". (right mouse click on the thumbnail)
TODO: Synchronize clipboard on server and client. (ctrl-c + ctrl-v)
Virtual Display Manager
VDM_v2.5.zip (~ 4.3 Mb)
Donate with Paypal & Co.
Since i had made a donate button,
i think its fair to set VDM's sourcecode online to make it open source.
I think this could help alot to find bugs, and if
you think you can change something usefull in the code please write me.
In VDM_appdata are the Perl files. Ps: I use GVIM to edit it.
How to install it on a local computer to test the function of your VDM Server and Client:
- Start Server_Interface.exe.
- Open the "User" tab in the interface.
- Write a Name and a Password in the fields on top of the tab.
- Click on Save to add the new user to the list of authorized users.
- Go back to the "Main" tab.
- Addr and Port can be filled for a localhost (127.0.0.1) server on port 5000.
- (default is 0.0.0.0 = all ip addresses+localhost, or input the ip you want for remote access)
- Click on "Start Server Process" to start your VDM server_process.
- If something goes wrong click "Open Server Log" to see what's going wrong.
- Run VDM_Client.exe
- Write in "IP_Port ->" where your server is: 127.0.0.1:5000 for localhost.
- Write in the Name and Password fields the two you have used in the server_interface.
- Click on Save at the bottom.
- Now connect to the server with a click on "Connect to Server".
- When everything works you see the windows loaded from the server as thumbnails.
- Right click to these windows for special things or left click to open a terminal to this window.
Start a console Version of the program to debug, because
sometimes you can get more error information as in the server log.
Try to choose a directory name without spaces and no umlaut characters (äöü++) as install dir.
Sometimes a window needs to be in the foreground to respond to mouse input.
(In the Title Rightclick-Menue of the client is a SetForeground Button)
Try to use the keyboard to click a nonworking button. (tab-tab and enter or space)
You can specify here what windows you want to load.
If empty all topwindows will open.
1) Pathname and/or filename of the Windows executable.
2) Classname of the Windows
3) Windowname (title-text)
-1 = Search all windows and childwindows.
0 (default) = Only topwindows
1 - X = A number to set max. Child-Depth to search under.
You can use perl-regex.
All parameter must be separated with a colon (:)
calc.exe = Calculator toplevel-windows only.
:Classname = Toplevel-windows with this CN only.
:Classname::-1 = All windows with this classname.
(notepad.exe|explorer.exe) = Open windows of 2 programs.
explorer.exe:::-1 = Explorer windows and all subwindows.
explorer.exe:TrayClockWClass::-1 = Only tray clock subwindow.
How to open more than one instance of the VDM_Server on the same machine:
When you start server_process_console.exe, usernames
and passwords from the server_interface gui will be used.
(saved in: config\config_server.dat and config_server_users.dat)
You can use this switches with server_process.exe and server_process_console.exe.
(server_process_console.exe writes textual feedback server_process.exe not.)
Sets or overwrites the ip from the server-interface gui configuration.
Sets or overwrites the port from the server-interface gui configuration.
Every server on same machine must runs on its own port or ip.
-users "Name-1/Password-1" "Name-2/Password-2" ...
You can define users with login-rights in this option
or else the user-configuration from the server-interface gui will be used.
As password it's always better to use the KEY-HASH like the server-interface gui
use it if you define a new user but a clear-text password will also work.
Here is an example:
console: server_process_console.exe -ip 127.0.0.1 -port 5000 -users "Admin/test"
If you need no console output you can use server_process.exe (nonblocking)
but this opens a new hidden process and you can't break with CTRL-C.
You can then send a stop in the server-interface gui.
But if you open multiple server-processes the gui knows only the last process
and you have to kill them with the task manager instead of CTRL-C in the console-window.
(Server_Interface controls Server_Process in the same directory)
How to use client(_console).exe to open remote windows from the commandline:
Use -openwindow and -openthumbs switches.
In your saved.bat and saved.lnk folders your saved client sessions are using
this switches to open a thumb-tab or client-windows directly with one click.
-openwindow opens the matching client-windows directly.
-openthumbs opens the matching client-windows as a list of thumbnails in a new client-window-tab.
-tray_login_gui Show client.exe gui as trayicon at first start. (hide login window)
You can open more than one client-window when one uri statement matches different server-windows.
And you can use multiple uri statements in one -openwindow switch.
client(_console).exe -openwindow "winuri-1" "winuri-2" "winuri-3"
Use client_console.exe (could block process) if you need console output to debug.
Ip: Ip-Adress of the VDM_Server you want to open the windows.
Port: Port of VDM_Server (Standardport:5000)
Username: Username for the server with login rights.
Userpass: You can use a clear-text password or a KEY-HASH like the VDM_Server_Interface saves a password.
Pathname: The executable-file-path of the windows you want to connect as a perl-regex.
A path could be firefox.exe then only matching windows to this executable name will be connected.
You can also open all windows created from any executable under a directory (\dirname\) or drive (^c).
If pathname is empty all windows from the machine will be opened however their name/path is.
Classname: The class name of the window as a perl-regex.
You can see the window classname's in the VDM_Client in the thumbnail's info popup.
If the classname is empty all windows-classname's will match.
Windowname: The window title text of the window's you want to load as a perl-regex. See Classname.
If empty it finds all windows, use perlregex :^$: for a real empty title-text.
Maxdepth: Value of the depth of child windows to search under.
-1: All windows and childwindows.
0 (default): Only topwindows.
1 - X: Find topwindows and childwindows or deeper (grandchildren).
Some uri example's:
client.exe -openthumbs "127.0.0.1:5000:Username:Userpass:\firefox.exe$"
Open in the Client all firefox.exe generated topwindow's as a list of thumbnail's.
client.exe -openwindow "127.0.0.1:5000:Username:Userpass:\firefox.exe$"
Open in the Client all firefox.exe generated topwindow's found on server-side.
client.exe -openwindow "127.0.0.1:5000:Username:Userpass::^Notepad$"
Open all windows with the word "Notepad" in the classname.
client.exe -openwindow "127.0.0.1:5000:Username:Userpass:^c"
All windows with executable's on drive c will be opened.
client.exe -openwindow "127.0.0.1:5000:Username:Userpass:\calc.exe$:^CalcFrame$:^$:1"
Open a childwindow of the windows calculator on win7 for example.
client.exe -tray_login_gui -openwindow ......
The login-gui is not visible but in tray icon.
(in case you only want to see the client-windows)
server_process_console.exe -ip 127.0.0.1 -port 5000 -users "Admin/Password"
This starts a new server process with console output on ip 127.0.0.1
and port 5000 with one user named Admin can connect.
server_process_console.exe -port 5001
Uses the ip and user-list saved in the server_interface.exe settings.
But changes the Port to 5001.
This application is free for private and non-commercial usage only.
Available now: Virtual Display Manager
* Changelog *
Version 2.5 (21.08.2016)
- Zoomsystem for the "full desktop mode" does work now.
- you can choose now between many filetypes for the full desktop mode.
(single window system still uses jpgs)
Version 2.4 (15.10.2015)
- I forgot to include Balloon.pm from the solved yellow infoballoon problem in v2.1.
- Listbox windows will be closed when window loose focus. (mainwindow will not stuck)
- New windows open in the correct relative position to the parent. (ex: very needed for listboxes)
- Wrong variable name solved. (In some situations the server was unable to start from the interface.)
- New auto-open function 'Same App'. (only windows will be opened with same exename)
- New titlename style for clientwindows. ('titlename or-if-empty classname' - exename - VDM)
- Better analyse of ws_(ext)style on server-windows to use with client-windows.
- Taskbar and Desktop window are now toolwindows as client. (small Titlebar with X-Button)
- New titlebar-icon for window-styles edit-window.
- Delay interval between loads from the server is bigger if window unchanged. (delay*2)
- New windows are opened from server down to up in z order. (ex: dropdown menu above topwindow)
- New auto-open functions 'Same PID' and 'Same TID'. (process or thread ID)
Version 2.3 (12.08.2015)
- There was a larger problem since the last update. (client freeze on local connections)
- The same problem created a 200 bytes empty filename in the yellow thumbdescription.
- Another bug was the server sets all windows to layered without set it back.
- I have done some changes to make sure server and client will work on XP again.
- MultiCommand system for a better client-server communication.
- Closed windows will raise a messagebox when opened from thumbs-tab. (tnx Thierry)
- There was a bug in the window_styles editor. (sometimes wrong data)
- Now root windows will use the same windowstyle like the server window. (ex.: border remove)
Version 2.2 (26.07.2015)
- Black window border problem on vista+win7(if dwm on) and windows8 solved.
- Minimized windows are now visible as small icon when DWM enabled. (was black if DWM on)
- New window to disable or enable window styles (WM_STYLES and WM_EX_STYLES)
- New window class styles entry in the info popup window. (CS_STYLES)
- 10x faster thumbnail loading on machines with dwm enabled.
Version 2.11 (27.06.2015)
- Bug in interface solved. (stop server problem, ip problem)
Version 2.1 (23.06.2015)
- If no single user is defined the server exits with a message now.
- The Button to open the complete desktop was not visible if window was to small.
- On multimonitor systems the client will now open new windows on the screen with the mouse.
- Desktop streaming was broken at negative screen coordinates.
- Mouse infoballoon was further displayed when the mouse was quick enough on popup.
- Window frame is no longer visible in client windows (window in window effect killed).
- Window menubars from the server window will be cloned on the client window.
Version 2.0 (15.06.2015)
- It comes now as a portable zip file.
- Better log. (perl runtime-errors can be seen in log as a multiline error description)
- Real executables for all apps + a console version for every app.
- There was a bug in the saved sessions listbox. (empty lines)
- Invented a new window-uri-system. (for example if you want load firefox.exe windows only)
- There are now commandline-switches for the main functions of the software.
- Window blinking on the server when thumbnails are loading solved.
- You can choose the stream quality now. (for slow or fast networks)
- Auto-open for new serverside windows (right-click-menu's, popups, normal-windows)
- Auto-open remember answer system to ensure only wanted windows open automatically.
- Now saved sessions are represented as a batch file or lnk-file in saved.lnk or saved.bat directory.
(to open a client directly without using the client-gui to connect)
- Client-windows can now be bigger as the screen
(means a to big server-window will not resized if it not fits the client screen)
- Sessions tabs are now listed on left side not above for better visibility
- Mouse button 4 & 5 now working in client.
- Mousewheel bug solved.
- System was instable because some rarely needed modules was not included.
- System-(right-click)-menues mouse bug solved.
- Thumbnail info popup: Thread and process id added.
- Fixed a problem with capital letters. (they was not working)
- When a window is now closed on the server side, it will automatically close on client side without warning.
(this is needed for right click menues to work on-the-fly .. only connection problems should raise a popup)
- Problem with negative window-handles solved. (now the client is more stable)
- System to send mouse messages to server windows extremely enhanced and debuged.
- Done some memory optimation for the server.
- Solved a client-loader connection problem. (corrupt image data was closing connection)
- Enhanced VDM to stream the complete desktop too.
(like every other remote desktop tool does)
Client & Server v1.04 (29.04.2013)
- Internal Public-Private-Key Password handling for better Security.
- Port 5000 bug solved.
- Much more information about the windows in the Client.
- Better Mouse support. (Right-Key,Middle-Key,Double-Clicks)
- Connection broken bug when you try to load local windows with an open Client solved.
- Unstopable error message on Server-Interfave when server exits abnormaly solved.
- And other small things.
- Interface - Server communication problem on 0.0.0.0 solved.
- Changed 127.0.0.1 to 0.0.0.0 as standard. (easy for new user)
Client & server v1.01
- There was a problem with ALINK, i'm now use GOLINK (avira false detection)