AutoIt Booteditor

  • Halli hallo hallöchen.
    Heute gibts ein kleines Skript, das das Bootlogo verändert (sowas: [Blockierte Grafik: http://home.pages.at/chemikers-home/screenshots/setup/BOOTLOGO.jpg
    Kompatible Betriebssysteme:
    -XP [getestet]
    -Vista & Win 7 [nicht getestet], es spricht aber nix dafür, dass es nicht klappt
    Über die Funktionsweise
    Das Programm ändert in C:\boot.ini zwei Einträge. Dazu wird ein ausgewähltes Bild in den Windowsordner kopiert und in boot.bmp umbenannt.
    Nix weiter :)

    Der Code:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <StaticConstants.au3>
    #include<file.au3>
    #include<array.au3>
    #include<gdiplus.au3>
    #RequireAdmin
    Local $inidir = IniRead(@ScriptDir & "\info.ini", "Bootinidir", "dir", "C:\boot.ini")
    Local $pos = 1

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

    $Gui = GUICreate("Autoit Booteditor", 600, 270)
    $back = GUICtrlCreateButton("Back", 400, 0, 200, 30)
    GUICtrlSetState(-1, $gui_disable)
    $next = GUICtrlCreateButton("Next", 400, 30, 200, 30)
    $add = GUICtrlCreateButton("Add bootlogo", 400, 60, 200, 30)
    $aslogo = GUICtrlCreateButton("Use as bootlogo", 400, 90, 200, 30)
    $default = GUICtrlCreateButton("Use default bootlogo", 400, 120, 200, 30)
    $change = GUICtrlCreateButton("Find boot.ini", 400, 150, 200, 30)
    $pic = GUICtrlCreatePic(@ScriptDir & "\pic" & $pos & ".bmp", 0, 0, 400, 270)
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $gui_event_close
    Exit
    Case $back
    GUICtrlDelete($pic)
    $pos = $pos - 1
    $pic = GUICtrlCreatePic(@ScriptDir & "\pic" & $pos & ".bmp", 0, 0, 400, 270)
    GUICtrlSetState($next, $gui_enable)
    If $pos = 1 Then GUICtrlSetState($back, $gui_disable)
    Case $next
    $list = _FileListToArray(@ScriptDir, "*.bmp")
    GUICtrlDelete($pic)
    GUICtrlSetState($back, $gui_enable)
    $pos = $pos + 1
    $pic = GUICtrlCreatePic(@ScriptDir & "\pic" & $pos & ".bmp", 0, 0, 400, 270)
    If $pos = $list[0] - 1 Then GUICtrlSetState($next, $gui_disable)
    Case $add

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

    $openfiles = FileOpenDialog("Chose the bootlogo, you'd wish to add", @DesktopDir, "BMP-Files(*.bmp)")
    $list = _FileListToArray(@ScriptDir, "*.bmp")
    _GDIPlus_Startup()
    $tempfile = _GDIPlus_ImageLoadFromFile($openfiles)
    $width = _GDIPlus_ImageGetWidth($tempfile)
    $height = _GDIPlus_ImageGetHeight($tempfile)
    $pixelformat = _GDIPlus_ImageGetPixelFormat($tempfile)

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

    _gdiplus_shutdown()

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

    If $width <> 640 Or $height <> 480 Or StringInStr($pixelformat, "16") = 0 Then
    MsgBox(0, "Error", "Please chose a file, with a width of 640*480")

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

    Else
    FileCopy($openfiles, @ScriptDir & "\pic" & ($list[0] + 1) & ".bmp")
    EndIf
    Case $aslogo
    _aslogo($pos)
    Case $change

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

    $inidir2 = FileOpenDialog("Find boot.ini", "C:\", "Ini-Files(*.ini)")
    If StringLen($inidir2) <> "" Then
    IniWrite(@ScriptDir & "\info.ini", "Bootinidir", "dir", $inidir2)
    $inidir = $inidir2
    EndIf
    Case $default
    _default()
    EndSwitch

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

    WEnd
    Func _aslogo($pos)

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

    If FileExists($inidir) Then
    $sectionread = IniReadSection($inidir, "operating systems")
    If StringInStr($sectionread[1][1], " /bootlogo") = 0 Then
    For $i = 0 To 1
    IniWrite($inidir, "operating systems", "", $sectionread[1][$i] & " /bootlogo")
    Next
    EndIf
    If StringInStr($sectionread[1][1], " /noguiboot") = 0 Then
    For $i = 0 To 1
    IniWrite(@DesktopDir & "\boot.ini", "operating systems", "", $sectionread[1][$i] & " /noguiboot")
    Next
    EndIf

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

    FileCopy(@ScriptDir & "\pic" & $pos & ".bmp", @WindowsDir & "\boot.bmp", 1)
    EndIf
    EndFunc ;==>_aslogo
    Func _default()
    MsgBox(0, "Default settings", "Delete the parameters ' /noguiboot' and ' /bootlogo', which are included in " & $inidir2)
    EndFunc ;==>_default

    [/autoit]


    Nun viel Spaß und viel Erfolg beim Testen,
    Gruß,
    Billie

    __________________________________________________________________________
    Im Anhang ist der Download mit der exe, mit ini's und 3 Bootlogos.
    Für Schäden übernehm ich keinerlei Haftung :rofl: . Wenn ihr auf die Sicherheit des Programmes nicht vertraut, macht einfach nen Systemwiederherstellungpunkt.
    Edit: Kleine Sachen schon geändert. Dateien müssen in 16-Bit abgespeichert sein!

  • Man kanns ja mal ausprobiern^^ Ich hab das ganze Programm geschrieben und getestet, ohne einen einzigen Systemwiederherstellungpunkt gemacht zu haben ;)

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • Also hab grad gesehn, dass es bei win 7 und vista dieses typische bootlogo gar nicht gibt.
    es wäre nett, wenn jemand mal einen erfahrungsbericht posten würde :)

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • natürlich gibt es das nicht...
    unter win7 ist nicht so einfach, aber ich verrate dir mal einen ansatz ;)
    öffne mal mit dem ResHacker die C:\Windows\system32\bootres.dll und schau dir mal "RCData" genauer an ;)

    PS: du brauchst 7zip für die .bin

  • Jup, hab vor 2 Tagen WIn 7 das erste mal richtig gesehn :D
    Aber beim ResHacker is kein Reiz mehr dabei. Der Booteditor macht ja eigentlich alles automatisch und es ist kein externer Zugriff nötig.

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • Ich hoffe dir ist klar, dass "nur" umbennen in .bmp das Bild nicht gleich zu solcher macht. Schließlich kann eine Datei vom Namen.exe auch ein Bild sein !
    Ich rate dir dass ganze mit GDI+ und IMGSaveToFile zu regeln !

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal