Charging for Applications Opened from the SiteKiosk Windows Start Screen

In case you want to charge for applications that are started from an element on the Start Screen, you need to start the application using an html link instead of starting the application directly. Please note that only the Start Screen in combination with the IE browser engine allows the usage of payment features.

In the following example we will use Microsoft Word to demonstrate the process. You can apply this to any other application.

First open an editor like Notepad. Copy and paste the following html code:

<html>
   <head>
      <script type="text/javascript">
         <!--
            function StartApplication(){
                  window.external.InitScriptInterface();
                  SiteKiosk.ExternalApps.Run("C:\\Program Files (x86)\\Microsoft Office\\Office15\\WINWORD.EXE", true);
                  window.close();
            }
         //-->
      </script>
      <title>Word</title>
   </head>
   <body onload="StartApplication();">
   </body>
</html>

The SiteKiosk Object Model method Run starts the actual application. Change the path to whatever application you want to start and charge for. Make sure to use double backslashes in the path.

Save the above html code as an html file (e.g. word.html) and put it in the ..\SiteKiosk\html folder. Do the same for every application you want to start from the Start Screen. If for example you want to run 3 applications, you need 3 html files, one for each application.

Now open the configuration editor of SiteKiosk and add your application on the Applications page.

Next configure your payment device(s) and the service rates on the Payment Devices page.

Then switch over to the Start Page & Browser settings. Choose Internet Explorer as the browser engine. Select the Start Screen and click on Customize. In the new dialog go to Start Screen Editor and open the editor. In the template you want to use, add a new element and select Web link instead of Application link.

Add the html file that starts the desired application as a link and make sure to select a matching caption for the element.

For our example we would use file:///C:/Program Files (x86)/SiteKiosk/Html/Word.html.

Create a web link element for each of the applications you want to use.

Now SiteKiosk will charge for starting an application from the Start Screen.

Changing the User Agent of the SiteKiosk Windows Chrome Browser

To complement the 2013 blog post about changing the user agent string for the IE engine of SiteKiosk we will look at doing the same for the Chrome browser engine of SiteKiosk.

Please note, that you can easily add information to the standard user string by using the configuration options of SiteKiosk. Just go to Start Page & Browser -> Chrome Browser -> Customize -> Settings. There you can add SiteKiosk to the user agent header and also a freely customizable string that by default adds the Windows name of the computer ($ComputerName).

If you do not just want to add something to the default user agent you can open your SiteKiosk configuration with an editor. You will find a default setting that looks like this:

"userAgent": {
	"enabled": false,
	"full": "",

Using the default setting will result in something like this (depending on the SiteKiosk version used), when opening the W3Schools test page:

You can change the default values to this:

"userAgent": {
    "enabled": true,
    "full": "Whatever you want SiteKiosk to use as user agent string",

The attribute full is a string that you can copy a standard current or old Chrome user agent string to or any other existing or made up user agent string. Be aware that doing something like this can lead to problems on webpages, as they then assume a browser engine that in reality is not available, causing possible rendering issues.

The effect you will receive from doing the above change can be seen on the W3Schools page again:

Customizing the SiteKiosk Windows Chrome Browser Toolbar

Today we continue looking at options to customize the SiteKiosk Windows Chrome Browser. In last month's post we learned how to easily swap images for the buttons of the browser tooolbar. This time we are going a bit more into the details and learn how to change colors for individual buttons.

Before we start I want to remind you, that there is an even simpler way to change the overall colors of the SiteKiosk Windows Chrome Browser. Just go to Start Page & Browser -> Chrome Browser -> Customize -> Browser Design in the SiteKiosk configuration editor. There you can find 5 color pickers for a quick custom adjustment.

If you scroll down a little bit on that page, you can find an additional section that you can activate to create custom colors for every browser element.

The customizing options provided by the configuration editor are already quite comprehensive. We will be going a step further and change the colors of just one button to make this button standout from the rest and attract the user's attention.

To do that, we need to open and edit a JSON (JavaScript Object Notation) file that is used by the Chrome Browser of SiteKiosk Windows. The file content.json is located in the folder C:\Users\Public\SiteKiosk\data\content\local\files\projects\d97aa96b962543fcb39625a3f8e8d8fb\000000000000000000000000. Open it with an editor like Notepad++.

For the purpose of this demonstration we will continue to edit the individual button that you can configure on the configuration page for the Chrome browser toolbar: Start Page & Browser -> Chrome Browser -> Customize -> Browser Toolbar. In the content.json file look for this line:

"type": "content-custom-button-container",

This is the start of the definitions for the individual or custom button. A few lines down we can find a segment that looks like this:

"icon": {
	"src": "files/images/custom.svg",
	"color": "[[$root.colors.toolbarButton.icon]]",
	"hoverColor": "[[$root.colors.toolbarButton.iconHover]]",
	"pressedColor": "[[$root.colors.toolbarButton.iconPressed]]"
},
"backgroundImage": {
	"color": "[[$root.colors.toolbarButton.background]]",
	"hoverColor": "[[$root.colors.toolbarButton.backgroundHover]]",
	"pressedColor": "[[$root.colors.toolbarButton.backgroundPressed]]"
},

icon defines the image used for the button and the caption. src is the relative path to the image file so you can use your own image file without overwriting the existing one, color is the default color of the caption of the button, hoverColor is the color used when hovering the mouse over the button and pressedColor is used when the button is being clicked.

backgroundImage defines the colors for the background of the button. Again color is the default color of the caption, hoverColor is the color used when hovering the mouse of the button and pressedColor is used when the button is being clicked.

To assign your own color selection you can use the common notation format for colors: #FF9EDD.

Here is what an edited version of the above segment can look like:

"icon": {
	"src": "files/images/mycustom.svg",
	"color": "#FF9EDD",
	"hoverColor": "#BC7E87",
	"pressedColor": "#AE0000"
},
"backgroundImage": {
	"color": "#FFBE70",
	"hoverColor": "#FF8B51",
	"pressedColor": "#FF2600"
},

If you now prepare a configuration that includes an individual button you will get this result:

This is how the button looks by default:

Feel free to experiment with the values to create a custom browser experience that matches the needs of your kiosk project.

Using Custom Icons for SiteKiosk Windows Chrome Browser Buttons

In the last post we took a look at a method to add more than two custom buttons to the SiteKiosk Windows Chrome Browser. This time we will learn how to change the button icons to create an individual browser experience.

Note that you can easily change the general appearance of the SiteKiosk Windows Chrome Browser through the SiteKiosk configuration. Just go to Start Page & Browser -> Chrome Browser -> Customize -> Browser Design. Here you can change the colors of the different browser elements.

If you want to go a step further in customizing the SiteKiosk Windows Chrome Browser, you could use individual icons. All icons used by the browser can be found in the folder C:\Users\Public\SiteKiosk\data\content\local\files\projects\d97aa96b962543fcb39625a3f8e8d8fb\000000000000000000000000\files\images. They are available as scalable vector graphics (.svg format). As with every change you make to an existing application, you should make a backup of the original file. We will be using the icon for the custom buttons as an example to demonstrate the process.

You can use the original file as a starting point to create your own icon. Open the .svg file with an appropriate editor like Inkscape and change it the way you want the icon to look. In our example we repaint the custom.svg to this new icon:

If we now open the SiteKiosk configuration editor and go to Start Page & Browser -> Chrome Browser -> Customize -> Browser Toolbar to configure a custom button that links to http://www.sitekiosk.com, the result will look like this:

You can apply the same process to any of the existing icons for SiteKiosk Windows Chrome Browser.

Adding More Than Two Custom Buttons to the Chrome Skin of SiteKiosk Windows

Using the SiteKiosk configuration, you can add two custom buttons to the toolbar of the Chrome Browser in SiteKiosk Windows. In case your kiosk project requires more than two, you can add additional buttons by manually editing your SiteKiosk configuration file.

Start by creating a configuration with the default option of two custom toolbar buttons. Go to Start Page & Browser -> Chrome Browser -> Customize -> Browser Toolbar. Scroll down to the Individual Buttons section and edit the two buttons to your liking. When you are done, save the configuration.

The next step is to open your configuration with an editor like Notepad or Notepad++. SiteKiosk configuration files can usually be found in the ..\SiteKiosk\Config folder.

In the editor, search for customButtons. Your search will lead to some lines, that look similar to this:

"customButtons": {
	"button1": {
	  "caption": "Button 1: Open www.provisio.com",
	  "action": "openLink",
	  "url": "http://www.provisio.com/"
	},
	"button2": {
	  "caption": "Button 2: Toggle Onscreen Keyboard",
	  "action": "toggleOnscreenKeyboard",
	  "url": "file://"
	}
}

The customButtons section includes two entries for the individual buttons that have been created in the configuration, button1 and button2. The caption value contains the caption of a button, the action value contains one of the seven available actions for a button and the url value contains an optional URL if the openLink action has been selected, otherwise the default value is file://.

Available actions are as follows, the names speak for themselves:

"action": "shutdownWindows",
"action": "restartWindows",
"action": "logoffWindowsUser",
"action": "restartSiteKiosk",
"action": "showPasswordDialog",
"action": "toggleOnscreenKeyboard",
"action": "openLink",

Note that using toggleOnscreenKeyboard requires that you have configured one of the available On-Screen Keyboards in the SiteKiosk configuration, showPasswordDialog requires that you did not choose the option to not use a password to close SiteKiosk.

Adding an additional individual button is pretty straight forward. Create a new button entry named button3 (button4, button5, etc.) and set the caption, action and url (if the action is openLink) values. Basically you should get something like this:

"button3": {
  "caption": "Button 3: Logoff Windows User",
  "action": "logoffWindowsUser",
  "url": "file://"
}

If a button entry is not the last one, you need to add a comma after the closing curly bracket, e.g.:

"button3": {
  "caption": "Button 3: Logoff Windows User",
  "action": "logoffWindowsUser",
  "url": "file://"
},

Here is an example of a  modified version of the customButtons section with four individual buttons:

"customButtons": {
	"button1": {
	  "caption": "Button 1: Open www.provisio.com",
	  "action": "openLink",
	  "url": "http://www.provisio.com/"
	},
	"button2": {
	  "caption": "Button 2: Toggle Onscreen Keyboard",
	  "action": "toggleOnscreenKeyboard",
	  "url": "file://"
	},
	"button3": {
	  "caption": "Button 3: Logoff Windows User",
	  "action": "logoffWindowsUser",
	  "url": "file://"
	},
	"button4": {
	  "caption": "Button 4: Restart Windows",
	  "action": "restartWindows",
	  "url": "file://"
	}
}

If you save the above example as part of a SiteKiosk configuration and start SiteKiosk with it, you will get this result:

For the purpose of this screenshot, most of the default toolbar buttons have been disabled in the SiteKiosk configuration.

Please also keep in mind, that every additional custom button, beyond the two default individual buttons, will not be visible in the configuration editor of SiteKiosk. Changes need to be done in a text editor.

How to Remove the Progress Bar in the SiteKiosk Chrome Browser

Today we are looking at a quick way to remove the progress bar in Chrome browser windows of SiteKiosk Windows. Please note that this feature will most likely be added to a future version of SiteKiosk for the Chrome engine skins.

To achieve the task we need to edit a file of the Chrome Browser skin. The content.json file is located in the folder C:\Users\Public\SiteKiosk\data\content\local\files\projects\d97aa96b962543fcb39625a3f8e8d8fb\000000000000000000000000. Open it with an editor.

Look for the segment that starts with this line:

"type": "content-webview-progress",

This will lead you to this:

{
	"type": "content-webview-progress",
	"name": "loadProgress",
	"borderBottom": "1px solid transparent",
	"borderBottomColor": "[[$root.colors.border]]",
	"backgroundColor": "[[$root.colors.progress.background]]",
	"height": "7px",
	"paddingTop": "2px",
	"paddingBottom": "2px",
	"width": "100%",
	"color": "[[$root.colors.progress.foreground]]",
	"webView": "{{tabPageArea.currentTab}}",
	"_editor_canBeSelected": true,
	"_editor_canBeEdited": true,
	"_editor_canBeDeleted": true,
	"_editor_canAdd": true,
	"layout": {
	},
	"_editor_propertiesToEdit": {
		"applyToAllContentGroups": true,
		"flex": true,
		"margin": true,
		"text": true
	},
	"_editor_propertiesToEditRestrictedUser": {}
},

Within the segment look for the line:

"width": "100%",

Add the following line directly after:

"visible": false,

The edited segment should look like this now:

{
	"type": "content-webview-progress",
	"name": "loadProgress",
	"borderBottom": "1px solid transparent",
	"borderBottomColor": "[[$root.colors.border]]",
	"backgroundColor": "[[$root.colors.progress.background]]",
	"height": "7px",
	"paddingTop": "2px",
	"paddingBottom": "2px",
	"width": "100%",
	"visible": false,
	"color": "[[$root.colors.progress.foreground]]",
	"webView": "{{tabPageArea.currentTab}}",
	"_editor_canBeSelected": true,
	"_editor_canBeEdited": true,
	"_editor_canBeDeleted": true,
	"_editor_canAdd": true,
	"layout": {
	},
	"_editor_propertiesToEdit": {
		"applyToAllContentGroups": true,
		"flex": true,
		"margin": true,
		"text": true
	},
	"_editor_propertiesToEditRestrictedUser": {}
},

Save the file and start SiteKiosk to see the effect.

Starting the Chrome Browser of SiteKiosk Windows with Command Line Switches

Building on a technique already demonstrated in a previous post, this is a reminder, that it is possible to start the Chrome browser of SiteKiosk Windows with command line switches.

A comprehensive list of available switches for the Chrome/Chromium browser engine can be found for example on this page: http://peter.sh/experiments/chromium-command-line-switches/. Please be aware that for security and technical reasons a lot of these switches are not allowed in a secure browser like SiteKiosk. Nonetheless the supported switches may be helpful for developers creating a page for use in SiteKiosk or for creating a workaround for a specific project.

The command line switches must be manually added to the configuration of SiteKiosk that you are using (e.g. …\SiteKiosk\Config\YourConfig.skcfg). Open the SiteKiosk configuration file you want to use with an editor like Notepad or Notepad++.  Now search for this line:

"browserEngine": {

Change the following lines to look like this:

"browserEngine": {
        "commandLineArguments": {
            "set": ["show-fps-counter"],
            "remove": []
        }
    },

If you cannot find a browserEngine line please search for this line:

"showTaskBar": true,

Add these lines right before the showTaskBar line:

"browserEngine": {
        "commandLineArguments": {
            "set": ["show-fps-counter"],
            "remove": []
        }
    },


It should look like this:

…
"system": {
    "password": {
      "enabled": false
    },
    "browserEngine": {
        "commandLineArguments": {
            "set": ["show-fps-counter"],
            "remove": []
        }
    },
    "showTaskBar": true,
    "userAgent": {
…


The above example will bring up an FPS counter in the SiteKiosk Windows Chrome browser.

You can use more than one switch. In that case, you need to use a list of comma separated strings:

"set": ["show-fps-counter","disable-web-security"],

How to Maximize New Chrome Browser Windows

Some SiteKiosk users want to open new SiteKiosk Chrome Browser Windows maximized. This can be achieved by using a small external script that is easy to add to SiteKiosk.

The script makes use of the SiteKiosk Object Model and looks like this:

SiteKiosk.WindowList.OnInsert = OnInsert; //Event that listens for new windows

//Function that is called when a new window has been added, gets the object that represents the new window as parameter
function OnInsert(skwin){
	//Check the window type, type 3 is an application window, which also applies to a new SiteKiosk Chrome window
	if(skwin.WindowType === 3)	{
		//Use the handle of the new window to maximize it
		SiteKiosk.WindowList.Maximize(skwin.Handle);
	}
}

The OnInsert event listens for new windows that are created while SiteKiosk runs. Once this happens, the OnInsert function is called and an object that represents the new window is available as a parameter. To identify a new Chrome window we need to look only for windows with type 3, which are application windows. Note that this would also match windows of other external applications you might run togehter with SiteKiosk. If you do not want those other windows to be maximized as well, you might consider using the ItemText property to refine the criteria of the if clause. Finally, we use the Maximize method, which we call using the handle of the new window as a parameter.

Copy the above script into an editor (e.g. Notepad) and save it as a Javascript file (e.g. MaximizeNewSKChromeWindows.js). Put the file in the folder ..\SiteKiosk\Html\.

Now add the file as an external script in SiteKiosk. Open the SiteKiosk configuration and go to Start Page & Browser -> Chrome Browser -> Customize -> Advanced -> On startup of SiteKiosk execute the following script file. Note that you need your Browser Toolbar settings set to an option that allows for new windows.

In case you are using the Start Screen with the Chrome Browser go to Start Page & Browser -> Chrome Browser -> Start Screen -> Customize -> Browser Skin -> Advanced -> Advanced -> On startup of SiteKiosk execute the following script file.

Please be aware that a configuration option to do the above without a script will be added to a future version of SiteKiosk.

Using the SiteKiosk Object Model for Automated Website Logins

In case you want SiteKiosk to automatically login to a website with a specific user and you can't use cookies for that, because you need to delete them regularly for security reasons, you can use the SiteKiosk Object Model to help you with the task. The SiteKiosk Object Model enables you to edit the Document Object Model (DOM) of the page, to automatically fill in the required user data and start the login process.

The example will use PROVISIO's own remote monitoring page www.siteremote.net to demonstrate the automated login.

Unless you are already familiar with the code of the page you want to use you can utilize the developer tools of any modern browser (e.g. Chrome, Firefox or IE) to view the code of the webpage and find out about the fields for user name, password and the way how to submit that data. Using the developer tools on the SiteRemote login page (https://www.siteremote.net/pub/login.aspx) shows us that the id of the user field is UserNameEdt, the id of the password field is PasswordEdt. There are different methods the login can be coded on a webpage, here it is a div with the id LoginBtn2 that does a callback, so we just use the Javascript click method to simulate a click on that div. If your login page uses a form element, you can usually call the submit method of that form instead of using the click method, that we use in our example.

Now that we got the required information about the DOM elements of the page we want to login to, we can create our script.

//Flag used to prevent numerous login attempts, you may reset the flag using an event like OnScreenSaverBegin
var loginattempt = false;

//Message event used to detect navigation to login page
SiteKiosk.Logfile.OnMessage = OnMessage;
function OnMessage(seq, time, utcoff, awtype, awlevel, facility, text)
{
	//Check the SiteKiosk logs if the login page has been called and then call the function to attempt the automated login
    if(text.indexOf("Navigation:") !== -1 
	&& text.indexOf("www.siteremote.net") !== -1 
	&& loginattempt === false){
        //Delays the automatic login to give the page time to load
		evtid = SiteKiosk.Scheduler.AddDelayedEvent(1500, AutomaticLogin);
		loginattempt = true;
	}
}
 
function AutomaticLogin()
{
	//Go through the open windows to find the browser window with the login page
    for (var i=1;i<=SiteKiosk.WindowList.Windows.Count;i++)
    {
        try
        {
			//Make sure the window is a SiteKiosk browser window and it displays the login page
            if((SiteKiosk.WindowList.Windows(i).WindowType === 1 || SiteKiosk.WindowList.Windows(i).WindowType === 2)
			&& SiteKiosk.WindowList.Windows(i).SiteKioskWindow.SiteKioskWebBrowser.WebBrowser.LocationURL.indexOf("https://www.siteremote.net/pub/login.aspx") !== -1)
            {
                SiteKiosk.WindowList.Windows(i).SiteKioskWindow.SiteKioskWebBrowser.WebBrowser.Document.getElementById('UserNameEdt').value = "username";
                SiteKiosk.WindowList.Windows(i).SiteKioskWindow.SiteKioskWebBrowser.WebBrowser.Document.getElementById('PasswordEdt').value = "password";
				SiteKiosk.WindowList.Windows(i).SiteKioskWindow.SiteKioskWebBrowser.WebBrowser.Document.getElementById('LoginBtn2').click();
            }
        }
        catch(e)
        {
			//Debug
            SiteKiosk.Logfile.Notification("Automated login failed for window: " + SiteKiosk.WindowList.Windows(i).ItemText);
        }
    }
}

The script uses a variable (loginattempt) as a flag to prevent more than one login attempt. You may use a SiteKiosk Object Model event like OnScreenSaverBegin or OnSessionEnd to reset the flag to allow for new login attempts.

The OnMessage event helps to detect that the login page has been visited in the SiteKiosk browser. Using the AddDelayedEvent method to give the page time to load, we call the AutomaticLogin method of the script to start the login process.

Within the AutomaticLogin method we use the WindowList object's Windows collection Count property to go through all open windows to identify all open SiteKiosk browser windows (WindowType 1 or 2) to find the one, which displays the SiteRemote login page (https://www.siteremote.net/pub/login.aspx). Then we edit the DOM of the page and fill the user name and password fields with the required values and click the login button.

Save the above example as a .js file in the ..\SiteKiosk\html folder. Open the configuration, go to Start Page & Browser, select the Internet Explorer engine and use for example the Metro IE Skin. On the same configuration page click on Advanced and then add the .js file you created as an external script.

Start the SiteKiosk browser and go to www.siteremote.net. An automatic login attempt by the script will occur. If you provided valid credentials as username and password, you will login automatically to your SiteRemote team, otherwise you will recieve an error message about invalid credentials.

For obvious reasons the code to identify the URL and the code to edit the required DOM elements will vary depending on the URL and code of the login page you need to use, please change these code parts accordingly.

Starting External Applications from Web Pages

Here are two examples that show how you can start external applications from a web site in the SiteKiosk browser. One example is for the Internet Explorer engine of SiteKiosk, the other for the Chrome engine.

The first example is a simple HTML page with two buttons for the IE engine of SiteKiosk. The first button just starts the Notepad application of Windows. The second button starts Notepad with a parameter that includes the full path to a file that should be displayed in Notepad.

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>App Start with the SiteKiosk Object Model (IE Engine)</title>

    <script>
        //Initializing the SiteKiosk Object Model for IE engine
        window.external.InitScriptInterface();

        //Running the external application using a universal method for optional parameter usage
        function runExtApp(extapppath, extappparameter) {
            var completepath = extapppath;

            //Check if parameter is not empty and adding parameter to path
            if (extappparameter !== "")
                completepath += " " + extappparameter;

            SiteKiosk.ExternalApps.Run(completepath, false);
        }
    </script>
</head>
<body style="margin-left:auto;margin-right:auto;margin-top:50px;text-align:center;">
    <input type="button" value="Start Notepad without parameter" onclick="runExtApp('c:/windows/notepad.exe','');"/><!--You can either use single forward slashes in the path-->
    <input type="button" value="Start Notepad with parameter" onclick="runExtApp('c:\\windows\\notepad.exe', 'C:\\Program Files (x86)\\SiteKiosk\\Html\\extapptest.txt');"/><!--Or you can use double backward slashes in the path-->
</body>
</html>

Embedded in the normal HTML and Javascript code is the SiteKiosk Object Model. The Run method of the ExternalApps object is used to start an external application.

SiteKiosk.ExternalApps.Run(completepath, false);

You can learn more about the Run method here.

For security reasons you need to specifically allow pages you are using the SiteKiosk Object Model on in the SiteKiosk configuration.

To test the above example code you can either put it on your web server but you can also save it locally as an html file in the ..\SiteKiosk\html folder of your SiteKiosk installation. The test code also assumes that there is a local text file available in ..\SiteKiosk\html named extapptest.txt for the parameter variant.

The result will look like this:

The second example is a slight variation from the first and demonstrates the same behaviour in SiteKiosk when using the Chrome engine. The SiteKiosk Object Model for the Chrome engine differs from the one for the Internet Explorer engine. The HTML and Javascript parts are identical but note the different way to initialize the Object Model.

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>App Start with the SiteKiosk Object Model (Chrome Engine)</title>

    <!--Initializing the SiteKiosk Object Model for Chrome engine-->
    <script>(new Function(_siteKiosk.getSiteKioskObjectModelCode()))();</script>

    <script>
        //Running the external application using a universal method for optional parameter usage
        function runExtApp(extapppath, extappparameter) {
            var completepath = extapppath;

            //Check if parameter is not empty and adding parameter to path
            if (extappparameter !== "")
                completepath += " " + extappparameter;

            siteKiosk.system.windows.skLegacy.externalApps.run(completepath, false);
        }
    </script>
</head>
<body style="margin-left:auto;margin-right:auto;margin-top:50px;text-align:center;">
    <input type="button" value="Start Notepad without parameter" onclick="runExtApp('c:/windows/notepad.exe', '');"/><!--You can either use single forward slashes in the path-->
    <input type="button" value="Start Notepad with parameter" onclick="runExtApp('c:\\windows\\notepad.exe', 'C:\\Program Files (x86)\\SiteKiosk\\Html\\extapptest.txt');"/><!--Or you can use double backward slashes in the path-->
</body>
</html>

The line that actually starts the external application is also specifically suited for the Chrome engine:

siteKiosk.system.windows.skLegacy.externalApps.run(completepath, false);

The functionality and accepted parameters of the run method are the same as for the IE version. Currently there is no detailed documenation available for the SiteKiosk Object Model for Chrome-based browsers in SiteKiosk Windows and SiteKiosk Android, please contact our support to receive a basic documentation.

Using the Chrome example in one of the Chrome browser versions of SiteKiosk will look like this:

When working with external applications please note the information from the SiteKiosk documentation.