WorkspaceBrokerAx object
[WorkspaceBrokerAx is no longer available for use as of Windows 10 and Windows Server 2016 Technical Preview.]
The WorkspaceBrokerAx object allows a Windows Store app to set up and use RemoteApp and Desktop Connections workspaces.
Members
The WorkspaceBrokerAx object has these types of members:
- Events
- Methods
- Properties
Events
The WorkspaceBrokerAx object has these events.
Event | Description |
---|---|
OnWorkspaceSetupCompleted | This event is fired when the SetupWorkspace method is complete. |
Methods
The WorkspaceBrokerAx object has these methods.
Method | Description |
---|---|
InitializeWorkspaceConfiguration | Called to initialize the state of the object. |
LaunchWorkspaceItem | Launches the specified workspace item. |
SetupWorkspace | Invokes the system-implemented new Windows UI that allows the user to enter the email address or URL to use for the RemoteApp and Desktop Connections. |
Properties
The WorkspaceBrokerAx object has these properties.
Property | Access type | Description |
---|---|---|
Read-only |
Specifies if the folder item is a remote desktop. |
|
Read-only |
Contains the number of items in the specified workspace folder. |
|
Read-only |
Contains the display image of the specified folder item. |
|
Read-only |
Contains the file extension of the specified folder item. |
|
Read-only |
Contains the display name of the specified folder item. |
|
Read-only |
Contains the name of the specified workspace folder. |
|
Read-only |
Contains the number of folders in the specified workspace. |
|
Read-only |
Contains the identifier of the specified workspace. |
|
Read-only |
Contains the name of the specified workspace. |
|
Read-only |
Contains the number of workspaces. |
Examples
The following code example, from the RemoteApp and Desktop Connections workspace API sample, demonstrates how to instantiate and initialize the WorkspaceBrokerAx object.
createInstance: function () {
var wkspObj = document.createElement("object");
var wkspRegion = document.getElementById("wkspAxControlRegion");
wkspRegion.appendChild(wkspObj);
// Register for standard ActiveX events
wkspObj.addEventListener("readystatechange", function (e) {
if (wkspObj.readyState !== 4) {
WinJS.log && WinJS.log("Error: the ActiveX control readyStateChange fired, but readyState != 4. ReadyState: " + wkspObj.readyState, "sample", "error");
}
}, false);
wkspObj.addEventListener("error", function (e) {
WinJS.log && WinJS.log("Error loading the ActiveX control", "sample", "error");
}, false);
// Hook up the ActiveX control
wkspObj.id = "wkspAxControl";
wkspObj.classid = "CLSID:CD70A734-B6DB-4588-9813-FF2E37A4661F";
return wkspObj;
},
The following code example, from the RemoteApp and Desktop Connections workspace API sample, demonstrates how to enumerate the workspaces and workspace items.
function refreshWorkspaceItems() {
// Initialize the ActiveX control
var wkspActiveX = null;
var hasEverBeenSubscribed = true;
try {
wkspActiveX = Microsoft.Sample.WorkspaceBrokerApi.WorkspaceActiveX.createInstance();
} catch (e) {
WinJS.log && WinJS.log("Error setting up the Workspace ActiveX control. Error: " + e.number + " " + e.description, "sample", "error");
return;
}
try {
wkspActiveX.InitializeWorkspaceConfiguration();
} catch (e) {
if (e.number === -2147024894) {
// This is equivalent to 0x80070002 (ERROR_FILE_NOT_FOUND), and is expected if you have never been subscribed to any workspaces on this machine
hasEverBeenSubscribed = false;
} else {
WinJS.log && WinJS.log("Error calling InitializeWorkspaceConfiguration: " + e.number + " " + e.description, "sample", "error");
wkspActiveX = null;
return;
}
}
if (!wkspActiveX) {
WinJS.log && WinJS.log("Cannot continue, Workspace ActiveX control not ready", "sample", "error");
return;
}
if (!hasEverBeenSubscribed) {
WinJS.log && WinJS.log("No resources to display, you have never been subscribed to a workspace on this machine.", "sample", "status");
return;
}
WinJS.log && WinJS.log("Workspace ActiveX control ready", "sample", "status");
// First clear out any old resources in the UI
var itemsRegion = document.getElementById("wkspItems");
while (itemsRegion.hasChildNodes()) {
itemsRegion.removeChild(itemsRegion.lastChild);
}
try {
var numWorkspaces = wkspActiveX.WorkspacesCount;
if (numWorkspaces === 0) {
WinJS.log && WinJS.log("No resources to display, you are currently not subscribed to any workspaces.", "sample", "status");
return;
}
for (var wkspIdx = 0; wkspIdx < numWorkspaces; wkspIdx++) {
var wkspId = wkspActiveX.WorkspaceId(wkspIdx);
var wkspName = wkspActiveX.WorkspaceName(wkspIdx);
var wkspNameTag = document.createElement("h2");
wkspNameTag.textContent = wkspName;
itemsRegion.appendChild(wkspNameTag);
var numFolders = wkspActiveX.WorkspaceFoldersCount(wkspId);
for (var folderIdx = 0; folderIdx < numFolders; folderIdx++) {
var folderName = wkspActiveX.WorkspaceFolderName(wkspId, folderIdx);
var folderNameTag = document.createElement("h3");
folderNameTag.textContent = folderName;
itemsRegion.appendChild(folderNameTag);
var numItems = wkspActiveX.WorkspaceFolderContentsCount(wkspId, folderName);
if (numItems > 0) {
var listTag = document.createElement("ul");
for (var itemIdx = 0; itemIdx < numItems; itemIdx++) {
var listItemTag = generateWorkspaceItemElement(wkspActiveX, wkspId, folderName, itemIdx);
listTag.appendChild(listItemTag);
}
itemsRegion.appendChild(listTag);
}
}
}
} catch (e) {
WinJS.log && WinJS.log("Error displaying workspace resources: " + e.number + " " + e.message, "sample", "error");
return;
}
WinJS.log && WinJS.log("Workspace Resource refresh complete", "sample", "status");
}
function generateWorkspaceItemElement(wkspActiveX, wkspId, folderName, itemIdx) {
var itemName = wkspActiveX.WorkspaceFolderItemName(wkspId, folderName, itemIdx);
var itemIcon = wkspActiveX.WorkspaceFolderImageData(wkspId, folderName, itemIdx);
var itemFileType = wkspActiveX.WorkspaceFolderItemFileExtension(wkspId, folderName, itemIdx);
var isDesktop = wkspActiveX.IsWorkspaceFolderItemRemoteDesktop(wkspId, folderName, itemIdx);
// If desired, you can use itemIcon to display an icon image for the resources by generating an HTML tag similar to the following:
// <img src="data:image/png;base64,contents-of-itemIcon-variable" />
// If desired, you can distinguish between resources types (e.g. ".rdp" vs. 3rd party file types) by examining the itemFileType variable
// If desired, you can seperate Desktop from Non-Desktop (e.g. RemoteApp) resources by filtering on the isDesktop variable
var resourceLinkTag = document.createElement("a");
resourceLinkTag.textContent = itemName;
resourceLinkTag.addEventListener("click", function () {
try {
wkspActiveX.LaunchWorkspaceItem(wkspId, folderName, itemName, "sample activation context");
} catch (e) {
WinJS.log && WinJS.log("Error launching workspace item: " + e.number + " " + e.message, "sample", "error");
}
}, false);
var listItemTag = document.createElement("li");
listItemTag.appendChild(resourceLinkTag);
return listItemTag;
}
Requirements
Minimum supported client |
Windows 8 [Windows Store apps only] |
Minimum supported server |
Windows Server 2012 [Windows Store apps only] |
End of client support |
Windows 8.1 |
End of server support |
Windows Server 2012 R2 |
IDL |
Wkspbkax.idl |
IID |
CLSID is defined as CD70A734-B6DB-4588-9813-FF2E37A4661F |