Customer Service Client fernsteuern
In dieser Dokumentation ist beschrieben, wie man den Customer Service Client fernsteuern kann.
“Link kopieren” – Direktlinks zu Elementen von Customer Service powered by GREYHOUND
GREYOUND stellt Weblinks zu Elementen zur Verfügung, die in Webapplikationen aufgerufen werden können. So kann man sich mit Kollegen in Chat oder Aufgaben-Tools über Elemente in Customer Service powered by GREYHOUND austauschen und Direktlinks hierzu posten. Klickt man diese an, öffnet sich das entsprechende Element in Customer Service powered by GREYHOUND.
Um so einen Link zu generieren, einfach ein beliebiges Element von Customer Service powered by GREYHOUND per Rechtsklick anwählen und „(Web) Link kopieren“ anklicken (alternativ: STRG + C). Klickt man diesen Link an, wird das entsprechende Element im Customer Service Windows Client geöffnet.

Protokoll-Handler für URLs in Windows
Da der Customer Service Client mittlerweile auch über einen Protokoll-Handler für URLs in Windows registriert ist, kann man den Client auch per URL fernsteuern. Die URLs sind wie folgt aufgebaut:
greyhound:Aktion?Param1=Wert1&Param2=Wert2&Param3=Wert3
Die blau markierten Worte sind Platzhalter. Die möglichen Aktionen und Parameter sind dieselben wie hier beschrieben.
D.h. um eine neue Mail im Client aufgehen zu lassen (Action=NewItem, Kind=EMail, Subject=Hallo Welt), würde man sowas als URL aufrufen:
greyhound:NewItem?Kind=EMail&Subject=Hallo%20Welt
Der Action-Parameter wird also direkt hinter “greyhound:” angegeben, alle weiteren Parameter (wie in URLs üblich) hinter “?” bzw. “&” mit URL-codierten Werten (also z. B. %20 statt Leerzeichen).
Windows Messages (WM_COPYDATA)
Die Kommunikation zwischen den Applikationen findet über die Windowsbotschaft vom Typ WM_COPYDATA statt. Eine WM_COPYDATABotschaft kann Strings zwischen Anwendungen hin und her transportieren. Um eine Botschaft an den Customer Service Client zu senden, muss man diese nur an das Fenster mit der Klasse “TFbmClient” und dem Fenstertitel “Customer Service powered by GREYHOUND” senden.
Bis Customer Service powered by GREYHOUND Version 4.2.5 build 1632 lautete die Klasse des Fensters “TFbmMain” und der gesuchte Teil des Fenstertitels “Customer Service Client”.
Der Customer Service Client fängt die Botschaft ab und verarbeitet sie entsprechend der nachfolgenden Dokumentation.
Praxis
Anbei ein kurzer Beispielquelltext in Delphi zum Finden des gewünschten Fensters:
function GetWindowHandle(const ClassName, WindowTitle: string): HWND;
var
wHandle: Hwnd;
CClassName: array[0..255] of Char;
CWindowTitle: array[0..255] of Char;
begin
Result := 0;
wHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
repeat
GetClassName(wHandle, CClassName, 255);
if (ClassName = '') or AnsiContainsText(string(CClassName), ClassName) then
begin
GetWindowText(wHandle, CWindowTitle, 255);
if (WindowTitle = '') or AnsiContainsText(string(CWindowTitle), WindowTitle) then
begin
Result := wHandle;
end;
end;
wHandle := GetWindow(wHandle, GW_HWNDNEXT);
until (wHandle <= 0) or (Result > 0);
end;
In diesem Fall würde die Funktion mit den folgenden Parametern aufgerufen:
var
MyHandle: HWND;
begin
MyHandle := GetWindowHandle('TFbmClient', 'GREYHOUND');
end;
Die Daten für die WM_COPYDATA Struktur können nun wie folgt zusammengebaut werden:
procedure SendData(Str: string);
var
MyHandle: HWND;
aCopyData: TCopyDataStruct;
p: PChar;
begin
MyHandle := GetWindowHandle('TFbmClient', 'GREYHOUND');
if MyHandle > 0 then
begin
p := PChar(Str);
with aCopyData do
begin
dwData := 0;
cbData := StrLen(p) + 1;
lpData := p;
end;
SetForegroundWindow(MyHandle); // TODO: Fenster immer aktivieren?
SendMessage(MyHandle, WM_COPYDATA, Longint(Handle), Longint(@aCopyData));
end;
end;
Der dritte Parameter der Funktion SendMessage enthält das Handle auf die eigene Applikation bzw. auf ein Fenster der eigenen Applikation.
Die Funktion SendData kann nun mit den unten spezifizierten Parametern aufgerufen werden, um den Client fernzusteuern. Die Daten die an den Client übermittelt werden bestehen aus Wertepaaren, welche durch ein Gleichheitszeichen in Name und Wert separiert sind. Jeder Wert steht in einer eigenen Zeile. Die Zeilen sind durch die Sequenz #13#10 voneinander getrennt (Windows Zeilenumbruch).
Testanwendung herunterladen
Die Testanwendung am Ende dieses Beitrags kann verwendet werden, um die gewünschten Funktionen zu testen. Für die Testanwendung liegt außerdem der Delphi Quelltext vor.