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. Micha_he

Beiträge von Micha_he

  • AT-Befehl - schtasks

    • Micha_he
    • 17. April 2009 um 11:18

    Die Version mit WMI ist auch nicht zu verachten. Bin noch am testen...

    Spoiler anzeigen
    [autoit]

    Global $wbemFlagReturnImmediately = 0x10
    Global $wbemFlagForwardOnly = 0x20

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

    Func _TaskAddScheduleWMI($hProgram, $sTime, $sDay = '********', $strComputer = "localhost", $iOccurrence = False, $sDaysofweek = '', $sDaysOfMonth = '', $bInteractive = False)
    Local $iJobID, $sMsg, $iBais

    If $sDay = '' Or $sDay = -1 Or $sDay = Default Then $sDay = '********'
    If $strComputer = '' Or $strComputer = -1 Or $strComputer = Default Then $strComputer = 'localhost'
    $iBais = $sDay & $sTime & '.000000' & "-" & _TimeZoneGetBiasWMI($strComputer)
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $objNewJob = $objWMIService.Get("Win32_ScheduledJob")
    ; msgbox(0,"",$hProgram & ', ' & $iBais & ', ' & $iOccurrence & ', ' & $sDaysofweek & ', ' & $sDaysOfMonth & ', ' & $bInteractive & @CRLF)
    $iReturnCode = $objNewJob.Create($hProgram, $iBais, True, $sDaysofweek, $sDaysOfMonth, $bInteractive, $iJobID)

    If $iReturnCode = 0 Then
    Return (SetError(0, $iReturnCode, $iJobID))
    Else
    $sMsg = _TaskScheduleGetReturnValue($iReturnCode)
    Return (SetError(1, $iReturnCode, $sMsg))
    EndIf
    EndFunc ;==>_TaskAddScheduleWMI

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

    ; #FUNCTION#;===============================================================================
    ;
    ; Name...........: _TaskGetScheduledWMI
    ; Description ...: Returns an array of scheduled tasks.
    ; Syntax.........: _TaskGetScheduledWMI()
    ; Parameters ....:
    ; Return values .: Success - Returns the list of scheduled tasks.
    ; Failure - Sets @Error:
    ; |1 - No WMI Objects Found
    ; Author ........: Danny35d
    ; Modified.......:
    ; Remarks .......:
    ; Related .......: _TaskAddScheduleWMI(), _TaskDelScheduleWMI()
    ; Link ..........;
    ; Example .......; Yes
    ;
    ;;==========================================================================================
    Func _TaskGetScheduledWMI($strComputer = 'localhost')
    Local $iCount = 1
    Dim $Output[1][20]

    If $strComputer = '' Or $strComputer = -1 Or $strComputer = Default Then $strComputer = 'localhost'
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ScheduledJob", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) Then
    For $objItem In $colItems
    ReDim $Output[UBound($Output) + 1][20]
    $Output[$iCount][1] = $objItem.Caption
    $Output[$iCount][2] = $objItem.Command
    $Output[$iCount][3] = _GetDaysOfMonth($objItem.DaysOfMonth)
    $Output[$iCount][4] = _GetDaysOfWeek($objItem.DaysOfWeek)
    $Output[$iCount][5] = $objItem.Description
    $Output[$iCount][6] = WMIDateStringToDate($objItem.ElapsedTime)
    $Output[$iCount][7] = WMIDateStringToDate($objItem.InstallDate)
    $Output[$iCount][8] = _GetBoolean($objItem.InteractWithDesktop)
    $Output[$iCount][9] = $objItem.JobId
    $Output[$iCount][10] = $objItem.JobStatus
    $Output[$iCount][11] = $objItem.Name
    $Output[$iCount][12] = $objItem.Notify
    $Output[$iCount][13] = $objItem.Owner
    $Output[$iCount][14] = $objItem.Priority
    $Output[$iCount][15] = _GetBoolean($objItem.RunRepeatedly)
    $Output[$iCount][16] = WMIDateStringToDate($objItem.StartTime)
    $Output[$iCount][17] = $objItem.Status
    $Output[$iCount][18] = WMIDateStringToDate($objItem.TimeSubmitted)
    $Output[$iCount][19] = WMIDateStringToDate($objItem.UntilTime)
    $iCount += 1
    Next
    If UBound($Output) - 1 Then
    $Output[0][0] = UBound($Output) - 1
    Else
    $Output = ''
    EndIf
    Else
    Return (SetError(1, 1, 'No WMI Objects Found for class: Win32_ScheduledJob'))
    EndIf
    Return ($Output)
    EndFunc ;==>_TaskGetScheduledWMI

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

    ; #FUNCTION#;===============================================================================
    ;
    ; Name...........: _TaskDelScheduleWMI
    ; Description ...: Deletes a scheduled task or all schedule task.
    ; Syntax.........: _TaskDelScheduleWMI($strComputer = 'localhost', $iJobID = -1, $iDelAll = False)
    ; Parameters ....: $sName - The name of the computer to execute the deletion on.
    ; $iID - [Optional] The id of the task to delete. If blank will delete the first scheduled task.
    ; $iDelete - [Optional] Integer value to determine deletion type. If 0 will delete all tasks, 1 will delete on the specified task.
    ; Return values .: Success - Deletes the specified task.
    ; Failure - Sets @Error:
    ; |1 -
    ; Author ........: Danny35d
    ; Modified.......:
    ; Remarks .......:
    ; Related .......: _TaskAddScheduleWMI(), _TaskGetSchedule()
    ; Link ..........;
    ; Example .......; Yes
    ;
    ;;==========================================================================================
    Func _TaskDelScheduleWMI($strComputer = 'localhost', $iJobID = -1, $iDelAll = False)
    Local $iReturnCode, $iError = 1, $sMsg, $iFoundID = False

    If $iJobID = '' Or $iJobID = Default Then $iJobID = -1
    If $strComputer = '' Or $strComputer = -1 Or $strComputer = Default Then $strComputer = 'localhost'
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ScheduledJob", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) Then
    For $objItem In $colItems
    $intJobID = $objItem.JobId
    If $iJobID = $intJobID Or $iDelAll Then
    $iFoundID = True
    $objInstance = $objWMIService.Get('Win32_ScheduledJob.JobID=' & $intJobID)
    $iReturnCode = $objInstance.Delete
    EndIf
    Next
    Else
    Return (SetError(1, 3, 'No WMI Objects Found for class: Win32_ScheduledJob'))
    EndIf

    If Not $iFoundID Then $iReturnCode = 4
    If $iReturnCode = 0 Then $iError = 0
    $sMsg = _TaskScheduleGetReturnValue($iReturnCode)

    Return (SetError($iError, $iReturnCode, $sMsg))
    EndFunc ;==>_TaskDelScheduleWMI

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

    Func WMIDateStringToDate($dtmDate)
    If $dtmDate = '' Then
    Return ($dtmDate)
    Else
    Return (StringMid($dtmDate, 5, 2) & "/" & _
    StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
    EndIf
    EndFunc ;==>WMIDateStringToDate

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

    ; #FUNCTION#;===============================================================================
    ;
    ; Name...........: _TimeZoneGetBiasWMI
    ; Description ...: Returns current bias for local time translation. formula: UTC = local time - bias.
    ; Syntax.........: _TimeZoneGetBiasWMI() or _TimeZoneGetBiasWMI('RemoteComputerName')
    ; Parameters ....:
    ; Return values .: Success - Returns Bias time.
    ; Failure - Sets @Error:
    ; |1 - Command Failed
    ; Author ........: Danny35d
    ; Modified.......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........;
    ; Example .......; Yes
    ;
    ;;==========================================================================================
    Func _TimeZoneGetBiasWMI($strComputer = 'localhost')
    Local $iBais, $iDayLightBais

    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_TimeZone", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

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

    If IsObj($colItems) Then
    For $objItem In $colItems
    $iBais = $objItem.Bias
    $iDayLightBais = $objItem.DaylightBias
    Next
    Else
    Return (SetError(1, 'No WMI Objects Found for class: Win32_TimeZone', ''))
    EndIf

    Return (Execute($iBais & ' - ' & $iDayLightBais))
    EndFunc ;==>_TimeZoneGetBiasWMI

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

    Func _GetBoolean($iBoolean)
    If Not $iBoolean Then
    Return (False)
    Else
    Return (True)
    EndIf
    EndFunc ;==>_GetBoolean

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

    Func _TaskScheduleGetReturnValue($iReturnCode)
    Local $sMsg

    Switch $iReturnCode
    Case 0
    $sMsg = 'The request was accepted.'
    Case 1
    $sMsg = 'The request is not supported.'
    Case 2
    $sMsg = 'The user did not have the necessary access.'
    Case 4
    $sMsg = 'Job ID not found.'
    Case 8
    $sMsg = 'Interactive process.'
    Case 9
    $sMsg = 'The directory path to the service executable file was not found.'
    Case 21
    $sMsg = 'Invalid parameters have been passed to the service.'
    Case 22
    $sMsg = 'The account which this service is to run under is either invalid or lacks the permissions to run the service.'
    EndSwitch
    Return ($sMsg)
    EndFunc ;==>_TaskScheduleGetReturnValue

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

    Func _GetDaysOfMonth($iDaysOfMonth)
    Local $sDaysOfMonth
    Local $aDaysOfMonth = _GetPower2(31)

    For $x = $aDaysOfMonth[0] To 1 Step -1
    If $aDaysOfMonth[$x] <= $iDaysOfMonth Then
    $iDaysOfMonth = $iDaysOfMonth - $aDaysOfMonth[$x]
    $sDaysOfMonth = $x & ', ' & $sDaysOfMonth
    EndIf
    If $iDaysOfMonth = 0 Then ExitLoop
    Next
    $sDaysOfMonth = StringTrimRight($sDaysOfMonth, 2)
    Return ($sDaysOfMonth)
    EndFunc ;==>_GetDaysOfMonth

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

    Func _GetDaysOfWeek($iDayOfWeek = 1)
    Local $sDayOfWeek, $sText
    Local $aDays = _GetPower2(7)

    For $x = $aDays[0] To 1 Step -1
    If $aDays[$x] <= $iDayOfWeek Then
    $iDayOfWeek = $iDayOfWeek - $aDays[$x]
    Switch $aDays[$x]
    Case 1
    $sText = 'Monday'
    Case 2
    $sText = 'Tuesday'
    Case 4
    $sText = 'Wednesday'
    Case 8
    $sText = 'Thursday'
    Case 16
    $sText = 'Friday'
    Case 32
    $sText = 'Saturday'
    Case 64
    $sText = 'Sunday'
    EndSwitch
    $sDayOfWeek = $sText & ', ' & $sDayOfWeek
    EndIf
    If $iDayOfWeek = 0 Then ExitLoop
    Next
    $sDayOfWeek = StringTrimRight($sDayOfWeek, 2)
    Return ($sDayOfWeek)
    EndFunc ;==>_GetDaysOfWeek

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

    Func _GetPower2($iMaxPower2)
    Dim $aPower2[$iMaxPower2 + 1]
    $aPower2[0] = $iMaxPower2
    For $x = 1 To $iMaxPower2
    $aPower2[$x] = 2 ^ ($x - 1)
    Next
    Return ($aPower2)
    EndFunc ;==>_GetPower2

    [/autoit]

    Edit: Irgendwas haut beim Erstellen mit der/den (unterschiedlichen) Zeitzone(n) nicht hin... Auf einem PC klappts, auf dem anderen bekomme ich eine Fehler !

  • AT-Befehl - schtasks

    • Micha_he
    • 16. April 2009 um 12:24

    Vielleicht so... LINK

  • AutoIt Router Restart

    • Micha_he
    • 16. April 2009 um 07:50

    Wie ich aus Beitrag #5 rauslese, will er ja den Router nicht neu starten, sondern nur eine neue IP für den Router erhalten. Nur für welchen Router hat er nicht geschrieben !

    Hier habe ich mal etwas für die Fritz!Box geschrieben...

  • Cmd Text auslesen

    • Micha_he
    • 15. April 2009 um 17:55

    Ich weiß zwar nicht ob ich Deine etwas missverständliche Frage verstanden habe, aber das Ergebnis eines Kommandozeilenbefehl's kann mit AutoIt wie folgt gelesen werden:

    Spoiler anzeigen
    [autoit]

    $rueckgabe = ""
    $pid = Run("ipconfig","",@SW_HIDE,6)
    While 1
    ; Rückgabe auslesen
    If StdOutRead($pid,True) Then $rueckgabe &= StdOutRead($pid)
    If StdErrRead($pid,True) Then $rueckgabe &= StdErrRead($pid)
    ; bei Fehler ist der Process beendet
    If @error Then ExitLoop
    ; und warten, oder wollen wir den Rechner 100% auslasten
    Sleep(100)
    Wend
    Msgbox(0,"",$rueckgabe)

    [/autoit]

    Ist aber im Forum schon zig mal diskutiert worden. Oder was meintest Du ?

  • Wie Buttons zu weisen

    • Micha_he
    • 15. April 2009 um 17:19

    Einen Link ? Wie wärs mit diesem ! GUIOnEventMode()

    Der soll schon einigen weitergeholfen haben, ist mir zu Ohren gekommen ;)

  • Kreis berechnen

    • Micha_he
    • 14. April 2009 um 18:05
    Zitat von peethebee

    Wenn ich jedes Mal gepostet hätte, wenn etwas eine Stunde nicht funktioniert hat, hätte ich jetzt 8000 Posts und nicht 4000 :D.

    Späßle ;).

    peethebee

    Genau das denke ich auch bei vielen Post's hier im Forum .... Juhu ich habe jetzt auch 340 Posts :rolleyes:

  • Text zählen

    • Micha_he
    • 14. April 2009 um 17:50

    Schnell und ohne Array's

    Spoiler anzeigen
    [autoit]

    $start = TimerInit()
    $ausgabe = ""
    $gesamt = FileRead(@scriptdir & '/ip_zaehler.txt')
    $FileID = FileOpen(@scriptdir & '/ip_zaehler.txt',0)
    While 1
    $line = FileReadLine($fileID)
    If @error = -1 Then ExitLoop
    If Not StringInStr($ausgabe,$line,2) Then
    StringReplace($gesamt,$line,$line,0,2)
    $ausgabe &= $line & ", " & @extended & @CRLF
    EndIf
    Wend
    FileClose($fileID)
    If StringRight($ausgabe,2) = @CRLF Then $ausgabe = StringLeft($ausgabe,StringLen($ausgabe)-2)
    MsgBox (0,"Dauer = " & Int(TimerDiff($start) + 0.5) & "ms",$ausgabe)

    [/autoit]
  • FTP.au3

    • Micha_he
    • 14. April 2009 um 15:56

    Wie kommst Du darauf, das es "eigentlich so" gehen müsste. Es ging noch nie ohne WININET.dll !

    Wahrscheinlich setzen die FTP-Funktionen der UDF auf Funktionen der WININET.DLL auf, welche aber nicht unbedingt von Windows beim Start geladen wird.

  • FTP.au3

    • Micha_he
    • 14. April 2009 um 11:21

    Die "WININET.dll" muss nicht unbedingt bis zum Ende des Scripts offen bleiben, sondern nur von FTPOpen() bis FTPClose().

    Ich habe meine eigene FTP.au3 dahingehend geändert, das die WININET.dll beim FPOpen() automatisch mit geöffnet und beim FTPClose() wieder geschlossen wird.

  • *.jpg per tcp-send verschicken

    • Micha_he
    • 14. April 2009 um 11:06

    Das geht so einfach meines Wissens nach nicht. TCPSend() und TCPRecv() übertragen nur bestimmte Zeichen. Es gab hier im Forum mal jemanden, der hat zwei Funktionen geschrieben, die eine Datei versenden. In den Funktionen wurden einige Zeichen meines Wissens nach ersetzt.
    Ich selbst habe diese mal für einen "remote Twain Scanner" missbraucht.

    Wenn sich bis heute Abend niemand die Funktionen, oder den Thread hier bekannt gibt, suche ich sie zu Haus raus und stelle sie hier ein.

  • Ini ersetzten

    • Micha_he
    • 13. April 2009 um 22:28

    Wahrscheinlich weil in "$NeuerPfad" nur der Pfad und kein Pfad+Dateiname enthalten ist !

  • Leszugriff verweigern?

    • Micha_he
    • 13. April 2009 um 19:25

    Und wie wollt Ihr den Lese-Zugriff öffnen und sperren ?
    Das geht nur über die ACL und nicht über die File-Attribute.

    Und sogar dabei ist noch das Problem, das der der die Datei "besitzt" (Owner) immer Vollzugriff hat.

  • Leszugriff verweigern?

    • Micha_he
    • 13. April 2009 um 14:26
    Zitat von PokerFace
    [autoit]

    While 1
    If ProcessExists ("Notepad.exe") Then
    FileSetAttrib (***) ;Lesezugriff
    ElseIf Not ProcessExists ("Notepad.exe") Then
    FileSetAttrib (***) ;Kein Lesezugriff.
    EndIf
    WEnd

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

    So zum Beispiel ;)

    Alles anzeigen

    Prinzipiell schon (in Deinem Script könnte man Zeile 4: "ElseIf Not ProcessExists ("Notepad.exe") Then" auch einfach durch "Else" ersetzen), aber das Leserecht lässt sich mit den File-Attributen nicht verhindern. Lesen geht immer ! Du kannst die Datei verstecken, schreibschützen und als Systemdatei deklarieren, aber wenn man den Dateinamen und -ort kennt, kann man sie trotzdem lesen.

    Hier helfen dann nur die Datei- und Verzeichnis-ACL's. Da ich diese mal von einer Quell- zu einer Zieldatei kopieren musste hat ich folgende Funktionen genutzt:

    Spoiler anzeigen
    [autoit]

    ; Funktionen für das anpassen von Sicherheits- und Benutzereinstellungen
    ;
    ; _GetFileSecurityDACL($quelle) : Liest eine Beschreibung der Sicherheitsinfomationen
    ; _SetFileSecurityDACL($ziel, $beschreibung) : Setzt eine Beschreibung der Sicherheitsinfomationen
    ; _CopyFileSecurityDACL($quelle, $ziel) : Kopiert eine Beschreibung der Sicherheitsinfomationen
    ; _GetFileSecurityOWNER($quelle) : Liest eine Beschreibung der Besitzerinfomationen
    ; _SetFileSecurityOWNER($ziel) : Setzt eine Beschreibung der Besitzerinfomationen
    ; _CopyFileSecurityOWNER($quelle, $ziel) : Kopiert eine Beschreibung der Besitzerinfomationen
    ; _CheckSecurityDescriptor($beschreibung) : Prüft eine Beschreibung auf Gültigkeit

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

    Func _GetFileSecurityDACL($sFile)
    If Not IsDeclared("DACL_SECURITY_INFORMATION") Then Const $DACL_SECURITY_INFORMATION = 0x4
    Local $return
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    If Not FileExists($sFile) Then Return SetError(1,0,0)
    $return = DllCall($hAdvapi32,"long","GetFileSecurity", _
    "str",$sFile, _
    "dword", $DACL_SECURITY_INFORMATION, _
    "ptr",0, _
    "dword",0, _
    "dword*",0)
    If Not $return[5] Then Return SetError(1,0,0)
    Local $strucSD = DllStructCreate("byte[" & $return[5] & "]")
    $return = DllCall($hAdvapi32,"long","GetFileSecurity", _
    "str",$sFile, _
    "dword", $DACL_SECURITY_INFORMATION, _
    "ptr",DllStructGetPtr($strucSD), _
    "dword",DllStructGetSize($strucSD), _
    "dword*",0)
    If Not $return[0] Then Return SetError(1,0,0)
    DllClose($hAdvapi32)
    Return DllStructGetData($strucSD,1)
    EndFunc

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

    Func _SetFileSecurityDACL($sFile,$Descriptor)
    If Not IsDeclared("DACL_SECURITY_INFORMATION") Then Const $DACL_SECURITY_INFORMATION = 0x4
    Local $strucSD = DllStructCreate("byte[" & (StringLen($descriptor)/2)-1 & "]")
    DllStructSetData($strucSD,1,$Descriptor)
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    Local $return = DllCall($hAdvapi32,"long","SetFileSecurity", _
    "str",$sFile, _
    "dword", $DACL_SECURITY_INFORMATION, _
    "ptr",DllStructGetPtr($strucSD))
    DllClose($hAdvapi32)
    If $return[0] = 0 Then Return SetError(1,0,0)
    Return 1
    EndFunc

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

    Func _CopyFileSecurityDACL($sSFile, $sDFile)
    If Not _SetFileSecurityDACL($sDFile,_GetFileSecurityDACL($sSFile)) Then SetError(1,0,0)
    Return 1
    EndFunc

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

    Func _CheckSecurityDescriptor($Descriptor)
    Local $strucSD = DllStructCreate("byte[" & (StringLen($Descriptor)/2)-1 & "]")
    DllStructSetData($strucSD,1,$Descriptor)
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    Local $return = DllCall($hAdvapi32,"int","IsValidSecurityDescriptor", _
    "ptr",DllStructGetPtr($strucSD))
    DllClose($hAdvapi32)
    If $return[0] = 0 Then Return SetError(1,0,0)
    Return 1
    EndFunc

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

    Func _GetFileSecurityOWNER($sFile)
    If Not IsDeclared("OWNER_SECURITY_INFORMATION") Then Const $OWNER_SECURITY_INFORMATION = 0x1
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    Local $return = DllCall($hAdvapi32,"long","GetFileSecurity", _
    "str",$sFile, _
    "dword", $OWNER_SECURITY_INFORMATION, _
    "ptr",0, _
    "dword",0, _
    "dword*",0)
    Local $strucSD = DllStructCreate("byte[" & $return[5] & "]")
    $return = DllCall($hAdvapi32,"long","GetFileSecurity", _
    "str",$sFile, _
    "dword", $OWNER_SECURITY_INFORMATION, _
    "ptr",DllStructGetPtr($strucSD), _
    "dword",DllStructGetSize($strucSD), _
    "dword*",0)
    If Not $return[0] Then Return SetError(1,0,0)
    DllClose($hAdvapi32)
    Return DllStructGetData($strucSD,1)
    EndFunc

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

    Func _SetFileSecurityOWNER($sFile,$Descriptor)
    If Not IsDeclared("OWNER_SECURITY_INFORMATION") Then Const $OWNER_SECURITY_INFORMATION = 0x1
    Local $strucSD = DllStructCreate("byte[" & (StringLen($Descriptor)/2)-1 & "]")
    DllStructSetData($strucSD,1,$Descriptor)
    Local $hAdvapi32 = DllOpen("advapi32.dll")
    Local $return = DllCall($hAdvapi32,"long","SetFileSecurity", _
    "str",$sFile, _
    "dword", $OWNER_SECURITY_INFORMATION, _
    "ptr",DllStructGetPtr($strucSD))
    DllClose($hAdvapi32)
    If $return[0] = 0 Then Return SetError(1,0,0)
    Return 1
    EndFunc

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

    Func _CopyFileSecurityOWNER($sSFile, $sDFile)
    If Not _SetFileSecurityOWNER($sDFile,_GetFileSecurityOWNER($sSFile)) Then SetError(1,0,0)
    Return 1
    EndFunc

    [/autoit]

    Nach den Beispielen müsstest Du schauen, das Du das Leserecht für "Jeder" verweigert bekommst. Wenn Du etwas dazu findest, hätte ich auch interesse...

  • Leszugriff verweigern?

    • Micha_he
    • 13. April 2009 um 14:09
    Zitat von Der_Doc

    ...Weil unter Windows wird die Berechtigung ja an Gruppen festgemacht und unter Autoit am File.

    MFG
    Der_Doc

    Wie ? Ich glaub wir machen am Dienstag-Morgen nochmal Windows-Rechte ! ;)

  • Ini ersetzten

    • Micha_he
    • 13. April 2009 um 14:06

    Habe ich auch erst gedacht !

    Aber wenn er jeden, in der INI-Datei stehenden Pfad durch einen anderen ersetzen will, warum dann jeden einzelnen erst mit IniRead() lesen ?

    FileRead() und StringReplace() (wie PokerFace es auch benutzt hat) ist in diesem Fall doch besser angebracht. Das spart irgendwelche Array's und Schleifen !

  • Ini ersetzten

    • Micha_he
    • 12. April 2009 um 21:20

    grundlegende Frage: Warum nutzt du nicht die Funktionen IniRead() & IniWrite() ?

    Edit:
    Aber auch ohne dies (ich sah, Du willst alle Pfade ersetzen) ist dies doch kein Problem:

    Spoiler anzeigen
    [autoit]

    Case $SubButton
    $IniOffen = FileOpen ("Savegames.ini",0)
    $AktuelleIni = FileRead ($IniOffen)
    $IniGeschlossen = FileClose ($IniOffen)
    $NeuerPfad = GUICtrlRead ($Pfad)
    $Ersetzen = StringReplace ($AktuelleIni, $AlterPfad, $NeuerPfad)
    MsgBox (1, "Erfolg", $Ersetzen)
    $IniOffen = FileOpen ($NeuerPfad,2)
    FileWrite($IniOffen,$Ersetzen)
    FileClose($IniOffen)
    GUISetState (@SW_HIDE, $SubGUI)

    [/autoit]
  • Aktuelles Volume auch unter Vista abfragen

    • Micha_he
    • 11. April 2009 um 11:38

    Für WinXP hatte ich mir mal folgendes Beispiel ( wahrscheinlich hier aus unserem Forum ) zur Seite gelegt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <SliderConstants.au3>
    #include <WindowsConstants.au3>
    #include <audio.au3>
    Opt("GUIOnEventMode", 1)
    HotKeySet("^+{F6}", "_exitVol")

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

    Global $pos1[2] = [@DesktopWidth-3, @DesktopHeight/2 -108]
    Global $pos2[2] = [@DesktopWidth-43, @DesktopHeight/2 -108]
    Global $moved = False

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

    $guiSpeaker = GUICreate("PC", 38, 256, $pos1[0], $pos1[1], BitOR($WS_MINIMIZEBOX,$WS_CAPTION, _
    $WS_POPUP,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $slVol = GUICtrlCreateSlider(8, 16, 20, 150, BitOR($TBS_VERT,$TBS_TOP,$TBS_LEFT,$TBS_NOTICKS))
    GUICtrlSetOnEvent(-1, "slVolChange")
    GUICtrlSetData(-1, 100-_SoundGetMasterVolume())
    $cbMute = GUICtrlCreateCheckbox("", 11, 173, 17, 17)
    GUICtrlSetOnEvent(-1, "cbMuteClick")
    If _isMute() Then
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlSetState($slVol, $GUI_DISABLE)
    EndIf
    $Label1 = GUICtrlCreateLabel("Aus", 9, 194, 22, 17)
    $cbMic = GUICtrlCreateCheckbox("", 11, 215, 17, 17)
    GUICtrlSetOnEvent(-1, "cbMicClick")
    $LabelMic = GUICtrlCreateLabel("Mic", 9, 234, 22, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    _checkPos()
    WEnd

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

    Func _exitVol()
    Exit
    EndFunc

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

    Func cbMuteClick()
    Local $id
    If BitAND(GUICtrlRead($cbMic), $GUI_CHECKED) Then
    $id = 5000
    Else
    $id = 1000
    EndIf
    If BitAND(GUICtrlRead($cbMute), $GUI_CHECKED) Then
    GUICtrlSetState($slVol, $GUI_DISABLE)
    _MuteVol($id)
    Else
    GUICtrlSetState($slVol, $GUI_ENABLE)
    _UnMuteVol($id)
    EndIf
    EndFunc

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

    Func cbMicClick()
    If BitAND(GUICtrlRead($cbMic), $GUI_CHECKED) Then
    WinSetTitle($guiSpeaker, '', 'MIC')
    If Not _isMute(5000) Then
    GUICtrlSetState($cbMute, $GUI_UNCHECKED)
    Else
    GUICtrlSetState($cbMute, $GUI_CHECKED)
    EndIf
    GUICtrlSetData($slVol, 100-_SoundGetMicrophoneVolume())
    Else
    WinSetTitle($guiSpeaker, '', 'PC')
    If Not _isMute() Then
    GUICtrlSetState($cbMute, $GUI_UNCHECKED)
    Else
    GUICtrlSetState($cbMute, $GUI_CHECKED)
    EndIf
    GUICtrlSetData($slVol, 100-_SoundGetMasterVolume())
    EndIf
    EndFunc

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

    Func slVolChange()
    If BitAND(GUICtrlRead($cbMic), $GUI_CHECKED) Then
    _SoundSetMicrophoneVolume(100- GUICtrlRead($slVol))
    Else
    _SoundSetMasterVolume(100- GUICtrlRead($slVol))
    EndIf
    EndFunc

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

    Func _checkPos()
    Local $mouse = MouseGetPos()
    If ($mouse[0] > $pos1[0]) Then
    WinMove($guiSpeaker, '', $pos2[0], $pos2[1])
    $moved = True
    ElseIf $moved And ($mouse[0] < $pos1[0]-50) Then
    WinMove($guiSpeaker, '', $pos1[0], $pos1[1])
    $moved = False
    EndIf
    EndFunc

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

    Func _MuteVol($opt = 1000)
    Local $retVal = 0, $ex = False
    If Not WinExists('[CLASS:Volume Control]') Then
    Run('sndvol32', '', @SW_HIDE)
    $ex = True
    EndIf
    If WinWait('[CLASS:Volume Control]', '', 2) = 0 Then Return -1
    $retVal = ControlCommand('[CLASS:Volume Control]', '', $opt, 'isChecked')
    If @error Then Return -2
    If Not $retVal Then
    ControlCommand('[CLASS:Volume Control]', '', $opt, 'Check')
    If @error Then Return -2
    EndIf
    If $ex = True Then WinClose('[CLASS:Volume Control]')
    Return
    EndFunc ;==>_MuteVol

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

    Func _UnMuteVol($opt = 1000)
    Local $retVal = 0, $ex = False
    If Not WinExists('[CLASS:Volume Control]') Then
    Run('sndvol32', '', @SW_HIDE)
    $ex = True
    EndIf
    If WinWait('[CLASS:Volume Control]', '', 2) = 0 Then Return -1
    $retVal = ControlCommand('[CLASS:Volume Control]', '', $opt, 'isChecked')
    If @error Then Return -2
    If $retVal Then
    ControlCommand('[CLASS:Volume Control]', '', $opt, 'UnCheck')
    If @error Then Return -2
    EndIf
    If $ex = True Then WinClose('[CLASS:Volume Control]')
    Return
    EndFunc ;==>_UnMuteVol

    [/autoit]

    Hier die notwendige "audio.au3":
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • Hilfe komme nicht weiter

    • Micha_he
    • 8. April 2009 um 12:16

    Mit diesem Code-Schnipsel wird das nix.

    Schau einmal in der AutoIt-Hilfe unter den Begriffen:
    While,Do,If,Select,Switch.... Dazu am besten noch _InetGetSource().

    Wenn Du die dort aufgeführten Beispiele verstanden hast, hat sich ganz sicher auch die obige Frage erledigt.

  • Quick Downloader v1.6

    • Micha_he
    • 7. April 2009 um 22:06
    Zitat von team2way

    das ganze hier kommt vom thema ab!
    ich hab den thread eröffnet mit dem ziehl, dass ihr euch das prog mal ansehen und mir so ein feedback geben könnt.
    aber irgendwie scheint das hier keiner zumachen...

    Genau das meinten wir. Es werden sich die wenigsten die kompilierte fertige EXE ansehen. Sie können nichts daraus lernen und an ihre Bedürfnisse anpassen. Und genau aus diesem Grund bin ich hier im Forum.

    Wenn jeder nur noch fertig kompilierte Version hier einstellt und mit komischen Lizenzbedingungen versieht, hat es sich bald mit der gegenseitigen Hilfe !

    Und jetzt testet man weiter...

  • AutorunEX

    • Micha_he
    • 6. April 2009 um 20:29

    Mir stellt sich nur die Frage : Wofür ?

    Autorun.inf funktionieren unter Windows XP nur auf CD's und DVD's. Bei Vista vielleicht auch auf USB-Stick's.

    - Falls Du auf deiner Platte welche findest, haben sie sowieso keine Funktion.
    - auf CD/DVD's kann Du sie nicht entfernen
    - auf USB-Stick werden sie bis WinXP nicht beachtet

    Wozu also der Aufwand ?

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™