Danke! Das behebt dann (fast) alle Probleme. Eventuelle Systemabstürze kann ich ja sowieso nicht berücksichtigen.
Beiträge von BugFix
-
-
doch schon man muss halt nur das label durch ein bild ersetzen also guictrlcreatepic(...)
Dann hast du aber keinen Button-Effekt
Übrigens, zu dem "Gedrückt halten" --> schaut mal hier nach. Picture als Button animiert Daraus kann man das basteln.
-
ok thanks an euch beide wobei ich das skript von bugfix sogut wie garnicht verstehe
.
Aber trotzdem danke das von retrokid ist leicht und verständlich sowas braucht ein 14 jähriger
Wenn du es nicht verstehst, kannst du doch fragen. Es wird einfach der Status des Button in einer Variablen gespeichert (0=Off=Titel"On", 1=On=Titel"Off"). BitXor switcht den Wert, wenn er 0 war, wird er 1 und umgekehrt.
Dann wird in Abhängigkeit zum Status der Titel (das Bild) neu gesetzt, hier würde auch dein zugehöriger Code reinkommen.btw: Du wolltest ein Bild setzen - die Lösung von retrokid ermöglicht das aber nicht..

-
So, nach langer Zeit will ich mal den Status hierzu angeben.
[autoit]
Ich hatte, damit es überhaupt automatisch läuft, erstmal folgende Lösung verwendet:#cs ----------------------------------------------------------------------------
[/autoit][autoit][/autoit][autoit]Author: BugFix
[/autoit][autoit][/autoit][autoit]Script Function:
[/autoit][autoit][/autoit][autoit]
Der Rechner muß nach dem Kaltstart sofort wieder neugestartet werden.
Dieses Skript setzt die Registry-Einträge dafür.
- Aufruf mit Parameter "DOWN" über "Herunterfahren-Icon" fährt PC herunter
und trägt Skriptaufruf in "Registry RunOnce" ein
- Aufruf ohne Parameter über "Registry RunOnce" rebootet den PC#ce ----------------------------------------------------------------------------
[/autoit][autoit][/autoit][autoit]Local $param = ''
[/autoit]
If $CmdLine[0] Then $param = $CmdLine[1]
If $param = "DOWN" Then
RegWrite('HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce', 'MyRestart', 'REG_SZ', '"C:\MyRestart.exe"')
Shutdown(13)
Else
Shutdown(6)
EndIfHierbei wird zwar bis zum Anmeldefenster gebootet aber dann erfolgt sofort der Neustart. Von der Geschwindigkeit ist es eigentlich ausreichend und der User merkt es nicht wirklich.
Einziger Nachteil: Es muß zwingend über den Link heruntergefahren werden. Un dauch, wenn man einem User 10-mal sagt: Fahre nur über dieses "Herunterfahren-Icon" runter, ihr könnt euch drauf verlasssen, dass es in 30% der Fälle dann doch nicht so gemacht wird.Meine aktuelle Überlegung war, (Zeitfaktor und Anmeldeschirm sind jetzt mal absolut sekundär) das Windows-Log auszuwerten - das letzte Herunterfahren-Ereignis. So brauche ich keine extra Registryeinträge und der User kann beenden, wie er will. Es wird bei jedem Start gefragt: Was war zuletzt? "Herunterfahren - dann Rebooten" od. "Reboot - dann nix tun".
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]Author: BugFix
[/autoit] [autoit][/autoit] [autoit]Script Function:
[/autoit] [autoit][/autoit] [autoit]
Wenn der PC zuletzt 'Herunterfahren' verwendete, wird er beim nächsten Start
nach dem Hochfahren sofort mit 'Reboot' nochmals gestartet.#ce ----------------------------------------------------------------------------
[/autoit]
Local $objWMIService = ObjGet("winmgmts:" & "\\.\root\cimv2")
Local $colLoggedEvents = $objWMIService.ExecQuery ("Select * from Win32_NTLogEvent Where Logfile = 'System'")
Local $typ, $str
For $objEvent In $colLoggedEvents
If $objEvent.EventCode <> 1074 Then ContinueLoop
$typ = StringRegExp($objEvent.Message, 'Herunterfahrungstyp: .*\r\n', 1)
$str = StringReplace($typ[0], 'Herunterfahrungstyp: ', '')
ExitLoop
Next
If $str = 'Herunterfahren' Then
Shutdown(6)
EndIfLasse ich mir das Ereignis ausgeben, so wird dies auch korrekt angezeigt, ich sehe auch das Icon für mein Skript in der Taskleiste (lasse es z.Zt. per Autostart aufrufen)
aber es wird kein Reboot gestartet.
Könnte das vielleicht mal noch jemand testen?Edit: Oops - beim Posten ist es mir aufgefallen: Ich habe nicht beachtet, dass hinter dem Herunterfahrungstyp ja ein Zeilenumbruch ist (die sieht man so schlecht
). Nun klappt es so auch. -
Hier, so gehts (Text oder Bild - Style beachten, Iconstyle, Bitmapstyle, s. Hilfe)
Spoiler anzeigen
[autoit]Global $IconPath = "DEIN PFAD......\Eigene Bilder\"
[/autoit] [autoit][/autoit] [autoit]
Global $OnState1 = 0, $OnState2 = 0
$Form1 = GUICreate("Form1", 126, 92, 531, 416)
$Button1 = GUICtrlCreateButton("On", 8, 32, 65, 25, 0)
$Button2 = GUICtrlCreateButton('', 80, 32, 36, 36, $BS_ICON)
GUICtrlSetImage(-1, $IconPath & 'restart.ico')
GUISetState(@SW_SHOW)While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$OnState1 = BitXOR($OnState1, 1)
If $OnState1 Then
GUICtrlSetData($Button1, "Off")
Else
GUICtrlSetData($Button1, "On")
EndIf
Case $Button2
$OnState2 = BitXOR($OnState2, 1)
If $OnState2 Then
GUICtrlSetImage($Button2, $IconPath & 'shutdown.ico')
Else
GUICtrlSetImage($Button2, $IconPath & 'restart.ico')
EndIf
EndSwitch
WEndHier mal die verwendeten Icon zum Testen:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Was sucht dieser Thread in der Jobbörse?[verschoben ==> OT]
-
Das würde die administrative Arbeit vervielfachen und das liegt nicht in unserem Sinn. Wer einen Blog schreiben will soll dafür auch allein verantwortlich sein.
-
Fragen wir mal anders rum: Was nützt es dir, wenn du die Pixelfarben in dem Array hast? Wozu (und vor allem wie) willst du das weiterverarbeiten?
-
Dieser Thread ist ein klassisches Bsp. dafür, wie man sinnlos ein Forum beschäftigt, weil man einfach seinen Source-Code zur Problembeleuchtung nicht zeigt!

Also, solange hier kein Code ist, der klärt was du eigentlich willst...

-
also werden die Labels regelmäßig refresht.
Ein Grund mehr ein Array zu verwenden.

Also müsste ich manuell nach jedem Control das Handle in ein Array stopfen
Ganz und gar nicht, du kannst die Controls im Array erstellen, so wird die ID automatisch gespeichert.

-
Da ich an die 100 COntrols habe möchte ich nicht jedes einzelne mit GUICtrlSetColor ändern

Mach die Controls in ein Array und benutz ne For Schleife

Ja daran habe ich auch schon gedacht, finde aber nicht, dass das die beste Lösung ist (flls es überhaupt eine andere gibt).
@NoName: Du bekommst hier eine saubere Lösung angeboten (bei 100 Controls ist es übrigens wenig sinnvoll kein Array zu verwenden) und lehnst sie ab, weil du findest, dass das nicht die beste sei.. :wacko:
Wär nicht schlecht, wenn du das mal begründen könntest. Letztlich lagerst du das in eine Funktion aus und hast dann nur einen einzigen Befehl dafür. -
-
-
Es werden nur die Ordner schreibgeschützt.
Ergibt für mich keinen Sinn. Die Attribute werden rekursiv in den Ordnern gesetzt, darum kann man sich es sparen alle Ordner rekursiv zu durchsuchen. FileSetAttrib kann das alleine.

Edit: Oops, da hab ich doch das wichtigste vergessen: Das File-Pattern!
[autoit]
So gehts:#include <file.au3>
[/autoit]
Local $root = '\\85w2t05\prj\'
Local $aTmp = _FileListToArray($root, '*', 2)
If @error Then Exit MsgBox(0, '', 'keine Unterordner vorhanden')
For $i = 1 To $aTmp[0]
$tmp = $root & $aTmp[$i] & '\IN'
If FileExists($tmp) Then FileSetAttrib($tmp & '\*.*', '+R', 1)
$tmp = $root & $aTmp[$i] & '\OUT'
If FileExists($tmp) Then FileSetAttrib($tmp & '\*.*', '+R', 1)
Next -
Hatte ich mal als Signatur (sinngemäß)
ZitatIn Berlin hat ein Mann Kindergeld beantragt, obwohl er gar keine Kinder hat. Seine Argumentation: Ich muß GEZ-Gebühren bezahlen, obwohl ich nicht fernsehe nur weil ich das Gerät bereithalte.
Somit möchte ich Kindergeld, ich habe zwar keine Kinder aber das Gerät dafür... -
Sollte so funktionieren:
[autoit]#include <file.au3>
[/autoit]
Local $root = '\\85w2t05\prj\'
Local $aTmp = _FileListToArray($root, '*', 2)
If @error Then Exit MsgBox(0, '', 'keine Unterordner vorhanden')
For $i = 1 To $aTmp[0]
$tmp = $root & $aTmp[$i] & '\IN'
If FileExists($tmp) Then FileSetAttrib($tmp, '+R', 1)
$tmp = $root & $aTmp[$i] & '\OUT'
If FileExists($tmp) Then FileSetAttrib($tmp, '+R', 1)
Next -
Versucht mal folgendes:
In der Funktion _Code2Abbrev() hinter jeder Zeile alle Variablen in die Console ausgeben lassen.
Dann sollte zumindest ersichtlich werden, welche Funktion dieses Resultat liefert. -
Ein neues Dokument öffnen und dann
Das Dokument muß zuerst als *.au3-Datei gespeichert werden. Erst dann kann die Abkürzung erkannt werden.
-
Mal als Gedanke: Wenn ihr eine bestimmte UDF/Skript aus dem Forum näher beleuchten möchtet, wendet euch dann einfach an den Autor - der weiß es am Besten.

Würde mich jedenfalls bereit erklären dort erläuternd etwas beizusteuern, falls etwas von mir mal auftaucht.
-
Gibts eine Liste mit allen Abkürzungen irgendwo?
Verwende einfach meinen Abbrev-Manager.