Reference on how to write my own RDP client - rdp

I want to be able to access some device specific data while running an application on a remote machine. The problem is that if the RDP window is minimized this data is not available. One solution I'm examining is writing my own RDP client so that the server machine always thinks that it has an active display (even when the client machine is locked).
Does anyone know of a reference on how to develop an RDP client (preferably in .NET)?

Check out Terminals at Codeplex. Open source multiple RDP client; browse the code for some hints.

Related

Why does my virtual machine stop conducting blueprism automated processes when I minimize or close it?

I automate processes on a remote computer. When I start a process from the control room, that works totally fine. But as soon as I minimize or close the remote computer (I don't shut it down, I just close the window), the remote computer crashes. The log contains entries like that elements cannot be found. The reason is, that the remote computer does not even open the applications.
So, what's the reason for that? The computers state is on desktop, so there is no screensaver or logon screen.
Expected result: The robot should work finely even when the remote desktop session is not on screen, like in production environment.
You haven't specified, but the below answer extrapolates your statements regarding how you've "[minimized] or [closed]" your "remote computer" to assume you're leveraging Microsoft's Remote Desktop Connection utility/protocol.
Blue Prism specifically discourages the use of Remote Desktop to manipulate remote Runtime Resources within a Blue Prism-based environment, as the use of the protocol itself causes the methodologies Blue Prism uses to locate elements in the Windows desktop environment to stop working entirely. This is explicitly spelled out in Blue Prism's official documentation on Remote Access Tools:
The following tools have been deemed to be specifically unsuitable for
providing remote access to Blue Prism environments:
Remote Desktop Connection (RDP)
The way that this Windows tool (and other tools that
use the RDP protocol) handle session management is not compatible with
Blue Prism:
The underlying operating system is aware as a connection is established which can, subject to the automation techniques being
applied, result in the executing automation being interupted.
It requires the remote access credentials to be aligned with the credentials used to authenticate the target system against the network
which presents a potential security risk.
As a user authenticates any previously connected users are locked out.
Each connection creates a separate desktop session.
The connection is not maintained throughout a system reboot.

Browser based document scanning

I am building a browser based application for document scanning. I have looked at offerings from multiple providers like dynamosoft, asprise, atalasoft etc. My basic question on browser based document scanning is that does any of these products enable scanning from remote machines, using browser based interface? Or should scanner be always connected to the system from where browser is launched?
Yes. Browser based document scanning relies on the communication between a local service and the web client. Usually, you need to download the installer of the local service when browsing an online demo of document scanning at the first time. If you want to scan documents from a remote machine, just deploy the service on that machine. Then change the IP for web socket connection.
For example, here is the architecture of Dynamic Web TWAIN.
The scanner should be always connected to the system from where the local service (not the web browser) is launched.
You can watch the video to see how to use Raspberry Pi as the scanner service to capture documents from iMac.
Yes, There is a Application that enable scanning on remote machine. When someone open the browser a connection between web browser and that local machine application established. This connection is done easily by HTML5 Web Socket. Local application do scan and send this image via this connection to your Browser.
Here is the open source repository,
ScanAppForWeb
I'm hoping this will be helpful, though it's not a direct answer to the question.
After spending a lot of time trying to get WebUSB to work try researching other options, I found a solution that works well for my web app. Simply use scanimage to scan to the server. The client sends and AJAX request, the server builds a command string to run with shell_exec in PHP, then use file_get_contents or whatever with the scanned image. In my situation, there's no reason for the scanner to talk to the client, since the image is going to end up in a database on the server anyway.
See also: https://stackoverflow.com/a/63198443/4509516
Extrieve HTTPTWAIN browser-based document scanning SDK support , document scanning from a remote PC. This require service client to be deployed on the remote PC and Web module should connect to the service using ip and port of the remote pc.
To Know more visit- https://www.extrieve.com/web-document-scanning/

Automated UI testing on remote computers without installing anything remotely

Which options do we have to do automated UI testing on remote computers connected via RDP, if I don't want to install anything on the remote computer?
My only idea is to open the rdp session always in the same way and use recorded mouse and key strokes, but there are some disadvantages, e.g. I assume it's slow?
Anyways, do you know any open source or proprietary tools I can use? Best would be that I have to install nothing on the remote machine and play the record on my local machine.
Starting with UFT 11.50 (previously known as QTP) there is support for image based testing.
You can have one machine with UFT installed and replay on other machines via RDP using Insight UFT's image based automation solution.
eggPlant Functional allows you to automate the UI of any app on Windows machines using an RDP connection. It's pretty fast assuming you are connecting over a decent network, and you don't need to install anything additional on the target machine.

Upload a file into a VB.NET application running under terminal services

We are developing an application in VB.NET that will need to accomodate remote users logging onto a Microsoft Terminal Server using RDP through the MSTSC.exe client.
Is it possible to offer an 'Upload' button which will allow the remote user to pick a file from his/her local hard drive and upload to the server ?
In the Windows Remote Desktop client, each user will have to enable an option. Under Local Resources, press More.... Here you can select the local drives you want the Terminal Server to see. The drives will come up as a network drive on the Terminal Server.
I don't know if you need to set up anything on the Terminal Server. You may need to open additional ports on the firewall.

Online product demo environment for Windows applications

I'm looking for a way to allow potential customers to try my application before they buy it.
The product is a windows forms application that requires an SQL Server database to operate.
Although I have a functional demo that the customer can install on their network, I want to make it easier for them by have them "play" with it at my environment.
I remember Microsoft had (has?) something similar. I was testing Visual Studio a few years ago in a virtual environment where I was connecting to a server at Microsoft.
They setup the environment this way so when a user logs off after using it rollback his actions. Or to explain it better: when a user logins it starts with a new, clean environment.
So any projects I've created testing Visual Studio were lost after I logged off.
Any suggestions?
Thanks.
Some solutions that come to mind:
Provide remote access
You could provide access to a running instance of your application via some sort of remote connection protocol, e.g. via RDP or via VNC.
For example, there is a Java VNC client which can run as a Java applet; you could put that on a webpage and have it connect to a VNC session you host on your servers.
Or use Windows Terminal Server, and allow connection via RDP.
Both solutions of course have the drawback that people need to open the appropriate ports, if they are behind a firewall. There might be ways around that, however (e.g. you can run VNC over HTTP).
VM image
A completely different solution: Provide a ready-to-run VM image (for VMWare, VirtualBox or similar) of your application, including server and everything. You would need a demo version of your app though, plus getting redistribution rights for all the proprietary components (Windows OS, SQL server) might get hairy.
Offer videos
Often people do not really need to actually use the app; they are mainly interested to see how it works. So maybe it is enough to host videos of the app in operation. That allows you to put in some advertising for your features, and lets you show the users what they might miss when testing on their own.