1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. bernd670

Beiträge von bernd670

  • Fragen eines Anfängers

    • bernd670
    • 3. Juni 2007 um 14:13

    Hallo!

    Mit GUISetState(@SW_HIDE, $f_eintrag)

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    ;~ Hauptfenster
    $f_haupt = GUICreate ("PManager",500,500)
    $neu = GUICtrlCreateButton("Neuer Eintrag",10,20,100,25)
    $entfernen = GUICtrlCreateButton("Eintrag entfernen",10,55,100,25)
    $beenden = GUICtrlCreateButton("Beenden",10,455,100,25)
    $liste = GUICtrlCreateListView("Datum |1.Teilnehmer |2.Teilnehmer |3.Teilnehmer ",125,20,360,460)
    GUISetState(@SW_SHOW)
    ;~ Eintragfenster
    $f_eintrag = GUICreate("Neuer Eintrag",370,160)
    GUICtrlCreateLabel("Jahr",20,23,60,25)
    GUICtrlCreateLabel("Monat",20,53,60,25)
    GUICtrlCreateLabel("Tag",20,85,60,25)
    GUICtrlCreateLabel("1. Teilnehmer",120,23,70,25)
    GUICtrlCreateLabel("2. Teilnehmer",120,53,70,25)
    GUICtrlCreateLabel("3. Teilnehmer",120,85,70,25)
    $e_input_j = GUICtrlCreateInput("",55,20,50,25)
    $e_input_m = GUICtrlCreateInput("",55,50,50,25)
    $e_input_d = GUICtrlCreateInput("",55,80,50,25)
    $e_1t = GUICtrlCreateInput("",200,20,150,25)
    $e_2t = GUICtrlCreateInput("",200,50,150,25)
    $e_3t = GUICtrlCreateInput("",200,80,150,25)
    $e_fertig = GUICtrlCreateButton("Eintragen",20,120,100,25)
    $e_beenden = GUICtrlCreateButton("Abbruch",250,120,100,25)

    ;~ Hauptprogramm
    $fenster = 1
    While 1
    $msg = GUIGetMsg()
    Select
    Case ($msg = $GUI_EVENT_CLOSE) Or ( $msg = $beenden ) Or ($msg = $e_beenden )
    Switch $fenster
    Case 1
    ExitLoop
    Case 2
    $fenster = 1
    GUISetState(@SW_HIDE, $f_eintrag)
    EndSwitch
    Case ( $msg = $neu ) And ($fenster <> 2 )
    $fenster = 2
    GUISetState(@SW_SHOW, $f_eintrag)

    EndSelect
    Sleep(10)
    WEnd

    Exit

    [/autoit]
  • zahl erkennen,filtern und verarbeiten

    • bernd670
    • 3. Juni 2007 um 08:19

    Die Zahl wird solange erkannt wie es keine Dezimalzahl ist.

    Beipiel:

    Spoiler anzeigen
    [autoit]

    $val = "9000,75"

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

    if $val > 9000 Then
    MsgBox(0,"", $val & " ist grösser als 9000")
    Else
    MsgBox(0,"", $val & " ist kleiner oder gleich 9000")
    Endif

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

    $val = "9000.75"

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

    if $val > 9000 Then
    MsgBox(0,"", $val & " ist grösser als 9000")
    Else
    MsgBox(0,"", $val & " ist kleiner oder gleich 9000")
    Endif

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

    Spoiler gehen so:

    Code
    [Spoiler]xxx[/Spoiler]

    oder einfach die [Blockierte Grafik: http://www.autoit.de/images/bbcode_spoiler.gif]-Taste im Editor drücken

  • stundenplan system

    • bernd670
    • 3. Juni 2007 um 07:25

    Es liegt wohl an deinem StringSplit, probiers mal mit @CRLF statt @CR:

    [autoit]

    $plan = StringSplit(FileRead("stundenplan.txt"), @CRLF,1)

    [/autoit]
  • zahl erkennen,filtern und verarbeiten

    • bernd670
    • 3. Juni 2007 um 06:53
    Zitat

    kleines problem.....jetzt liest er ja aus.-----zb.: 847.259 steht dann da....aber wenn ich in den IF schreibe <900.000 macht er es acuh wenn er ueber ne million hat....also 1.598.445 wie kann man denn die punkte da raus machen? weiss das wer?

    Der Fehler ensteht dadurch das in AutoIt der Punkt das Dezimaltrennzeichen ist und das Komma das Tausendertrennzeichen.

    Du müsstest allso auch noch als letztes ein Komma durch einen Punkt ersetzen:

    [autoit]

    $var = "1.598.445,25"
    $var = StringReplace($var,".","")
    $var = StringReplace($var,",",".")
    MsgBox(0,"",$var)

    [/autoit]
  • Default-Wert einer INI-Datei - Nicht bei leerer Angabe?

    • bernd670
    • 2. Juni 2007 um 16:10

    Steht doch so in der Hilfe! Der Defaultwert wird nur zurückgeben wenn der Key nicht existiert.

  • schneiden

    • bernd670
    • 2. Juni 2007 um 16:04

    Benutzt Du die aktuelle Version von AutoIt, ich habe mal oben die EXE mit angehängt probiers mal mit der!

  • Automatische Anmeldung

    • bernd670
    • 2. Juni 2007 um 00:34

    Hallo!

    So könnte man das ganze lösen!

    Folgendes Script anpassen, kompilieren und auf jeden Rechner nach %SystemRoot%\System32\GroupPolicy\Machine\Scripts\Startup\ kopieren. Danach mit gpedit.msc unter "Computerkonfiguration -> Windows-Einstellungen -> Scripts (Starten/Herunterfahren) -> Starten" die EXE hinzufügen.

    Das Script sorgt dafür das beim Starten des Rechners, im Zeitraum zwischen 23:00 Uhr und 02:00 Uhr, eine automatische Anmeldung, mit den angegeben Benutzerinformationen, durchgeführt wird und von 02:01 Uhr bis 22:59 Uhr wieder der Anmeldedialog angezeigt wird.

    Spoiler anzeigen
    [autoit]

    ;~ StartUp.au3

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

    ; Anmeldeinformationen
    Const $szUser = "Benutzername"
    Const $szPasswd = "Anmeldepasswort"
    Const $szDomain = "Anmeldedomain"

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

    ; Zwischen 23:00 Uhr und 02:00 Uhr automatisch anmelden
    Const $szALStart = "23:00"
    Const $szALEnd = "02:00"

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

    $szCurrentTime = @HOUR & ":" & @MIN
    $szAutoLogon = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AutoAdminLogon")
    If ($szCurrentTime >= $szALStart) Or ($szCurrentTime <= $szALEnd) Then
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AutoAdminLogon", "REG_SZ", 1)
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName", "REG_SZ", $szUser)
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultPassword", "REG_SZ", $szPasswd)
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultDomainName", "REG_SZ", $szDomain)
    If $szAutoLogon = "0" Or $szAutoLogon = "" Then
    Shutdown(6)
    Else
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AutoAdminLogon")
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName")
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultPassword")
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultDomainName")
    EndIf
    Else
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AutoAdminLogon")
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName")
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultPassword")
    RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultDomainName")
    If $szAutoLogon = "1" Then
    sleep(30000)
    Shutdown(4)
    EndIf
    EndIf

    [/autoit]

    Die Zeitspanne für die automatische Anmeldung sollte natürlich so kurz wie möglich gehalten werden, da ja nicht unterschieden werden kann ob der Rechner über WOL oder vom Nutzer gestartet wurde. Sicherer wäre es wenn man nur einen Nutzer einträgt der nur Domäenbenutzerrechte verfügt und die Programme mit RunAs als Administrator ausführt!

    Edit:
    Script etwas abgeändert da die Anmeldeinformation immer erst nach einem Neustart ausgewertet werden!

  • Performance bei Zugriff auf WMI-Objekt

    • bernd670
    • 1. Juni 2007 um 15:34

    Hallo!

    Zitat

    Hmm, eventuell stehe ich da jetzt auf dem Schlauch.
    Bitte berichtige mich, wenn ich falsch liege.
    Nach meinem bisherigen Verständnis hat eine ExecQuery-Abfrage eine Collection als Ergebnis. Ist eine Collection nicht in etwa sowas wie ein Array?


    Eine Collection ist eher mit einem Struct in C oder einem Record in Delphi zu vergleichen.

    Zitat

    Auch wenn ich jetzt nerve, aber was dauert 18 Sekunden, das ExecQuery oder der erste Zugriff auf das Ergebnis von ExecQuery?


    Mit 1. Zugriff meine ich immer den 1. Zugriff auf das Ergebnis!

  • Tipp zum Auslesen von Checkboxen

    • bernd670
    • 1. Juni 2007 um 10:02

    Ich hab das mit dem Mod mehr als kleines Rätsel verstanden!

  • Tipp zum Auslesen von Checkboxen

    • bernd670
    • 1. Juni 2007 um 09:29

    Oder noch etwas kürzer!

    [autoit]

    #include <GUIConstants.au3>
    GUICreate("My GUI Checkbox")
    $1_CB = GUICtrlCreateCheckbox("AN", 10, 10, 120, 20)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $2_CB = GUICtrlCreateCheckbox("AUS", 10, 30, 120, 20)
    $start = GUICtrlCreateButton("Statuscheck", 10, 50, 100, 21)
    GUISetState()

    While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    If $msg = $start Then
    ConsoleWrite(_getCheckboxState($1_CB) & @CRLF)
    ConsoleWrite(_getCheckboxState($2_CB) & @CRLF)
    EndIf
    WEnd

    Func _getCheckboxState($controlID)
    Return BitAND(GUICtrlRead($controlID),$GUI_CHECKED)
    EndFunc ;==>_getCheckboxState

    [/autoit]
  • Tipp zum Auslesen von Checkboxen

    • bernd670
    • 1. Juni 2007 um 07:06

    Hallo!

    Die Umrechnung kann z.B. so machen:
    Mod((x + 1) * 4, 7)

  • Windows-Listenfelder auslesen

    • bernd670
    • 31. Mai 2007 um 23:28

    Das Thema hatten wir doch schon mal -> Themes ändern,
    XP Theme ändern und Frage zu Dropdown-Feldern und Reiter wechsel

  • Performance bei Zugriff auf WMI-Objekt

    • bernd670
    • 31. Mai 2007 um 22:51

    Hallo!

    Die Umbenennung ist schon korrekt, in deinem Script sehe ich keine einzigen Zugriff auf ein Array.

    Ich habe mal den Zugriff auf einen entfernen Server getestet und komme auf eine Zeit (beim 1. Zugriff) von 18 sek. bei 68 Einträgen. Alle weiteren Zugriffe liegen zwischen 2 und 4 ms.

  • Performance bei Zugriff auf WMI-Objekt

    • bernd670
    • 31. Mai 2007 um 15:05

    Ich habe mal mit Sciptomatic folgendes erstellt und die Selct-Anweisung angepasst!

    Spoiler anzeigen
    [autoit]

    ; Erstellt von AutoIt Scriptomatic
    $wbemFlagReturnImmediately=0x10
    $wbemFlagForwardOnly=0x20
    $colItems=""
    $strComputer="localhost"
    $Output=""
    $Output&="Computer: " &$strComputer & @CRLF
    $Output&="==========================================" & @CRLF
    $objWMIService=ObjGet("winmgmts:\\" &$strComputer &"\root\CIMV2")
    $colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_NTLogEvent WHERE LogFile='System' AND SourceName ='Eventlog' AND EventCode='6005'", "WQL");, _
    ;~ $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    $begin=TimerInit()
    MsgBox(0,"Erster Zugriff auf Collection","Anzahl: " & $colItems.Count & " Zeit: " & TimerDiff($begin))

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

    If IsObj($colItems) Then
    For $objItem In $colItems
    $Output&="Category: " &$objItem.Category & @CRLF
    $Output&="CategoryString: " &$objItem.CategoryString & @CRLF
    $Output&="ComputerName: " &$objItem.ComputerName & @CRLF
    $strData=$objItem.Data(0)
    $Output&="Data: " &$strData & @CRLF
    $Output&="EventCode: " &$objItem.EventCode & @CRLF
    $Output&="EventIdentifier: " &$objItem.EventIdentifier & @CRLF
    $Output&="EventType: " &$objItem.EventType & @CRLF
    $strInsertionStrings=$objItem.InsertionStrings(0)
    $Output&="InsertionStrings: " &$strInsertionStrings & @CRLF
    $Output&="Logfile: " &$objItem.Logfile & @CRLF
    $Output&="Message: " &$objItem.Message & @CRLF
    $Output&="RecordNumber: " &$objItem.RecordNumber & @CRLF
    $Output&="SourceName: " &$objItem.SourceName & @CRLF
    $Output&="TimeGenerated: " & WMIDateStringToDate($objItem.TimeGenerated) & @CRLF
    $Output&="TimeWritten: " & WMIDateStringToDate($objItem.TimeWritten) & @CRLF
    $Output&="Type: " &$objItem.Type & @CRLF
    $Output&="User: " &$objItem.User & @CRLF
    If Msgbox(1, "WMI-Ausgabe", $Output)=2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0, "WMI-Ausgabe","Keine WMI-Objekte gefunden für Klasse: " & "Win32_NTLogEvent")
    Endif

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

    Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) &"/" &StringMid($dtmDate, 7, 2) &"/" &StringLeft($dtmDate, 4) & " " &StringMid($dtmDate, 9, 2) &":" &StringMid($dtmDate, 11, 2) &":" &StringMid($dtmDate,13, 2))
    EndFunc

    [/autoit]

    Bei mir ist die Laufzeit bis zur 1. Anzeige < 1s, Du weißt aber schon das TimeDiff die Zeit in ms zurückgibt!

    Dateien

    Zwischenablage.bmp 60,45 kB – 250 Downloads ScriptomaticGer.exe 220,79 kB – 280 Downloads ScriptomaticGer.au3 17,49 kB – 215 Downloads
  • Festplattenspeicherüberpfüfung für Server mit Warnfunktion

    • bernd670
    • 31. Mai 2007 um 09:19

    Es geht auch einfacher!

    [autoit]

    Local $a_driveletters = DriveGetDrive("FIXED") ; Nur Festplatten/-partitionen
    Local $a_drivetotalspaces[$a_driveletters[0]+1] = [$a_driveletters[0]]

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

    For $i = 1 To $a_driveletters[0]
    $a_drivetotalspaces[$i] = DriveSpaceTotal($a_driveletters[$i] & "\")
    Next

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Cleware USBaccess.dll in AutoIt nutzen

    • bernd670
    • 30. Mai 2007 um 14:13

    Probier doch mal eine andere Funktion, z.B. FCWGetVersion oder FCWGetUSBType!

    Ubrigens zeigt @error immer den Fehlercode der letzten Funktion an, da nach DllCall noch _ArrayDisplay und MsgBox aufgerufen wird, wird der Fehlercode von DllCall überschrieben. Wobei ich jetzt nicht weiß ob MsgBox @error beeinflusst.

  • Cleware USBaccess.dll in AutoIt nutzen

    • bernd670
    • 30. Mai 2007 um 13:01

    Lass mal _ClewareResetDevice($h_dll, $ptr_cusbaccess, 1) vorm auslesen der Temperatur weg, ich befürchte nämlich das das Gerät noch im Reset ist wenn Du die Temperatur abfragen willst, ein Reset soll ja nur durchgeführt werden wenn sich der Wert von $i_time mehrfach hintereinander nicht verändert!

    Ich glaube mit dem Rückgabewert hast Du auch was falsch verstanden,
    wenn die Funktion folgendermassen aufgerufen wird:

    Spoiler anzeigen
    [autoit]

    $DLLRet = DllCall($h_dll, "int", "_FCWGetTemperature@16", _
    "ptr", $ptr_cusbaccess, _
    "int", 1, _
    "ptr", DllStructGetPtr($struct_temp), _
    "ptr", DllStructGetPtr($struct_time))

    [/autoit]

    Dann befindet sich in $DLLRet[0] der Rückgabewert der Funktion, also in diesem Fall 0 = Fehler ansonsten > 0!

  • schneiden

    • bernd670
    • 30. Mai 2007 um 12:50

    Hallo!

    Geteilt werden kann alles, es ist allerdings nicht mit einer Schneidesoftware für Videos zu verwechseln, die einzelnen Teile sind also nicht lauffähig!

  • Cleware USBaccess.dll in AutoIt nutzen

    • bernd670
    • 30. Mai 2007 um 10:57

    Zeile 18 und 19 sollte eigentlich die Temperatur und die Zeit in $d_temperatur und $i_time zurückgeben!

  • Cleware USBaccess.dll in AutoIt nutzen

    • bernd670
    • 30. Mai 2007 um 10:27

    Die Funktion erwartet eine ptr auf double, dass geht nur über DllStruct...!

    Spoiler anzeigen
    [autoit]

    Func _ClewareGetTemp($h_dll, $ptr_cusbaccess)
    Local $a_cwdevices, $a_cwtemperature = -1
    Local $i_time = DllStructCreate("int"), $d_temperature = DllStructCreate("double")

    DllStructSetData($d_temperature,1,0)
    DllStructSetData($i_time,1,0)

    $a_cwdevices = DllCall($h_dll, "int", "_FCWOpenCleware@4", "ptr", $ptr_cusbaccess)
    If $a_cwdevices[0] == 1 Then
    $a_cwtemperature = DllCall($h_dll, "int", "_FCWGetTemperature@16", _
    "ptr", $ptr_cusbaccess, _
    "int", 1, _
    "ptr", DllStructGetPtr($d_temperature), _
    "ptr", DllStructGetPtr($i_time))

    Select
    Case @error == 0
    $d_temperature = DllStructGetData($d_temperature,1)
    $i_time = DllStructGetData($i_time,1)
    _ArrayDisplay($a_cwtemperature)
    MsgBox(16, "Notification", "Temperatur: " & $d_temperature & " °C.")
    Case @error == 1
    MsgBox(16, "Error", "Unable to use DLL.")
    Case @error == 2
    MsgBox(16, "Error", "Unknown return type.")
    Case @error == 3
    MsgBox(16, "Error", "Function not found in DLL.")
    EndSelect
    EndIf
    EndFunc ;==>_ClewareGetTemp

    [/autoit]
    Zitat

    Aber wie bist Du denn darauf gekommen vor die Funktion einen "_" und danach "@" zu schreiben?

    Das kann man mit dem Dependency Walker auslesen!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™