Geschrieben abfragen

  • Guten Tag...

    Ich plane ein Programm welches Aufzeichnen soll, wenn eine andere Datei / Programm eine Datei erstellt.

    Jetzt die Frage:

    Wie kann ich machen, dass das Programm alle Daten aufschreibt, die auf dem PC erstellt werden?

    Ich habe es schon mal versucht:
    Nur leider Erfolgslos..:

    [autoit]

    if FileCreate(*) then MsgBox(0, "Test", "Es wurde eine Dateia uf dem PC erstellt, die datei heißt: "& FileCreate(*))

    [/autoit]


    Das soll irgend wie nicht...
    Ich weiß, sorry, aber ich bin noch ein Anfänger in dem Gebiet :(

    MFG TheBeatMaker111

  • Das geht leider nicht, solch einen Befehl gibt es nicht in dieser Form,
    und ich denke, dass das Überprüfen des kompletten Computers auf neue Datein
    nicht funktionieren wird.

    Grüße

  • Alle Dateierstellungen auf Laufwerk C:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>

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

    Global Const $s_Path = FileGetLongName("C:\") ; hier den zu prüfenden Pfad eintragen
    If Not FileExists($s_Path) Then Exit MsgBox(48, "Fehler", "Pfad " & $s_Path & " existiert nicht!")

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

    Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 1)

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

    Global Const $SHCNE_RENAMEITEM = 0x0001 ; Änderung von Dateinamen
    Global Const $SHCNE_CREATE = 0x0002 ; Erstellung von Dateien
    Global Const $SHCNE_DELETE = 0x0004 ; Löschen von Dateien
    Global Const $SHCNE_MKDIR = 0x0008 ; Erstellung von Ordnern
    Global Const $SHCNE_RMDIR = 0x0010 ; Löschen von Ordnern
    Global Const $SHCNE_UPDATEDIR = 0x1000 ; Änderungen in einem Pfad
    Global Const $SHCNE_UPDATEITEM = 0x2000 ; Änderungen in einer Datei
    Global Const $SHCNE_UPDATEIMAGE = 0x8000
    Global Const $SHCNE_RENAMEFOLDER = 0x20000
    Global Const $SHCNE_ALLEVENTS = 0x7FFFFFFF ; weitere siehe http://msdn.microsoft.com/en-us/library/…8(v=vs.85).aspx

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

    Global $h_Shell32DLL = DllOpen("shell32.dll")

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

    ; Registriert ein FileSystemEvent mit einer AutoIt-Callback-Funktion
    Global $SHRegister = RegisterFSEvent($s_Path, $SHCNE_CREATE, "EvaluateEvents", True)

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

    ; Erstelle ein Tray-Menü fürs Beenden
    OnAutoItExitRegister("Raus")
    TrayCreateItem("Beenden")
    TrayItemSetOnEvent(-1, "Beenden")

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

    ; Endlosschleife damit AutoIt die meiste Zeit über pausiert ist (Beenden über das Tray-Icon möglich)
    Do
    Sleep(500)
    Until 0

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

    ; Funktion die aufgerufen wird wenn ein Event auftritt:
    Func EvaluateEvents(Const $hWndGUI, Const $MsgID, Const $wParam, Const $lParam)
    Local $h_pidl = DllStructCreate("PTR; PTR", $wParam)
    Local $a_Ret = DllCall($h_Shell32DLL, "BOOLEAN", "SHGetPathFromIDListW", "ptr", DllStructGetData($h_pidl, 1), "wstr", "")
    Local $s_Path = $a_Ret[2]

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

    Switch $lParam ; Welche Art von Event ist aufgetreten?
    Case $SHCNE_CREATE ; Wenn ein Element nur vom Inhalt her geändert wurde
    MsgBox(0, "Datei erstellt", "Folgender Date wurde erstellt: " & $s_Path)
    EndSwitch
    ; EndIf
    EndFunc ;==>CheckOfNewFiles

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

    ; registriert ein FileSystemEvent eines Pfades mit einer Funktion
    Func RegisterFSEvent(Const $s_Path, Const $d_Events, Const $s_CallBackFunc, Const $bRecursive = True)
    Local $h_MyWinMsg = _WinAPI_RegisterWindowMessage("irgendwas")
    Local $h_GUI = GUICreate("")
    GUIRegisterMsg($h_MyWinMsg, $s_CallBackFunc)

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

    Local $h_PIDLIST = DllCall($h_Shell32DLL, "PTR", "ILCreateFromPathW", "WSTR", $s_Path)
    Local $strct_SHChangeNotifyEntry = DllStructCreate("PTR pidl; BOOLEAN fRecursive")
    DllStructSetData($strct_SHChangeNotifyEntry, 1, $h_PIDLIST[0])
    DllStructSetData($strct_SHChangeNotifyEntry, 2, $bRecursive)

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

    Local $SHRegister = DllCall($h_Shell32DLL, "int", "SHChangeNotifyRegister", _
    "HWND", $h_GUI, _
    "INT", 0x0003, _
    "LONG", $d_Events, _
    "UINT", $h_MyWinMsg, _
    "INT", 1, _
    "ptr", DllStructGetPtr($strct_SHChangeNotifyEntry))
    DllCall("ole32.dll", "none", "CoTaskMemFree", "ptr", $h_PIDLIST[0])
    Return $SHRegister
    EndFunc ;==>RegisterFSEvent

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

    Func Beenden()
    Exit
    EndFunc ;==>Beenden

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

    Func Raus()
    DllCall($h_Shell32DLL, "BOOLEAN", "SHChangeNotifyDeregister", "ULONG", $SHRegister[0])
    DllClose($h_Shell32DLL)
    EndFunc ;==>Raus

    [/autoit]
  • Nein, das habe ich nicht vor :)

    Danke. AspirinJunkie, das habe ich gesucht :)

  • Guten Tag...

    Ich bin es wieder und wollte eine kleine Abfrage einfügen...

    Leider klappt bei mir überhaupt nichts..

    Sogar so eine kleine Kleinigkeit will nicht mal funktionieren..

    Ich habe es so gemacht:

    [autoit]

    Func EvaluateEvents(Const $hWndGUI, Const $MsgID, Const $wParam, Const $lParam)
    Local $h_pidl = DllStructCreate("PTR; PTR", $wParam)
    Local $a_Ret = DllCall($h_Shell32DLL, "BOOLEAN", "SHGetPathFromIDListW", "ptr", DllStructGetData($h_pidl, 1), "wstr", "")
    Local $s_Path = $a_Ret[2]

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

    Switch $lParam ; Welche Art von Event ist aufgetreten?
    Case $SHCNE_CREATE ; Wenn ein Element nur vom Inhalt her geändert wurde
    $verboteneDatenendungen = FileRead(FileOpen("endungverboten.txt",0))
    If StringInStr($verboteneDatenendungen,$s_Path) Then
    MsgBox(0, "Datei lassen", "Nicht gecannt da es auf der Liste ist :)")
    ;EndIf
    Else
    MsgBox(0, "Datei erstellt", "Folgender Date wurde erstellt: " & $s_Path)
    EndIf
    EndSwitch
    ;EndSwitch
    ; EndIf
    EndFunc ;==>CheckOfNewFiles

    [/autoit]

    Die ganze Funktion und das habe ich eingefügt:

    [autoit]

    $verboteneDatenendungen = FileRead(FileOpen("endungverboten.txt",0))
    If StringInStr($verboteneDatenendungen,$s_Path) Then
    MsgBox(0, "Datei lassen", "Nicht gecannt da es auf der Liste ist :)")
    ;EndIf
    Else
    MsgBox(0, "Datei erstellt", "Folgender Date wurde erstellt: " & $s_Path)
    EndIf

    [/autoit]

    in der Datei sind nur die werte:
    .lnk
    .txt
    .rft


    Aber sobald ich nur .lnk drinnen habe, geht es gut aber wenn ich dann mehr werte rein mache, geht gar nichts mehr...


    weiß jemand wie das geht ? :)

    MFG TheBeatMaker

  • Du musst die Datei nicht zum einmaligen lesen öffnen. Wenn doch, dann auch wieder schlissen.

    Du vergleichst den Pfad aktuell mit

    Code
    .lnk.txt.rft

    (könnten auch Tabs drinnen sein, grad nicht sicher)

    Auf jeden Fall, musst du entweder Zeilenweise mit:

    [autoit]

    FileReadLine()

    [/autoit]

    einlesen, oder am besten ne INI machen, verstehe eh nicht warum alle immer ne Textdatei wollen, INIs sind viel einfacher anzusprechen.

    Das heißt aber auch, das du das in einer Schleife prüfen musst.

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • Ja genau.

    Du kannst es aber auch einfach so schreiben:

    Code
    .lnk|.txt|.rft

    und dann Splitten.

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • [autoit]

    Switch $lParam ; Welche Art von Event ist aufgetreten?
    Case $SHCNE_CREATE ; Wenn ein Element nur vom Inhalt her geändert wurde
    $verboteneDatenendungen = FileRead(FileOpen("endungverboten.txt",0))
    $verboteneDatenendungensplitt = StringSplit($verboteneDatenendungen, '|', 0)
    If StringInStr($verboteneDatenendungensplitt,$s_Path) Then
    MsgBox(0, "Datei lassen", "Nicht da es auf der Liste ist :)")
    ;EndIf
    Else
    MsgBox(0, "Datei erstellt", "Folgender Date wurde erstellt: " & $s_Path)
    EndIf
    EndSwitch
    ;EndSwitch

    [/autoit]

    Das habe ich jetzt versucht, aber es passiert leider immer noch nichts..
    in die Text- Datei habe ich das geschrieben:

    .lnk|.txt|.rft

  • Ja, vielleicht solltest du dir mal die Hilfe zu StringSplit ansehen.

    Außerdem hat du noch nicht das mit der Datei öffnen berücksichtigt.

    Zitat von Meiner Wenigkeit

    Du musst die Datei nicht zum einmaligen lesen öffnen. Wenn doch, dann auch wieder schlissen.

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • Also ich habe es jetzt so gemacht:

    [autoit]

    Switch $lParam ; Welche Art von Event ist aufgetreten?
    Case $SHCNE_CREATE ; Wenn ein Element nur vom Inhalt her geändert wurde
    $verboteneDatenendungen = FileRead("endungverboten.txt")
    $verboteneDatenendungensplitt = StringSplit($verboteneDatenendungen, ",")
    If StringInStr($verboteneDatenendungensplitt,$s_Path) Then
    MsgBox(0, "Datei lassen", "Nicht gecannt da es auf der Liste ist :)")
    ;EndIf
    Else
    MsgBox(0, "Datei erstellt", "Folgender Date wurde erstellt: " & $s_Path)
    EndIf
    EndSwitch

    [/autoit]

    Und komme leider nicht mehr weiter..

    In der Datei steht:
    .lnk,.txt,.rft

  • Pfu...

    StringSplit liefert ein Array zurück.
    Also musst du dann die einzelnen Elemente durchgehen und mit dem path vergleichen

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • So z.B.

    [autoit]

    Switch $lParam ; Welche Art von Event ist aufgetreten?
    Case $SHCNE_CREATE ; Wenn ein Element nur vom Inhalt her geändert wurde
    $verboteneDatenendungen = FileRead("endungverboten.txt")
    $verboteneDatenendungensplitt = StringSplit($verboteneDatenendungen, '|', 0)
    For $i = 1 To $verboteneDatenendungensplitt[0]
    If StringInStr($verboteneDatenendungensplitt[$i], $s_Path) Then
    MsgBox(0, "Datei lassen", "Nicht da es auf der Liste ist :)")
    Else
    MsgBox(0, "Datei erstellt", "Folgender Date wurde erstellt: " & $s_Path)
    EndIf
    Next
    EndSwitch

    [/autoit]

    Was du weiter machen willst, weiß ich nicht.

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • Was klappt nicht?

    Den Teil den ich dir gegeben habe muss klappen O.o Oder habe ich was übersehen?
    Vom Rest weiss ich nicht, ob er geht oder was du gemacht hast.

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • Ja...

    Also es sagt mir immer noch, wenn die Dateien mit der Endung , die auf der Liste sind erstellt worden.
    Das sollte es aber nicht machen..

  • Das ist nicht mein Problem :P

    Ich habe dir den Teil gegeben und ApirinJunkie den anderen, meiner klappt und ich denke der von AspirinJunkie auch, wenn du ihn richtig verwendest...

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)

  • Doch..

    Bei deinem ist etwas falsch...

    Der sagt mir jetzt 3 mal die Nachricht:
    Datei erstellt", "Folgender Date wurde erstellt: " & $s_Path

    Anstatt das die andere Meldung kommt..

    [autoit]

    #include <WinAPI.au3>

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

    Global Const $s_Path = FileGetLongName("C:\") ; hier den zu prüfenden Pfad eintragen
    If Not FileExists($s_Path) Then Exit MsgBox(48, "Fehler", "Pfad " & $s_Path & " existiert nicht!")

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

    Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 1)

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

    Global Const $SHCNE_RENAMEITEM = 0x0001 ; Änderung von Dateinamen
    Global Const $SHCNE_CREATE = 0x0002 ; Erstellung von Dateien
    Global Const $SHCNE_DELETE = 0x0004 ; Löschen von Dateien
    Global Const $SHCNE_MKDIR = 0x0008 ; Erstellung von Ordnern
    Global Const $SHCNE_RMDIR = 0x0010 ; Löschen von Ordnern
    Global Const $SHCNE_UPDATEDIR = 0x1000 ; Änderungen in einem Pfad
    Global Const $SHCNE_UPDATEITEM = 0x2000 ; Änderungen in einer Datei
    Global Const $SHCNE_UPDATEIMAGE = 0x8000
    Global Const $SHCNE_RENAMEFOLDER = 0x20000
    Global Const $SHCNE_ALLEVENTS = 0x7FFFFFFF ; weitere siehe http://msdn.microsoft.com/en-us/library/…8(v=vs.85).aspx

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

    Global $h_Shell32DLL = DllOpen("shell32.dll")

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

    ; Registriert ein FileSystemEvent mit einer AutoIt-Callback-Funktion
    Global $SHRegister = RegisterFSEvent($s_Path, $SHCNE_CREATE, "EvaluateEvents", True)

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

    ; Erstelle ein Tray-Menü fürs Beenden
    OnAutoItExitRegister("Raus")
    TrayCreateItem("Beenden")
    TrayItemSetOnEvent(-1, "Beenden")

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

    ; Endlosschleife damit AutoIt die meiste Zeit über pausiert ist (Beenden über das Tray-Icon möglich)
    Do
    Sleep(500)
    Until 0

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

    ; Funktion die aufgerufen wird wenn ein Event auftritt:
    Func EvaluateEvents(Const $hWndGUI, Const $MsgID, Const $wParam, Const $lParam)
    Local $h_pidl = DllStructCreate("PTR; PTR", $wParam)
    Local $a_Ret = DllCall($h_Shell32DLL, "BOOLEAN", "SHGetPathFromIDListW", "ptr", DllStructGetData($h_pidl, 1), "wstr", "")
    Local $s_Path = $a_Ret[2]

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

    Switch $lParam ; Welche Art von Event ist aufgetreten?
    Case $SHCNE_CREATE ; Wenn ein Element nur vom Inhalt her geändert wurde
    $verboteneDatenendungen = FileRead("endungverboten.txt")
    $verboteneDatenendungensplitt = StringSplit($verboteneDatenendungen, '|', 0)
    For $i = 1 To $verboteneDatenendungensplitt[0]
    If StringInStr($verboteneDatenendungensplitt[$i], $s_Path) Then
    MsgBox(0, "Datei lassen", "Nicht da es auf der Liste ist :)")
    Else
    MsgBox(0, "Datei erstellt", "Folgender Date wurde erstellt: " & $s_Path)
    EndIf
    Next
    EndSwitch
    EndFunc ;==>CheckOfNewFiles

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

    ; registriert ein FileSystemEvent eines Pfades mit einer Funktion
    Func RegisterFSEvent(Const $s_Path, Const $d_Events, Const $s_CallBackFunc, Const $bRecursive = True)
    Local $h_MyWinMsg = _WinAPI_RegisterWindowMessage("irgendwas")
    Local $h_GUI = GUICreate("")
    GUIRegisterMsg($h_MyWinMsg, $s_CallBackFunc)

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

    Local $h_PIDLIST = DllCall($h_Shell32DLL, "PTR", "ILCreateFromPathW", "WSTR", $s_Path)
    Local $strct_SHChangeNotifyEntry = DllStructCreate("PTR pidl; BOOLEAN fRecursive")
    DllStructSetData($strct_SHChangeNotifyEntry, 1, $h_PIDLIST[0])
    DllStructSetData($strct_SHChangeNotifyEntry, 2, $bRecursive)

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

    Local $SHRegister = DllCall($h_Shell32DLL, "int", "SHChangeNotifyRegister", _
    "HWND", $h_GUI, _
    "INT", 0x0003, _
    "LONG", $d_Events, _
    "UINT", $h_MyWinMsg, _
    "INT", 1, _
    "ptr", DllStructGetPtr($strct_SHChangeNotifyEntry))
    DllCall("ole32.dll", "none", "CoTaskMemFree", "ptr", $h_PIDLIST[0])
    Return $SHRegister
    EndFunc ;==>RegisterFSEvent

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

    Func Beenden()
    Exit
    EndFunc ;==>Beenden

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

    Func Raus()
    DllCall($h_Shell32DLL, "BOOLEAN", "SHChangeNotifyDeregister", "ULONG", $SHRegister[0])
    DllClose($h_Shell32DLL)
    EndFunc ;==>Raus

    [/autoit]

    2 Mal editiert, zuletzt von TheBeatMaker111 (8. Juli 2013 um 21:08)

  • Sodala :D Jetzt geht es. Du musst dann halt noch schauen, wie du es weiter benutzen kannst. Weiss nicht, wie sich meine Lösung mit deinen weiteren Absichten verträgt :)
    Doch zumindest geht es jetzt. Es gäbe sicher noch andere Lösungen, aber die hier Funktioniert auch :D

    Und ApirinJunkie
    Cooles Ding. :D Vlt. brauche ich das auch mal irgendwann.

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>

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

    Global Const $s_Path = FileGetLongName("C:\") ; hier den zu prüfenden Pfad eintragen
    If Not FileExists($s_Path) Then Exit MsgBox(48, "Fehler", "Pfad " & $s_Path & " existiert nicht!")

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

    Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 1)

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

    Global Const $SHCNE_RENAMEITEM = 0x0001 ; Änderung von Dateinamen
    Global Const $SHCNE_CREATE = 0x0002 ; Erstellung von Dateien
    Global Const $SHCNE_DELETE = 0x0004 ; Löschen von Dateien
    Global Const $SHCNE_MKDIR = 0x0008 ; Erstellung von Ordnern
    Global Const $SHCNE_RMDIR = 0x0010 ; Löschen von Ordnern
    Global Const $SHCNE_UPDATEDIR = 0x1000 ; Änderungen in einem Pfad
    Global Const $SHCNE_UPDATEITEM = 0x2000 ; Änderungen in einer Datei
    Global Const $SHCNE_UPDATEIMAGE = 0x8000
    Global Const $SHCNE_RENAMEFOLDER = 0x20000
    Global Const $SHCNE_ALLEVENTS = 0x7FFFFFFF ; weitere siehe http://msdn.microsoft.com/en-us/library/…8(v=vs.85).aspx

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

    Global $h_Shell32DLL = DllOpen("shell32.dll")

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

    ; Registriert ein FileSystemEvent mit einer AutoIt-Callback-Funktion
    Global $SHRegister = RegisterFSEvent($s_Path, $SHCNE_CREATE, "EvaluateEvents", True)

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

    ; Erstelle ein Tray-Menü fürs Beenden
    OnAutoItExitRegister("Raus")
    TrayCreateItem("Beenden")
    TrayItemSetOnEvent(-1, "Beenden")

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

    ; Endlosschleife damit AutoIt die meiste Zeit über pausiert ist (Beenden über das Tray-Icon möglich)
    Do
    Sleep(500)
    Until 0

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

    ; Funktion die aufgerufen wird wenn ein Event auftritt:
    Func EvaluateEvents(Const $hWndGUI, Const $MsgID, Const $wParam, Const $lParam)
    Local $h_pidl = DllStructCreate("PTR; PTR", $wParam)
    Local $a_Ret = DllCall($h_Shell32DLL, "BOOLEAN", "SHGetPathFromIDListW", "ptr", DllStructGetData($h_pidl, 1), "wstr", "")
    Local $s_Path = $a_Ret[2]

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

    Switch $lParam ; Welche Art von Event ist aufgetreten?
    Case $SHCNE_CREATE ; Wenn ein Element nur vom Inhalt her geändert wurde
    $verboteneDatenendungen = FileRead("endungverboten.txt")
    $verboteneDatenendungensplitt = StringSplit($verboteneDatenendungen, '|', 0)
    For $i = 1 To $verboteneDatenendungensplitt[0]
    If StringInStr($s_Path, $verboteneDatenendungensplitt[$i]) Then
    MsgBox(0, "Datei lassen", "Nicht da es auf der Liste ist :)") ;<------- Wenn auf Liste (Danach mit Return Funktion verlassen); Hier auch anderer Code möglich, Achtung auf das Return!!
    Return ;<----------------------------------------------------------------------------------------------------------------------------------------------------- Solltest du Werte zurückgeben wollen.
    EndIf
    Next
    MsgBox(0, "Datei erstellt", "Folgender Date wurde erstellt: " & $s_Path) ;<---- Wenn nicht ; Hier auch anderer Code möglich
    EndSwitch
    EndFunc ;==>EvaluateEvents

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

    ; registriert ein FileSystemEvent eines Pfades mit einer Funktion
    Func RegisterFSEvent(Const $s_Path, Const $d_Events, Const $s_CallBackFunc, Const $bRecursive = True)
    Local $h_MyWinMsg = _WinAPI_RegisterWindowMessage("irgendwas")
    Local $h_GUI = GUICreate("")
    GUIRegisterMsg($h_MyWinMsg, $s_CallBackFunc)

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

    Local $h_PIDLIST = DllCall($h_Shell32DLL, "PTR", "ILCreateFromPathW", "WSTR", $s_Path)
    Local $strct_SHChangeNotifyEntry = DllStructCreate("PTR pidl; BOOLEAN fRecursive")
    DllStructSetData($strct_SHChangeNotifyEntry, 1, $h_PIDLIST[0])
    DllStructSetData($strct_SHChangeNotifyEntry, 2, $bRecursive)

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

    Local $SHRegister = DllCall($h_Shell32DLL, "int", "SHChangeNotifyRegister", _
    "HWND", $h_GUI, _
    "INT", 0x0003, _
    "LONG", $d_Events, _
    "UINT", $h_MyWinMsg, _
    "INT", 1, _
    "ptr", DllStructGetPtr($strct_SHChangeNotifyEntry))
    DllCall("ole32.dll", "none", "CoTaskMemFree", "ptr", $h_PIDLIST[0])
    Return $SHRegister
    EndFunc ;==>RegisterFSEvent

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

    Func Beenden()
    Exit
    EndFunc ;==>Beenden

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

    Func Raus()
    DllCall($h_Shell32DLL, "BOOLEAN", "SHChangeNotifyDeregister", "ULONG", $SHRegister[0])
    DllClose($h_Shell32DLL)
    EndFunc ;==>Raus

    [/autoit]

    Um Missverständnisse zu vermeiden, mein Name rührt vom Sternenbild und nicht vom Shop her :D


    Rainbow Dash :rock:

    "Das, wobei unsere Berechnungen versagen, nennen wir Zufall." (Albert Einstein)