Produkt: | Elvis |
Version: | ab 2.0 |
Stand: | 2002-07-25 |
Zusammenfassung
In der Elvis Bedienstation ab Version 2.0 ist der Benutzerwechsel über das Menü möglich, ohne die Bedienstation zu beenden. Im Kiosk-Mode (gesperrte Vollbilddarstellung) ist das Menü aber nicht erreichbar. Damit trotzdem ein Benutzerwechsel möglich ist, kann die nachfolgende Ereignisverarbeitung der Bedienstation verwendet werden.
Einzelheiten
Allgemeines:
In einer Berechnung kann eine Nachricht (Message) an Elvis gesendet werden, die einen Menübefehl simuliert. Damit lassen sich grundsätzlich alle Operationen der Bedienstation, die über ein Menü ausgelöst werden können, auslösen. Die für unseren Zweck notwendige Operation ist das Öffnen des Anmeldedialogs. Deshalb senden wir eine Nachricht, die einem Menübefehl (WM_COMMAND = &H0111) entspricht, mit der Kennnummer (ID) des Befehls zum Öffnen des Anmeldedialogs (ID_ELVISRUN_LOGIN = 35000).
Vorgehen (in der Elvis-Projektierung):
1. Es müssen mehrere Benutzer angelegt sein (klar, sonst kann der Benutzer nicht gewechselt werden).
2. Damit der Benutzerwechsel ausgelöst werden kann, sollte ein Kontrollelement (z.B. StateButtonControl) auf einer Seite angelegt werden. Es kann aber prinzipiell auch jedes andere Ereignis verwendet werden, um den Benutzerwechsel zu bewirken. Als Name des Kontrollelements sollte „Benutzerwechsel“ angegeben werden (auf der Eigenschaftsseite „Kontrollelement“).
3. Den Editor zur Ereignisverarbeitung der Seite öffnen (Eigenschaftsdialog der Seite>Ereignisse…).
4. Es wird eine Seiten-Ereignisverarbeitung der Bedienstation für das Click-Ereignis auf das Kontrollelement „Benutzerwechsel“ angelegt, die so aussieht:
//CODE:vb:Declare Function GetActiveWindow Lib „user32“ () As Long
Declare Function PostMessage Lib „user32“ Alias „PostMessageA“ (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function GetLastError Lib „kernel32“ () As Long
Const WM_COMMAND = &H0111
Const ID_ELVISRUN_LOGIN = 35000
Sub Benutzerwechsel_Click()
‚ Post a WM_COMMAND with ID_ELVISRUN_LOGIN to the main window
Dim hwnd As Long
hwnd = GetActiveWindow()
If PostMessage(hwnd, WM_COMMAND, ID_ELVISRUN_LOGIN, 0&) = 0 Then
MsgBox „PostMessage failed: “ & GetLastError()
End If
End Sub //CODE
ACHTUNG – Bitte dieses Script als change_user.txt herunterladen (2 KB) und dann über die Zwischenablage in die Seiten-Ereignisverarbeitung einfügen.
Bitte nicht aus dem Web heraus kopieren – hier können Sonderzeichen enthalten sein, die zu Fehlfunktionen führen!