Kioskmodus

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Kioskmodus

Beitrag von andreas »

Hallo Leute,

ich soll mein Programm so ändern, dass die "dummen" User in der Produktion nichts anderes benutzen dürfen, ausser meines Programmes: also so was änliches wie "Kioskmodus" einstellen.
Weisst jemand, ob so was mit XBase geht?

PS. Die Workstations haben zur Zeit MiniPCs (Lufter- und Plattenlos) mit Windows 98.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Andreas.

Es gibt von meiner Hauptapplikation eine "InfoPoint"-Version, die den Bildschirm komplett füllt. Sie hat keinen Rahmen und keine Titelzeile, keinen Minimier- und keinen Maximierbutton. Alt-Tab fange ich ab und unterdrücke es. Was genau ist Deine Frage?
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Andreas,
bei Windows 98 gibt es doch schon die registry, oder (ist schon sooo lange her... :) ?
Trage einfach Deine Anwendung als shell ein (statt der explorer. exe) - mehr ist nicht nötig (natürlich mußt Du dann in Deinem Programm auch die Möglichkeit bieten, den PC herunterzufahren -> API-Call).

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

@Martin
Danke Martin. Das wäre vielleicht eine Lösung für uns. Muss ich aber noch sehen.

@Tom

wie hast du deine "InfoPoint"-Version gemacht? ISt es auch GUI? Das wäre vielleicht die bessere Lösung für uns.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Andreas.

Ja, das ist GUI, und es ist so gemacht, daß es auch per Touchscreen bedient werden kann - riesige Buttons und 36-Punkt-Schrift. Allerdings handelt es sich dabei um ein einziges Fenster, was aber unproblematisch ist, da man diese Systematik auch auf Child-Windows anwenden kann.

@Martin: Das mit dem Registry-Eintrag für den Explorer dürfte unter XP nicht mehr funzen.
Herzlich,
Tom
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Tom hat geschrieben:Hallo, Andreas.

Ja, das ist GUI, und es ist so gemacht, daß es auch per Touchscreen bedient werden kann - riesige Buttons und 36-Punkt-Schrift. Allerdings handelt es sich dabei um ein einziges Fenster, was aber unproblematisch ist, da man diese Systematik auch auf Child-Windows anwenden kann.
Hallo Tom,

bei den Child-Fenstern ist es mir erstmal egal. Ein Touchscreen benutzen wir nicht. Hast du auch die Windows-Leiste damit überdeckt? Wie hast du das Fenster zu sowas gebracht? Kannst es verraten?

Es wäre vielleicht denkbar, beide Variante gleichzeit zu verwenden.

Wie kann man den die Shell-Variante bei Windows XP lösen?
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Sicher, dass es unter XP nicht geht?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Andreas.

Die Taskleiste sollte so eingestellt sein, daß sie nicht automatisch verschwindet, also gefixt ist. Dann bekommt man über die API-Funktion SystemParametersInfoA die komplette Bildschirmgröße (weil AppDeskTop():CurrentSize() immer nur den freien Workspace zurückliefert):

Code: Alles auswählen

DLLFUNCTION SystemParametersInfoA( nAction, nParam1, @Param2, nWinIni ) ;
  USING STDCALL FROM USER32.DLL
Aufruf:

Code: Alles auswählen

#define SPI_GETWORKAREA            48
#define SPIF_SENDWININICHANGE 0x0002
#define SPIF_SENDCHANGE       SPIF_SENDWININICHANGE

FUNCTION GetWorkArea()

LOCAL cBuffer := SPACE(16)
LOCAL aRet := ARRAY(4)

SystemParametersInfoA( SPI_GETWORKAREA, 0, @cBuffer, SPIF_SENDCHANGE )

aRet[1] := BIN2U( SUBSTR( cBuffer,  1,4 ))
aRet[2] := BIN2U( SUBSTR( cBuffer,  5,4 ))
aRet[3] := BIN2U( SUBSTR( cBuffer,  9,4 ))
aRet[4] := BIN2U( SUBSTR( cBuffer, 13,4 ))

RETURN aRet
(Der Code ist teilweise aus einer Zusatzbibliothek von eXpress++ geklaut; ich hoffe, niemand meiert mich bei Roger an. 8) )

Wenn ich dann Höhe und Breite meines Fensters mit den Rückgabewerten von GetWorkArea() so besetze:

Code: Alles auswählen

aWorkArea := GetWorkArea()
nHeight := aWorkArea[4] - aWorkArea[2]
nWidth  := aWorkArea[3] - aWorkArea[1]
, dann habe ich den kompletten Bildschirm, und auch die Taskleiste ist überdeckt. Jetzt muß ich nur noch dafür sorgen, daß Alt-Tab und Strg-Alt-Entf keine Reaktionen erzeugen, das ist ein bißchen komplizierter, aber auch am besten über die Registry zu erreichen.
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

So,
das ließ mir keine Ruhe - ich habe mal gegoogelt und es geht auch unter 2000 und XP!
Dies sind die Schlüssel in der registry (je nachdem, ob für einen einzelnen User oder Systemweit):

User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
System Key: [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System]

Value Name: Shell
Data Type: REG_SZ (String Value)
Value Data: Filename of Replacement Shell

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

@Tom

Es funktioniert irgendwie komisch. Ich musste die Höhe um 28 Punkte vergrössern, damit es wirklich das ganze Bildschirm abdeckt.
Aber Trotzdem:
Mit dem Ausschalten von Tiltebar und Setzen unter XBase 1.9 von alwaysOnTop := .t. ist es schon was. Damit bringt ALT-TAB nichts.

@Martin
Ich habe es mit Shell in System.ini unter Win 98 ausprobiert. Funktioniert gut. Unter XP kann ich es erstmal nicht ausprobieren.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

hast Du es nur gegoogelt, oder auch selbst nachgesehen?

Der User Key ist bei mir nicht so drin. Ich habe dort keinen Eintrag System.

Ich benutze XP
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
ich auch und bei mir ist er auch nicht drin.
Aber wo ist das Problem? Erzeuge ihn einfach.
Der unter System gilt für das System allgemein, der unter dem jeweiligen User nur für den entsprechenden User. Wenn dort nichts angegeben ist, dann gelten die Standardwerte (also das unter System - sollte zumindest so sein).

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

So,
habe noch mal gegoogelt - und damit geht es:
Registry - wie gehabt, aber jetzt:
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\WinLogon
Dort den shell-Eintrag von explorer.exe in xbase++proggie.exe ändern!
(Natürlich kann man die alte Shell noch über Strg-Alt-Entf -> Anwendungen -> neuer Task -> explorer.exe starten - aber das lässt sich über die entsprechenden policies für den jeweiligen User einfach sperren)

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Kioskmodus

Beitrag von AUGE_OHR »

hi,
andreas hat geschrieben: ...also so was änliches wie "Kioskmodus" einstellen.
Weisst jemand, ob so was mit XBase geht?
PS. Die Workstations haben zur Zeit MiniPCs (Lufter- und Plattenlos) mit Windows 98.
unter Windows 98 in die MSDOS.SYS :
[Options]
BootMulti=0
BootGUI=1
Network=0
BootWarn=0
BootKeys=0
BootDelay=0
BootMenuDelay=0
Logo=1

in die PROGMAN.INI :
[Restrictions]
NoRun=1
NoClose=1
NoSaveSettings=1
NoFileMenu=1
EditLevel=4

in die SYSTEM.INI :
SHELL=C:\XBASE\myPROGMAN.EXE

und zum Schluss noch den TASKMAN.EXE umbennen/löschen

gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

@Manfred,

viele Keys fehlen in der Registry, dann stehen diese auf Standard.
Will man was ändern muss man sie eintragen.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

ich habe mich nicht näher mit der Registry beschäftigt, weil ich eh nichts eintrage, was ein Programm betreffen würde. Es ist allgemein bekannt, das die Registry dazu da ist sich aufzublähen und dann das System langsam zu machen. Also lasse ich soweit es geht die Finger davon.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Manfred,

nur keine Panik! Wenn man weiß was man tut :? dann kann man ruhig an der Registry arbeiten. Und die hier angegebenen Änderungen sind alle "ungefährlich".

Hatte Thomas Braun nicht eine Funktion, um die Registry zu manipulieren? Das könnte man doch ausnutzen für eine Initialisierungs-Routine, um beim ersten Start oder bei Bedarf die notwendigen Änderungen sicher, unabhängig vom User, schreiben zu können.

Jan
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Jan,

Du hast Recht. Wenn man weiß was man tut, dann kann man auch Flugzeuge und U-Boote bauen.... :lol:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

ich nutze INI Dateien, da diese immer gleich funktionieren (eigene Funktion - irgendwo abgepinselt ;) ) und auf jedem Rechner vorhanden sind, auf den ich mein Programmverzeichnis kopiere :!:
Gruß
Hubert
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Beitrag von andreas »

Tom hat geschrieben:Hallo, Andreas.

Die Taskleiste sollte so eingestellt sein, daß sie nicht automatisch verschwindet, also gefixt ist. Dann bekommt man über die API-Funktion SystemParametersInfoA die komplette Bildschirmgröße (weil AppDeskTop():CurrentSize() immer nur den freien Workspace zurückliefert):
Hallo Tom,

es ist ganz umgekehrt, wei ich es rausgefunden habe:
- SystemParametersInfoA liefert die Grösse des Freien Workspaces,
- AppDeskTop():CurrentSize() - liefert volle Bildschiermgrösse, wo ich dann die zus. Vergrösserung um 28 Punkte nicht mehr brauche.

Hier ist meine Lösung:

Code: Alles auswählen

IF lKioskModus

		aWorkArea := AppDeskTop():CurrentSize()

		Hauptfenster:alwaysOnTop := .t.
		Hauptfenster:titleBar  := .f.
		Hauptfenster:minsize := aWorkArea
		Hauptfenster:maxsize := aWorkArea
		Hauptfenster:configure(,,{0,0}, aWorkArea )

ENDIF
Gruß,

Andreas
VIP der XUG Osnabrück
Antworten