Tab&Toasters

  • Hallo Leute,

    ich möchte euch hier meinen Skript "Tab&Toasters" vorstellen. Bei einem Klick auf ein Icon wird das Programm automatisch gestartet.

    Gesteuert wird das Programm über eine ini Datei die nach folgendem Schema aufgebaut ist.

    [new tab]
    name=%name_des_tabs%

    [new icon]
    name=%name_des_icons im_menü%
    pfad=%pfad_zur_exe%
    tab=%zuordnung_zu_einem_tab%

    Wie ihr die ini Datei anordnet bleibt euch überlassen, allerdings ist es zu empfehlen zuerst den Tab zu erstellen und danach die Icons hinzuzufügen.

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #Include <File.au3>
    #include<String.au3>
    #Include <GuiButton.au3>

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

    Opt ("GUIOnEventMode", 1)
    $file=FileOpen("c:\config.ini",0)

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

    $name=0
    $checkid=1

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

    $posx=10
    $posy=20

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

    Dim $tabname[1]
    Dim $iconname[1]
    Dim $iconpfad[1]
    Dim $icontab[1]
    Dim $id[1]

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

    For $n=1 to _FileCountLines("c:\config.ini")
    $name=FileReadLine($file,$n)
    If StringCompare("[new tab]",$name) = 0 Then
    $name=FileReadLine($file,$n+1)
    $name=_StringExplode($name,"%")

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

    _ArrayAdd($tabname,$name[1])
    EndIf

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

    If StringCompare("[new icon]",$name) = 0 Then
    $name=FileReadLine($file,$n+1)
    If StringInStr($name,"name") <> 0 Then
    $name=_StringExplode($name,"%")
    _ArrayAdd($iconname,$name[1])
    EndIf

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

    If StringInStr($name,"pfad") <> 0 Then
    $name=_StringExplode($name,"%")
    _ArrayAdd($iconpfad,$name[1])
    EndIf

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

    $name=FileReadLine($file,$n+3)
    If StringInStr($name,"tab") <> 0 Then
    $name=_StringExplode($name,"%")
    _ArrayAdd($icontab,$name[1])
    EndIf

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

    EndIf

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

    Next

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

    GUICreate("Menü",500,500)
    GUISetOnEvent (-3, "_exit")
    GUICtrlCreateTab(-1,-1,500,500)

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

    For $check=1 To UBound($tabname)-1
    GUICtrlCreateTabItem($tabname[$check])
    $posy=30

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

    For $check2=1 to UBound($icontab)-1
    If $tabname[$check] = $icontab[$check2] Then
    $checkid = GUICtrlCreateIcon($iconpfad[$check2],-1,$posx,$posy)
    GUICtrlCreateLabel($iconname[$check2],$posx+40,$posy+10)
    _ArrayAdd($id,$checkid)
    GUICtrlSetOnEvent ($id[$check2], "_run")
    If $posy <= 170 Then
    $posy=$posy+40
    Else
    $posx=$posx+40
    $posy=0
    EndIf
    EndIf
    Next

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

    Next

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

    GUISetState()

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

    While 1
    Sleep(100)

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

    WEnd

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

    Func _exit()
    Exit
    EndFunc

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

    Func _run()
    $msg=@GUI_CTRLID
    For $check2=1 to Ubound($id)-1
    if $msg = $id[$check2] Then
    Run($iconpfad[$check2])
    EndIf
    Next
    EndFunc

    [/autoit]

    Meine ini Datei

    Spoiler anzeigen

    Bilder:

    Spoiler anzeigen


    Verbesserung nehme ich gerne entgegen. :)

  • Och du Armer, immernoch keine Antwort :D

    Nun, ich finds gut, die Idee hatten ja schon viele, aber etwas unpraktisch. Man könnte ja das ganze noch transparent machen, mit schönen Grafiken und dann vielleicht erst anzeigen lassen, wenn man z.B. länger die rechte Maustaste drückt.

    Aber sonst echt nicht schlecht.

    MfG, campweb

  • Hatte die Idee auch mal einen "Programmstarter" zu basteln. Allerdings bin ich derzeit mit anderen Projekten beschäftigt!

    Zu deinem Programm:
    Ich würde noch eine Konfiguration per GUI vorshlagen.

    Also ein Menü erstellen, dort dann zum Beispiel unter "Datei" einen Punkt "Optionen" hinzufügen. Dort könnte man dann neue Programme hinzufügen, Tabs hinzufügen und Programmen dann den einzelnen Tabs zuordnen.

    Evtl. könnte man auch nach Software suchen lassen.Dies könnte man per Registry lösen (denn jedes Programm hat einen Registreintrag zum Programmordner).
    DIese Werte einfach in eine Datenbank klatschen (oder in eine .ini).

    Aber sonst sieht es schonmal echt gut aus :)

    Ich bin halt ein Fan von Benutzerfreundlicher Bedienung und automatichen Abläufen ^^


  • Das Progamm habe ich fürmeinen Betreib erstellt und eine Anforderung war es das es via Ini Datei (mehr oder weniger) einfach zu erweitern war. Die Idee mit der Datenbank hatte ich auch, allerdings dachte ich ehr an eine lokale Datenbank die man vorher mit den Wertern füttert. Die Registry kann man auch benutzen, allerdings steht für mich persönlich da zu viel "Müll" drin ;)
    Als Alternative bietet sich ja auch das Startmenü an.