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

  • 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]
  • WIN NEU-AB-RU Manager

    • BugFix
    • 15. Oktober 2009 um 01:04

    @slin: Das Forum hier heißt Skripte und nicht Links zu Downloads.
    Wenn du uns etwas zeigen willst, kannst du es hier auch posten.

  • Autostart Laufwerke

    • BugFix
    • 12. Oktober 2009 um 00:12
    Zitat von DjDominik

    Mich wundert immer Welche Tollen Ideen du doch Hast.


    Mich auch :rofl:
    Scherz beiseite, ich habe eine Projektliste, in der ich meine Ideen verewige. Und die wird immer länger. Solch kleine Sachen, wie das hier macht man ja mal nebenbei. Aber etwas komplexeres, wie z.B. meine ListviewFormat-UDF hat insgesamt etwa 1/2 Jahr Arbeit geschluckt.
    Und der Tag hat leider nur 24 h. ;)

  • Autostart Laufwerke

    • BugFix
    • 10. Oktober 2009 um 14:54

    Da man im Windows XP Home ja keine Gruppenrichtlinien hat um den Autostart der Laufwerke zu managen, habe ich mal ein kleines Tool dafür erstellt, das den entsprechenden Registryeintrag ausliest und neu setzt.
    Standardmäßig wird auf Eintrag unter HKCU geprüft, falls dort nichts steht, wird HKLM verwendet.
    Gerade für Wechseldatenträger (die meisten USB-Sticks werden als solche erkannt) und USB-Festplatten (werden als Festplatten erkannt) macht es Sinn den Autorun zu deaktivieren.
    Steckt man z.B. eine 500 GB externe Platte an, die auch noch voll ist, kann man Kaffe trinken gehen, bis die vom Autorun eingelesen wurde. :D
    Zum Anderen bietet die autorun.inf gerne Schädlingen Unterschlupf :cursing: (Möchte nicht wissen, wie oft Conficker sich allein durch Anstöpseln von USB-Sticks vermehrt hat.)

    Edit: Nicht vergessen - geänderte Einstellungen werden erst mit einem Neustart aktiv. ;)
    Edit 2: Ich bin grad total perplex. :wacko: Hab das an einem andren PC probiert - ohne Wirkung. ?( Kann jemand von euch Erfolg vermelden?

    Hier der kleine Helfer:

    Spoiler anzeigen
    [autoit]

    #cs
    Bit Wert Bedeutung Standardwert

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

    7 128 reserviert und immer gesetzt 1
    6 64 Autostart für RAM-DISK 0
    5 32 Autostart für CD-ROM 0
    4 16 Autostart für Netzwerklaufwerke 1
    3 8 Autostart für feste Datenträger (Festplatte) 0
    2 4 Autostart für wechselbare Datenträger (z.B. Diskettenlaufwerk) 1
    1 2 Laufwerk ohne Root 0
    0 1 Autostart für unbekannte Laufwerkstypen 1

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

    Hex-Wert: Standard 95
    #ce

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $aCB[7][2]
    Global $RegKey = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
    Global $Value = "NoDriveTypeAutoRun"
    Global $CurrentSet = RegRead($RegKey, $Value)
    If @error Then $RegKey = 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
    $CurrentSet = RegRead($RegKey, $Value)
    If @error Then $CurrentSet = 0x00000095

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

    $GUI = GUICreate("Autorun - Settings", 392, 252, 266, 134)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUIClose")
    $Group1 = GUICtrlCreateGroup("", 15, 9, 360, 226)
    $aCB[0][0] = GUICtrlCreateCheckbox("RAM-Disk", 45, 39, 80, 17)
    $aCB[1][0] = GUICtrlCreateCheckbox("CD-ROM", 45, 66, 100, 17)
    $aCB[2][0] = GUICtrlCreateCheckbox("Netzlaufwerke", 45, 93, 100, 17)
    $aCB[3][0] = GUICtrlCreateCheckbox("Festplatte", 45, 120, 100, 17)
    $aCB[4][0] = GUICtrlCreateCheckbox("Wechseldatenträger", 45, 147, 140, 17)
    $aCB[5][0] = GUICtrlCreateCheckbox("Laufwerk ohne Root", 45, 174, 140, 17)
    $aCB[6][0] = GUICtrlCreateCheckbox("Unbekannte Laufwerke", 45, 201, 140, 17)
    $btSet = GUICtrlCreateButton("Neu Setzen", 240, 39, 110, 20, $WS_GROUP)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetOnEvent(-1, "btSetClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    For $i = 0 To 6
    GUICtrlSetOnEvent($aCB[$i][0], "cbClick")
    $aCB[$i][1] = 2^(6-$i)
    Next
    GUISetState(@SW_SHOW)

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

    _MarkCB()

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

    While 1
    Sleep(100)
    WEnd

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

    Func GUIClose()
    Exit
    EndFunc

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

    Func cbClick()
    If BitAND(GUICtrlGetState($btSet), $GUI_DISABLE) Then GUICtrlSetState($btSet, $GUI_ENABLE)
    EndFunc

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

    Func btSetClick()
    Local $val = 0
    For $i = 0 To 6
    If BitAND(GUICtrlRead($aCB[$i][0]), $GUI_CHECKED) Then
    $val += $aCB[$i][1]
    EndIf
    Next
    RegWrite($RegKey, $Value, 'REG_DWORD', '0x' & Hex($val+128, 8))
    GUICtrlSetState($btSet, $GUI_DISABLE)
    EndFunc

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

    Func _MarkCB()
    For $i = 0 To 6
    If BitAND($CurrentSet, $aCB[$i][1]) Then
    GUICtrlSetState($aCB[$i][0], $GUI_CHECKED)
    Else
    GUICtrlSetState($aCB[$i][0], $GUI_UNCHECKED)
    EndIf
    Next
    EndFunc

    [/autoit]

    Dateien

    Autostart_Drive.au3 2,62 kB – 530 Downloads
  • ListView Item - Rechtsklick Menü öffnen

    • BugFix
    • 7. Oktober 2009 um 21:20

    Tweaky: Bitte keine MsgBoxen in eine WM_Funktion. ;) Das crasht gern.

  • Prozess eindeutig identifizieren

    • BugFix
    • 7. Oktober 2009 um 20:19

    Ein laufender Prozess hat ein eineindeutiges Handle und eine ebenso eineindeutige PID.
    Je nach Funktion wird die PID oder das Handle benötigt.
    Hier mal ein Bsp., wie du das Handle eines Prozesses erhalten kannst. (Die PID zu erhalten ist ja bekannt)

    Edit: Sehe grad, ich habe etwas daneben gelegen ;). Das Handle wird nur erstellt, wenn es angefordert wird und anschließend verworfen. Es ist also nicht geeignet zur Identifikation.

    [autoit]

    Const $PROCESS_QUERY_INFORMATION = 0x400

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

    $PID = Run('calc.exe')
    $hProcess = OpenProcess($PROCESS_QUERY_INFORMATION, False, $PID)
    ConsoleWrite('$hProcess "calc.exe": ' & $hProcess & @CRLF)

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

    Func OpenProcess($dwDesiredAccess, $bInheritHandle, $dwProcessId)
    Local $ret = DllCall("kernel32", 'long', 'OpenProcess', 'long', $dwDesiredAccess, _
    'long', $bInheritHandle, 'long', $dwProcessId)
    Return $ret[0]
    EndFunc

    [/autoit]
  • Alle Unterschlüssel eines Registry Pfades herausbekommen

    • BugFix
    • 5. Oktober 2009 um 22:35

    Es gibt auch noch andere Möglichkeiten ;) Registry-Funktionen per Objekt

  • Wie finde ich raus, ob eine Variable eine IP ist?

    • BugFix
    • 4. Oktober 2009 um 19:43
    [autoit]

    If Not StringRegExp($input, '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b') Then _
    MsgBox(0, '', 'Das ist keine IP!')

    [/autoit]
  • ArrayMore.au3

    • BugFix
    • 4. Oktober 2009 um 18:39
    Zitat von Tweaky

    (meistens ja 1 und nicht 0)


    :D Meine Arrays gehen bei 0 los.
    Werd ich mal noch einbauen, kein Problem.

  • Potenz rechner(brauche verkürzung des scripts)

    • BugFix
    • 3. Oktober 2009 um 09:03

    :D Paßt alles in eine Zeile:

    [autoit]

    MsgBox(0, 'Ergebnis', InputBox('Potenzrechnung', 'Basis') ^ InputBox('Potenzrechnung', 'Exponent'))

    [/autoit]

    und das hier ist auch viel flexibler. 8o

  • Probleme mit nem kleinem Spiel [Wieder so ein "Ich steh voll auf der Leitung Prob" xD]

    • BugFix
    • 2. Oktober 2009 um 22:09

    Hi,
    ich hatte mal eine Stoppuhr gebastelt, da kannst du dir anschauen, wie es geht.
    Der Code ist noch etwas verbugt (hatte nicht weitergemacht), aber das Prinzip wird deutlich.

    Spoiler anzeigen
    [autoit]

    #include<EditConstants.au3>
    #include<GUIConstantsEx.au3>
    Global $start, $UsedTime, $diff_Alt = 0
    Global $SetTime = False, $Break = False, $Pause = False, $Run = True
    Global $colBG = 0x0000FF, $colFont = 0xFFEA00

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

    $GUI = GUICreate('Stoppuhr', 400, 100, -1, -1)
    $Time = GUICtrlCreateInput('00:00:00,000', 100, 20, 200, 20, BitOR($ES_CENTER,$ES_READONLY))
    GUICtrlSetBkColor(-1, $colBG)
    GUICtrlSetColor(-1, $colFont)
    $bStart = GUICtrlCreateButton('Start', 40, 60, 80, 20)
    $bBreak = GUICtrlCreateButton('Unterbrechen', 160, 60, 80, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $bPause = GUICtrlCreateButton('Pause', 280, 60, 80, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUISetState()

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

    While True
    $msg = GUIGetMsg()
    If $SetTime Then $UsedTime = SetTime()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $bStart ; Start/Stop Messung absolut
    $Run = Not $Run
    If $Run Then
    $SetTime = False
    SetTime()
    GUICtrlSetData($bStart, 'Start')
    GUICtrlSetState($bBreak, $GUI_DISABLE)
    GUICtrlSetState($bPause, $GUI_DISABLE)
    Else
    GUICtrlSetData($Time, '00:00:00,000')
    $SetTime = True
    $start = TimerInit()
    GUICtrlSetData($bStart, 'Stop')
    GUICtrlSetState($bBreak, $GUI_ENABLE)
    GUICtrlSetState($bPause, $GUI_ENABLE)
    EndIf
    Case $bBreak ; nur Anzeige wird angehalten (z.B. Rundenmessung)
    $Break = Not $Break
    If $Break Then
    $SetTime = False
    GUICtrlSetData($bBreak, 'Fortsetzen')
    GUICtrlSetState($bPause, $GUI_DISABLE)
    Else
    $SetTime = True
    GUICtrlSetData($bBreak, 'Unterbrechen')
    GUICtrlSetState($bPause, $GUI_ENABLE)
    EndIf
    Case $bPause ; Messung wird angehalten (Additionsmessung)
    $Pause = Not $Pause
    If $Pause Then
    $diff_Alt = $UsedTime ; abgelaufene Zeit aufaddieren
    $SetTime = False
    GUICtrlSetData($bPause, 'Weiter')
    GUICtrlSetState($bBreak, $GUI_DISABLE)
    Else
    $SetTime = True
    $start = TimerInit() ; Zeitmessung neu initialisieren
    GUICtrlSetData($bPause, 'Pause')
    GUICtrlSetState($bBreak, $GUI_ENABLE)
    EndIf
    EndSwitch
    WEnd

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

    Func SetTime()
    Local $diff = TimerDiff($start)/1000 + $diff_Alt
    Local $hour = 0
    Local $min = 0
    Local $sec = Floor($diff)
    Local $rest = ($diff-$sec)*1000
    Local $secShow, $minShow, $hourShow
    If $sec > 59 Then
    $min = Floor($sec/60)
    $secShow = Mod($sec, 60)
    ElseIf $sec > 3599 Then ; ???? testen
    $hourShow = Mod(Mod($sec,3600),60)
    $minShow = Floor(Mod($sec,3600)/60)
    $secShow = Floor($sec/3600)
    Else
    $secShow = $sec
    $minShow = $min
    $hourShow = $hour
    EndIf
    GUICtrlSetData($Time, StringFormat('%02u', $hourShow) & ':' & StringFormat('%02u', $minShow) & ':' & StringFormat('%02u', $secShow) & ',' & StringFormat('%03u', $rest))
    Return $diff ; gibt abgelaufene Zeit als absolute Differenz zurück
    EndFunc

    [/autoit]
  • txt daten auslesen

    • BugFix
    • 2. Oktober 2009 um 22:00

    Da gibt es eine einfachere Lösung (statt $text halt "FileRead(deine_Datei)")

    [autoit]

    #include <array.au3>
    $text = _
    '10/02/2009 02:00:00 2 ankauf 12 1 ' & @CRLF & _
    '13/02/2009 08:00:00 2 verkauf 13 0 0' & @CRLF & @CRLF & _
    '14/02/2009 05:00:00 5 ankauf 14 1 ' & @CRLF & _
    '14/02/2009 10:00:00 5 verkauf 12 0 0' & @CRLF & @CRLF & _
    '16/02/2009 06:00:00 6 ankauf 12 1 ' & @CRLF & _
    '18/02/2009 12:00:00 6 verkauf 13 0 0' & @CRLF & @CRLF & _
    '19/02/2009 07:00:00 7 ankauf 12 1 ' & @CRLF & _
    '19/02/2009 08:00:00 8 verkauf 14 0 0'

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

    $pattern = '(\d{2}:\d{2}:\d{2})(?:\s+\d+\s+)(\w+)'
    $ret = StringRegExp($text, $pattern, 3)
    ;~ _ArrayDisplay($ret)

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

    MsgBox(0, 'Letzte Zeile', $ret[UBound($ret)-2] & ' ' & $ret[UBound($ret)-1])

    [/autoit]

    Falls die Leerbereiche evtl. Tabs enthalten, müßte das Pattern im RegEx angepaßt werden.

  • Rechtsklick auf Controls auswerten

    • BugFix
    • 2. Oktober 2009 um 20:46

    Und noch mal zum Sinn:
    Somit kann man auch jedem Control ein Kontextmenü zuordnen (das geht nämlich standardmäßig nur bei wenigen) und das macht sehr viel Sinn.
    Bsp.: Individuelle Gestaltung einer GUI durch den User
    - Rechtsklick auf den Hintergrund: wird ihm Farbwechsel oder Hintergrundbild angeboten
    - Rechtsklick auf Button: Farbwechsel oder Image
    usw.

  • Hilfe für Aito-It Anfänger

    • BugFix
    • 1. Oktober 2009 um 23:26

    Es gibt in AutoIt eine hervorragend dokumentierte Hilfe. Vielleicht solltest du dir mal die Mühe machen und in SciTE 'For' eintippen, mit dem Cursor draufgehen und F1 drücken. Dann kannst du alles nachlesen.

  • Hilfe für Aito-It Anfänger

    • BugFix
    • 1. Oktober 2009 um 23:02

    Du kannst eine Schleife verwenden:

    [autoit]

    For $i = 1 To 5
    ; dein Befehl
    Next

    [/autoit]
  • Hilfe für Aito-It Anfänger

    • BugFix
    • 1. Oktober 2009 um 22:48

    In Bezug auf Send?
    z.B. sende 5 mal 's' : Send('{s 5}')

  • Hilfe für Aito-It Anfänger

    • BugFix
    • 1. Oktober 2009 um 22:30
    Zitat von Keks22

    Send("$deinevariable")

    [autoit]

    Send($deinevariable)

    [/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™