Pseudo Desktop - Konstruktive Kritik :-)

  • Hallo zusammen,

    ist jetzt nix dolles aber für meinen Verwendungszweck (geistigbehinderten Schülern eine übersichtliche Programm-Startoberfläche statt des normalen Desktops anzubieten) bin ich damit zufrieden.
    Das ganze habe ich angefangen, da ich nicht in der Lage bin, einen aufgeräumten und gleich aussehenden Desktop per Gruppenrichtlinien für alle Clients zu definieren, da das einfach schon an unterschiedlichen Auflösungen scheitert.
    (Es gibt sogar noch ein paar Probleme aber die lasse ich an dieser Stelle mal weg.)

    Ich bin absoluter Schmalspur-Programmierer und habe mich erst seit Kurzem mit Autoit beschäftigt (vorher ein gaanz kleines bisschen PHP und (Free)Pascal, Lazarus / Delphi).
    Deswegen wüsste ich gerne ob in meinem Spaghetti-Code noch dicke "Nogo's" sind.

    Vielleicht hat ja hier jemand Interesse, mir ein feedback für mein Geschreibsel zu geben ...

    Version 4 (mit ner guten Versionierung hab ich's nicht) liegt seit dem 14.12.14 vor.

    Danke im Voraus und Grüße,
    klaros

    Einmal editiert, zuletzt von klaros (14. Dezember 2014 um 15:10)

  • Also ich weiss ja nicht, ob es daran liegen könnte, dass ich einfach mal provisorisch "beschissen" habe und die .ini im Skript bereits namentlich eingetragen habe (ich glaube du willst die normalerweise per Konsole übergeben können, kann das sein?), oder ob ich sonst was vergeigt habe, aber bei mir siehts noch nicht wirklich behinderten-freundlich aus.
    Ausserdem ist auch die Funktionalität noch sehr begrenzt:

    • Wenns firefox nicht gibt, kommt ne Fehlermeldung, ich würde da entweder gleich nen speziellen handycap-browser installieren lassen (sowas gibts bestimmt). Oder zumindest überprüfen was der Standartbrowser ist und dann diesen nehmen (ein anderes Symbol empfiehlt sich dann natürlich auch). Ich bezweifle, dass es Sinn macht eine extra übersichtliche und einfache Oberfläche zu gestalten, wenn man nachher trotzdem einen völlig überladenen Browser wie Firefox, Chrome oder IE startet, die sind für sowas doch eher ungeeignet (ausser mit entsprechenden Plug-In's vieleicht).
    • Notepad startet schonmal gar nicht, ich habe jetzt aber nicht überprüft wieso. Es passiert jedenfalls gar nichts.
    • Den Ende-Button würde ich noch irgendwie bestätigen lassen damit man nicht aus versehen auf die Windows-Oberfläche kommt.


    Die Idee finde ich gut. Gibts zwar schon aber gewisse Dinge lassen sich auch dort verbessern.
    Ich würde sagen an der Ausführung hapert es aber noch etwas. Die Idee mit den Farben ist super, aber gerade die Icons (die eigentlich ansonsten ganz okay sind) sehen mit dem weissen Rand sehr irritierend aus. Ein Hover-Effekt wäre dann bestimmt auch nicht falsch, damit man auch sieht, dass die Schaltfläche tatsächlich anklickbar ist ;) .
    Ich würde ausserdem vermeiden Applikationen zu integrieren, die zu komplizierte Oberflächen haben. Der Sinn eines übersichtlichen Desktops erlischt so irgendwie. Wenn es wirklich nur ums starten der wichtigsten Programme geht (es kommt natürlich auch darauf an wie "stark" die Behinderung ist...das ist immer etwas schwierig da etwas für jedermann zu kreieren), empfehle ich ein schlankeres kleines Fenster nicht gleich eine Vollbild-GUI.

    Übrigends: Die Taskleiste würde ich auf jeden Fall ausblenden wenn du bei der Vollbild-Variante bleibst :thumbup: , die spackt sonst sowieso nur rum.

    Bild1: Ich beim debuggen

  • Ich finde die Idee ganz gut. Ein Desktop, wo nur das nötigste drauf ist. Von allem anderen muss man so dann die FIneer weg lassen. ;) Gerade gut für Kids, die noch nicht wissen, wie sie da raus kommen. ;)

    Ende-Button (EB) : ich würde den EB, wenn man das Script nicht einfach schli8eßen soll, mit einem PW belegen. Nur schließen, wenn PW. Du kannste es auch so machen, das Du das Script per EB nicht nur schließen kannst, sondern bei einem bestimmten PW der Rechner herunter fährt.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Danke für die -> konstruktive <- Kritik.
    Das hat ja schon mal prima geklappt. :)

    Genau. Die Ini soll übergeben werden, damit ich unterschiedliche Desktops anbieten kann (noch mehr / viel weniger Icons).

    In der Ini stehen natürlich nur Programme die wir - auf dem Server - auch installiert haben.
    Da kanns nur am Programmpfad scheitern - dafür muss ich noch den Fehler abfangen ...

    Nach einem "vereinfachten" Browser werde ich mich mal umschauen.
    Problem wird aber eher die (unkalkulierbare) Gestaltung der Webseite sein.
    Und es ist schon erstaunlich, wie geschickt "unsere" Schüler mit Webcontent umgehen können, da dafür eine unglaubliche Motivation vorliegt. (Kann an anderer Stelle dann heftig fehlen 8) ...)

    Notepad ist nur ein Testeintrag.
    In der Ini steht das Programm - glaub ich - dort ohne Pfadangabe.
    Bei mir klappt das so. Evtl. geht's nicht auf jedem Rechner ...
    (Im "Ernstfall" werde ich immer ganze Programmpfade eintragen.)

    Die Icons sind potthäßlich - das habe ich aber auch schon geschrieben.
    Bin noch auf der Suche nach besseren Ico's oder Gif's oder nach einer funktionierenden Konvertierungsform.

    Hover-Effekt wäre cool.
    Ich habe versucht, zumindest den Mauszeiger zu ändern: "Hand". Das klappte aber nicht ...
    Mit anderen MouseOver-Möglichkeiten habe ich mich noch nicht beschäftigt.
    Hat jemand einen Tipp?

    Den Ende-Button werde ich durch einen HotKey ersetzen.
    Mit sowas arbeiten die Schüler nicht. Und wer's kann, darf ihn auch benutzen ... ;)
    Dann brauche ich glaube ich keine Sicherheitsabfrage.

    Leider funktionierte heute beim Testlauf das shutdown(0) bei einem Schüleraccount nicht.
    Da muss ich noch recherchieren, ob das was mit dem Server zu tun hat - lokal klappt das bei sehr gut. 8o

    Mit der Taskleiste ist das so eine Sache.
    Ich kann (noch) nicht dafür sorgen, dass alle Fenster eines Programmes nach vorne geholt werden, wenn (zwischendurch) der Pseudo Desktop in den Vordergrund gekommen ist.
    Aktuell kommt nur das letzte aktive Fenster eines Programmes nach vorne, wenn man wieder auf das Icon klickt.
    Mindestens bei einer Textverarbeitung oder dem Browser können aber neue Fenster nicht nur durch das Programmicon erzeugt werden.
    Solange ich das nicht im Griff habe, muss ich die Taskleiste angezeigt lassen.
    Falls mich da jemand mit einem Codeschnipsel unterstützen würde ...

    Die Programme, die wir benutzen, sind für die Schüler schon passend.
    Es gibt zum einen Lernprogramme mit einfacher Oberfläche und gerne auch im Vollbildmodus, so dass alles übersichtlich bleibt.
    Schüler, die bei uns Texte schreiben, kommen mit den grundlegenden Befehlen von Word oder Open Office zurecht.


    Sieht jemand noch Haken im Code, die sich z. B. auf die Performance auswirken oder Fehler mach sich ziehen könnten?

    Ich freue mich über weitere Kritik, Anregungen und (Coding-) Tipps.

    Grüße,
    klaros

  • Hi Osar,

    nö, dein Script verstehe ich nicht ... ;)
    Ne, ne ich hab's mir gerade erst mal kurz zur Gemüte geführt - weil am Mac sitzend noch nicht gestartet ...
    Und außerdem: Riesen-Dank dafür, dass du mir einen ganzen Script-Vorschlag schickst!!! :thumbup:

    Super ist schon mal deine UDF für die Icons!
    Alles was ich probiert habe, um png's zu konvertieren und sie gut aussehen zu lassen, war Murks.

    Die Hauptdatei muss ich mir Schritt für Schritt anschauen - viele Funktionen o. ä. kenne ich noch nicht.
    Das geht über die Hilfefunktion aber ganz gut.

    Was sich mir nicht so schnell erschließen wird, wo dein Codse pragmatischer / effizienter / sicherer ist.
    Bzw. wo in meinen Code die heftigsten Fallstricke sind, mit denen du "nicht leben" kannst.
    Da fehlen mir einfach die Erfahrung und Hintergrundwissen.

    Vielleicht hast du noch Zeit und Lust mir da auf die Sprünge zu helfen.
    Ansonsten kommen mir noch bestimmt Fragen, wenn ich mich durch deinen Vorschlag "durchgewurschtelt" habe.

    Danke und Grüße,
    klaros

  • Mojn Klaros.
    Mein Vorschlag, so mache ich das auch immer bei neuen Sachen die ich hier nicht gleich erstehe, ich schaue mir immer das "alten" und das "neue"Script gegenüber an. Entweder kann man es mit der Software "WinMerge" machen (gibt es evtl. auch für Mac) odr DU machst es wie ich, das Du die beiden Scripte nebeneinander öffnest. Ich verwende dann beide Monitore, wobei das aber mehr arbeite ist, wie bei WinMerge, da dort die Unterschiede angezeigt werden ohne zu suchen.
    .
    So verstehe ich dann viel besser, wo meine "Fehler2 sind bzw. wo die/der Helfende etwas anders/besser/sinnvoller gelöst hat.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

    • Offizieller Beitrag


    Was sich mir nicht so schnell erschließen wird, wo dein Codse pragmatischer / effizienter / sicherer ist.
    Bzw. wo in meinen Code die heftigsten Fallstricke sind, mit denen du "nicht leben" kannst.

    Ich habe die Kacheln als einzelne Fenster erstellt. Das hat den Vorteil, dass man die Koordinaten für die Anwendungen jeweils Kachelbezogen angeben kann.
    So ist es auch ganz einfach eine Anwendung auf eine andere Kachel zu verlegen. Die Koordinaten bleiben gleich, nur der Eintrag für die Kachel wird geändert.

    Ich persönlich bevorzuge auch den OnEventMode (gerade bei mehreren GUIs). Dieser Modus führt dazu, dass man mehr in Funktionen schreibt (IMHO weniger
    fehleranfällig oder zumindest leichter zu debuggen).

    Die Taskleiste und den Startbutton habe ich bei meiner Variante ausgeblendet (bei Programmende werden sie wieder angezeigt).
    Ich habe das jetzt so geschrieben habe, dass nur eine Anwendung gleichzeitig gestartet werden kann (Programm wartet auf das beenden der Anwendung).
    Ich weiß nicht, ob das so gewünscht ist oder nicht. Wenn nicht, lässt sich das auch ändern.

  • Ich habe die Kacheln als einzelne Fenster erstellt. Das hat den Vorteil, dass man die Koordinaten für die Anwendungen jeweils Kachelbezogen angeben kann.
    So ist es auch ganz einfach eine Anwendung auf eine andere Kachel zu verlegen. Die Koordinaten bleiben gleich, nur der Eintrag für die Kachel wird geändert.

    Das hört sich von den Koordinaten her vereinfachend an.

    Ich persönlich bevorzuge auch den OnEventMode (gerade bei mehreren GUIs). Dieser Modus führt dazu, dass man mehr in Funktionen schreibt (IMHO weniger
    fehleranfällig oder zumindest leichter zu debuggen).

    Na prima, da stolpere ich im Message-Loop-Modus durch die Gegend und kann mich direkt mal um den Event-Modus kümmern. ;)
    Übrigens scheints du ja mit deiner Vorliebe gegen den Strom zu schwimmen - hier zu lesen.

    Hab ich das richtig verstanden?
    Das hier:
    WinWaitClose($hMainGui) ; warten, bis das Hauptfenster geschlossen wurde
    Exit
    ersetzt jetzt die While Wend Geschichte?

    Die Taskleiste und den Startbutton habe ich bei meiner Variante ausgeblendet (bei Programmende werden sie wieder angezeigt).
    Ich habe das jetzt so geschrieben habe, dass nur eine Anwendung gleichzeitig gestartet werden kann (Programm wartet auf das beenden der Anwendung).
    Ich weiß nicht, ob das so gewünscht ist oder nicht. Wenn nicht, lässt sich das auch ändern.

    Jou, das habe ich bemerkt und bin zweigeteilter Meinung ...
    Einerseits finde ich das gut wegen der "Sparsamkeit" / Übersichtlichkeit.
    Andererseits kommt von meinen Usern bestimmt der Wunsch auf, z. B. aus einem Browserfenster direkt was in einen Texteditor zu kopieren ...
    (Ich versuch mal die Änderung alleine hinzubekommen, das wird mir helfen, deinen Code besser zu verstehen.)

    Ach übrigens!
    Durch den Start einer Anwendung wird bei mir sehr wohl die Startleiste wieder eingeblendet und verschwindet wieder, wenn ich die Anwendung schließe.
    Ist das bei dir nicht so? (Auf meinem Rechner habe ich Win 8.1)

    Ansonsten werde ich am Wochenende mal tiefer in die Materie einsteigen. Heute hatte ich auch nur ein bisschen Zeit dafür.

    Alina:
    Danke für deinen Tipp mit "WinMerge" aber die Codedateien von Oscar und "mir" (die Idee mit den Label's als Kacheln kommt von BugFix) sind unterschiedlich wie Katz und Maus. :D

    Grüße,
    klaros

  • Alina:
    Danke für deinen Tipp mit "WinMerge" aber die Codedateien von Oscar und "mir" (die Idee mit den Label's als Kacheln kommt von BugFix) sind unterschiedlich wie Katz und Maus. :D

    Grüße,
    klaros

    Klar ist das Katze & Maus. Ich wollte Dir damit auch sagen, das Du so mal schauen kannst, ob Ihr irgenbdwo gleiche "Ansätze" habt und dann schauen kannst, wie BugFix den Ansatz gelöst hat. Aber das ist dieses mal vielleicht doch sehr viel Katze & Maus. Sorry.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Zitat

    Boah! ?(

    Jetzt habe ich versucht, die Ini-Fassung mit der OnEventMode-Lösung von Oscar zu verbinden und habe einen dicken Knoten im Hirn.

    Ich kann die Icons (als PNGs - Super :) ) darstellen. Es wird auch kein Syntaxfehler oder so angezeigt.
    Dennoch kann ich keine Programme starten - der "Desktop" scheint sogar einzufrieren, da ich das Programm nicht mehr mit ALT-F4 beenden kann.

    Irgendwo hier muss es haken - oder in der Funktion _DesktopIconsAnlegen()

    Peinlich, peinlich, peinlich ... :whistling:
    Der Fehler lag natürlich in der _DestopIconsAnzeige() und bei mir.
    Die laufende $ProgNr wurde falsch gebildet.
    Zum Glück hatte ich ein Testszenario in dem das aufgefallen ist.
    Wenn ich in jeder Kachel ein Icon angelegt hätte, wäre der Fehler erst aufgetreten, wenn ich / jemand eine Kachel leergelassen hätte ..., ui ui ui.

    Jetzt geht es weiter mit dem öffnen mehrerer Programme - oder auch nicht ...

    Grüße,
    klaros

    3 Mal editiert, zuletzt von klaros (5. Dezember 2014 um 21:34)

    • Offizieller Beitrag

    Ach übrigens!
    Durch den Start einer Anwendung wird bei mir sehr wohl die Startleiste wieder eingeblendet und verschwindet wieder, wenn ich die Anwendung schließe.
    Ist das bei dir nicht so? (Auf meinem Rechner habe ich Win 8.1)


    Bei mir mit Win 7, 64 Bit bleibt die Taskleiste und der Startbutton ausgeblendet, während der gesamten Laufzeit des Programms.

    Das starten mehrerer Programme ist eigentlich sogar einfacher (funktioniert allein durch weglassen einiger Befehle).
    Hier mal die MultiTasking-Version:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include '_GuiCtrlSetImageEx.au3'

    [/autoit] [autoit][/autoit] [autoit]

    OnAutoItExitRegister('_OnExit')
    Opt('GUIOnEventMode', 1)
    Opt('WinTitleMatchMode', 4)
    _myTaskHS(True) ; Taskleiste und Startbutton verstecken

    [/autoit] [autoit][/autoit] [autoit]

    Global $iGuiWidth = Int(@DesktopWidth / 2) ; halbe Desktopbreite als Gui-Breite
    Global $iGuiHeight = Int(@DesktopHeight / 2) ; halbe Desktophöhe als Gui-Höhe
    Global $aBkColor[4] = [0x84b5d6, 0xfacd94, 0xd69cd7, 0xe6f791] ; die Hintergrundfarben für die 4 virtuellen Desktops
    Global $sImagePath = @ScriptDir & '\img\' ; Pfad für die Icondateien
    Global $iIconSize = 128 ; Größe der Icons
    Global $ahGui[4] ; Array für die Gui-Handles
    Global $hMainGui = GUICreate('VDesktop', 0, 0, 0, 0) ; Hauptfenster erstellen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_GuiDelete')
    GUISetState(@SW_SHOW, $hMainGui) ; Hauptfenster anzeigen
    For $i = 0 To 3
    $ahGui[$i] = GUICreate('Desktop' & $i + 1, $iGuiWidth, $iGuiHeight, Mod($i, 2) * $iGuiWidth, Int($i / 2) * $iGuiHeight, $WS_POPUP, -1, $hMainGui) ; Gui erstellen
    GUISetBkColor($aBkColor[$i], $ahGui[$i]) ; Hintergrundfarbe setzen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_GuiDelete')
    GUISetState(@SW_SHOW, $ahGui[$i]) ; Gui anzeigen
    GUICtrlCreateLabel($i + 1, 4, 4, 28, 28) ; Label zur Anzeige der VDesktop-Nummer (jeweils oben links)
    GUICtrlSetFont(-1, 20, 600, 0, 'Verdana', 5)
    GUICtrlSetColor(-1, 0x444444)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; das folgende Array $aApp beeinhaltet alle Daten für die Anwendungen:
    ; 1. Wert = der virtuelle Desktop
    ; 2. und 3. Wert = die Koordinaten (Left/Top) für das Icon
    ; 4. Wert = das PNG-Bild, das für die Anwendung angezeigt werden soll
    ; 5. Wert = Pfad zu der Anwendung
    ; 6. Wert = die Fensterklasse (das ist die sicherste Methode, das richtige Fenster zu erkennen)
    Global $aApp[4][6] = [ _
    [0, 30, 30, 'calc.png', 'calc.exe', '[CLASS:CalcFrame]'], _
    [1, 30, 30, 'firefox.png', @ProgramFilesDir & '\Mozilla Firefox\firefox.exe', '[CLASS:MozillaWindowClass]'], _
    [2, 30, 30, 'notepad.png', 'notepad.exe', '[CLASS:Notepad]'], _
    [3, 30, 30, 'paint.png', @WindowsDir & '\system32\mspaint.exe', '[CLASS:MSPaintApp]']]

    [/autoit] [autoit][/autoit] [autoit]

    Global $aidApp[UBound($aApp)], $iGui

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($aApp) - 1
    $iGui = $aApp[$i][0] ; auf welchem VDesktop soll das Icon erstellt werden?
    GUISwitch($ahGui[$iGui]) ; auf diese Gui switchen
    $aidApp[$i] = GUICtrlCreatePic('', $aApp[$i][1], $aApp[$i][2], $iIconSize, $iIconSize) ; an den gespeicherten Koordinaten ein Pic-Control erstellen
    GUICtrlSetCursor(-1, 0) ; den Mauszeiger beim drüberfahren in eine Hand umwandeln
    GUICtrlSetOnEvent(-1, '_StartApp') ; beim anklicken des Icons wird diese Funktion ausgeführt
    _GuiCtrlSetImageEx(-1, $sImagePath & $aApp[$i][3]) ; hier wird das PNG-Bild geladen und dem Pic-Control zugewiesen
    Next
    _SetGuiOnTop(1) ; Die VDesktops OnTop setzen
    _SetGuiOnTop(0) ; Die VDesktops nicht mehr OnTop setzen

    [/autoit] [autoit][/autoit] [autoit]

    WinWaitClose($hMainGui) ; warten, bis das Hauptfenster geschlossen wurde
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _OnExit()
    _myTaskHS(False) ; Taskleiste und Startbutton wieder anzeigen
    EndFunc ;==>_OnExit

    [/autoit] [autoit][/autoit] [autoit]

    Func _GuiDelete()
    For $hGui In $ahGui
    GUIDelete($hGui)
    Next
    GUIDelete($hMainGui)
    EndFunc ;==>_GuiDelete

    [/autoit] [autoit][/autoit] [autoit]

    Func _StartApp()
    Local $hWnd, $iIndex = @GUI_CtrlId - $aidApp[0] ; den Index der angeklickten Anwendung ermitteln
    If Not WinExists($aApp[$iIndex][5]) Then ; wenn das Fenster noch nicht existiert, dann...
    Run($aApp[$iIndex][4]) ; die App starten
    If @error Then Return ; wenn beim starten ein Fehler aufgetreten ist, dann Funktion abbrechen
    $hWnd = WinWait($aApp[$iIndex][5]) ; auf das Fenster warten (Handle wird zurückgegeben)
    Else
    $hWnd = WinGetHandle($aApp[$iIndex][5]) ; das Fenster existiert bereits (Handle holen)
    EndIf
    WinSetOnTop($hWnd, '', 1) ; Fenster OnTop setzen
    WinSetState($hWnd, '', @SW_SHOW) ; App anzeigen
    EndFunc ;==>_StartApp

    [/autoit] [autoit][/autoit] [autoit]

    Func _SetGuiOnTop($iFlag = 0)
    For $hGui In $ahGui
    WinSetOnTop($hGui, '', $iFlag)
    Next
    EndFunc ;==>_SetGuiOnTop

    [/autoit] [autoit][/autoit] [autoit]

    Func _myTaskHS($f_hide = False)
    Local $h_task = WinGetHandle('[CLASS:Shell_TrayWnd]')
    If Not $h_task Then Return SetError(1, 0, 0)
    Local $h_start = 0
    Local $a_wlist = WinList('[CLASS:Button]')
    If Not IsArray($a_wlist) Then Return SetError(2, 0, 0)
    For $iwin = 1 To $a_wlist[0][0]
    If _WinAPI_GetParent($a_wlist[$iwin][1]) = $h_task Then
    $h_start = $a_wlist[$iwin][1]
    ExitLoop
    EndIf
    Next
    If Not $h_start Then Return SetError(3, 0, 0)
    If $f_hide Then
    _WinAPI_ShowWindow($h_start, @SW_HIDE)
    _WinAPI_ShowWindow($h_task, @SW_HIDE)
    Else
    _WinAPI_ShowWindow($h_start, @SW_SHOW)
    _WinAPI_ShowWindow($h_task, @SW_SHOW)
    EndIf
    EndFunc ;==>_myTaskHS

    [/autoit]

    Wie bereits gesagt, ich wusste nicht, welche Features gewünscht sind. Ich habe keine Erfahrung mit geistig Behinderten und wie sie mit Computerprogrammen umgehen.
    Falls Du bei dem Programm noch Hilfe brauchst, solltest Du vielleicht mal etwas ausführlicher auf die speziellen Anforderungen eingehen.

  • Hallo

    Erstmal einen Riesendank für euer Mitdenken und den Einsatz - besonders an Oscar!

    Bei mir mit Win 7, 64 Bit bleibt die Taskleiste und der Startbutton ausgeblendet, während der gesamten Laufzeit des Programms.


    Wir haben den Windows Sever 2008R2 - ich schicke da mal ein Testszenario hoch und schaue, ob es mit der Taskleiste klappt.

    Wie bereits gesagt, ich wusste nicht, welche Features gewünscht sind. Ich habe keine Erfahrung mit geistig Behinderten und wie sie mit Computerprogrammen umgehen.
    Falls Du bei dem Programm noch Hilfe brauchst, solltest Du vielleicht mal etwas ausführlicher auf die speziellen Anforderungen eingehen.

    Nochmal: Riesendank für die Unterstützung!
    Mein Plan ist aber nicht, dass andere die Arbeit für mich machen.
    Ich will mich da ja selber reinfuchsen und werde bei "Notfällen" um Rat fragen.

    Trotzdem kann ich ja mal versuchen, die allgemeinen Anforderungen aufzulisten:

    • für die Schüler soll das Programm den Desktop ersetzen und durch die 4 Farbkacheln, große und wenige Icons übersichtlich und aufgeräumt aussehen - dazu gehört auch ein Icon für das einfache Abmelden der Sitzung vom win 2008r2-Server
    • (die (Clients Win 7 Prof. 64Bit) sind so eingestellt, dass Schüler dort eigentlich nur die Anmeldung erledigen können - lokal geht (fast) nichts, damit die Client-Rechner "sauber" bleiben)
    • in zwei der Kacheln werden Lernprogramme abgelegt - das ist der einfache Teil, da diese Programme speziell für unsere Schülerschaft sind und in der Regel im Vollbildmodus starten
    • in einer Kachel werden Multimediaprogramme und der Internetbrowser (Firefox) abgelegt, ab hier könnte es nötig sein, für cut & paste mehrere Programme starten zu können
    • gleiches gilt für die 4te Kachel: "Büroprogramme" plus Datei-Explorer
    • bei den Büroprogrammen gibt es zwei Gründe bei Standardprogrammen zu bleiben: a) die Schüler lernen was für die "Wirklichkeit" b) meine lieben KollegInnen wollen sich nicht umorientieren :rolleyes: (die fluchen schon, weil wir aus Lizenz- und Kostengründen kein MS-Office sondern nur Open / LibreOffice benutzen können) - dabei gäbe es z. B. sehr aufgeräumte Textverarbeitungen

    Speziellere Anforderungen:

    • ressourcenschonend (als recht kleine Schule werden in Stoßzeiten evtl. ein Dutzend Clients auf dem Server angemeldet sein und den Pseudo Desktop gestartet haben)
    • gutes Fehlermanagement (eigentlich selbstverständlich) mit fallback auf den normalen Desktop damit auf jeden Fall gearbeitet werden kann (inkl. Hotkey zum Beenden des Pseudo Desktop)
    • wenn ich das richtig weiß, werden bei einem korrekten Abmelden alle User-Prozesse beendet, wenn dem nicht so ist oder wenn es einen anderen guten Grund gibt, sollten beim Abmelden alle gestarteten Programme beendet werden
    • KEINE AHNUNG was noch auf mich zukommt! Der Pseudo Desktop (PD) darf ja die Arbeit nicht behindern. Ich bin mir aber sicher, dass es Situationen geben wird (bei denen man auf dem PD "festhängt" und z. B. nicht an Programme oder Dateien kommt) an die ich jetzt noch gar nicht denke ...

    Ich habe jetzt eine Fassung mit EventMode und INI-Datei (hoffentlich bringt mich Oscar nicht um ...) die könnte jetzt auf Code-Vereinfachung und Fehler begutachtet werden.*
    Fehlermanagement wollte ich jetzt bald mal angehen ...

    *) Ich weiß, dass ich gerne Lösungen in 20 Zeilen schreibe, für die man auch mit 3 Zeilen auskommen könnte. :S

    Ansonsten brassele ich mal weiter und stelle hier Zwischenergebnisse ein bzw. stelle konkret Fragen ...

    Grüße,
    klaros

    2 Mal editiert, zuletzt von klaros (12. Dezember 2014 um 12:21) aus folgendem Grund: Dateianhang entfernt, damit es keine Verwirrung mit dem aktuellen Stand gibt

  • Hallo zusammen,

    Meine Idee ist, dass ich hier in diesem Thread den Quellcode ablegen und die grundsätzlichen Fragen stelle.
    In "Neben"Threads wollte ich dann spezielle Fragen stellen (zu speziellen Funktionen oder speziellen Problemen), damit dieser "Haupt"Thread besser lesbar bleibt.
    In den Nebenthreads wollt ich dann hier hin (auf den Quellcode) verlinken.
    Ist das eine gute Idee oder eher für euch verwirrend zum reinlesen?

    Ansonsten stelle ich hier nur mal kurz die aktuelle Fassung rein.

    Ich habe da eine grundsätzliche Frage / ein Problem.
    Da muss ich aber am Wochenende erstmal noch was ausprobieren, um das halbwegs verständlich zu fragen ...
    (Kurz angerissen:
    Hat was mit der Erreichbarkeit von Fenstern zu tun, wenn die hinter den VDestkop gelangen.
    Besonders, wenn die Fenster nicht über VDesktop gestartet werden, sondern von einem anderen Prog.
    -> Vdesktop startet Dateiexplorer - dort wird mit "Öffnen mit" XnView gestartet und davon weiß VDesktop nix.

    Möglicherweise ist es doch eine gute Idee, die Taskleiste anzuzeigen, da ich diese über Gruppenrichtlinien stark genug beschränken kann)

    Grüße,
    klaros

  • Interessante Idee, nur ein Punkt fällt mir negativ auf: die Icons. Ich fand nirgendwo einen Hinweis, von wo du die Grafiken hast (Quelle). Du solltest das machen ;)

    Grüße,

    Steve

    [Blockierte Grafik: http://stefan.blagojevic.at/loading.gif]

    Design, Modellbau, CAD <3
    AutoCAD, ArchiCAD, REVIT (ist ein Scheiss, habe aber das Zertifikat)

    Cinema 4D, RuckZuck Statik Programm

    Michael Bay als Architekt


    Da eine Glasfassade! Booom Sichtbeton! Laminiertes Bild auf Mosaiksteinchen! Granit! Granit! Granit! Sichtbetonwand mit 50° Neigung!
    Holzverkleidung erscheint da! Boooooom!

  • Interessante Idee, nur ein Punkt f&auml;llt mir negativ auf: die Icons. Ich fand nirgendwo einen Hinweis, von wo du die Grafiken hast (Quelle). Du solltest das machen

    Da hast du recht! Die Icons sind entweder bearbeitet/selbstgbastelt oder (hoffentlich) frei verwendbar (so hatte ich danach gesucht und es wohl auf der Seite so verstanden) - ich werde mich da noch kümmern.

    Wenn das Programm produktive(re) Züge annimmt, wollte ich sowieso im Header einige nette Leute aus dem Forum erwähnen ...

    Hehe, wenn das nicht mal ein Ansporn ist. ;)

    Ansonsten habe ich jetzt noch als größeres Problem tatsächlich den Umstand, dass ein Programm durch den Pseudo Desktop gestartet wird und dieses dann ein weiteres Programm startet. (Aus dem Dateimanager ein Bild oder ein Textdokument anklicken und dadurch ein entsprechendes Programm aufrufen.)
    Wenn das aus zweiter Hand gestartet Programm als Desktop-Icon vorliegt, kommt man nur über Umwege dran.
    Ansonsten verschwindet es hinter den Pseudo Desktop.

    Das Handling der Fenster kriege ich nicht zuende gedacht. Das liegt aber auch daran, dass ich nicht gut wie ein Programmierer denken kann, um das Problem zu abstrahieren oder/und in Teilprobleme aufzuteilen. Da wäre ich für Tipps und Schubser in die richtige Richtung dankbar. UND - Es muss nicht immer der ganze Quellcode sein. :)
    Den Stand der Dinge (ZIP-Datei) legen ich gleich mal in mein erstes Posting hier im Thread.

    Grüße, klaros

    (Äh, was ist/war hier mit dem Editor los?)

    4 Mal editiert, zuletzt von klaros (14. Dezember 2014 um 15:16)