Hi Schnuffel,
danke für den Tip.
Daran habe ich auch schon gedacht, ist allerdingshalt deutlich mehr Aufwand.
Aber wenn es denn man so ist ....
Werdemich dran machen
Danke
Gruss
ugt100
Hi Schnuffel,
danke für den Tip.
Daran habe ich auch schon gedacht, ist allerdingshalt deutlich mehr Aufwand.
Aber wenn es denn man so ist ....
Werdemich dran machen
Danke
Gruss
ugt100
Hallo zusammen,
vielleicht hat ja jemand von den hier anwesenden 'Profis' eine Idee bzw. einen Ansatz.
Ich habe ein RoboCopy Log File, welches nach dem Erstellen die Summary in einer Messagebox darstellen soll.
Das Script dazu funktioniert soweit.
Problem ist jetzt allerdings noch die Formatierung der Ausgabe (s.u.).
Das sieht ganz mies aus.

Daher meine Frage: Wie kann ich das Format beibiegen (ala Tabstopps im Word z.B.)
#include
#include
Dim $CountLines, $Last10Lines, $aRecords, $aNewRecords$file = FileOpen("c:\bkp.log", 0)
; Check if file opened for reading OKIf $file = -1 Then MsgBox(0, "Error", "Unable to open file.") ExitEndIf
; File Actions (read 6th line for date purposes + trim, count lines of log and calculate 10 lines up)$line = FileReadLine($file,6)$line = StringTrimLeft($line,12) If @error = -1 Then Exit$CountLines = _FileCountLines("c:\bkp.log")$Last10Lines = $CountLines - 10FileClose($file)
;Array Actions (read log to array, create new array containing the last 11 lines)Local $aNewRecords[1]
If Not _FileReadToArray("c:\bkp.log", $aRecords) Then MsgBox(4096, "Fehler", "Fehler beim einlesen der Datei in das Array Fehler:" & @error) ExitEndIfFor $x = $Last10Lines To $aRecords[0] _ArrayAdd($aNewRecords,StringStripWS($aRecords[$x], 3))Next
;Show Action (show summary messagebox)MsgBox(0, "Summary: Bkp.log - " & $line, _ArrayToString($aNewRecords, @CRLF, 1, 11))
mfg
ugt100
na nicht ganz so, denn
erst makiere ich den gewünschten Text manuell (z.B. einen Auschnitt einer Web Seite - den ich ohne die Formatierung haben möchte),
dann stosse ich das Script mittels der Tastenkombination CTRL+F9 an.
Dabei ist der erste Schritt Send("^c") --> also kopieren <-- danach erfolgt erst die Weiterverarbeitung (in Var $Text , ... , StringReplace, usw...).
Um genau dieses CTRL+C mittels Menue(auswahl) des Systray Icons geht es mir ....
Hi misterspeed,
danke für die Blumen ...
Offensichtlich habe ich mich nicht verständlich genug ausgedrückt - sorry
Natürlich habe ich den zu kopierenden Kontext vorher schon markiert, um dann die Tastenkombination zu nutzen.
Das Ganze sollte halt jetzt auch noch mit der Maus und einem Menue funktionieren ...
Mein Versuch des Menues ist ein quick und dirty .....
Ich füge mal den Snip dazu den ich z.Zt. (mit Erfolg) nutze - diese Lösung ist 'nur' die Variante mit den Tastenkombinationen.
[autoit]
Global $sText
$dll = DllOpen("user32.dll")
TraySetState()
TraySetToolTip("CTRL+F9 = Kopiert + entfernt Formate")
HotKeySet("!{ESC}","_exit") ;ALT+ESC
HotKeySet("^{F9}","_Strip") ;CTRL+F9
While 1
sleep(1)
WEnd
DllClose($dll)
[/autoit][autoit][/autoit][autoit]Func _exit()
MsgBox(0, "Strip Format in Clipboard", " Strip Clipboard closed",1)
Exit 0
EndFunc ;==>_Exit
Func _Strip()
Send("^c")
Sleep(10)
$sText = ClipGet()
For $i = 0 To 31 ;9 to 13 sind die wichtigsten
If StringInStr($sText, Chr($i)) Then $sText = StringReplace($sText, Chr($i), "")
Next
ClipPut($sText)
EndFunc
Anm.:
- bei der SText/$Test Variable hat wohl ein Typo zugeschlagen
- den Aufruf der User32.dll habe ich hinzugefügt aufgrund eines Hinweises in der Hilfe !!!
- das include ist ein Überbleibsel (völlig überflüssig - stimmt)
mfg
ugt100
Hallo zusammen,
irgendwie komme ich bei meinem Problem nicht so recht weiter.
Problembeschreibung:
Es soll auf ein im Systray befindliches Icon geklickt werden - es klappt ein Menue auf mit den Items: Über ... / Beenden ... und KOPIEREN.
Desweiteren soll KOPIEREN auch mittels CTRL+F9 und schliessen mit ALT+ESC möglich sein (halt Windows Like
)
Was schon funktioniert:
Formatierungen des in die Zwischenablage kopierten Text löschen
Kopieren und Schliessen mittels Tatstatur
Sytray Menü aufrufen
Mittels Menü schliessen und 'Über'
Was noch nicht:
Menüpunkt kopieren auswählen, tatsächlich kopieren danach Menü schliessen und Menüpunkt nicht angehakt ....
Vielleicht kann ja jemand mal ein Blick auf den Code Snip werfen und mir einen Tip geben .....
Hier das Script:
#Include <Misc.au3>
Opt("TrayMenuMode",1) ; Standard Traymenüeinträge (Skript pausieren/beenden) werden nicht angezeigt.
Global $sText
$dll = DllOpen("user32.dll")
TraySetState()
TraySetToolTip("CTRL+F9 = Kopiert + entfernt Formate" & @CRLF & "ALT+ESC = Programm schliessen")
HotKeySet("!{ESC}","_exit") ;ALT+ESC
HotKeySet("^{F9}","_Strip") ;CTRL+F9
TrayCreateItem("")
$copy = TrayCreateItem("Kopieren")
TrayCreateItem("")
$aboutitem = TrayCreateItem("Über")
TrayCreateItem("")
$exititem = TrayCreateItem("Beenden")
TraySetState()
While 1
$msg = TrayGetMsg()
Select
Case $msg = 0
ContinueLoop
Case $msg = $aboutitem
Msgbox(64,"Über:","Das Tool entfernt alle Formatierungen von den Inhalten der Zwischenablage.")
Case $msg = $copy
_Strip()
TrayCreateItem("")
Case $msg = $exititem
ExitLoop
EndSelect
WEnd
DllClose($dll)
Exit
Func _Strip()
Send("^c")
Sleep(10)
$sTest = ClipGet()
For $i = 0 To 31 ;9 to 13 sind die wichtigsten
If StringInStr($sText, Chr($i)) Then $sText = StringReplace($sText, Chr($i), "")
Next
ClipPut($sTest)
EndFunc
Danke schon mal im voraus ! ![]()
hallo waters,
danke für die schnelle antwort. habe jetzt die neusten ad func downloaded - da stehts .....
meine version war reichlich alt, da gabs das wohl noch nicht
DANKE
mfg
chris ![]()
![]()
![]()
Ein Hallo an die Profis ....
irgendwie sehe ich nicht mehr so richtig durch bzw. drehe mich im Kreis ![]()
Ich muss/möchte im Active Directory 'on Demand' mittels AutoIT Script das User Password zurücksetzen und gleichzeitig auch den Haken 'User Must Change Password At Next Logon' setzen.
PW zurücksetzen funktioniert mittels _AD_SetPassword(..,..) - alles bestens
Der 'Haken' Must Change Password versteckt sich hinter dem Attribut pwdLastSet, welches auf 0 gesetzt werden muss.
Und hier mein Problem - Wie setze ich diesen Wert ?
(wahrscheinlich ganz einfach....)
Danke
mfg
ugt100
Hallo zusammen ,
ich schon wieder - aber seit gestern nachmittag kämpfe ich mit meinem Problem und komme(trotz Suche im Forum) nicht so recht weiter.
Problem:
ich habe 2 Dateien in denen jeweils das Ergebnis einer Query (spez. Gruppenmitgliedschaften) auf je ein Active Directory stehen.
Diese lese ich jeweils in ein Array - trim die Einträge, sodass sich diese auf die reinen Gruppennamen redutieren.
Soweit - sogut
Jetzt möchte ich die beiden Arrays vergleichen und als Ergebnis angezeigt bekommen, welche Einträge in Array 2 fehlen.
Wobei Array1 ($aRecordsADS) sozusagen der Master ist - also die Vorgabe ist, gegen das mit dem Array2 ($aRecordsVF) geprüft wird.
Ergebnis wären dann die in Array2 ($aRecordsVF) nicht vorhandenen Einträge bzw. welche Einträge sind Array1 ($aRecordsADS) mehr vorhanden. (Ich hoffe mal das kann man verstehen).
Den Teil des Scripts, indem ich auf Fehler laufe , habe mal 'auskommentiert'
(Wobei ich nicht sicher bin, ob der Ansatz überhaupt so richtig ist)
Vielleicht weiss ja jemand Rat bzw. kann helfen
Danke schon einmal im voraus
[autoit]
#include <file.au3>
#include <array.au3>
Dim $aRecordsVF, $aRecords2VF, $aRecordsADS, $aRecords2ADS, $aResult
[/autoit][autoit][/autoit][autoit];read file1 - sort array - trim records - display array
If Not _FileReadToArray("adsGroups.txt",$aRecordsADS) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
_ArraySort($aRecordsADS)
for $i = 1 to $aRecordsADS[0]
$aRecords2ADS = StringSplit(StringReplace($aRecordsADS[$i], "CN=", ""), ",")
$aRecordsADS[$i] = $aRecords2ADS[1]
Next
_ArrayDisplay($aRecordsADS, "Liste Groups ADS")
;read file2 - sort array - trim records - display array
If Not _FileReadToArray("vfGroups.txt",$aRecordsVF) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
_ArraySort($aRecordsVF)
for $i = 1 to $aRecordsVF[0]
$aRecords2VF = StringSplit(StringReplace($aRecordsVF[$i], "CN=", ""), ",")
$aRecordsVF[$i] = $aRecords2VF[1]
Next
_ArrayDisplay($aRecordsVF, "Liste Groups VF")
;HIER KOMME ICH LEIDER NICHT WEITER - START
;Global $r = 0
;For $i = 1 To $aRecordsVF[0]
; Local $index
; $index = _ArraySearch($aRecordsADS, $aRecordsVF[$i])
; If $index <> 0 Then
; $aResult[$r] = $aRecordsADS[$i]
; $r = $r + 1
; EndIf
;Next
;_ArrayDisplay($aResult, "Ergebnis der Suche")
;HIER KOMME ICH LEIDER NICHT WEITER - ENDE
;FEHLERMELDUNG:
;==> Subscript used with non-Array variable.:
;$aiResult[$r] = $aRecordsVF[$i]
;$aiResult^ ERROR
mfg
ugt100 ![]()
Hallo Chip,
super danke - das war es.
Wie blöd eigentlich ganz einfach, wenn man es weiss ....
Ich hatte mich da wohl zu sehr auf die Array Funktionen eingeschossen.
Danke nochmals
mfg
ugt100 ![]()
![]()
![]()
![]()
Hallo zusammen,
ich habe irgendwie so etwas wie ein Brett vor Kopf .... darum mein Hilferuf an ans Forum
Problem:
Über eine GUI gebe ich einen Usernamen an und suche mittels AD_open + AD_GetUserGroups alle Gruppenzugehörigkeiten des Users in der aktuellen Domäne. Das schreibe ich in ein Array, welches ich z.B. anzeigen lasse oder über _ArrayToClip in die Zwischenablage sende, um das dann in ein neue Datei zu schreiben.
Soweit sogut .....
Für das weitere 'Processing' benötige ich aber nur ein Subset der gefundenen Gruppen - nämlich alle diejenigen, die
(z.B.) CN=Grp_Sec_ beginnen.
Über _ArrayFindAll bekomme ich zwar den 'Index' - also die Zeile an der ein Treffer gefunden wurde, aber nicht den eigentlichen Gruppennamen.
Genau diesen benötige ich aber .....
Bsp. der gefundenen Gruppen
0 [7
1 [CN=Grp_App_....
2 [CN=Grp_App_....
3 [CN=Grp_App_....
4 [CN=Grp_App_....
5 [CN=Grp_Sec_....
6 [CN=Grp_Sec_....
7 [CN=Grp_Sec_....
_ArrayFindAll ergibt --> 5,6,7 leider nicht [CN=Grp_Sec_...., [CN=Grp_Sec_...., [CN=Grp_Sec_....
Bin für jeden tip oder Anregung dankbar ![]()
#include <AD.au3>
#include <Array.au3>
#include <file.au3>
#include <ButtonConstants.au3>
#include <GUIConstants.au3>
;~ #include <MyArrayDisplay.au3>
#include <MyArrayDisplay_new.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("User Object Properties", 266, 224, 193, 115)
$Radio1 = GUICtrlCreateRadio("Domäne: xy.z.com", 45, 120, 169, 25)
GUICtrlSetState(-1, $GUI_CHECKED)
$Label1 = GUICtrlCreateLabel("Bitte Usernamen eingeben:", 16, 16, 223, 17)
$Label2 = GUICtrlCreateLabel("(z.B. Max.Mustermannc)", 16, 40, 223, 17)
$Input1 = GUICtrlCreateInput("", 16, 72, 217, 21)
GUICtrlSetState($Input1, $GUI_FOCUS)
$OKButton = GUICtrlCreateButton("OK", 16, 180, 97, 25, $BS_DEFPUSHBUTTON)
$CancelButton = GUICtrlCreateButton("Cancel", 140, 180, 97, 25, 0)
$Group1 = GUICtrlCreateGroup("Domain", 16, 104, 217, 50)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $aProperties[1][2], $aProperties1[1][2]
Dim $aRecords, $text, $cdeUsernames, $cdeADSNames, $var1, $var2
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $CancelButton
Exit
Case $OKButton
$cdeUsernames = GUIctrlread($Input1)
If $cdeUsernames = "" Or $cdeUsernames = "... hier den Usernamen eingeben ..." Then
MsgBox(16, "Error", "Es wurde kein Username angegeben.")
GUICtrlSetData($Input1, " ... hier den Usernamen eingeben ...")
GUICtrlSetState($Input1, $GUI_FOCUS)
$cdeUsernames = GUIctrlread($Input1)
Else
GUISetState(@SW_HIDE)
If GUICtrlRead($Radio1) = $GUI_CHECKED Then
$sAD_UserIdParam =
$sAD_PasswordParam =
$sAD_DNSDomainParam =
$sAD_HostServerParam =
$sAD_ConfigurationParam =
Else
MsgBox(0,"","Kein Radio-Button aktiv - kann eigentlich nicht sein")
Exit
EndIf
_AD_Open($sAD_UserIdParam, $sAD_PasswordParam, $sAD_DNSDomainParam, $sAD_HostServerParam, sAD_ConfigurationParam)
$sFQDN_User = _AD_SamAccountNameToFQDN($cdeUsernames)
$cdeADSNames = _AD_GetObjectAttribute($sFQDN_User, "ExtensionAttribute2")
$sSamAccount_User = _AD_FQDNToSamAccountName($cdeUsernames)
$aProperties = _AD_GetUserGroups($sFQDN_User, $var1)
If $aProperties <> "" Then
$aiResult = _ArrayFindAll($aProperties, "CN=Grp_Sec_",0,0,0,1,0)
_MyArrayDisplay($aiResult, $cdeUsernames & " - Eigenschaften","500|100")
_ArrayToClip($aiResult, 1)
$cdeFile = FileOpen("Groups.txt",1)
$cdeText = ClipGet()
FileWrite($cdeFile, $cdeText)
FileClose($cdeFile)
Run("C:\Program Files\Windows NT\Accessories\wordpad.exe Groups.txt")
_AD_Close()
Exit
Else
MsgBox(16, "Error", "Keine Informationen zum Userobjekt [ " & $cdeUsernames & " ] gefunden.")
Exit
EndIf
EndIf
EndSwitch
WEnd
Hi all,
irgendwie steh ich auf dem Schlauch....
Die Idee mit WinActive ist gut - aber funktioniert letztlich nicht.
#include <Date.au3>
;~ If WinActive("[CLASS:rctrl_renwnd32]") Then
While 1
;~ If WinActive("[CLASS:Notepad]") Then
AutoItSetOption("WinTitleMatchMode", 2)
If WinActive ( "- Nachricht") Then
;~ MsgBox(0, "", "Window IS active")
HotKeySet("{F12}","_exit")
HotKeySet("{F11}","_SendInfo")
HotKeySet("{F10}","_SetSubject")
HotKeySet("{F6}","_SetAvarto")
HotKeySet("{F7}","_SetBUW")
HotKeySet("{F8}","_SetTelep")
HotKeySet("{F9}","_Sitel")
HotKeySet("{F2}","_SetGroups")
HotKeySet("{F3}","_SetProfile")
HotKeySet("{F4}","_SetAccLock")
Sleep(200)
Else
;~ MsgBox(0, "", "Window is NOT active")
HotKeySet("{F12}","")
HotKeySet("{F11}","")
HotKeySet("{F10}","")
HotKeySet("{F6}","")
HotKeySet("{F7}","")
HotKeySet("{F8}","")
HotKeySet("{F9}","")
HotKeySet("{F2}","")
HotKeySet("{F3}","")
HotKeySet("{F4}","")
Sleep(200)
EndIf
Sleep(1000)
WEnd
Anbei der Code Snip. Also wenn ich mir via Msgbox den 'Zustand' anzeigen lasse - also Fenster mit dem String '- Nachricht' aktiv / inaktiv, dann funktioniert das.
Wenn ich jetzt das mit den Hotkeys teste, geht das nicht mehr, nachdem ich einmal im Fenster mit dem String '- Nachricht' aktiv war.
Danach sind die Hotkeys 'immer aktiv'.
Warum das ??? ![]()
Danke
Gruss
Chris
Hi all,
da habe ich wohl vor lauter Bäumen den Wald nicht gesehen ![]()
DANKE für die schnellen Antworten
Gruss
Chris
Hallo Leute,
habe da mal wieder eine Frage / Problem
(ich habe fleissig gesucht aber nix gefunden zum Thema)
Vielleicht hat ja einer der Profis eine Idee:
Problem:
Ich habe ein kleines Script, welches über verschiedene Hotkeys F3 - F12 verschiedene Aktion ausführt.
Im Prinzip werden standardiesierte E-Mail Antworten erzeugt + diese versendet.
Das funktioniert auch soweit.
Mein eigentliches Problem besteht darin, das durch die Belegung der Funktionstasten (F3-F12) mittels AutoIT Script, diese übergreifend Gültigkeit haben (was ziemlich störend sein kann).
Meine Idee / Wunsch wäre es nun die Funktionstastenbelegung nur 'Gültigkeit' zu geben, wenn z.B. Outlook offen ist und auch aktiv ....
Danke schon mal im voraus
lg
Chris
- Hi Viperdriver2000,
anbei die gewünschten Dinge (natürlich 'neutralisiert)
Danke schon einmal.
Gruss
ugt100
Hi,
gibt es das vielleicht auch für die SEB/ Santander Bank ?
Gruss
ugt100
![]()
Hi Schnuecks,
werde das noch heute abend testen. Wenn es das gewesen sein sollte, dann hatte echt Tomaten auf den Augen oder Knoten im Hirn.
Danke schon mal
Gruss
ugt100
Hi Milla,
anfangs dachte ich, ich könnte den ermittelten Laufwerksbuchstaben einfach als Parameter an den Batch übergeben. Das funktioniert aber nicht,
musste ich feststellen.
Einmal angenommen (z.B.) X:\ wurde als aktueller LW Buchstabe ermittelt, dann muss auch X:\ im Batch benutzt werden.
Also .....
robocopy C:\datev\daten X:\Datev_Datensicherung /MIR /R:2 /W:2 /LOG:BkpRobo.log /NS /NC /TEE /FFT
robocopy C:\xyz\ X:\ /MIR /R:2 /W:2 /LOG+:BkpRobo.log /NS /NC /TEE
Die Übergabe ist mein Problem.
Ich hoffe jetzt ist das Problem besser beschrieben.
Gruss
ugt100