Und was ist mit 1.2.0 mit 3.3.8.1?
probier ich morgen aus ....
Und was ist mit 1.2.0 mit 3.3.8.1?
probier ich morgen aus ....
Welche? 1.2.0 mit 3.3.8.1 oder 1.2.2.0 mit 3.3.9.4?
Falls 1.2.0 mit 3.3.8.1 den Fehler bringt, dann sollte man genauer analysieren, denn dann ist das ja die letzte freigegebene Produktionsumgebung.
1.2.2.0 mit 3.3.9.4 nok
1.2.2.0 mit 3.3.8.1 ok
AD UDF 1.2.2.0 und AutoIt 3.3.8.1 ist insofern eine gefährliche Kombination als das COM error handling nicht mehr vom UDF erledigt wird, sondern von AutoIt erwartet wird.
Früher crashte AutoIt und daher musste ein UDF einen COM error handler haben und gewisse Dinge selbst abfangen. Die aktuelle Beta crasht nicht mehr sondern gibt einen @error zurück.
Die Version 1.2.2.0 der UDF ist auf die neue Beta abgestimmt und verwendet einen COM error handler nur auf Anfrage des Benutzers um detaillierte Fehlerinforamtion zurückgeben zu können.Daher empfehle ich 1.2.0 mit 3.3.8.1 oder 1.2.2.0 mit 3.3.9.4!
Ich hab vorher deine empfohlene Konstellation gehabt und da gab es den oben genannten error
Also:
Das AD UDF 1.2.2.0 ist für AutoIt 3.3.9.4 gedacht, 1.2.0 für AutoIt 3.3.8.1
Probier bitte mal einer der beiden Kombinationen aus.
OKE *confused*
es funkt jetzt in dieser Konstellation: AD UDF 1.2.2.0 mit AutoIt 3.3.8.1
hmmmm
Zuerst mal die übliche Fragestunde:
Welches Betriebssystem?
32 oder 64 bit?
Welche Version des AD UDF?
also
OS: W7x64SP1
AutoIt: 3.3.8.1 / 3.3.9.4
AD.au3 1.2.2.0
Hi,
hab da ein Problem mit _ADOpen
wenn ich das script über den Editor starte dann funkts .... sobald ich es compiliere und die EXE aufruf bekomme ich den Fehler:
error 8 extended -2147352567
--> Water kannst ma du helfen ?
[autoit]Global $svcD_D = 'DC=ex,DC=xxx,DC=ac,DC=at'Global $svcDC = 'dc04.ex.xxx.ac.at'Global $svcCN = 'CN=Person,CN=Schema,CN=Configuration,DC=ex,DC=xxxx,DC=ac,DC=at'Global $svcD = 'EX'Global $svcU = 'Service_Admin'Global $svcUP = $svcD & "\" & $svcUGlobal $svcP = '***********'
Global $usrn = 'USERNAME'
local $ps_Displayname = _ADGET($usrn, 'DisplayName')
Func _ADGET($USR, $COMMAND) Local $R = _AD_Open($svcUP, $svcP, $svcD_D, $svcDC, $svcCN) If @error <> 0 Then If @error <= 8 Then MsgBox(0, "AD Test Script", "Error Code: " & @error & ", Extended: " & @extended & " returned by _AD_Open") Else If IsArray($R) Then _ArrayDisplay($R) EndIf EndIf
If @error Then Exit MsgBox(16, "", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended)
Global $aProperties[1][2] $aProperties = _AD_GetObjectProperties($USR, $COMMAND) Local $AD_obj = $aProperties[1][1]
Return $AD_obj _AD_Close()EndFunc ;==>_ADGET
lg
TOM
Hai !
danke nochmals ... das hat mich dem ganzen schon etwas näher gebracht ....
was ich noch machen muss ist die abfrage auf die radiobuttons ....
ich schick mal die gui ::
#region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Einrichten eines 'SEND AS' Kontaktes", 432, 226, 345, 243)
$Label1 = GUICtrlCreateLabel("Name der Organisations Einheit", 15, 20, 152, 17)
Global $aOULIST = _COMBOSET()
$NameOE = GUICtrlCreateCombo("", 15, 40, 200, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUICtrlSetData(-1, $aOULIST)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$MUWUID = GUICtrlCreateInput("", 15, 96, 200, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$NameContact = GUICtrlCreateInput("Info des IWO", 230, 40, 180, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$MailAdress = GUICtrlCreateInput("info-IOW@Domain.com", 230, 96, 180, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$Group1 = GUICtrlCreateGroup("", 16, 128, 401, 41)
$sendas = GUICtrlCreateRadio("Senden als Kontakt", 47, 140, 121, 17)
$sendon = GUICtrlCreateRadio("Senden im Auftrag des Kontaktes", 218, 140, 185, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$OK = GUICtrlCreateButton("OK", 336, 184, 75, 25)
$Cancle = GUICtrlCreateButton("Abbrechen", 240, 184, 75, 25)
$Label2 = GUICtrlCreateLabel("Name des 'send as' Kontaktes", 230, 20, 147, 17)
$Label3 = GUICtrlCreateLabel("E-Mail Adresse des 'send as' Kontaktes", 230, 72, 196, 17)
$Label4 = GUICtrlCreateLabel("UID des zu berechtigten Users", 15, 72, 180, 17)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
Hallo Leute,
wie kann ich bei einer GUI am besten eine vollständigeitsabfrage der 4 Inputfelder (die nicht leer sein dürfen) und der 2 Radiobuttons ( entweder oder schaltung) durchführen.
danke für eure Hilfe
TOMTOM
Kennst du den OnEvent-Modus bereits. Damit wird vieles einfacher.
Du brauchst dazu Opt("GUIOnEventMode", 1)
und schau dir das Hilfe-Beispiel zu GUISetOnEvent() an.
Ja den modus hab ich schon Probiert
hat leider auch nix genützt ... da wars sogar schlimmer (Das Problem ist dieses GUI is ja nicht standalone, sondern in einem Großen script als Function eingebunden)
lg
TOM
Hallo @ all
so leider hab ich mein Problem noch nicht gelöst......
wie kann ich in einer while schleife, in einer while schleife den OK button bzw alle buttons ausführen .......
die buttons sind nur funktionstüchtig in der allerersten while Schleife.
kann jemand mir helfen ? ich hab einen Knoten .....
#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $BeginnWartungsZeit = "23:00:00"
Global $SLEP = 20 ;Nicht sichtbarkeit des fensters
$SLEP1 = $SLEP * 1000
Global $sight = 40 ;Sichtbarkeit des fensters
Global $sighti = $sight
$sight1 = $sight * 1000
Global $NowTimeDiff = _DateDiff('s', _NowCalc(), @YEAR & "/" & @MON & "/" & @MDAY & " " & $BeginnWartungsZeit)
Global $iii = 0, $ii = 0, $i = 0, $wdh = Round($NowTimeDiff / ($SLEP + $sight), 0)
If $wdh <= 0 Then Exit
;MsgBox(0, "", $wdh)
Global $calctime = _TimeDiff($BeginnWartungsZeit)
_wartungs_warnung()
Exit
Func _wartungs_warnung()
#Region ### START Koda GUI section ### Form=c:\users\tom.uvw\documents\autoit\wartungs_warnung.kxf
Local $Wartungs_Warnung = GUICreate("Warnung", 250, 164, -1, -1, Default, -1)
Local $Abmelden = GUICtrlCreateButton("Jetzt Abmelden", 16, 128, 89, 25, $WS_GROUP)
Local $WarnOK = GUICtrlCreateButton("&OK", 139, 128, 89, 25, $WS_GROUP)
Global $zeit = GUICtrlCreateLabel("Es ist " & _NowTime(5) & " Uhr,", 15, 37, 155, 17)
Global $calctim = GUICtrlCreateLabel("Sie können noch ca. " & $calctime & " arbeiten", 15, 59, 226, 17)
Local $VD = GUICtrlCreateLabel("Vielen Dank für Ihr Verständniss", 23, 97, 195, 17)
GUICtrlSetFont($VD, 8, 800, 0, "MS Sans Serif")
Local $SGDH = GUICtrlCreateLabel("Sehr geehrte/r Frau/Herr & $DN &", 15, 8, 228, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
_Zaehler($zeit, $calctim)
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Abmelden
MsgBox(0, "logoff", "logofff")
Case $WarnOK
;~ GUISetState(@SW_HIDE, $Wartungs_Warnung)
While $iii <= ($wdh - $SLEP)
$iii = $iii + 1
GUISetState(@SW_SHOW, $Wartungs_Warnung)
MsgBox(0, "", "pause show " & $wdh & " " & $iii, 2)
Local $a = 0
While $a <= $sight ;Zeit fü��r die sicht des fensters
$a = $a + 1
_Zaehler($zeit, $calctim)
;~ MsgBox(0, "", "pause show " & $sight & " " & $a, 1)
Sleep(900);Zeit fü��r die sicht des fensters
If $a = $sight Then ExitLoop
WEnd
GUISetState(@SW_HIDE, $Wartungs_Warnung)
ExitLoop
WEnd
While $iii <= ($wdh - $sight)
$iii = $iii + 1
GUISetState(@SW_HIDE, $Wartungs_Warnung)
MsgBox(0, "", "pause hide " & $wdh & " " & $iii, 2)
Local $a = 0
While $a <= $SLEP ;Zeit fü��r die sicht des fensters
$a = $a + 1
_Zaehler($zeit, $calctim)
;~ MsgBox(0, "", "pause hide " & $SLEP & " " & $a, 1)
Sleep(900);Zeit fü��r die sicht des fensters
If $a = $SLEP Then ExitLoop
WEnd
;~ Sleep($SLEP1);Zeit fü��r die nichtsicht des fensters
GUISetState(@SW_SHOW, $Wartungs_Warnung)
_Zaehler($zeit, $calctim)
ExitLoop
WEnd
;~ ExitLoop
If $iii >= $wdh Then
MsgBox(0, "logoff", "logofff")
ExitLoop
EndIf
EndSwitch
Sleep(30)
WEnd
EndFunc ;==>_wartungs_warnung
[/autoit] [autoit][/autoit] [autoit]Func _TimeDiff($BeginnWartungsZeit)
Local $iDateCalc
Local $timevar
If _NowTime(5) <= $BeginnWartungsZeit Then
Select
Case _DateDiff('h', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit) < 2
$iDateCalc = _DateDiff('h', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit)
$timevar = "Stunde"
Case _DateDiff('h', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit) > 0
$iDateCalc = _DateDiff('h', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit)
$timevar = "Stunden"
Case _DateDiff('n', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit) < 2
$iDateCalc = _DateDiff('n', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit)
$timevar = "Minute"
Case _DateDiff('n', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit) > 0
$iDateCalc = _DateDiff('n', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit)
$timevar = "Minuten"
Case _DateDiff('s', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit) > 0
$iDateCalc = _DateDiff('s', _NowCalc(), _NowCalcDate() & " " & $BeginnWartungsZeit)
$timevar = "Sekunden"
Case Else
MsgBox(4096, "", " Die Messzeit ist weniger als eine Sekunde", 5)
EndSelect
Local $vornach = "unterschritten"
Else
Select
Case _DateDiff('h', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc()) < 2
$iDateCalc = _DateDiff('h', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc())
$timevar = "Stunde"
Case _DateDiff('h', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc()) > 0
$iDateCalc = _DateDiff('h', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc())
$timevar = "Stunden"
Case _DateDiff('n', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc()) < 2
$iDateCalc = _DateDiff('n', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc())
$timevar = "Minute"
Case _DateDiff('n', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc()) > 0
$iDateCalc = _DateDiff('n', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc())
$timevar = "Minuten"
Case _DateDiff('s', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc()) > 0
$iDateCalc = _DateDiff('s', _NowCalcDate() & " " & $BeginnWartungsZeit, _NowCalc())
$timevar = "Sekunden"
Case Else
MsgBox(4096, "", " Die Messzeit ist weniger als eine Sekunde", 5)
EndSelect
Local $vornach = "ü��berschritten"
EndIf
Local $calctime = $iDateCalc & " " & $timevar
Return $calctime
EndFunc ;==>_TimeDiff
Func _Zaehler($zeit, $calctim)
$calctime = _TimeDiff($BeginnWartungsZeit)
GUICtrlSetData($zeit, "Es ist " & _NowTime(5) & " Uhr,")
GUICtrlSetData($calctim, "Sie können noch ca. " & $calctime & " arbeiten")
EndFunc ;==>_Zaehler
Hallo,
Ich bin grad dabei ein Logonlogging zu erstellen
dazu muss ich alle aktiven Netzlaufwerkverbindungen auslesen und in das logfile schreiben (unter DOS = NET USE)
(evtl mit _WinNet_OpenEnum(2, 1, 0, 0, $hEnum)........ _WinNet_CloseEnum($hEnum)
den DOS = SET Befehl umsetzen und ins Logfile schreiben
(autoit = ?????? ich weis ned wie ichs umsetze)
und das Ergebnis von gpresult.exe in ein Logfile rausschreiben.
des weis ich auch nicht wie ich es umsetze
Ich will das ganze mit AutoIT scripten da ich da mehr infos rausbekomme ........
danke für die Hilfe
Hallo Leute,
so mein Problem stellt sich so dar:
Ich habe eine reihe von Prozessen laufen (so 100 x ROBOCOPY.EXE im Beispiel is es die notepad.exe)
Also ich will diese ROBOCOPY's ab einem bestimmten Zeitpunkt alle Killen und dann mit anderen Parametern wieder aufrufen. (z.B. ab 19:00 full speed ab ab 22:00 1/2 speed wegen backup und dann wieder ab 03:00 full speed und dann wieder ab 05:00 Uhr 1/4 speed bis um 19:00Uhr)
Hier also meine Versuche.......
Opt("MustDeclareVars", 1)
#include <Array.au3>
Local $exe = "notepad.exe"
_Process_Kill_btw_Times($exe, "09:11:00", "10:13:00")
Func _Process_Kill_btw_Times($exe, $StartTime, $EndTime)
Local $re = _processStartDateTime($exe)
Local $meld = 0
Local $list = _Processlist($exe)
While $list >= 0
;~ Local $list = _Processlist($exe)
If $meld = 1 Then
ExitLoop
EndIf
;~ Local $exe = "notepad.exe"
Local $date = @MDAY & "." & @MON & "." & @YEAR
;~ MsgBox(0, "", $date)
Local $time = @HOUR & ":" & @MIN & ":" & @SEC
;~ Local $re = _processStartDateTime($exe)
Local $meld = 0
If IsArray($re) Then
If $meld = 1 Then
ExitLoop
EndIf
For $i = 0 To $re[0][0]
Dim $arPIDS
Local $indexx = _ArrayBinarySearch($arPIDS, $re[$i][3])
_ArrayDisplay($arPIDS)
MsgBox(0, "", $indexx)
If $indexx = -1 Then $i = $i + 1
Select
Case $re[$i][2] > $EndTime
MsgBox(0, "PID" & $re[$i][3], $re[$i][3], 1)
ProcessClose($re[$i][3])
Sleep(5)
Case $re[$i][2] < $StartTime
MsgBox(0, "PID" & $re[$i][3], $re[$i][3], 1)
ProcessClose($re[$i][3])
Sleep(5)
Case $re[$i][2] >= $StartTime
MsgBox(0, $re[$i][3], $re[$i][2] & " in time", 1)
Local $tetst = _ArrayAdd($arPIDS, '"' & $re[$i][3] & '"')
MsgBox(0, "", $tetst)
_ArrayDisplay($arPIDS)
Sleep(1000)
Case $re[$i][2] <= $EndTime
MsgBox(0, $re[$i][3], $re[$i][2] & " in time", 1)
Local $tetst = _ArrayAdd($arPIDS, '"' & $re[$i][3] & '"')
MsgBox(0, "", $tetst)
_ArrayDisplay($arPIDS)
;~ $i = $i + 1
Sleep(1000)
;~ Case Else
EndSelect
Next
;~ $meld = 1
Else
MsgBox(64, "info", "Nichts mehr da", 1)
ExitLoop
EndIf
WEnd
Return $re
EndFunc ;==>_Process_Kill_btw_Times
Func _Processlist($exe)
Local $ProcessInfos = ''
;~ Local $Processname
Local $list = ProcessList($exe)
For $i = 1 To $list[0][0]
$ProcessInfos &= $list[$i][0] & " : " & $list[$i][1] & @CRLF
Next
Return $list[0][0]
;~ MsgBox(0,'Es gibt '&$list[0][0]&' Instanzen von '&$Process, $ProcessInfos)
EndFunc ;==>_Processlist
#cs
Return Code
0 = No Process found
-1 = Error - no object
Array with [Start Date][Start Time][processID]
#ce
Func _processStartDateTime($exe)
If Not ProcessExists($exe) Then Return 0
Local $process = '"' & $exe & '"'
Local $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process Where NAME = " & $process & "", "WQL", 0x10 + 0x20)
If Not IsObj($colItems) Then Return -1
Local $return[1][4], $counter = 0
For $objItem In $colItems
If $counter > 0 Then ReDim $return[$counter + 1][4]
Local $iDateCalc = StringMid($objItem.CreationDate, 7, 2) & "." & StringMid($objItem.CreationDate, 5, 2) & "." & StringLeft($objItem.CreationDate, 4)
Local $iTimeCalc = StringMid($objItem.CreationDate, 9, 2) & ":" & StringMid($objItem.CreationDate, 11, 2) & ":" & StringMid($objItem.CreationDate, 13, 2)
$return[$counter][0] = $counter
$return[$counter][1] = $iDateCalc
$return[$counter][2] = $iTimeCalc
$return[$counter][3] = $objItem.ProcessId
$counter += 1
Next
Return $return
EndFunc ;==>_processStartDateTime
Func _Prozkill($exe, $Killtime)
Local $meld = 0
Local $list = _Processlist($exe)
While $list >= 0
If $meld = 1 Then
ExitLoop
EndIf
;~ Local $exe = "notepad.exe"
Local $date = @MDAY & "." & @MON & "." & @YEAR
;~ MsgBox(0, "", $date)
Local $time = @HOUR & ":" & @MIN & ":" & @SEC
Local $re = _processStartDateTime($exe)
Local $list = _Processlist($exe)
Local $meld = 0
If IsArray($re) Then
If $meld = 1 Then
ExitLoop
EndIf
For $i = 0 To $re[0][0]
If $re[$i][1] <= $date And $re[$i][2] < $Killtime Then
;~ MsgBox(0, "PID" & $re[$i][3], $re[$i][3], 1)
ProcessClose($re[$i][3])
Sleep(5)
Else
MsgBox(0, "", "out of time", 1)
$meld = 1
EndIf
Next
Else
MsgBox(64, "info", "Nichts mehr da", 1)
ExitLoop
EndIf
WEnd
Return $re
EndFunc ;==>_Prozkill
Er bleibt mir immer bei der FOR Schleife hängen
danke für die Hilfe
Edit BugFix: Verschoben in Hilfe ( von: ProcessUpTime )
So Ich muss mal diesen Thread wieder ausgraben
Das script ist des was ich brauch (zumindest so ähnlich)
Was ich brauch ist das Startdatum mit der Startzeit.
gibts da eine Möglichkeit den Wert von
$objItem.CreationDate
anders umzuwandeln ??
danke
lg
TOM
Danke
habs verwerten können ..... und den Wald vor lauter Bäumen nicht gesehen ..............................
OK das mit dem ins array bringen hab ich jetzt
[autoit]#Include <Array.au3>
[/autoit][autoit][/autoit][autoit]Local $Prozesse = ProcessList()
_ArrayDisplay($Prozesse)
Hi @all
wie kann ich einen Programm das mehrfach ausgeführt ist (Robocopy) über die Prozesse in ein array zwingen und die Anzahl zählen
mein ansatz:
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Local $arrProz = _ProzFinder()
;~ MsgBox(0,"",$arrProz)
_ArrayDisplay($arrProz)
Exit
Func _ProzFinder()
Dim $arrProz
Local $strComputer = "."
Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
Local $colItems = $objWMIService.ExecQuery( "SELECT * FROM Win32_Process")
[/autoit] [autoit][/autoit] [autoit]For $objItem in $colItems
Local $Proz = $objItem.Caption
$Proz=$Proz& @CRLF
_ArrayAdd ($arrProz,$Proz)
sleep (100)
Next
Return $arrProz
EndFunc
leider funzt das nicht so wie ich will
lg
TOM
@Teak Sieht gut aus und des ganze mit dem Usb_Autorun Script hier aus dem Forum kombiniert wird Cool
@All Weiß zufällig jemand welche RegKeys AUtoit und Scite anlegt ?
Schau mal im AutoIt-Helpfile unter: Install Directory Structure