Virtuelles Betriebssystem in AutoIt?

  • Hallo,

    ich hab mich heute einfach mal gefragt, ob es möglich wäre ein mini-betriebssystem in Autoit zu Programmieren, halt mit Desktop und so nur halt anders als Windows. Ich weiß nicht ob das Script nicht zu groß wäre, wahrscheinlich dann mit DLLs usw.
    Wäre sowas Theoretisch möglich?

    mfg
    hauke96

  • Ich hoffe mal schon weil ich versuchs schon seit einiger zeit...
    Wenn so was möglich ist dann bin ich dabei :P

    Gruß
    Fabi

    Einmal editiert, zuletzt von Fabi (3. Juni 2011 um 17:29)

  • Betriebsystem? Bootbar oder Gastsystem? Eigenes Dateisystem oder Zugriff aufs Windoofsystem? Eigene Programme oder Zugriff auf Windoofprogramme? Etwa ein alternativer Desktop?

    Meiner Meinung nach ist Autoit dafür nicht gut geignet, eher HTML5 (>100 Online OS) oder C++, es gibt auch sehr gute Beispiele in Visual Basic.NET (Youtube :))

    MfG, campweb

  • Hmm... ich würd mal sagen also so wies ich versuche:
    Windows startet dann per AutoStart mein OS und Nach möglichkeit beide zugriffsysteme (keine ist besser als die andere) XD und als alternativen desktop einfach irgendwie so:

    GuiCreate(blabla...)
    GuiCtrlCreatePic(blabla)

    Also so wie ich es habe bloß dass man den hintergrund jederzeit ändern kann weil er den pfad vom bild ausm file liest.
    Aber HTML5 find ich wieder rum blöd weil ich denke dass HTML keine files schreiben kann... mit JavaScript glaub i auch ned...
    Und was ist wenn man C++ nicht kann?? <= Nicht böse gemeint... sorry

    Ich geh davon aus dass es mit AutoIt möglich ist... nur ist sehr viel arbeit... hab ich selber festgestellt... aber ich geb nicht auf...
    Wenn ihr wollt dann würde ich es Posten...
    Name dafür lautet "WinOS"
    Dennoch sind zwar die ganzen Files erstellt aber irgendwie Ultra-Ultramäßig Beta -.-
    Und die Funktionen sind eigentlich nur an den Objekten aber nicht in der Schlaufe fest...

    Was ich mir auch schon überlegt hab ist es da wo der Desktop ist dass es da mittels Internet Explorer einbinde aber dann ist wieder die frage wie soll es gehen mit dateien schreiben und exe ausführen...
    was vielleicht ne idee wär was ich nicht getestet hab und nicht garantieren kann ist der html verweis: A href=""
    Gruß
    Fabi

    Einmal editiert, zuletzt von Fabi (3. Juni 2011 um 17:55)

  • 1. HTML´s Power: http://eyeos.org/
    2. href kann auch lokale Dateien öffnen

    //Ich kenne das: Erst kommt die Idee zum eigenen GastOS, dann kommt die eigene Programmiersprache...
    Irgendwann scheiterts bis man die richtigen Mittel dafür findet damit es zu einem sinvollen Ergebnis kommt ;)

  • Ja über online os kannste ein ei drüber hauen die haben bestimmt andere techniken wie php oder so was...
    und gut zu wissen dass href des kann :P

    aber die frage bezieht sich leider nur auf AutoIt...

  • Das kann auch mit AUtoIt was werden :) Falls genuere Pläne bestehen bin ich gerne auch zur Hilfe bereit!

  • Ok....
    Ich muss mal schnell rumschrein gehn weil ich gleich ausflippe -.-
    Wieso schreibt er wenn ich das bild auswähle und dann auf speichern klicke nicht ins file rein????

    Spoiler anzeigen
    [autoit]

    ; AutoIt 3.3.6.1
    ; WinOS

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

    #include <GuiConstantsEx.au3>
    #include <TreeViewConstants.au3>
    #include <File.au3>
    #include <FileConstants.au3>
    #include <GuiEdit.au3>

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

    #RequireAdmin

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

    ;#forceref $separator1

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

    ; GUI
    $gui = GuiCreate("Einstellungen",@DesktopWidth,@DesktopHeight-8) ; Fenster erstellen , Titel , Breite , Hˆhe ,[ left , top

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

    $menu1 = GUICtrlCreateMenu("Datei")
    $ende = GUICtrlCreateMenuItem("Ende", $menu1)

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

    GUICtrlCreateLabel("Hintergrundbild:",5,5)
    $openimg = GUICtrlCreateButton("Ausw‰hlen", 300,5)

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

    $save = GUICtrlCreateButton("Speichern", 0, 70)

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

    ; GUI MESSAGE LOOP
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    ExitLoop

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

    Case $msg = $openimg
    $setimg = FileOpenDialog("Hintergrundbild suchen","::{450D8FBA-AD25-11D0-98A8-0800361B1103}","Bilder (*.jpg;*.bmp)")
    If @error Then
    MsgBox(4096,"","Keine Datei(en) ausgew‰hlt")
    EndIf

    Case $msg = $save
    $bg = FileOpen("settings.txt",2)
    FileWriteLine($bg,$setimg)
    FileClose($bg)
    Exit

    Case $msg = $ende
    Exit
    ExitLoop

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

    EndSelect

    WEnd
    While GuiGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

    [/autoit]

    Danke schon mal =)

  • [autoit]

    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "REG_SZ", "Explorer.exe")

    [/autoit]

    Explorer.exe kann man durch eine (in AutoIt geschriebene) andere Exe ersetzen.
    Dann bootet Windows und startet statt der "normalen" Oberfläche den eigenen Shell-ersatz

    Hab selbst mal sowas geschrieben und es gibt auch Beispiele im englischen Forum, wenn ich mich richtig erinnere...

    E

  • Korrektes Script:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 355, 59, 192, 124)
    $Input1 = GUICtrlCreateInput("Input1", 3, 3, 310, 21)
    $Button1 = GUICtrlCreateButton("...", 315, 2, 38, 25)
    $Button2 = GUICtrlCreateButton("Speichern", 3, 30, 349, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $path = FileOpenDialog("Öffnen", @mydocumentsdir, "Bilder (*.bmp)")
    GUICtrlSetData($Input1, $path)
    Case $Button2
    If GUICtrlRead($Input1) = "" Then Exit
    IniWrite(@appdatadir&"\sprachlOS.ini", "Hintergrund", "Bildpfad", guictrlread($Input1))
    MsgBox(0, "sprachlOS", "Bildpfad: "&iniread(@appdatadir&"\sprachlOS.ini", "Hintergrund", "Bildpfad", "ERROR!!!"))

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

    EndSwitch
    WEnd

    [/autoit]

    //Bidde, MfG, campweb

  • Danke... Auf des wär ich jetzt nicht gekommmen...
    Wahrscheinlich brauch ich dieses und eure Hilfe des noch zum umsetzen damit der Desktop perfekt dann angezeigt wird....

  • Vor ab den Desktopgui mit

    ...$WS_POPUP, bitor($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))

    Und nicht vergessen, das Hintergrundbild zu $GUI_DISABLE ´n!

    MfG, campweb

  • Ok..... ähhhh so krass kanns ich auch wieder ned.... sorry.. ;'(

    Einmal editiert, zuletzt von Fabi (4. Juni 2011 um 06:57)

  • Davon mal abgesehen, dass wir hier immernoch in Haukes Thread missbrauchen...

    Hier mal ein sehr gut Kommentiertes Script, mit dem Bildwählen und einem Beispieldesktop mit einer ersten Verknüpfung...

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3> ;
    #include <WindowsConstants.au3> ;
    #include <ButtonConstants.au3> ; INCLUDES
    #include <EditConstants.au3> ;
    #include <GUIConstantsEx.au3> ;
    #include <WindowsConstants.au3> ;

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

    If IniRead(@appdatadir&"\OS_USER.ini", "Start", "Firststart", "False") = False Then ;Gucken ob in der OS-Konfigurationsdatei steht dass das nicht der erste Start ist
    bild();Wenns der erste ist->Bild auswählen
    IniWrite(@appdatadir&"\OS_USER.ini", "Start", "Firststart", "False");Und in die Konfig schreiben, dass der nächste Start nciht der erste ist!
    Else;Wenns nicht der erste ist->
    desktop();Desktop starten
    EndIf

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

    Func bild();Schon im Forum erklärt....
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 355, 59, 192, 124)
    $Input1 = GUICtrlCreateInput("Input1", 3, 3, 310, 21)
    $Button1 = GUICtrlCreateButton("...", 315, 2, 38, 25)
    $Button2 = GUICtrlCreateButton("Speichern", 3, 30, 349, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $path = FileOpenDialog("Öffnen", @mydocumentsdir, "Bilder (*.bmp)")
    GUICtrlSetData($Input1, $path)
    Case $Button2
    If GUICtrlRead($Input1) = "" Then Exit
    IniWrite(@appdatadir&"\sprachlOS.ini", "Hintergrund", "Bildpfad", guictrlread($Input1))
    MsgBox(0, "sprachlOS", "Bildpfad: "&iniread(@appdatadir&"\sprachlOS.ini", "Hintergrund", "Bildpfad", "ERROR!!!"))
    desktop()
    EndSwitch
    WEnd
    EndFunc

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

    Func desktop()
    Local $pBack = iniread(@appdatadir&"\sprachlOS.ini", "Hintergrund", "Bildpfad", "ERROR!!!");Hintergrundbild auslesen
    Local $hGUI = GUICreate("", @desktopwidth,@desktopheight,0,0,$WS_POPUP,$WS_EX_TOOLWINDOW);DesktopGUI erstellen
    Local $pBackround = GUICtrlCreatePic($pBack,0,0,@desktopwidth,@desktopheight);Hintergrundbild erstellen
    GUICtrlSetState(-1, $GUI_DISABLE);Hintergrundbild disablen,damit es nicht als Control geshen wird
    Local $bEditor = GUICtrlCreateButton("Editor", 10, 10, 40, 40);"Verknüpfung" mit dem Editor...
    GUISetState()
    ;.
    ;. Was dir sonst noch einfällt....
    ;.
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $bEditor
    Run("notepad.exe")
    EndSwitch
    WEnd
    EndFunc

    [/autoit]
  • Wow, das ist echt cool, ich hab mich immer gefragt wie man ein fenster ohne diesen lästigen "Kreuz"-Button hinbekommen, bin aber nicht auf @desktopwidth und @desktopheight gekommen :rolleyes:

    Naja, zweite Frage: Wäre es sinnvoll für solch ein riesenprjekt Basic zu erlernen ( möchte ich sowieso )?
    Und dritte Fragen: Wer würde da mitmachen, also am "AutoOS"?

    mfg
    hauke96

  • 1. Basic, warum? Wenn dann viellecht Visual Basic um für das OS Anwendungen zu entwickeln, aber sonst reicht doch AutoIt.
    2. Ich denke Fabi ist schon am Bombenbasteln :)

  • 1) Ich lach mir gerade den arsch ab weil:

    2. Ich denke Fabi ist schon am Bombenbasteln :)

    @campweb:
    Haste mal tief in die Witzebox gegriffen oder?? :rofl:
    Und ja bin schon dabei :P

    2)kann mir des mal bitte jemand hier den code geben für dieses fenster ohne den 3 Buttons oben rechts??