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

Beiträge von Oscar

  • Finde den Fehler

    • Oscar
    • 31. Januar 2010 um 10:20

    Das geht mit einer Inidatei viel einfacher:

    Spoiler anzeigen
    [autoit]


    #include <Process.au3>
    HotKeySet('{ESC}', '_End')
    Global $sInifile = @ScriptDir & '\ActiveProcess.ini'
    AdlibRegister('_SaveProcessname', 30000)

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

    While Sleep(50)
    WEnd

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

    Func _SaveProcessname()
    Local $sProcessName, $iCount
    $sProcessName = _ProcessGetName(WinGetProcess(''))
    $iCount = IniRead($sInifile, $sProcessName, 'Count', 0)
    $iCount += 1
    IniWrite($sInifile, $sProcessName, 'Count', $iCount)
    EndFunc

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

    Func _End()
    Exit
    EndFunc

    [/autoit]
  • Nach Systemzeit eine Aktion auslösen

    • Oscar
    • 31. Januar 2010 um 09:57

    Ich hatte mal so ein Programm geschrieben. Damit kann man Programme datum-/zeitgesteuert starten lassen.
    Vielleicht möchtest Du es verwenden (angepasst an die neue AutoIt-Version):

    Spoiler anzeigen
    [autoit]


    #include <StaticConstants.au3>
    #include <Date.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <EditConstants.au3>
    #include <DateTimeConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Opt('GUIOnEventMode', 1) ; OnEvent-Mode einschalten

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

    Global $sTitle = 'Start-Liste v1.1' ; Fenstertitel
    Global $sAppDir = @AppDataDir & '\Start-Liste\' ; Pfad für das Programm festlegen
    If Not FileExists($sAppDir) Then DirCreate($sAppDir) ; wenn Verzeichnis nicht vorhanden, dann anlegen
    Global $sDBFile = $sAppDir & 'Start-Liste.sldb' ; Datenbank-Datei festlegen
    Global Const $DTM_SETFORMAT_ = 0x1032 ; Konstante zum setzen des Formats für das Date-Control

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

    Global $hGui = GUICreate($sTitle, 800, 600) ; Fenster erstellen
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End') ; Funktion "_End" aufrufen, wenn Fenster geschlossen wird
    GUISetBkColor(0xCCCCCC) ; Hintergrundfarbe für das Fenster
    GUISetFont(10) ; Standard-Zeichensatz auf 10er Schrift setzen
    Global $hTime = GUICtrlCreateLabel(@HOUR & ':' & @MIN & ':' & @SEC, 680, 10, 100, 20, $SS_RIGHT) ; Aktuelle Zeit anzeigen
    GUICtrlSetFont(-1, 16, 800) ; Aktuelle Zeit in 16er Schrift und 800er Breite anzeigen
    GUICtrlCreateGroup('Neuer Eintrag', 10, 60, 780, 60) ; Gruppe -Anfang-
    GUICtrlCreateLabel('Datum / Uhrzeit:', 20, 88, 100, 24) ; Text anzeigen
    Global $hDate = GUICtrlCreateDate('', 120, 85, 140, 24, $DTS_TIMEFORMAT) ; Datum/Uhrzeit-Control erstellen
    GUICtrlSendMsg($hDate, $DTM_SETFORMAT_, 0, 'dd.MM.yyyy / HH:mm') ; Das Format für das Date-Control festlegen
    GUICtrlCreateLabel('Datei:', 280, 88, 40, 20) ; Text anzeigen
    Global $hFilename = GUICtrlCreateInput('', 320, 85, 330, 24, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_READONLY)) ; Readonly-Input zur Anzeige von Pfad und Datei
    Global $hSelect = GUICtrlCreateButton('...', 650, 85, 30, 24) ; Datei-Auswahl-Button erstellen
    GUICtrlSetOnEvent(-1, '_SelectFile') ; Diese Funktion aufrufen, wenn der Button gedrückt wird
    Global $hAdd = GUICtrlCreateButton('Hinzufügen', 700, 85, 80, 24) ; "Hinzufügen"-Button erstellen
    GUICtrlSetOnEvent(-1, '_NewEntry') ; Diese Funktion aufrufen, wenn der Button gedrückt wird
    GUICtrlCreateGroup('', -99, -99, 1, 1) ; Gruppe -Ende-
    Global $hListView = GUICtrlCreateListView('Datum / Uhrzeit|Datei', 10, 140, 780, 400, $LVS_SHOWSELALWAYS) ; ListView erstellen
    GUICtrlSetOnEvent(-1, '_ClickListView') ; Diese Funktion aufrufen, wenn auf eine Spalten-Überschrift geklickt wird
    Global $hContext = GUICtrlCreateContextMenu($hListView) ; Kontextmenü für das ListView erstellen
    GUICtrlCreateMenuItem('Markierte Einträge entfernen', $hContext) ; Kontextmenü-Eintrag erstellen
    GUICtrlSetOnEvent(-1, '_DelItem') ; Diese Funktion aufrufen, wenn der Kontextmenüeintrag ausgewählt wird
    _ListViewLoad($hListView, $sDBFile) ; Datenbank laden
    _GUICtrlListView_SetColumnWidth($hListView, 0, 150) ; Breite von ListViewspalte 0 auf 150 Pixel Breite setzen
    _GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE) ; Breite von ListViewspalte 1 automatisch anpassen
    _GUICtrlListView_RegisterSortCallBack($hListView) ; Sortierfunktion registrieren
    _SortListView(1) ; Sortieren nach Spalte 1
    _SortListView(0) ; Sortieren nach Spalte 0 (Eintrag mit nächstem Datum oben)
    $sMsg = 'Die in der Liste eingetragenen Dateien werden zur angegebenen Zeit per ShellExecute gestartet.' & @CRLF
    $sMsg &= 'Bitte nur Dateien angeben, die selbst ausführbar (.exe) oder die mit einem ausführbaren Programm verknüpft sind.'
    GUICtrlCreateLabel($sMsg, 15, 550, 740, 40) ; Hinweistext anzeigen
    GUISetState() ; Fenster anzeigen
    AdlibRegister('_CheckDate', 1000) ; Funktion alle 1000 ms aufrufen (prüfen, ob die Zeit eines Eintrags bereits erreicht bzw. überschritten wurde)

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

    While True ; Endlosschleife
    Sleep(20) ; Sleep wird beim OnEvent-Mode benötigt, um den Prozessor nicht zu 100% auszulasten
    WEnd

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

    Func _End()
    AdlibUnRegister('_CheckDate')
    _GUICtrlListView_UnRegisterSortCallBack($hListView) ; Sortierfunktion deregistrieren
    Exit ; Programm beenden
    EndFunc ;==>_End

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

    Func _CheckDate()
    GUICtrlSetData($hTime, @HOUR & ':' & @MIN & ':' & @SEC) ; Die Uhrzeit aktualisieren
    Local $iCount, $sPath, $sWorkingDir
    $iCount = _GUICtrlListView_GetItemCount($hListView) ; Anzahl der ListView-Einträge ermitteln
    For $i = $iCount - 1 To 0 Step -1 ; Schleife für alle ListView-Einträge rückwärts durchlaufen, wegen DeleteItem
    If _DateConvert(_GUICtrlListView_GetItemText($hListView, $i)) <= _NowCalc() Then ; Wenn die Zeit erreicht/überschritten wurde, dann...
    $sPath = _GUICtrlListView_GetItemText($hListView, $i, 1) ; Dateiname + Pfad ermitteln
    $sWorkingDir = StringRegExpReplace($sPath, '(.+\\).+', '$1') ; Pfad als WorkingDir festlegen
    ShellExecute($sPath, '', $sWorkingDir) ; Datei mit ShellExecute aufrufen
    _GUICtrlListView_DeleteItem($hListView, $i) ; und den Eintrag aus dem ListView entfernen
    _ListViewSave($hListView, $sDBFile) ; geänderte ListView abspeichern
    EndIf
    Next
    EndFunc ;==>_CheckDate

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

    Func _SelectFile()
    Local $sFile = FileOpenDialog('Bitte eine Datei auswählen!', '', '(*.*)', 3, '', $hGui) ; Datei-Auswahl-Dialog aufrufen
    If Not @error Then GUICtrlSetData($hFilename, $sFile) ; Wenn kein Fehler aufgetreten ist, dann den Pfad ins Input-Control übernehmen
    EndFunc ;==>_SelectFile

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

    Func _NewEntry()
    Local $sDate, $sProg
    $sDate = GUICtrlRead($hDate) ; Datum/Uhrzeit auslesen
    ; Wenn Datum in der Vergangenheit liegt, dann Fehlermeldung ausgeben und Funktion verlassen
    If _DateConvert($sDate) < _NowCalc() Then Return MsgBox(16 + 262144, $sTitle, 'Datum/Uhrzeit muss in der Zukunft liegen!', 0, $hGui)
    $sProg = GUICtrlRead($hFilename) ; Pfad und Dateiname auslesen
    ; Wenn Pfad ein Leerstring ist (nichts ausgewählt), dann Fehlermeldung ausgeben und Funktion verlassen
    If $sProg = '' Then Return MsgBox(16 + 262144, $sTitle, 'Bitte eine Datei auswählen!', 0, $hGui)
    GUICtrlCreateListViewItem($sDate & '|' & $sProg, $hListView) ; ListView-Eintrag erstellen
    _GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE) ; Breite von ListViewspalte 1 automatisch anpassen
    GUICtrlSetData($hFilename, '') ; Anzeige für den Dateipfad leeren
    GUICtrlSetData($hDate, _NowCalc()) ; Datum/Uhrzeit-Control wieder auf die aktuelle Zeit setzen
    _GUICtrlListView_BeginUpdate($hListView) ; Listview sperren
    _SortListView(1) ; Sortieren nach Spalte 1
    _SortListView(0) ; Sortieren nach Spalte 0 (Eintrag mit nächstem Datum oben)
    _GUICtrlListView_EndUpdate($hListView) ; Listview wieder freigeben
    _ListViewSave($hListView, $sDBFile) ; geänderte ListView abspeichern
    EndFunc ;==>_NewEntry

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

    Func _ClickListView()
    Local $iHeaderItem = GUICtrlGetState($hListView) ; Welche Spaltenüberschrift wurde angeklickt
    _GUICtrlListView_BeginUpdate($hListView) ; Listview sperren
    _SortListView($iHeaderItem) ; Sortieren nach entsprechender Spalte
    _GUICtrlListView_EndUpdate($hListView) ; Listview wieder freigeben
    EndFunc

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

    Func _SortListView($iHeaderItem)
    Local $iCount = _GUICtrlListView_GetItemCount($hListView) ; Anzahl der Listview-Einträge holen
    For $i = 0 To $iCount - 1 ; Schleife, um alle Listview-Einträge durchzugehen
    _GUICtrlListView_SetItemText($hListView, $i, _DateConvert(_GUICtrlListView_GetItemText($hListView, $i))) ; die Daten in Sortierreihenfolge bringen
    Next
    _GUICtrlListView_SortItems($hListView, $iHeaderItem) ; ListView-Einträge sortieren
    For $i = 0 To $iCount - 1 ; Schleife, um alle Listview-Einträge durchzugehen
    _GUICtrlListView_SetItemText($hListView, $i, _DateReConvert(_GUICtrlListView_GetItemText($hListView, $i))) ; die Daten wieder in Anzeigereihenfolge bringen
    Next
    EndFunc

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

    Func _DateConvert($sDate)
    ; Datum/Uhrzeit in das Format umwandeln, das auch von _NowCalc() verwendet wird
    Return StringRegExpReplace($sDate, '(\d{2})\.(\d{2})\.(\d{4}) / (\d{2}):(\d{2})', '$3/$2/$1 $4:$5:00')
    EndFunc ;==>_DateConvert

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

    Func _DateReConvert($sDate)
    ; Datum/Uhrzeit wieder in das deutsche Format umwandeln
    Return StringRegExpReplace($sDate, '(\d{4})/(\d{2})/(\d{2}) (\d{2}):(\d{2}):\d{2}', '$3.$2.$1 / $4:$5')
    EndFunc

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

    Func _DelItem()
    _GUICtrlListView_DeleteItemsSelected($hListView) ; alle markierten ListView-Einträge entfernen
    _ListViewSave($hListView, $sDBFile) ; geänderte ListView abspeichern
    EndFunc ;==>_DelItem

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

    Func _ListViewLoad($hListView, $sFilename) ; Datenbank-Datei laden
    Local $sItem, $hFile
    $hFile = FileOpen($sFilename, 0) ; Datei zum lesen öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    _GUICtrlListView_BeginUpdate($hListView) ; Listview sperren
    While True ; Endlosschleife
    $sItem = FileReadLine($hFile) ; Zeile aus der Datei lesen
    If @error Then ExitLoop ; wenn das Ende der Datei erreicht ist, dann Endlosschleife verlassen
    GUICtrlCreateListViewItem($sItem, $hListView) ; mit den eingelesenen Daten einen neuen Listview-Eintrag erstellen
    WEnd
    _GUICtrlListView_EndUpdate($hListView) ; Listview wieder freigeben
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>_ListViewLoad

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

    Func _ListViewSave($hListView, $sFilename) ; Datenbank-Datei speichern
    Local $iCount, $hFile, $sItem
    $iCount = _GUICtrlListView_GetItemCount($hListView) ; Anzahl der Listview-Einträge holen
    $hFile = FileOpen($sFilename, 2) ; Datei zum speichern (überschreiben) öffnen
    If $hFile <> -1 Then ; wenn das öffnen erfolgreich war, dann...
    For $i = 0 To $iCount - 1 ; Schleife, um alle Listview-Einträge durchzugehen
    $sItem = _GUICtrlListView_GetItemTextString($hListView, $i) ; die Werte aus dem Listview-Eintrag holen
    FileWriteLine($hFile, $sItem) ; und in die Datei schreiben
    Next
    FileClose($hFile) ; Datei schließen
    EndIf
    EndFunc ;==>_ListViewSave

    [/autoit]
  • Wenn das Schäuble damals schon gewusst hätte

    • Oscar
    • 31. Januar 2010 um 01:01

    Ich kann die Aufregung nicht verstehen. Mal ganz im Ernst: Wer glaubt denn noch, dass man etwas bekommt, was der Hersteller nicht extra angibt?

    Und nachdem vor einigen Jahren die gleiche Problematik (unverschlüsselte Funkübertragung) mit den drahtlosen Telefonen durch die Presse ging, frage ich mich ernsthaft, wer dann noch so naiv sein kann zu glauben, dass diese Billigdinger eine verschlüsselte Übertragung beinhalten.

    Was mich wirklich schockiert ist die Tatsache, dass irgendwelche "Sicherheitsexperten" so einen Billigschrott in Arztpraxen oder an anderen sensiblen Bereichen installieren. Denen sollte man mal auf die Finger hauen. Die Hersteller sind da eher unschuldig (sitzen wohl meist eh in Fernost).

    Und das der Datenschutzbeauftragter von nichts gewusst haben will, kann ich auch nicht so recht glauben. :pinch:

  • StringAdvanced UDF

    • Oscar
    • 30. Januar 2010 um 15:07

    Ähem... ist _String_GetCharacter nicht das gleiche wie StringMid?

    [autoit]

    StringMid($s, 4096, 1)

    [/autoit]

    und für _String_ToArray gibt's doch bereits _ArrayAdd und _ArrayInsert.

  • Frage: PasswortChar Textfeld auslesen

    • Oscar
    • 30. Januar 2010 um 14:55

    Nach 45 Minuten zu pushen wird nicht gern gesehen!

    Schau Dir Dein Script mal genau an. Woher soll denn $oPasswd kommen?

  • sc4ry

    • Oscar
    • 30. Januar 2010 um 10:56

    Von mir auch noch nachträglich alles Gute zum Geburtstag. :)

  • Excel zeilen und spaltn ermitteln...

    • Oscar
    • 29. Januar 2010 um 13:40

    Wenn Du die Exceldatei mit _ExcelReadSheetToArray einliest, bekommst Du ein 2D-Array, indem [0][0] die Zeilenanzahl und [0][1] die Spaltenanzahl beinhalten.

  • dateien finden

    • Oscar
    • 28. Januar 2010 um 20:30

    Du könntest einfach mal die anderen Threads von heute lesen, z.B. diesen hier: http://www.autoit.de/index.php?page=Thread&threadID=17331
    ;)

  • Einzelnen Ordner mit Passwort schützen

    • Oscar
    • 28. Januar 2010 um 19:24

    Das hilft doch nur, wenn Du den Explorer benutzt.
    Mit jeden anderen Dateimanager oder der Eingabeaufforderung hättest Du uneingeschränkten Zugriff.

  • Komplizierte Portfreigabe (Frage) ?!

    • Oscar
    • 28. Januar 2010 um 18:38

    Habe ich Dir doch schon geschrieben. Du musst nur dafür sorgen, dass Du immer die gleiche lokale IP-Adresse erhälst, dann reicht die Portfreigabe in der FritzBox.

  • Einzelnen Ordner mit Passwort schützen

    • Oscar
    • 28. Januar 2010 um 18:36

    Da fällt mir nur TrueCrypt ein.

  • Werte im komplette Textdatei ersetzen

    • Oscar
    • 28. Januar 2010 um 15:35

    Naja, komplett einlesen, ändern und komplett wieder speichern wäre schneller, braucht aber auch mehr Speicher. Kommt halt auf die Datei an.
    Ansonsten kannst Du Dir auch mal _ReplaceStringInFile() ansehen.

  • Game: Speedwriter

    • Oscar
    • 28. Januar 2010 um 15:08

    Die Änderungen waren nicht so gravierend.
    Es gibt jetzt eine neue Version (siehe Post#1). Damit funktioniert das Script mit der aktuellen AutoIt-Version.

  • Patcher Entwicklung

    • Oscar
    • 28. Januar 2010 um 14:54

    Du solltest den Pfad auch anpassen. ;)
    Habe die Kommentare nicht umsonst dazugeschrieben.

  • Play Chip Sound from Memory

    • Oscar
    • 28. Januar 2010 um 14:43

    Wenn ich die 32Bit-Version von AutoIt starte und das Script darin ausführe, dann funktioniert es.

  • Patcher Entwicklung

    • Oscar
    • 28. Januar 2010 um 14:39

    Zum erstellen der MD5-Checksummen kannst Du das hier verwenden:

    Spoiler anzeigen
    [autoit]


    #include <Crypt.au3>
    #include <File.au3>

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

    $sPath = @ScriptDir & '\temp\' ; MD5-Checksumme für alle Dateien aus diesem Ordner
    $sSaveFile = @ScriptDir & '\MD5List.txt' ; In dieser Datei wird die Liste gespeichert
    $aFilelist = _FileListToArray($sPath, '*', 1)
    $sMD5List = ''
    For $i = 1 To $aFilelist[0]
    $sMD5List &= $aFilelist[$i] & ' = ' & _Crypt_HashFile($sPath & $aFilelist[$i], $CALG_MD5) & @CRLF
    Next
    $hFile = FileOpen($sSaveFile, 2)
    If $hFile <> -1 Then
    FileWrite($hFile, $sMD5List)
    FileClose($hFile)
    EndIf

    [/autoit]


    Diese Liste erstellst Du jedes Mal, wenn eine neue Version rauskommt. Danach uploadest Du die Liste auf den Server. Die Clients downloaden diese, erstellen lokal ebenfalls eine Liste mit den vorhandenen Dateien und dann musst Du die Listen nur noch vergleichen.

  • Rekursive Dateisuche

    • Oscar
    • 28. Januar 2010 um 13:56

    Ok, hier mal zwei Kandidaten:

    - Rekursive Datei/Ordner Auflistung per Objekt (von BugFix)
    - _RecursiveFileListToArray (von mir)

  • Patcher Entwicklung

    • Oscar
    • 28. Januar 2010 um 13:49

    Ich hatte eure Unterhaltung in der Shoutbox mitverfolgt und ich frage mich noch immer, was das für ein Projekt wird, bei dem 1000 User gleichzeitig den Server nach neuen Versionen abfragen. :huh:
    Aber gut, geht mich ja nicht unbedingt etwas an...

    Zum Thema: ideas2code hatte AFAIR doch vorgeschlagen, immer wenn Du eine neue Version rausbringst auch eine Liste (Textdatei) mit den MD5-Checksummen der Programme hochzuladen. Diese Liste können sich dann die Clients herunterladen und mit den lokal gespeicherten vergleichen. Wenn dann festgestellt wird, dass die Programme nicht mehr aktuell sind, dann werden sie halt gedownloadet. Diese Methode ist IMHO die ressourcenschonendste. Wenn der Server dann immer noch an seine Grenzen stößt, musst Du Dir Gedanken um eine bessere Anbindung machen. Softwaremäßig ist dann nichts mehr rauszuholen.

  • Rekursive Dateisuche

    • Oscar
    • 28. Januar 2010 um 13:35

    Einfach mit RekursiveFilelist (gibt einige Funktionen dazu hier im Forum, SuFu benutzen) und einem passenden Filter.

  • Game: Speedwriter

    • Oscar
    • 28. Januar 2010 um 13:29

    Upps! Habe völlig vergessen, dass das Spiel auf einem Freehoster lag.
    Es funktioniert aber sowieso nicht mit der aktuellen AutoIt-Version. Muss ich erstmal wieder anpassen. :)
    Und da einige hier nur Unsinn angestellt haben mit dem Highscore-Server, werde ich diesen Teil auch entfernen.
    Ich meld' mich, wenn es eine neue Version gibt...

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™