Seite 1 von 1

Autostart von beliebigen Programmen

Verfasst: 25.12.2008 00:22
von SDL
Hier mal ein Versuch beliebige Programme mit PB zu starten um den Autostart zu entmüllen. Es hat genervt das man(n(frau))so lange warten musste bis man(n(frau) mit den rechner arbeiten konnte.
Hier der Code.
Ideen/kritiken bitte an rosenhoff@web.de oder hier

gefundene rechtschreibfehler kann man behalten

Common.pb

Code: Alles auswählen

*******************************************************
; Autostart Version 1.0
; Visual Designer v3.92 build 1460


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_0
  #Text_ram_1
  #ProgressBar_0
  #Text_2
  #Text_IPAdresse_5
  #Text_IP_6
  #Text_Sub
  #Text_Subnet
  #Text_Gateway
  #Text_Gate
  #Listview_0
EndEnumeration

;- StatusBar Constants
;
Enumeration
  #StatusBar_0
EndEnumeration


;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Arial", 12, #PB_Font_Bold | #PB_Font_Italic)
Global FontID2
FontID2 = LoadFont(2, "Courier New", 10, #PB_Font_Bold)
Global FontID3
FontID3 = LoadFont(3, "Arial", 12, #PB_Font_Bold)
Global FontID4
FontID4 = LoadFont(4, "Courier New", 8)

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 438, 173, 460, 370, "2008 (c) Rosenhoff",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget |  #PB_Window_TitleBar| #PB_Window_BorderLess )
     
      If CreateGadgetList(WindowID(#Window_0))
        TextGadget(#Text_0, 30, 30, 400, 25, "Autostartmanager für "+Host_1, #PB_Text_Center | #PB_Text_Border)
        SetGadgetFont(#Text_0, FontID1)
        
        TextGadget(#Text_ram_1, 250, 65, 180, 25, RAM_1, #PB_Text_Center| #PB_Text_Border)
        SetGadgetFont(#Text_ram_1, FontID2)
        
        ProgressBarGadget(#ProgressBar_0, 30, 305, 400, 20, 0, 100000, #PB_ProgressBar_Smooth)
        
        TextGadget(#Text_2, 250, 95, 180, 20, Mhz_1, #PB_Text_Center| #PB_Text_Border)
        SetGadgetFont(#Text_2, FontID2)
        
        TextGadget(#Text_IPAdresse_5, 70, 65, 175, 25, IP_1, #PB_Text_Center | #PB_Text_Border)
        SetGadgetFont(#Text_IPAdresse_5, FontID3)
        
        TextGadget(#Text_IP_6, 30, 65, 40, 25, "IP:", #PB_Text_Right)
        SetGadgetFont(#Text_IP_6, FontID3)
        
        TextGadget(#Text_Sub, 70, 95, 175, 20, SUB_1, #PB_Text_Center | #PB_Text_Border)
        TextGadget(#Text_Subnet, 30, 95, 40, 20, "SubNet:", #PB_Text_Right)
        
        TextGadget(#Text_Gateway, 160, 120, 175, 20, Gateway_1, #PB_Text_Center | #PB_Text_Border)
        SetGadgetFont(#Text_Gateway, FontID2)
        TextGadget(#Text_Gate, 105, 120, 55, 20, "Gateway:", #PB_Text_Right)
        
        ListViewGadget(#Listview_0, 30, 150, 400, 145,#PB_ListView_Clickselect)
        SetGadgetFont(#Listview_0, FontID4)
        
        
      EndIf
    EndIf
EndProcedure




;
; PureBUILD Build = 2 [generated by PureBUILD Plugin]
; IDE Options = PureBasic v4.00 (Windows - x86)
; CursorPosition = 44
; FirstLine = 22
; Folding = -
; EnableAsm
; EnableXP
; Executable = autostart.exe

Code: Alles auswählen


;******************************************************************************
;*                                                                            *
;*      (c)                                              31.05.2008    *
;*                                                                            *
;******************************************************************************
;*                                                                            *
;* Project: Autostartmanager                                                  *
;*                                               [x]Win [ ]DOS [ ]DLL         *
;*                                                                            *
;* Version: 1.0.0.0                                                           *
;*                                                                            *
;******************************************************************************
; Autostart.pb
; Common.pb
;
; Autostart.ini im programmverzeichnis
;
;{ ############################################################################
;
;Zeit| Programmpfad | Startparameter | Arbeitsverzeichnis
;
;   0| C:\Programme\Stardock\ObjectDock\ObjectDock.exe| |
;  90| C:\Prog\GnuPG\GPGshell\GPGtray.exe| |
; 100| C:\Programme\MSI\Core Center\CoreCenter.exe | | C:\Programme\MSI\Core Center
; 110| C:\Programme\FRITZ!Box Monitor\FRITZBoxMonitor.exe | | C:\Programme\FRITZ!Box Monitor\
;
; 120| D:\System1\Extensis\Portfolio6\Portfolio Express.exe |-Startup | D:\System1\Extensis\Portfolio6
;
; 130| C:\Prog\FireFox\Mozilla Firefox\firefox.exe | | C:\Prog\FireFox\Mozilla Firefox
; 150| C:\Prog\Thunderbird\thunderbird.exe | | C:\Prog\Thunderbird
; 160| D:\Programme\Toshiba\Bluetooth Toshiba Stack\TosBtMng1.exe | | D:\Programme\Toshiba\Bluetooth Toshiba Stack\
; 190| C:\System1\Adobe\Distillr\acrotray.exe | |
;
; #############################################################################
;
; Struktur
; 1-999 wartezeit in sec für den Programmstart 
; 0 --> läd das programm sofort und das nachfolgende nach programmstart
; | --> [alt]+[<] als trenner
; Programm mit vollständigen Pfad
; |
; Programmstartparameter
; |
; Arbeitsverzeichnis des Programms


;}

;******************************************************************************
;* Variablendefinition                                                        *
;******************************************************************************

EnableExplicit

;{ Konstante
#_Kon=Chr(124)  ; entspricht dem string "|"
;}
;{ Globale Variablen
Global RAM_1.s=""       ; Stringvariable für RAM-Größe
Global IP_1.s=""        ; Stringvariable für IP-Adresse
Global SUB_1.s=""       ; Stringvariable für Subnet-Mask
Global Gateway_1.s=""   ; Stringvariable für Standardgateway
Global Host_1.s=""      ; Stringvariable Hostname
Global Mhz_1.s=""       ; Stringvariable CPU Frequenz

Global _zaehler.b=0     ; Zeilenzähler
Global _schritt.l=0     ; Schrittweite für die ProgressBar
;}
;{ Lokale Variablen
Define _time1.l=0   ; Startzeit (Hilfsvariable (Minute() und Second ()
Define _time2.l=0   ; Messzeit  (Hilsvariable
Define _xz.b=0      ; Hilfsvariable für den Zähler der Struktur
Define _geladen.l=0 ; Hilfsvariable für Funktion API WaitForInputIdle_()

Define _WindowsMin.b=0     ; Variable für Fensterminfunktion
 
Define Event.l      ; Ereignisvariable Fenster
Define GadgetID.w   ; Ereignisvariable Gadget
Define EventType.w  ; Was für ein ereignis ist eingetroffen
Define WindowID.w   ; Fensternummer
;}
;{ Declaration der Proceduren
Declare.l Zeitdiff(_tx1.l) ; ermittelt die zeitdifferenz
                           ; _tx1 ist ein Übergabeparameter vom typ long

Declare probar_(_xz.l)		; Zeichent Prozessbar mit übergabeparameter

Declare.b Zaehler_(); Zählen der ini Einträge
Declare.s MHerz_1() ; Auslesen der CPU Frequenz aus der registry
Declare.s RAM_()    ; gibt String zurück über die Ramgröße

Declare Liste_()    ; Einlesen der Listendaten in den ListViewGadget
Declare Daten_()    ; Einlesen der Programmdaten aus der Autostart.ini
Declare IP_()       ; Erzeuge eine Batchdatei und starten --> schreibt hilfsdatei
Declare String_IP() ; Öffnen der Textdatei und Auslesen der Daten
Declare _Beep(ton.s); erzeugt ein Systemton

;}
;{ Struktur der Programmparameter
Structure Programme_
  Zeit.l
  Prog_.s
  Param_.s
  Pfad_.s
EndStructure
;}

;******************************************************************************

;******************************************************************************
;*                                                                            *
;* Programm                                                                   *
;*                                                                            *
;******************************************************************************
IncludeFile "Common.pb"     ; Einbinden der Fensterbeschreibungsdaten

RAM_1=RAM_()                ; Arbeitsspeicherberechnung aufrufen

Mhz_1=MHerz_1()             ; Auslesen der CPU Frequenz aus der Registrie

IP_()                       ; IPAdresse auslesen

Open_Window_0()             ; Fenster generieren

_zaehler=Zaehler_()         ; Zählt die Listeneinträge um die größe der Struktur zu definieren

Global Dim Start_Param.Programme_(_zaehler) ; Dimensioniere die Struktur

Daten_() ; Daten einlesen  

Liste_() ; Ausgabe der Daten in der Liste

_schritt=Round(90000/(_zaehler+1),1)

_time1=Date() ; Liest die aktuelle zeit aus

_Beep("1500,40,100,1000,50,0") ;erzeugt ein Systemton über die Prozedure _Beep

; *****************************************************************************
; *     Ereignisschleife                                                      *
Repeat ;{ Start of the event loop

  Event = WaitWindowEvent(10) ; Wartet bis ein Ereignis auftritt, aber nach 10 msec wird die schleife fortgesetzt
                              ; Überprüft, ob in irgendeinem der geöffneten Fenster ein Ereignis stattfand

  WindowID = EventWindow() ; Bestimmt das Fenster, in dem ein Ereignis stattfand.

  GadgetID = EventGadget() ; Is it a gadget event?

  EventType = EventType() ; The event type You can place code here, and use the result as parameters for the procedures

  If Event = #PB_Event_Gadget

    If GadgetID = #ProgressBar_0
      

    ElseIf GadgetID = #Listview_0
      
      
    EndIf

  EndIf

; *****************************************************************************
; *  Fenster minimieren nach 5 sec                                            *

  If _WindowsMin=0    ;{
    _time2=Zeitdiff(_time1) ; proceduraufruf mit parameterübergabe
    
    If _time2=>5
      SetWindowState(#Window_0,#PB_Window_Minimize) ;minimiert Fenster
      _WindowsMin=1   ; Verhindert ein erneutes mininieren
      
    EndIf
  EndIf  ;}

; *****************************************************************************
  If _xz<=_zaehler  ; Sicherheitsabfrage wenn Schleifenzähler die Anzahl der
                    ; Listeneinträge übersteigt

; *****************************************************************************
      ; *  Auslesen der Programmdaten und starten der programme                     *
      ; *  Beginnend mit der Startzeit 0                                            *
 
      If Start_Param(_xz)\Zeit=0 ;{
  
      _geladen = RunProgram(Start_Param(_xz)\Prog_,Start_Param(_xz)\Param_,Start_Param(_xz)\Pfad_)
      ; Variable [_geladen] bekommt nach dem Programmstart die Prozessnummer zugewiesen
           
      _time1=Date() ; Liest die aktuelle zeit aus --> zeitpräzisierung 
      
				
      probar_(_xz)  ; prozeduraufruf Fortschrittsbalken
      
; *****************************************************************************      
      ; WaitForInputIdle fragt ab ob das Programm mit der Prozessnummer
      ; "_geladen" gestartet, und füt Benutzereingaben bereit ist
      Repeat
        Delay(10)
      Until WaitForInputIdle_(_geladen, 1000) < 0

      _xz=_xz+1       
      
      EndIf  ;}

; *****************************************************************************
; * Auslesen der Programmdaten und starten der programme                      *
; * startzeiten größer 0

  If Zeitdiff(_time1)>=Start_Param(_xz)\Zeit	;{
			; If Date()-_time1>=Start_Param(_xz)\Zeit ohne benutzung der Procedure Zeitdiff(
		
  
      _geladen = RunProgram(Start_Param(_xz)\Prog_,Start_Param(_xz)\Param_,Start_Param(_xz)\Pfad_)
      
		_Beep("1900,40,0")
		
      probar_(_xz)	; prozeduraufruf Fortschrittsbalken
		
; *****************************************************************************      
      ; WaitForInputIdle fragt ab ob das Programm mit der Prozessnummer
      ; "_geladen" gestartet, und füt Benutzereingaben bereit ist
      Repeat
        Delay(10)
      Until WaitForInputIdle_(_geladen, 1000) < 0

      _xz=_xz+1
 
      
      EndIf	

; *****************************************************************************
; *                                                                           *
  ElseIf _xz>_zaehler ;wenn liste abgearbeitet programm beenden
    
	Delay(5000) ;Pause bis programmfenster geschlossen wird
	_Beep("1000,40,100,1500,50,0")
        
    End	; beendet das Programm
   
  EndIf  ;}

Until Event = #PB_Event_CloseWindow ;} End of the event loop
End
;******************************************************************************

;******************************************************************************
;*                                                                            *
;* Prozeduren                                                                 *
;*                                                                            *
;******************************************************************************
Procedure.s RAM_() ; gibt String zurück
  ;*****************************************************************************
  
  Protected Memory.MEMORYSTATUS ; lokale geschütze Variable vom Typ MEMORYSTATUS
  Protected _ram.s              ; lokale geschützte Stringvariable

  GlobalMemoryStatus_(@Memory)  ; Pointer zu Memory, welche als MEMORYSTATUS declariert wurde
  _ram = Str(Memory\dwTotalPhys/1024/1024)+" MByte Ram"

  ProcedureReturn _ram          ; rückgabewert
EndProcedure
Procedure.s MHerz_1() ; Auslesen der CPU Frequenz aus der registry
  ; benötigt die UserLib JHRegistry_420 von / by Jens Haipeter
  ;*****************************************************************************
  
  Protected  HKey.l     ; lokale geschütze Variable
  Protected  Skey.s
  Protected _mhz.s=""
  
  HKey = #HKEY_LOCAL_MACHINE
  Skey ="HARDWARE\DESCRIPTION\System\CentralProcessor\0\"

  _mhz=Str(JHRegGetDWord (HKey, Skey, "~MHz"))+" Mhz CPU"
  
  ProcedureReturn _mhz    ; rückgabewert
EndProcedure
Procedure String_IP() ; Öffnen der Textdatei und Auslesen der Daten IP_info.tmp
  ;*****************************************************************************
  ; lokale Variablen
  Define _Zeile.s=""        ; String der ausgelesenen Zeile
  Define _Stringlaenge.w=0

  Define _start.b=0         ; Hilsvariable
  Define _x.b=0             ; Hilfsvariable For To Next

  Define _hostx.b=0         ; Hilfsvariable für Host abfrage
  Define _ipx.b=0           ; Hilfsvariable füt Ip abfrage
  Define _gateway.b=0       ; Hilfsvariable füt Gateway abfrage
  Define _sub.b=0           ; Hilfsvariable füt Subnetzmaske

  ;****************************************************************************

  If ReadFile(1,"c:\IP_Info.tmp")

	While Eof(1) = 0  ; sich wiederholende Schleife bis das Ende der Datei ("end of file") 
		               ; erreicht ist
	
      _Zeile=ReadString(1)      ; liest den string aus(Zeile)
      _Zeile=Trim(_Zeile)       ; entfernt vorrangestellte und nachfolgende Leerzeichen
      _Stringlaenge=Len(_Zeile) ; Berechnet die stringlänge

      If _hostx=0   ;{ Hostname auslesen

          If FindString(_Zeile,"Hostname",1)>0

            _start=FindString(_Zeile,":",1)
            
            For _x=_start+1 To _Stringlaenge
              Host_1=Host_1+Mid(_Zeile,_x,1)
            Next

            Host_1=LTrim(Host_1)
            _hostx=1  ;Variable zum Überspringen der Abfrage
          EndIf
           
      EndIf ;}

      If _ipx=0     ;{ IP Adresse auslesen

          If FindString(_Zeile,"IP-Adresse",1)>0

            _start=FindString(_Zeile,":",1)
            
            For _x=_start+1 To _Stringlaenge
              IP_1=IP_1+Mid(_Zeile,_x,1)
            Next

            IP_1=LTrim(IP_1)
            _ipx=1
          EndIf
         
      EndIf ;}

      If _sub=0     ;{ Subnetzmaske auslesen

          If FindString(_Zeile,"Subnetzmaske",1)>0

            _start=FindString(_Zeile,":",1)
            
            For _x=_start+1 To _Stringlaenge
              SUB_1=SUB_1+Mid(_Zeile,_x,1)
            Next

            SUB_1=LTrim(SUB_1)
            _sub=1
          EndIf

      EndIf ;}

      If _gateway=0 ;{ Standardgateway auslesen

          If FindString(_Zeile,"Standardgateway",1)>0

            _start=FindString(_Zeile,":",1)
            
            For _x=_start+1 To _Stringlaenge
              Gateway_1=Gateway_1+Mid(_Zeile,_x,1)
            Next

            Gateway_1=LTrim(Gateway_1)
            _gateway=1
          EndIf

      EndIf ;}

    Wend
    CloseFile(1) ; schließen der textdatei c:\IP_Info.tmp

; *****************************************************************************	
	;Wenn kein Netzwerk vorhanden ausfragen der Reg
	If Host_1="" ;{
		
		Protected  HKey.l     ; lokale geschütze Variable
		Protected  Skey.s
		; Schlüsselparameter
		HKey = #HKEY_LOCAL_MACHINE
		Skey = "SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName"
		
		Host_1=JHRegGetString(HKey.l, Skey.s,"ComputerName")+" ;-)"
		
	EndIf ;}
	; bei leerer IP schreibe 0.0.0.0
	If IP_1="" ;{
		IP_1="0.0.0.0"
	EndIf ;}
; *****************************************************************************
  Else
    MessageRequester("Fehler","Konnte Datei nicht öffnen!")
  EndIf

EndProcedure
Procedure IP_() ; Erzeuge eine Batchdatei und starten --> schreibt hilfsdatei
 ;*****************************************************************************

 OpenConsole()                      ; öffnet ein consolenfenster
 ConsoleColor(15,1)                 ; definiert die fensterfarben für hintergrund, schriftfarbe
 ConsoleTitle("Autostartmanager")   ; Fenstertitel
 EnableGraphicalConsole(1)          ; umschalten im graphikmodus um den Hintergrund einzufärben
 ClearConsole()                     ; leeren des consolenfensters und damit füllen des hintergrundes
 PrintN("Moment bitte.........")    ; Textausgabe im consolenfenster
 EnableGraphicalConsole(0)          ; zurückstellen in den textmodus

 ; Erzeuge eine Batchdatei
  If CreateFile(1,"c:\IPlesen.bat") ; Konnte eine Datei geöffnet werden
      
      ; schreibt die werte in die datei
      WriteStringN(1,"@echo off")   
      WriteStringN(1,"arp -d")
      WriteStringN(1,"ipconfig /flushdns")  ; Leert den DNS-Auflösungscache.
      ;WriteStringN(1,"ipconfig /release")  ; Gibt die IP-Adresse für den angegebenen Adapter frei.
      ;WriteStringN(1,"ipconfig /renew")    ; Erneuert die IP-Adresse für den angegebenen Adapter.
      WriteStringN(1,"ipconfig /all > c:\IP_Info.tmp")
      WriteStringN(1,"arp -a >> c:\IP_Info.tmp")
      CloseFile(1)
; *****************************************************************************
; *       Kommentare für eine andere Möglichkeit die Batchdatei zu starten    *

    ;{ Programm=RunProgram("c:\IPlesen.bat","","c:\",#PB_Program_Open)
    ;
    ;  startet die Batchdatei und weist der Variable die programmnummer zu
    ; #PB_Program_Open-->um mit diesem zu kommunizieren oder Informationen darüber zu erhalten
    ;} 

; *****************************************************************************
; *              Startet die Batch und  wartet auf das Prog-ende              *
    RunProgram("c:\IPlesen.bat","","c:\",#PB_Program_Wait) 
; *****************************************************************************

    ;{ While ProgramRunning(Programm)<>0
    ;    ; Debug Programm
    ;  Wend 
    ;
    ; durchläuft die schleife bis die bedingung nicht mehr erfüllt ist
    ;}  ProgramRunning(Programm)=0   --> Programmende
    
    ;{ CloseProgram(Programm)  
    ;} Schließt den Datenkanal zum Programm 

    DeleteFile("c:\IPlesen.bat")  ; löschen der batchdatei

; *****************************************************************************
    String_IP()                   ; aufrufen der procedure string_ip() zum 
                                  ; auslesen der informationen

  Else
    MessageRequester("Fehler !!!!!","Fehlende Rechte! Schreibrechte überprüfen")
    End
  EndIf

  DeleteFile("c:\IP_Info.tmp")  ; löschen der Hilfsdatei --> ergebnis der batchdatei

  CloseConsole()                ; schließen des consolenfenster
  
EndProcedure
Procedure.l Zeitdiff(_tx1.l)  ; ;ermittelt die zeitdifferenz
  ;*****************************************************************************
  
  Protected _ty.l ; Momentanzeit

  _ty=Date()
  _ty=_ty-_tx1
  
  ProcedureReturn _ty ;  liefert den rückgabewert und beendet die prozedure
  
EndProcedure
Procedure Daten_() ; Einlesen der Programmdaten aus der Autostart.ini
  ;{ In eine Procedure verpackt, damit die Variablen mir nicht vor die Füße liegen
  ;  und Optimierungen einfacher sind
  ;} die konstante #_Kon wurde definiert am anfang des prog
  ;*****************************************************************************
  
  Define  _Zeile.s=""        ; String der ausgelesenen Zeile
  Define  _Stringlaenge.w=0

  Define _start.b=0         ; Hilsvariable
  Define _x.l=0             ; Hilfsvariable For To Next
  Define _y.l=0
  Define _z=0               ; Hilfsvariable für den zählindex
  Define _text$

  
  
  If ReadFile(2,"Autostart.ini")  ; Öffnen der Textdatei und Auslesen der Daten
  
    While Eof(2) = 0  ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist

      _Zeile=ReadString(2)      ; liest den string aus(Zeile)
      _Zeile=Trim(_Zeile)       ; entfernt vorrangestellte und nachfolgende Leerzeichen

      If Len(_Zeile)>0

        _Stringlaenge=Len(_Zeile) ; Berechnet die stringlänge

          _start=FindString(_Zeile,#_Kon,1) ; sucht den teilstring "|" der in der konstante #_Kon definiert ist

          _text$=""
        For _x=1 To _start-1
          _text$=_text$+Mid(_Zeile,_x,1)
        Next
          _text$=Trim(_text$)
          Start_Param(_z)\Zeit=Val(_text$); Zeit der Unterbrechung

        _y=_start+1

          _start=FindString(_Zeile,#_Kon,_y)

          _text$=""
        For _x=_y To _start-1
          _text$=_text$+Mid(_Zeile,_x,1)
        Next
          _text$=Trim(_text$)
          Start_Param(_z)\Prog_=_text$ ; Pfad der programme

        _y=_start+1

          _start=FindString(_Zeile,#_Kon,_y)

          _text$=""
        For _x=_y To _start-1
          _text$=_text$+Mid(_Zeile,_x,1)
        Next
          _text$=Trim(_text$)
          Start_Param(_z)\Param_=_text$ ; Parameter für den Programmstart

      _y=_start+1

          _text$=""
        For _x=_y To _Stringlaenge
          _text$=_text$+Mid(_Zeile,_x,1)
        Next
          _text$=Trim(_text$)
          Start_Param(_z)\Pfad_=_text$ ; Pfadangaben

        _z=_z+1  ; zähler um 1 erhöhen
      EndIf
      
    Wend
    
  CloseFile(2)  ; schließt die Textdatei

  EndIf
  
  ; Sortieren der struktur Programme_ nach der wartezeit zum programmstart
  SortStructuredArray( Start_Param (),0, OffsetOf(Programme_\Zeit),#PB_Sort_Long)

EndProcedure
Procedure Liste_() ; Einlesen der Listendaten in den ListViewGadget
  ;*****************************************************************************
  
  Protected  _text$
  Protected  _x.l=0,_x1.l=0
  Protected  _y.l=0,_y1.l=0,_y2.l=0

  
  For _x=0 To _zaehler 

    _text$=Str(Start_Param(_x)\Zeit)  ; Pausenwert auslesen und in ein string umwandlen
    
    If Start_Param(_x)\Zeit<10        
      _text$="  "+_text$              ; Führende leerstellen einfügen
    ElseIf Start_Param(_x)\Zeit<100
      _text$=" "+_text$               ;   -"-                -"-
	EndIf
	
	 _text$=_text$+" sec "				  ; einheit sec anfügen
	
    _text$=_text$+Start_Param(_x)\Prog_
    
    AddGadgetItem(#Listview_0,_x,_text$) ; ausgabe des strings in der liste
    
    While WaitWindowEvent(1): Wend 
    
   
      
  Next
  
  ;While WaitWindowEvent(10): Wend 
  
EndProcedure
Procedure.b Zaehler_() ; Zählen der ini Einträge
  ;*****************************************************************************
  
  Protected _Zeile.s="" ; String der ausgelesenen Zeile
  Protected _x.b        ;Zählvariable


  If ReadFile(2,"Autostart.ini")  ; Öffnen der Textdatei und Zählen der strings
    While Eof(2) = 0  ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist

      _Zeile=ReadString(2)      ; liest den string aus(Zeile)
      _Zeile=Trim(_Zeile)       ; entfernt vorrangestellte und nachfolgende Leerzeichen

      If Len(_Zeile)>0
        _x=_x+1
      EndIf

    Wend
  CloseFile(2)
  Else
  
    MessageRequester("Fehler","Konnte Datei nicht öffnen!")
    
  EndIf
  
  _x=_x-1   ; weil die struktur mit 0 beginnt
  ProcedureReturn _x
  
EndProcedure
Procedure probar_(_xz.l)  ;zeichnet ein Fortschrittsbalken
  ;*****************************************************************************
  
  Static _x.l,_x1.l,_y.l,_y1.l,_y2.l

    If _xz=0 
        
       _y2=10000 : _y1=_y2+_schritt
    
    EndIf
    
    
    For _x1=_y2 To _y1
      SetGadgetState(#ProgressBar_0,_x1)  ; Fortschrittsbalken aktivieren und berechnen
    Next
     _y2=_x1: _y1=_y1+_schritt
  
EndProcedure
Procedure _Beep(ton.s)	;erzeugt ein ton über den Systemlautsprecher
	; eigentlich müsste man noch abfragen ob dieser vorhanden ist, aber die zeiten
	; sind ja vorbei ;-)
	; Parameterübergabe : _Beep("x,y,z,x,y,z,x,y,z")
	;                     x= Tonwert 37-9000 ?? soll bis 32,767 gehen ??
	;                     y= Tondauer
	;                     z= pausenzeit 0=keine pause
	
	Protected _im.l=0 , freq.l=0, laeng.l=0, pause.l=0
	
	
	Repeat
		freq= Val(StringField(ton,_im+1,","))
		laeng = Val(StringField(ton,_im+2,","))
		pause= Val(StringField(ton,_im+3,","))
		_im+3 
		;Zahlenbereich für Beep -range 37 through 32767
		If freq Or laeng : Beep_(freq,laeng) :Delay(pause): EndIf 
		
		
	Until freq = 0 And laeng = 0
	
EndProcedure

;;
; PureBUILD Build = 4 [generated by PureBUILD Plugin]
; IDE Options = PureBasic v4.20 (Windows - x86)
; CursorPosition = 343
; FirstLine = 14
; Folding = AX5-vH-d8
; EnableAsm
; EnableXP
; Executable = autostart.exe
; CPU = 3
; DisableDebugger
; IncludeVersionInfo
; VersionField0 = 1.0.0.0
; VersionField1 = 1.0.0.0
; VersionField3 = Autostartmanager
; VersionField4 = 1.0
; VersionField5 = 1.0
; VersionField7 = Autostartmanager.exe
; VersionField8 = Autostartmanager.exe
; VersionField9 = (c) Rosenhoff
; VersionField15 = VOS_DOS_WINDOWS32
; VersionField16 = VFT_APP
; VersionField17 = 0407 German (Standard)
; UseIcon = icon.ico
; Executable = autostart_1.exe
Textdatei Autostart.ini

Code: Alles auswählen

   0| C:\Programme\Stardock\ObjectDock\ObjectDock.exe| |
  90| C:\Prog\GnuPG\GPGshell\GPGtray.exe| |
 100| C:\Programme\MSI\Core Center\CoreCenter.exe | | C:\Programme\MSI\Core Center
 110| C:\Programme\FRITZ!Box Monitor\FRITZBoxMonitor.exe | | C:\Programme\FRITZ!Box Monitor\

 120| D:\System1\Extensis\Portfolio6\Portfolio Express.exe |-Startup | D:\System1\Extensis\Portfolio6

 130| C:\Prog\FireFox\Mozilla Firefox\firefox.exe | | C:\Prog\FireFox\Mozilla Firefox
 150| C:\Prog\Thunderbird\thunderbird.exe | | C:\Prog\Thunderbird
 160| D:\Programme\Toshiba\Bluetooth Toshiba Stack\TosBtMng1.exe | | D:\Programme\Toshiba\Bluetooth Toshiba Stack\
 190| C:\System1\Adobe\Distillr\acrotray.exe | | 

Verfasst: 25.12.2008 00:30
von Kaeru Gaman
bitte Code-Tags benutzen...

> ;erzeugt ein ton über den Systemlautsprecher
> ; eigentlich müsste man noch abfragen ob dieser vorhanden ist, aber die zeiten
> ; sind ja vorbei Wink

tscha... unter Vista funzt das wieder nicht.

Stimmt

Verfasst: 25.12.2008 00:45
von SDL
hätte noch schreiben sollen, für winxp :oops:

Verfasst: 25.12.2008 02:00
von X360 Andy
Kaeru Gaman hat geschrieben:
tscha... unter Vista funzt das wieder nicht.
Vista hat sowas selber :shock:
Systemsteuerung\System und Wartung\Leistungsinformationen und -tools
Und dann links oben bei Aufgaben "AutostartProgramme verwalten"

Mfg & Frohe Weihnachten

Verfasst: 25.12.2008 02:10
von Kaeru Gaman
denkst du, XP hätte kein autostart?
darum gehts doch grad, den zu ersetzen.

... was auf Vista nicht funzt, ist der klassische Lautsprecher-Piep.

Autostart

Verfasst: 25.12.2008 14:27
von SDL
es ging darum das etwas umständliche tool zu ersetzen.
die textdatei ist einfacher zu administrieren
der tastmanager ist einfach zu "umständlich" zeitversetzt programme zu starten
der autostart/Registrie ist ja dazu ungeeignet, oder kennt jemand die parameter dazu?

außerdem soll der code anderen als beispiel dienen wie man es (nicht):lol: machen soll