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

Beiträge von BugFix

  • Text aus Zwischenablage zeichenweise lesen

    • BugFix
    • 17. Oktober 2009 um 11:57
    Zitat von gnArfL

    Habt Ihr eventuell ein Beispiel?

    Bsp. gibt es viele, da du aber noch in den Anfängen steckst, wird dir ein RegExp-Bsp. vermutlich nicht allzuviel bringen, da die Lösung sich immer exakt an der konkreten Aufgabenstellung orientiert.
    Insofern ist es schon notwendig, zu sehen, wie der String aufgebaut ist und welche Daten du separieren möchtest.
    Für Bsp. schau mal in die Hilfe zu StringRegExp.

  • BDE (Borland Database Engine) auslesen

    • BugFix
    • 16. Oktober 2009 um 22:25

    Ich hab mal progandys Hinweis eingearbeitet. Das ergibt dann schonmal eine saubere Übersicht.
    Da meine CFG sich deutlich von deiner unterscheidet, mußt du die weitere Bearbeitung individuell vornehmen. Meine Ansätze treffen bei dir nicht zu.

    Spoiler anzeigen
    [autoit]

    $path = 'C:\GDILine\BDE\idapi32.cfg'
    $path = '..\BDE\idapi32.cfg'
    $fh = FileOpen($path, 16)
    $read = StringTrimLeft(FileRead($fh), 2)
    FileClose($fh)
    $text = ''
    For $i = 1 to StringLen($read)-2 Step 2
    $tmp = Dec(StringMid($read, $i, 2))
    Switch $tmp
    Case 0, 1
    $tmp = 32 ; Leerzeichen
    Case 2
    ContinueLoop
    Case 3
    $tmp = 13 ; Zeilenumbruch
    Case 4
    $tmp = 61 ; =
    EndSwitch
    $text &= Chr($tmp)
    Next
    ConsoleWrite($text & @CRLF)

    [/autoit]


    So sieht es z.B. bei mir aus:

    Spoiler anzeigen
    Code
    .
       DRIVERS   
       PARADOX   
       INIT   
       NET DIR = C:\    
       DATABASES   
       DBDEMOS   
       DB INFO   
       TYPE = STANDARD 
       PATH = C:\Program Files\Common Files\Borland Shared\Data 
       ENABLE BCD = FALSE 
       DEFAULT DRIVER = PARADOX   
       IBLocal   
       DB INFO   
       TYPE = INTRBASE 
       PATH =   
       DB OPEN   
       SERVER NAME = C:\Program Files\Common Files\Borland Shared\Data\employee.gdb 
       USER NAME = SYSDBA 
       OPEN MODE = READ/WRITE 
       SCHEMA CACHE SIZE = 8 
       LANGDRIVER =  
       SQLQRYMODE =  
       SQLPASSTHRU MODE = SHARED AUTOCOMMIT 
       SCHEMA CACHE TIME = -1 
       MAX ROWS = -1 
       BATCH COUNT = 200 
       ENABLE SCHEMA CACHE = FALSE 
       SCHEMA CACHE DIR =  
       ENABLE BCD = FALSE 
       BLOBS TO CACHE = 64 
       BLOB SIZE = 32   
       DefaultDD   
       DB INFO   
       TYPE = STANDARD 
       PATH = C:\Program Files\Common Files\Borland Shared\SampleDictionary 
       ENABLE BCD = FALSE 
       DEFAULT DRIVER = PARADOX   
       Microsoft Access-Datenbank   
       DB OPEN   
       DATABASE NAME =  
       USER NAME =  
       ODBC DSN = Microsoft Access-Datenbank 
       OPEN MODE = READ/WRITE 
       SCHEMA CACHE SIZE = 8 
       SQLQRYMODE =  
       LANGDRIVER =  
       SQLPASSTHRU MODE = SHARED AUTOCOMMIT 
       SCHEMA CACHE TIME = -1 
       MAX ROWS = -1 
       BATCH COUNT = 200 
       ENABLE SCHEMA CACHE = FALSE 
       SCHEMA CACHE DIR =  
       ENABLE BCD = FALSE 
       ROWSET SIZE = 20 
       BLOBS TO CACHE = 64  
       DB INFO   
       TYPE = Microsoft Access-Treiber (*.mdb) 
       PATH =    
       dBASE-Dateien   
       DB OPEN   
       DATABASE NAME =  
       USER NAME =  
       ODBC DSN = dBASE-Dateien 
       OPEN MODE = READ/WRITE 
       SCHEMA CACHE SIZE = 8 
       SQLQRYMODE =  
       LANGDRIVER =  
       SQLPASSTHRU MODE = SHARED AUTOCOMMIT 
       SCHEMA CACHE TIME = -1 
       MAX ROWS = -1 
       BATCH COUNT = 200 
       ENABLE SCHEMA CACHE = FALSE 
       SCHEMA CACHE DIR =  
       ENABLE BCD = FALSE 
       ROWSET SIZE = 20 
       BLOBS TO CACHE = 64  
       DB INFO   
       TYPE = Microsoft dBase-Treiber (*.dbf) 
       PATH =    
       Excel-Dateien   
       DB OPEN   
       DATABASE NAME =  
       USER NAME =  
       ODBC DSN = Excel-Dateien 
       OPEN MODE = READ/WRITE 
       SCHEMA CACHE SIZE = 8 
       SQLQRYMODE =  
       LANGDRIVER =  
       SQLPASSTHRU MODE = SHARED AUTOCOMMIT 
       SCHEMA CACHE TIME = -1 
       MAX ROWS = -1 
       BATCH COUNT = 200 
       ENABLE SCHEMA CACHE = FALSE 
       SCHEMA CACHE DIR =  
       ENABLE BCD = FALSE 
       ROWSET SIZE = 20 
       BLOBS TO CACHE = 64  
       DB INFO   
       TYPE = Microsoft Excel-Treiber (*.xls) 
       PATH =    
       LTDB   
       DB INFO   
       TYPE = STANDARD 
       PATH = C:\Programme\Sunrise\CPAP\Data 
       ENABLE BCD = FALSE 
       DEFAULT DRIVER = PARADOX
    Alles anzeigen
  • Zertifikate für autoit.de-User

    • BugFix
    • 15. Oktober 2009 um 23:48
    Zitat von DeepRed92

    Ich meine nicht jeder User guckt sich alle Zeilen bei einem Script an und führt das stattdessen sofort aus.

    Aber in einer EXE kannst du sie nicht mal angucken. ;)

  • Textdatein durchsuchen

    • BugFix
    • 15. Oktober 2009 um 23:44

    ungetestet:

    [autoit]

    Local $INIread = 'logs.ini'
    Local $INIwrite = 'gefunden.ini'
    Local $arINI = IniReadSection($INIread, 'nummer')
    Local $arFile
    For $i = 1 To UBound($arINI) -1
    _FileReadToArray(@ScriptDir & '\' & $arINI[$i][1], $arFile)
    If @error Then
    ConsoleWrite('@error: ' & @error & @TAB & $arINI[$i][1] & @CRLF)
    ContinueLoop
    EndIf
    For $j = 1 To UBound($arFile) -1
    If StringInStr($arFile[$j], 'SUCHE') Then
    IniWrite($INIwrite, 'found', $arINI[$i][0], $arINI[$i][0])
    EndIf
    Next
    Next

    [/autoit]
  • BDE (Borland Database Engine) auslesen

    • BugFix
    • 15. Oktober 2009 um 22:44

    Ja, die IDAPI32.CFG ist schon eklig.
    Ich hab das mit den mir vorliegenden cfg's getestet. Bei denen waren zumindest logische Gruppierungen immer ab 'TYPE'.
    Intern ist auch kein Konzept ersichtlich. Die (Nicht-Text-) Zeichen 01, 02, 03, 04 überspringe ich, da sonst eine Textausgabe nicht möglich wär. Das sind u.A. Markierungen für Start of Text / End of Text - aber ohne logisch erkennbare Zusammenhänge zu den einzelnen Aliases.

    Wenn du bei dir konstante Längen zwischen den Elementen findest, kannst du diese zum Splitten verwenden. Eine andere Möglichkeit sehe ich nicht.
    Ich habe um Splitten zu können die ersten 3 Leerzeichen im String gebraucht (Alias-3 Leerzeichen-Restinfo). Da aber auch größere Lücken im String sind, würde mit StringSplit an allen diesen Stellen gesplittet werden. Somit habe ich StringReplace genutzt, da ich dort festlegen kann, dass nur das erste Vorkommen eines Strings verwendet wird. Also habe ich 3 Leerzeichen durch 3 Sternchen ersetzt und dann an den Sternchen gesplittet. ;)

  • Angekommen

    • BugFix
    • 15. Oktober 2009 um 22:25

    Auch von mir ein Welcome. Wir können bald eine "Graue AutoIt-Fraktion" bilden. :D
    Dann treten wir zur nächsten Wahl an. :rofl:

  • Lichtschalterkontrolle über PC

    • BugFix
    • 15. Oktober 2009 um 22:15

    Mit deinen 4 Ports kannst du 16 Zustände schalten. Also weitere Relais als AND-Glieder zuschalten und los gehts. ;)

    Code
    Port  Schaltzustände
    
    
    0 	= 2^0  = 1
    
    
    
    
    1	= 2^1  = 2
    
    
    
    
    2	= 2^2  = 4
    
    
    
    
    3	= 2^3  = 8
    ___________________________
    	summe 15 +1 (alles aus)
    Alles anzeigen
  • MenüStrip Grau bis etwas passiert

    • BugFix
    • 15. Oktober 2009 um 19:46
    [autoit]

    GUICtrlSetState(controlID, state) ; state = $GUI_ENABLE / $GUI_DISABLE

    [/autoit]
  • Programm "vorzeitig" beenden

    • BugFix
    • 15. Oktober 2009 um 19:07
    Beispiel
    [autoit]

    Global $count = 0, $max = 20 ; $max ist die maximale Anzahl der Durchläufe (Aufrufe)
    AdlibEnable('_msg', 1000) ; alle 1000 ms wird das Programm aufgerufen
    HotKeySet('!e', '_ende') ; Hotkey zum vorzeitigen Beenden: ALT + e

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

    While 1
    Sleep(100)
    WEnd

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

    Func _msg()
    $count += 1
    ConsoleWrite('Message #' & $count & @CRLF)
    If $count = $max Then
    AdlibDisable()
    Exit
    EndIf
    EndFunc

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

    Func _ende()
    ConsoleWrite("vorzeitig beendet" & @CRLF)
    AdlibDisable()
    Exit
    EndFunc

    [/autoit]
  • Browserfenster öffnen ohne Rahmen und Leiste

    • BugFix
    • 15. Oktober 2009 um 18:19

    Schau dir mal _IECreateEmbedded an.

  • Zertifikate für autoit.de-User

    • BugFix
    • 15. Oktober 2009 um 17:15

    Da wir im Talk sind, können wir das ja etwas breiter diskutieren. :)
    Ich bin der Meinung, das Sicherheitsempfinden sollte bei jedem weit höher angesetzt werden. Ob ich jemandem vertraue ist doch völlig nebensächlich - es kann sein, dass z.B. gerade ein neuer Virus aktiv wurde, dessen Signatur nicht erkannt wurde. Ungewollt schickt ein User das (seiner Meinung nach saubere) Programm in die Welt. Und nur weil er Vertrauen genießt, verbreitet sich so der Virus dankend weiter.
    Wenn schon fremde EXE, erst scannen und dann in der Sandbox starten.

  • Per Countdown ein laufendes Programm schliessen

    • BugFix
    • 15. Oktober 2009 um 17:08
    Zitat von ePole

    ..aber das bedeutet auch das auf jedem rechner auf dem meine exe funktionieren soll auch autoit installiert sein muss?

    Nein, die Includes werden beim Kompilieren in dein Skript eingebunden und stehen dann in der EXE zur Verfügung.

  • Per Countdown ein laufendes Programm schliessen

    • BugFix
    • 15. Oktober 2009 um 16:42

    Da fehlt das Include
    #Include <Timers.au3>

    Schau dir mal "OrganizeIncludes" von Xenobiologist an, damit kannst du die Includes automatisch organisieren.

  • Per Countdown ein laufendes Programm schliessen

    • BugFix
    • 15. Oktober 2009 um 16:24

    Ist nicht so schwer:

    [autoit]

    $maxIdle_min = 5 ; <== Minuten für Nixtun
    $pid = Run("C:\meine.exe")
    Do
    Sleep(100)
    Until _Timer_GetIdleTime() > $maxIdle_min*60*1000 ; da Rückgabe in ms: min * 60(s) * 1000 (ms)
    ProcessClose ($pid)

    [/autoit]
  • Neustart mit auto it Wichtige frage!

    • BugFix
    • 15. Oktober 2009 um 16:08
    Zitat von Moritz

    Ich habe bestimmt 12 programme die ablaufen sollen in einem script dann?

    Ja und? Das gehört sowieso in ein Array um es in einer Schleife abzuarbeiten (alles andere wäre ineffektiv).
    Vor der Installation legst du einen Eintrag für dein Installprogramm in RunOnce an.
    Das Programm muß mit Parameter gestartet werden (Index Installationsschritt), per default also 0 oder 1, je nachdem, wie du dein Array aufbaust.
    Also schreibst du vor jedem Installationsschritt den aktuellen Startparameter (Indexwert des Arrays) in die Registry und nach erfolgreicher Installation löschst du ihn sofort wieder.

  • Per Countdown ein laufendes Programm schliessen

    • BugFix
    • 15. Oktober 2009 um 15:53

    Inaktivität kannst du mit _Timer_GetIdleTime prüfen.
    Das Programm am Besten mit Run starten, dann bekommst du die PID zurück und kannst damit das Programm auch Beenden (ProcessClose).

  • Zertifikate für autoit.de-User

    • BugFix
    • 15. Oktober 2009 um 15:48

    Nun es ist letztlich jedem selbst überlassen, ob er Fremddateien (exe) ausführt.
    Nur ändert ein Zertifikat nichts an einer exe, sie kann trotzdem schadhaft sein (auch ungewollt).
    Ich finde, in einem Skriptforum haben exe-Dateien nichts verloren. Insofern stellt sich mir die Frage nach einer Zertifizierung eh nicht.
    Und einem Zertifikat traue ich auch nicht weiter, als ich ein Schwein werfen kann. ;)

  • BDE (Borland Database Engine) auslesen

    • BugFix
    • 15. Oktober 2009 um 13:42

    Im Schlüssel
    "HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS"
    findest du die Aliases als Unterschlüssel im Klartext.
    Zu jedem Unterschlüssel kannst du dann (sofern registriert) 'Langdriver' und 'Servername' auslesen.

    z.B. "INTRBASE"
    Key: "HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\INTRBASE"
    SubKey: "..\DB OPEN" und "INIT"
    Die Informationen sind in einem/beiden der SubKeys enthalten.
    Hier sind sie in: "..\DB OPEN"
    LANGDRIVER = DBWINWE0
    SERVER NAME = IB_SERVER:/PATH/DATABASE.GDB

    Edit:
    So kannst du die IDAPI32.CFG in Klartext wandeln:
    - noch etwas erweitert, nun werden zusammengehörige Daten etwas gruppiert

    Noch ein Edit: :D
    Ich empfehle dir aber die Registry auszulesen, da die IDAPI32.CFG z.B. die Langdriver nicht angibt, obwohl das Feld dafür vorgesehen ist.

    Spoiler anzeigen
    [autoit]

    $path = 'C:\GDILine\BDE\idapi32.cfg'
    $fh = FileOpen($path, 16)
    $read = StringTrimLeft(FileRead($fh), 2)
    FileClose($fh)
    $text = ''
    For $i = 1 to StringLen($read)-2 Step 2
    $tmp = Dec(StringMid($read, $i, 2))
    Switch $tmp
    Case 0
    $tmp = 32
    Case 1,2,3,4
    ContinueLoop
    EndSwitch
    $text &= Chr($tmp)
    Next
    $ar_text = StringSplit($text, 'TYPE', 1)

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

    Local $a_BDE[UBound($ar_text)-2][2]
    For $i = 2 To UBound($ar_text) -1
    $ar_text[$i] = StringReplace($ar_text[$i], ' ', '***', 1, 1)
    $tmp = StringSplit($ar_text[$i], '***', 1)
    $a_BDE[$i-2][0] = $tmp[1]
    $a_BDE[$i-2][1] = $tmp[2]
    $tmp = StringSplit($a_BDE[$i-2][1], ' ', 1)
    If @error Then ContinueLoop
    ConsoleWrite('==========' & $a_BDE[$i-2][0] & '==========' & @CRLF)
    For $j = 1 To UBound($tmp) -1
    ConsoleWrite($tmp[$j] & @CRLF)
    Next
    Next

    [/autoit]
  • Datei erstellen

    • BugFix
    • 15. Oktober 2009 um 11:51
    Zitat von aranha

    oder wirklich der erste der eine Datei erstellen will...

    ..eine leere Datei erstellen - was soll das für einen Sinn haben? ==> Keinen, und deshalb hats noch niemand getan.
    Wenn die Datei nicht existiert, wird sie automatisch erstellt.

    [autoit]

    $file = 'Pfad_der_Datei'
    $fh = FileOpen($file, 1) ; "When opening a file in write mode, the file will be created if it does not exist."

    [/autoit]
  • RegExp Pattern.....

    • BugFix
    • 15. Oktober 2009 um 11:26

    Da die Ausdrücke im gesuchten Bereich konstante Längen haben, kannst du dir auch _StringBetween schenken und mit den schnelleren Stringfunktionen arbeiten:

    [autoit]

    $s = "CN=S0myT001,OU=Servers,OU=_Global,OU=E0my,DC=test,DC=my,DC=net Terminal Server"
    $select = StringTrimLeft(StringLeft($s, 11), 3)
    ConsoleWrite('$select = ' & $select & @crlf)

    [/autoit]

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™