Hallo Autoitgemeinde,
ich habe schon länger den Wunsch ein eigenes kleines Betriebssystem zu schreiben (manche werden bestimmt Lachen).
Meine Frage: Ist es möglich dies mit Autoit zu machen?
Hallo Autoitgemeinde,
ich habe schon länger den Wunsch ein eigenes kleines Betriebssystem zu schreiben (manche werden bestimmt Lachen).
Meine Frage: Ist es möglich dies mit Autoit zu machen?
Nein.
Ich denke eher nicht ,da Autoit ja ein Betriebssystem steuern soll Da müsstes du C* oder C++ nehmen und selbst dafür brauchst du eine menge Fach wissen .
( Irgentwer hat ma ausgerechnet das , wenn man alleine windows xp selber schreiben würde etwa 200 Jahre brauch ) also wer damit schon die Frage geklärt denk ich ma
Edit : da war wohrl der gute peethebee schneller als ich
Danke
Frage ist damit geklärt.
Schade eigentlich, würde um einiges leichter gehen
Schade eigentlich, würde um einiges leichter gehen
was soll denn da bitte einfacher gehen?
Eine art Minibetriebsystem auf Windows aufbauend (wie ein programm halt) wäre bestimmt möglich....
vielleicht sollte "man" sich einmal mit Grundlagen der Informatik beschäftigen
z.B. WAS ist ein Betriebssystem?
Arten?
Aufbau?
Aufgaben?
Ich denke, er meint nur die Shell.
Ein Windows-Shell Ersatz ist mit Autoit ohne weiteres möglich...
Also was ich meine ist:
1.Man startet das Programm.
-> Es setzt sich wie ein Spiel komplett über den desktop (popup?)
2. Dort sind "programme" (also eigendlich funktionen) die wenn man sie startet eine neue Gui aufrufen
etc...
ctec
du brauchst mir nichts zu erzählen in Punkto Informatik
Ich habe soviel wissen das selbst manche FiSis und IT-SE mit diversen Zertifikaten teils dumm aus der Wäsche gucken...
ZitatEine art Minibetriebsystem auf Windows aufbauend (wie ein programm halt) wäre bestimmt möglich....
+
Zitatctec
du brauchst mir nichts zu erzählen in Punkto Informatik
Ich habe soviel wissen das selbst manche FiSis und IT-SE mit diversen Zertifikaten teils dumm aus der Wäsche gucken...
Öhmmm...
Ein Betriebssystem kann nicht auf einem anderen aufbauen, weil es dann selbst keines mehr ist, würde ich mal sagen. Zumindest die Formulierung ist unglücklich ;). Man kann es vielleicht "Betriebssystemaufsatz" oder eben Shell nennen, aber mehr nicht. Der Charakter eines Betriebssystem ist gerade, dass es auf nackter Hardware laufen kann und keinen Untersatz braucht...
peethebee
Um die Windows-Shell zu ersetzen (statt Desktop und Taskbar wird ein anderes Programm beim Windows-Start gestartet) kann man diesen Registry-Wert ändern:
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell"
Hier ein Beispiel:
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <WinAPI.au3>
Opt("GuiOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $aProgram[8][4]
$aProgram[0][0] = 7
$aProgram[1][0] = @WindowsDir & "\explorer.exe"
$aProgram[1][1] = "Explorer"
$aProgram[1][2] = @WindowsDir & "\explorer.exe"
$aProgram[1][3] = 1
$aProgram[2][0] = @WindowsDir & "\notepad.exe"
$aProgram[2][1] = "Editor"
$aProgram[2][2] = @WindowsDir & "\notepad.exe"
$aProgram[2][3] = 1
$aProgram[3][0] = @SystemDir & "\calc.exe"
$aProgram[3][1] = "Rechner"
$aProgram[3][2] = @SystemDir & "\calc.exe"
$aProgram[3][3] = 1
$aProgram[4][0] = @SystemDir & "\cmd.exe"
$aProgram[4][1] = "Eingabeaufforderung"
$aProgram[4][2] = @SystemDir & "\cmd.exe"
$aProgram[4][3] = 1
$aProgram[5][0] = "Shutdown"
$aProgram[5][1] = "Ausschalten"
$aProgram[5][2] = @SystemDir & "\shell32.dll"
$aProgram[5][3] = 29
$aProgram[6][0] = "Logoff"
$aProgram[6][1] = "Abmelden"
$aProgram[6][2] = @SystemDir & "\shell32.dll"
$aProgram[6][3] = 46
$aProgram[7][0] = "Deaktivate"
$aProgram[7][1] = "Original wiederherstellen"
$aProgram[7][2] = @SystemDir & "\shell32.dll"
$aProgram[7][3] = 45
If Not @Compiled Then
MsgBox(0, "ACHTUNG!", "Script muß vorher als EXE compiliert werden")
Exit
EndIf
If Not StringInStr(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell"), @AutoItExe) Then
_Enable()
Exit
EndIf
If $CmdLine[0] <> 1 Then
MsgBox(0, "Achtung", "Diese Shell wird beim nächsten Anmelden gestartet...")
Exit
EndIf
Global $hDeskTop = GUICreate("Autoit Desktop", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
GUISetBkColor(0x005500, $hDeskTop)
GUISetState(@SW_SHOW, $hDeskTop)
Global $hTaskBar = GUICreate("Autoit TaskBar", @DesktopWidth, 60, 0, @DesktopHeight - 80, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
_WinAPI_SetLayeredWindowAttributes($hTaskBar, 0xABCDEF, 255)
Global $hDummy = GUICtrlCreateDummy()
For $i = 1 To $aProgram[0][0]
GUICtrlCreateIcon($aProgram[$i][2], $aProgram[$i][3] - 1, @DesktopWidth / 2 - ($aProgram[0][0] * 24) + $i * 48 - 32, 5, 32, 32)
GUICtrlSetOnEvent(-1, "_Start")
GUICtrlSetTip(-1, $aProgram[$i][1])
Next
GUISetBkColor(0xABCDEF, $hTaskBar)
GUISetState(@SW_SHOW, $hTaskBar)
While 1
Sleep(5000)
WinSetOnTop($hTaskBar, "", 1)
_WinAPI_RedrawWindow($hTaskBar)
WEnd
Func _Start()
Local $iIndex = @GUI_CtrlId - $hDummy
Switch $aProgram[$iIndex][0]
Case "Shutdown"
_Shutdown()
Case "Logoff"
_Logoff()
Case "Deaktivate"
_Disable()
Case Else
ShellExecute($aProgram[$iIndex][0])
EndSwitch
EndFunc ;==>_Start
Func _Shutdown()
If MsgBox(4, "Herunterfahren?", "Wollen Sie den Rechner herunterfahren?") = 6 Then Shutdown(1)
EndFunc ;==>_Shutdown
Func _Logoff()
If MsgBox(4, "Abmelden?", "Wollen Sie sich abmelden?") = 6 Then Shutdown(0)
EndFunc ;==>_Logoff
Func _Enable()
If MsgBox(4, "Aktivieren?", "Wollen Sie die Windows Shell ersetzen?") = 6 Then
IniWrite(@ScriptDir & "\Reg.ini", "Winlogon", "Userinit", RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell"))
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "REG_SZ", @AutoItExe & " Run")
MsgBox(0, "Aktivieren?", "Beim nächsten Anmelden startet die Autoit-Shell")
EndIf
EndFunc ;==>_Enable
Func _Disable()
If MsgBox(4, "Deaktivieren?", "Wollen Sie die original Windows Shell wieder aktivieren?") = 6 Then
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "REG_SZ", IniRead(@ScriptDir & "\Reg.ini", "Winlogon", "Userinit", "explorer.exe"))
MsgBox(0, "Deaktivieren?", "Beim nächsten Anmelden startet Windows wieder im originalen Zustand")
EndIf
EndFunc ;==>_Disable
Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
If Not $isColorRef Then
$i_transcolor = Hex(String($i_transcolor), 6)
$i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
EndIf
Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
Select
Case @error
Return SetError(@error, 0, 0)
Case $Ret[0] = 0
Return SetError(4, _WinAPI_GetLastError(), 0)
Case Else
Return 1
EndSelect
EndFunc ;==>_WinAPI_SetLayeredWindowAttributes
ACHTUNG! Ausführen auf eigene Gefahr!
Falls etwas schiefgeht, muß man manuell und evtl. umständlich den Registry-Wert wieder auf "explorer.exe" setzen!
lgE
Da sich doch einige Antworten häufen erläutere ich meine frage nochmal (genauer).
Also ich wolte wissen ob es möglich ist ein komplett eigenständiges system zu schreiben, was dann durch grub oder ähnliche geladen wird und genauso funktioniert wie ein Betriebssystem welches wir auf dem Rechner haben. Denn alles in C und C++ und Assambler zu schreiben wäre mir zu aufwändig.
Und mit dem einfacher meine ich halt Autoit kan komplexe Sachen in ein paar Zeilen unterbringen (antwort auf h0scHberT)
mfg lordxilef
es vereinfacht auszudrücken : autoit ist nichts weiter als eine möglichkeit windows zu manipulieren somit ist es nicht in der Lage so komplexe aufgaben wie ein eigenständiges system zu verarbeiten, da es im grunde auf dem windows kernel und den verschiedenen integrierten funktionen aufbaut
wenn du tatsächlich ein Richtiges Betriebssystem schreiben willst musst du eine andere sprache wählen welch eigenständig arbeiten kann ohne vorhandene Funktionen in einer windows umgebung zu nutzen
MFG
Hallo
Wurde schon oft sowas versucht:
http://www.autoitscript.com/forum/index.php?showtopic=55507&hl=Shell
http://www.autoitscript.com/forum/index.php?showtopic=86777&hl=Shell
http://www.autoitscript.com/forum/index.php?showtopic=61593&hl=Shell
http://www.autoitscript.com/forum/index.php?showtopic=55252&hl=Shell
Mfg Spider
Würde denn nicht soetwas wie ein Virtuelles Betribssystem gehn?
Es gibt ja auch virtuelle Betriebssysteme zum runterladen.
Denke schon, das soetwas machbar wäre, nur ein system, dass auf "nackter" Hardware läuft, ist mit AutoIt nicht machbar...
Hallo
Wurde schon oft sowas versucht:
http://www.autoitscript.com/forum/index.php?showtopic=55507&hl=Shell
http://www.autoitscript.com/forum/index.php?showtopic=86777&hl=Shell
http://www.autoitscript.com/forum/index.php?showtopic=61593&hl=Shell
http://www.autoitscript.com/forum/index.php?showtopic=55252&hl=ShellMfg Spider
Und das Fazit aus diesen Projekten war? "Kein sinnvoller Shell-Ersatz möglich" oder "läuft super"?
Eine eigene Oberfläche wäre vermutlich ziemlich Mediacenter tauglich.
... Denn alles in C und C++ und Assambler zu schreiben wäre mir zu aufwändig.
Ohne C und Assembler wird dat nix, nie ...
Gruß
Greenhorn
ne benutzeroberfläche in autoit wäre gut umsetzbar, ich meine früher lief windows auch nur über dos, mach du dein system einfach auf windows aufbauend
Hallo
Mit AutoIt kann man kein eigenes Betriebssystem Programmieren. AutoIt funktioniert ohne Windows nicht, da es auf Windows basiert.
Mit den Teilen die ich oben verlinkt hab, wollt ich nur zeigen was möglich ist.
Ob das jetzt das ist was du willst ist deine Sache
Mfg Spider
Danke dir GTASpider
Da dies nun nicht möglich ist versuche ich mich mal an so einer Shell.
Vielleicht wirds ja was.
Habt ihr links von welchen die funktionieren?