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

Beiträge von McPoldy

  • Autoit Und Special Zeichen Wo ist da das Problem ?

    • McPoldy
    • 7. März 2008 um 21:14

    Und das willst du wirklich :rofl:

    Spoiler anzeigen
    [autoit]


    ; Brauch ich für das einlesen der Datei und das schreiben
    #include <File.au3>

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

    ; Brav alle Variablen deklarieren
    Local $filename = @ScriptDir & '\testdatei.txt' ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $newEXP = "»"; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen

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

    ; Hier wird die Datei eingelesen und in ein Array gepackt
    _FileReadToArray($filename,$meinarray)

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

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann
    For $nLfd = 1 To $meinarray[0]
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'(\))','' & $newEXP & '')
    Next

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

    ; Da (falls gefunden) die Ersetzung im Array stattgefunden hat, muss ich
    ; das Array wieder in die Datei schreiben
    _FileWriteFromArray($filename,$meinarray,1,$meinarray[0])

    [/autoit]
    Kurzbeispiel
    [autoit]


    $str = '(group (index 101) (money (920 200)) (item (960 443 0) (1000 47 0)))'
    If Not @error AND IsArray($arr) Then
    $alterWert = StringRegExpReplace($str,'(\))',';;')
    ConsoleWrite($alterWert & @LF)
    EndIf

    [/autoit]

    Das war der Ursprung: (group (index 101) (money (920 200)) (item (960 443 0) (1000 47 0)))
    Das kommt raus: (group (index 101;; (money (920 200;;;; (item (960 443 0;; (1000 47 0;;;;;;

  • bestimmte stelle aus txt auslesen

    • McPoldy
    • 7. März 2008 um 21:06

    Mist, du bist zuuuu schnell :) habe mir grade dein oberes Skript angeschaut, kannste aber auch auf dein neues anwenden :)

    Spoiler anzeigen
    [autoit]


    #include <File.au3>

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

    ; Brav alle Variablen deklarieren
    Local $filename = @ScriptDir &"ItemGroup.txt" ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $meinarray1
    Local $newEXP ; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen
    Local $nLfd1
    Local $alterWert ; Für den alten Wert
    Local $Multiplikator = 10 ; Mit was * genommen werden soll
    Local $arr ; Hilfs - Array
    Local $hFile ; FileHandle

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

    $hFile = FileOpen($filename,0) ; Datei zum lesen öffnen
    _FileReadToArray($filename,$meinarray) ; Hier wird die Datei eingelesen und in ein Array gepackt
    FileClose($hFile) ; Datei schliessen

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

    ; Datei zum schreiben öffnen
    $hFile = FileOpen($filename,2)

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

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann

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

    For $nLfd = 1 To $meinarray[0]
    $arr = StringRegExp($meinarray[$nLfd],'\(money \((920 200)\)\)',3) ;<= hier war zuviel :)
    If Not @error AND IsArray($arr) Then
    ;~ $alterWert = $arr[0]
    ;~ $newEXP = $alterWert * $Multiplikator ;<= kann nicht gehen, in $arr[0] steht 920 200 und du willst beide Zahlen mal nehmen :(
    $alterWert = StringSplit($arr[0],' ')
    $newEXP = String($alterWert[1] * $Multiplikator) & ' ' & String($alterWert[2] * $Multiplikator)
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'\(money \((920 200)\)\)','(money (' & $newEXP & '))') ;<= hier war zuviel :)
    EndIf
    If $nLfd <> $meinarray[0] Then $meinarray[$nLfd] &= @CRLF
    FileWrite($hFile,$meinarray[$nLfd])
    Next
    ; Datei schliessen
    FileClose($hFile)

    [/autoit]
  • bestimmte stelle aus txt auslesen

    • McPoldy
    • 7. März 2008 um 20:51

    Hab deines jetzt gar nicht gelesen :( aber habe mal meine Funktion etwas angepasst:

    Spoiler anzeigen
    [autoit]


    ; Dateiname, der Wert der ersetzt werden soll, der neue Wert
    _ErsetzeMoney(@ScriptDir & '\ItemGroup.txt','9200 2000','920 200')

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

    Func _ErsetzeMoney($file,$alterWert,$neuerWert)
    Dim $oFileInput = FileOpen($file,0)
    Dim $oFileOutput = FileOpen($file & '.tmp',2)
    Dim $lineInput, $lineOutput
    Dim $arrInput
    $lineInput = FileReadLine($oFileInput)
    While @error <> -1
    $arrInput = StringRegExp($lineInput,'\(money \((' & $alterWert & ')\)\)',3)
    If not @error Then
    ConsoleWrite($arrInput[0] & @LF)
    $lineOutput = StringRegExpReplace($lineInput,'\(money \((' & $alterWert & ')\)\)','\(money (' & $neuerWert & '))')
    Else
    $lineOutput = $lineInput
    EndIf
    FileWriteLine($oFileOutput,$lineOutput)
    $lineInput = FileReadLine($oFileInput)
    WEnd
    FileClose($oFileInput)
    FileClose($oFileOutput)
    FileDelete($file)
    FileMove($file & '.tmp',$file)
    EndFunc

    [/autoit]
  • bestimmte stelle aus txt auslesen

    • McPoldy
    • 7. März 2008 um 20:32

    Probier es mal so, habe jetzt keine Ahnung ob du alle ändern willst de den money Wert entsprechen oder nur den aus eine bestimmten Gruppe, das folgende Skript durchsucht die ganze Datei.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    _ErsetzeMoney(@ScriptDir & '\ItemGroup.txt')

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

    Func _ErsetzeMoney($file)
    Dim $oFileInput = FileOpen($file,0)
    Dim $oFileOutput = FileOpen($file & '.tmp',2)
    Dim $lineInput, $lineOutput
    Dim $arrInput
    $lineInput = FileReadLine($oFileInput)
    While @error <> -1
    $arrInput = StringRegExp($lineInput,'\(money \((920 200)\)\)',3)
    If not @error Then
    $lineOutput = StringRegExpReplace($lineInput,'\(money \((920 200)\)\)','(money ((9200 2000))')
    Else
    $lineOutput = $lineInput
    EndIf
    FileWriteLine($oFileOutput,$lineOutput)
    $lineInput = FileReadLine($oFileInput)
    WEnd
    FileClose($oFileInput)
    FileClose($oFileOutput)
    FileDelete($file)
    FileMove($file & '.tmp',$file)
    EndFunc

    [/autoit]
  • MSN für Kinder Zeitlich begrenzen (Prozess loggen und automatisch beenden)

    • McPoldy
    • 6. März 2008 um 21:34

    Nabend, das ist gar nicht so einfach, das Zeitlimit ist nicht das Problem, nur zwei andere Sachen.

    1. Der MSN Messanger wird i. d. R. mit Windows gestartet, gut müsste man prüfen ob er online ist.
    2. Die Kids laden sich mal eben Pidgin, Miranda, etc. und gehen damit chatten :)

    Die Frage ist also ist so ein Skript sinnvoll?

  • TFT Auflösung ändern

    • McPoldy
    • 6. März 2008 um 21:30

    So hier noch einmal eine geänderte Version für Anna, sie hatte gefragt ob es auch möglich ist abzufangen wenn eine nicht verfügbare Auflösung angegeben wird. Ich habe mir mal zwei Lösungsansätze überlegt, der erste war, ich könnte das Regler schieben auf ein Maximumwert begrenzen und dann abbrechen, hat mir nicht gefallen. Die zweite ist die ich hier mal bereit stelle, sie ist mittels WMI. Ich schaue erst einmal wieviele Farben ich eingestellt habe und dann noch die Frequenz. Nun prüfe ich ob der eingegebene Wert ein möglicher Wert ist, falls ja wird geändert, falls nein wird eine Meldung ausgegeben.

    Ich habe jetzt nur ein System mit einer Grafikkarte, mich würde interessieren ob es auch bei Leuten geht die zwei haben (eine OnBoard die nicht im Bios deaktiviert wurde und eine PCI-E, AGP,etc.).

    Spoiler anzeigen
    [autoit]


    #include <String.au3>
    Global $Regler_ID = 1808
    Global $Size_ID = 1814
    Global $bt_Uebernehmen = 12321
    Global $bt_OK = 1
    Global $txt
    Global $Width = 1680
    Global $Height = 1050
    Global $CurrentRefreshRate
    Global $CurrentNumberOfColors

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

    If _Aufloesungen($Width,$Height) Then
    _ChangeSettings()
    Else
    MsgBox(48,'Info','Die von Ihnen gewählte Auflösung von ' & $Width & ' X ' & $Height & ' wird nicht unterstützt.',10)
    EndIf

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

    Exit 0

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

    Func _ChangeSettings()
    Run("control.exe DESK.CPL,,3")
    WinWaitActive('Eigenschaften von Anzeige')
    ControlCommand("Eingenschaften von Aneige", "Farbqualität", "ComboBox2", "SelectString", "Mittlere (16 Bit)")

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

    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)

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

    While $txt <> $Width & ' x ' & $Height & ' Pixel'
    ;hier hole ich mir der ersten wert von der aktuellen einstellung
    $curWidth = Number(StringStripWS(StringLeft($txt,StringInStr(StringStripWS($txt,3),'x') - 1),3))
    $curHeight = Number(StringStripWS(_StringBetween($txt,'x','Pixel'),3))


    ;ist die aktuelle einstellung grösser dann bitte nach links mit dem regeler
    If $curWidth > $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    ;falls kleiner nach rechts
    ElseIf $curWidth < $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    ElseIf $curWidth = $Width AND $curHeight > $Height Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    ElseIf $curWidth = $Width AND $curHeight < $Height Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    EndIf
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
    WEnd

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

    ControlClick('Eigenschaften von Anzeige', '', $bt_Uebernehmen)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)

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

    If WinWaitActive("Monitoreinstellungen", "Sie haben die Auflösung neu konfiguriert. Möchten Sie diese Einstellungen beibehalten?",5) = 1 Then
    ControlClick("Monitoreinstellungen", "Sie haben die Auflösung neu konfiguriert. Möchten Sie diese Einstellungen beibehalten?", "Button2",1)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)
    EndIf
    EndFunc

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

    Func _CurrentSettings()
    Dim $Obj_WMIService = ObjGet('winmgmts:\\' & @ComputerName & '\root\cimv2')
    If (IsObj($Obj_WMIService)) And (Not @error) Then
    Dim $Col_Items = $Obj_WMIService.ExecQuery('Select * from Win32_VideoController')
    Local $Obj_Item
    For $Obj_Item In $Col_Items
    $CurrentRefreshRate = $Obj_Item.CurrentRefreshRate
    $CurrentNumberOfColors = $Obj_Item.CurrentNumberOfColors
    Return True
    Next
    EndIf
    EndFunc

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

    Func _Aufloesungen($HorizontalResolution,$VerticalResolution)
    _CurrentSettings()
    Dim $Obj_WMIService = ObjGet('winmgmts:\\' & @ComputerName & '\root\cimv2')
    If (IsObj($Obj_WMIService)) And (Not @error) Then
    Dim $Col_Items = $Obj_WMIService.ExecQuery('Select * from CIM_VideoControllerResolution where NumberOfColors = "' & $CurrentNumberOfColors & '" AND RefreshRate = "' & $CurrentRefreshRate & '"')

    Local $Obj_Item
    For $Obj_Item In $Col_Items
    If $Obj_Item.HorizontalResolution = $HorizontalResolution And $Obj_Item.VerticalResolution = $VerticalResolution Then Return True
    Next
    EndIf
    Return False
    EndFunc

    [/autoit]
  • TFT Auflösung ändern

    • McPoldy
    • 6. März 2008 um 08:09

    Moin Anna,

    was ist ein lukas fan ?( bin also keiner, glaube ich :D .

    Das #include <String.au3> brauch ich um das _StringBetween nutzen zu können. Kurz zur Erklärung das _StringBetween ist eine User Defined Function (UDF) da man diese ja mal öfter benötigt werden diese in weiteren AutoIT Dateien ausgelagert, wäre ja doof wenn man immer alles noch mal tippen müsste :). Was macht also das #include es läd quasi die Datei String.au3 mit in dein Skript so das du zwar nicht die genaue Funktion siehst aber sie trozdem benutzen kannst. Es gibt viele von diesen Dateien die bereits mit AutoIT auf dein System kommen, wenn du nun z. B. die String.au3 im Verzeichnis <AutotIT Installationspfad>\Include aufmachst und mal nach _StringBetween suchst, siehst du was diese Funktion genau macht.

  • bestimmte stelle aus txt auslesen

    • McPoldy
    • 5. März 2008 um 19:06

    Ich habs schon immer gesagt, ich mag keine Käfer ;)

    So hier noch mal der Quelltext mit ersetzten FileWriteLine, auch wenn ich von der Logik nicht verstehe das einfach noch eine Zeile hinten dran kommt wenn ich im Mode 3 die Datei öffne.

    Spoiler anzeigen
    [autoit]


    ; Brauch ich für das einlesen der Datei und das schreiben
    #include <File.au3>

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

    ; Brav alle Variablen deklarieren
    Local $filename = @ScriptDir & '\testdatei.txt' ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $newEXP ; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen
    Local $alterWert ; Für den alten Wert
    Local $Multiplikator = 3 ; Mit was * genommen werden soll
    Local $arr ; Hilfs - Array
    Local $hFile ; FileHandle

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

    $hFile = FileOpen($filename,0) ; Datei zum lesen öffnen
    _FileReadToArray($filename,$meinarray) ; Hier wird die Datei eingelesen und in ein Array gepackt
    FileClose($hFile) ; Datei schliessen

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

    ; Datei zum schreiben öffnen
    $hFile = FileOpen($filename,2)

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

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann
    For $nLfd = 1 To $meinarray[0]
    $arr = StringRegExp($meinarray[$nLfd],'\(exp (\d\d)\)',3)
    If Not @error AND IsArray($arr) Then
    $alterWert = $arr[0]
    $newEXP = $alterWert * $Multiplikator
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'\(exp (\d\d)\)','(exp ' & $newEXP & ')')
    EndIf
    If $nLfd <> $meinarray[0] Then $meinarray[$nLfd] &= @CRLF
    FileWrite($hFile,$meinarray[$nLfd])
    Next

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

    ; Datei schliessen
    FileClose($hFile)

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

    ;FERITG
    Exit

    [/autoit]
  • TFT Auflösung ändern

    • McPoldy
    • 5. März 2008 um 19:00

    Jau geht auch, unter den letzten ContrlClick folgendes rein:

    If WinWaitActive('','Sie haben die Einstellungen neu konfiguriert. Möchten Sie diese einstellung beibehalten',5) = 1 Then ControlClick('','Sie haben die Einstellungen neu konfiguriert. Möchten Sie diese einstellung beibehalten','','left',1)

    Bitte noch ergänzen, da bei mir grade die Abfrage nicht komme :( es muss noch die ContollID vom Ja Button rein.

  • Einfache Druckerauswahlliste

    • McPoldy
    • 5. März 2008 um 15:29

    Heute werde ich das wohl nicht mehr schaffen, mein Ansatz wäre gewesen:
    1. Std. Drucker auslesen und merken
    2. Alle vorhandenen Drucker auslesen und in einer DropDown Liste anzeigen (WMI)
    3. Wenn sich die Auswahl ändert, den Std. Drucker neu setzen (auf den ausgewählten)
    4. Drucken so wie du es jetzt auch machst, schätze über diese excel.au3 oder wie die udf heißen mag
    5. Wenn gedruckt/GUI geschlossen, dann Standartdrucker wieder zurück setzen

    vielleicht hat ja jemand noch eine andere Idee oder möchte das mal umsetzen.


    [EDIT]
    Das hier ist mir so spontan noch grade eingefallen:

    Spoiler anzeigen
    [autoit]

    #Include <WinAPI.au3>
    #Include <Array.au3>

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

    Local $arrayPrinter[1]
    Local $stdPrinter = ''
    Local $File = 'c:\boot.ini'

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

    _GetPrinterWMI($arrayPrinter)
    _ArrayDisplay($arrayPrinter)
    _print('c:\boot.ini','Microsoft Office Document Image Writer')

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

    Func _print($datei = $File,$drucker = $stdPrinter)
    _WinAPI_SetDefaultPrinter($drucker)
    RunWait('notepad /p ' & $datei,@TempDir,@SW_HIDE)
    _WinAPI_SetDefaultPrinter($stdPrinter)
    EndFunc

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

    Func _GetPrinterWMI(ByRef $arrayPrinter)
    ReDim $arrayPrinter[1]
    Dim $Obj_WMIService = ObjGet('winmgmts:\\' & @ComputerName & '\root\cimv2')

    If (IsObj($Obj_WMIService)) And (Not @error) Then
    Dim $Col_Items = $Obj_WMIService.ExecQuery('Select * from Win32_Printer')

    Local $Obj_Item
    For $Obj_Item In $Col_Items
    If $Obj_Item.Default = -1 Then
    $stdPrinter = $Obj_Item.DeviceID
    $arrayPrinter[0] = $Obj_Item.DeviceID
    Else
    _ArrayAdd($arrayPrinter,$Obj_Item.DeviceID)
    EndIf
    Next
    EndIf
    EndFunc

    [/autoit]
  • TFT Auflösung ändern

    • McPoldy
    • 5. März 2008 um 14:15

    jau, hast recht, nun aber :D

    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    Global $Regler_ID = 1808
    Global $Size_ID = 1814
    Global $bt_Uebernehmen = 12321
    Global $bt_OK = 1
    Global $txt
    Global $Width = 1280
    Global $Height = 1024

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

    Run("control.exe DESK.CPL,,3")
    WinWaitActive('Eigenschaften von Anzeige')
    ControlCommand("Eingenschaften von Aneige", "Farbqualität", "ComboBox2", "SelectString", "Mittlere (16 Bit)")

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

    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)

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

    While $txt <> $Width & ' x ' & $Height & ' Pixel'
    ;hier hole ich mir der ersten wert von der aktuellen einstellung
    $curWidth = Number(StringStripWS(StringLeft($txt,StringInStr(StringStripWS($txt,3),'x') - 1),3))
    $curHeight = Number(StringStripWS(_StringBetween($txt,'x','Pixel'),3))


    ;ist die aktuelle einstellung grösser dann bitte nach links mit dem regeler
    If $curWidth > $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    ;falls kleiner nach rechts
    ElseIf $curWidth < $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    ElseIf $curWidth = $Width AND $curHeight > $Height Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    ElseIf $curWidth = $Width AND $curHeight < $Height Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    EndIf
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
    WEnd

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

    ControlClick('Eigenschaften von Anzeige', '', $bt_Uebernehmen)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)

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

    If WinWaitActive("Monitoreinstellungen", "Sie haben die Auflösung neu konfiguriert. Möchten Sie diese Einstellungen beibehalten?",5) = 1 Then
    ControlClick("Monitoreinstellungen", "Sie haben die Auflösung neu konfiguriert. Möchten Sie diese Einstellungen beibehalten?", "Button2",1)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)
    EndIf

    [/autoit]

    [Edit]: Ich habe den Eintrag im Code nach Annas Posting (siehe unten) erweitert.

  • Bild um 90 Grad drehen

    • McPoldy
    • 5. März 2008 um 13:47

    Ja das ist schon richtig, ich nutze das auch nur um weiter zu lernen. Was ich damit meine, wenn man auch so manche unsinnigen sachen wie das hier macht, lernt man doch immer neu Funktionen kennen. Ich persöhnlich würde mir zum drehen von vielen Bildern IrFanView nehmen, oder sonst irgend ein Tool. (Keine Ahnung ob es mit IrFan geht, schon lange nicht mehr benutzt)

    [Edit]: Ja das drehen geht bei IrFan als Batch

  • GUI Systemweit

    • McPoldy
    • 5. März 2008 um 13:39

    Ja
    Nein

    Gute Antwort, oder? Genauso Informativ wie deine Frage, schreib doch etwas genauer was du meinst :)

  • Einfache Druckerauswahlliste

    • McPoldy
    • 5. März 2008 um 13:26

    Sorry, da fällt mir so spontan nix ein, dachte an sowas wie eine DropDown Liste, das wäre wohl auf die schnelle hin zu bekommen, aber den normalen Dialog aufrufen. Es geht mit Sicherheit also lasse ich mal die Profis ran :)

  • Bild um 90 Grad drehen

    • McPoldy
    • 5. März 2008 um 13:18

    Xenobiologist : Wenn er das bei 100 Dateien machen will, dann macht es schon Sinn ;)

    Hier mal mein Quelltext, ist aus der Hilfe, leicht abgeändert:

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>

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

    Local $hImage
    Local $sCLSID
    Local $tData
    Local $tParams
    Local $QuellDatei = 'test.jpg'
    Local $ZeilDatei = 'test90.jpg'

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

    ; GDI starten
    _GDIPlus_Startup ()
    ; Bild laden
    $hImage = _GDIPlus_ImageLoadFromFile ($QuellDatei)
    ; Für JPG Bilder muss folgende Zeile aktiv sein
    $sCLSID = _GDIPlus_EncodersGetCLSID ("JPG")
    ; Ab hier werden die Parameter gesetzt
    $tData = DllStructCreate("int Data")
    DllStructSetData($tData, "Data", $GDIP_EVTTRANSFORMROTATE90)
    $tParams = _GDIPlus_ParamInit (1)
    _GDIPlus_ParamAdd ($tParams, $GDIP_EPGTRANSFORMATION, 1, $GDIP_EPTLONG, DllStructGetPtr($tData, "Data"))
    ; Bild speichern
    _GDIPlus_ImageSaveToFileEx ($hImage, $ZeilDatei, $sCLSID, DllStructGetPtr($tParams))
    ; GDI beenden
    _GDIPlus_ShutDown ()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Kopiergeschwindigkeit beeinflussen

    • McPoldy
    • 5. März 2008 um 13:03

    ja wäre mal lustig, also ran und bau mal schnell ;)

  • TFT Auflösung ändern

    • McPoldy
    • 5. März 2008 um 12:55

    Ja, kann ich dir verraten: WEIL ICH FAUL BIN :D
    Nein im Ernst, ich prüfe nur auf den ersten Parameter nicht auf den zweiten, ich baue es gleich mal ein.


    EDIT: Bzw. baue was aus :pinch:

    habe mal das :
    ElseIf $curWidth < $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    raus genommen, dann sollte es gehen :)

    Spoiler anzeigen
    [autoit]


    Global $Regler_ID = 1808
    Global $Size_ID = 1814
    Global $bt_Uebernehmen = 12321
    Global $bt_OK = 1
    Global $txt
    Global $Width = 1680
    Global $Height = 1050

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

    Run("control.exe DESK.CPL,,3")
    WinWaitActive('Eigenschaften von Anzeige')
    ControlCommand("Eingenschaften von Aneige", "Farbqualität", "ComboBox2", "SelectString", "Mittlere (16 Bit)")

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

    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)

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

    While $txt <> $Width & ' x ' & $Height & ' Pixel'
    ;hier hole ich mir der ersten wert von der aktuellen einstellung
    $curWidth = Number(StringStripWS(StringLeft($txt,StringInStr(StringStripWS($txt,3),'x') - 1),3))

    ;ist die aktuelle einstellung grösser dann bitte nach links mit dem regeler
    If $curWidth > $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{LEFT}')
    ;falls kleiner nach rechts
    ElseIf $curWidth < $Width Then
    ControlSend('Eigenschaften von Anzeige', '', $Regler_ID, '{RIGHT}')
    EndIf
    $txt = ControlGetText('Eigenschaften von Anzeige', '', $Size_ID)
    WEnd

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

    ControlClick('Eigenschaften von Anzeige', '', $bt_Uebernehmen)
    ControlClick('Eigenschaften von Anzeige', '', $bt_OK)

    [/autoit]
  • Kopiergeschwindigkeit beeinflussen

    • McPoldy
    • 5. März 2008 um 12:52

    Xenobiologist Hatte ich auch schon dran gedacht :) aber da er Daten geschrieben hatte, denke ich mal das er verschiedene Dateien kopieren will.

  • bestimmte stelle aus txt auslesen

    • McPoldy
    • 5. März 2008 um 12:46

    Hi das mit der Berechnung ist recht einfach, aber was ich komisch finde ist das er mir immer eine Leerzeile vorne weg schreibt, da vielleicht einer eine Idee, oder sollte man jeden Array-Eintrag per Hand weg schreiben?

    Berechnung von EXP und Leerzeile
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Brauch ich für das einlesen der Datei und das schreiben
    #include <File.au3>

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

    ; Brav alle Variablen deklarieren
    Local $filename = @ScriptDir & '\testdatei.txt' ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $newEXP ; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen
    Local $alterWert ; Für den alten Wert
    Local $Multiplikator = 3 ; Mit was * genommen werden soll
    Local $arr ; Hilfs - Array

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

    ; Hier wird die Datei eingelesen und in ein Array gepackt
    _FileReadToArray($filename,$meinarray)

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

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann
    For $nLfd = 1 To $meinarray[0]
    $arr = StringRegExp($meinarray[$nLfd],'\(exp (\d\d)\)',3)
    If Not @error AND IsArray($arr) Then
    $alterWert = $arr[0]
    $newEXP = $alterWert * $Multiplikator
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'\(exp (\d\d)\)','(exp ' & $newEXP & ')')
    EndIf
    Next

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

    ; Da (falls gefunden) die Ersetzung im Array stattgefunden hat, muss ich
    ; das Array wieder in die Datei schreiben
    _FileWriteFromArray($filename,$meinarray,1)

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

    ;FERITG
    Exit

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


    Und so haut er mir immer eine leere Zeile hinten daran :

    Hinten eine leere Zeile
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Brauch ich für das einlesen der Datei und das schreiben
    #include <File.au3>

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

    ; Brav alle Variablen deklarieren
    Local $filename = @ScriptDir & '\testdatei.txt' ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $newEXP ; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen
    Local $alterWert ; Für den alten Wert
    Local $Multiplikator = 3 ; Mit was * genommen werden soll
    Local $arr ; Hilfs - Array
    Local $hFile ; FileHandle

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

    $hFile = FileOpen($filename,0) ; Datei zum lesen öffnen
    _FileReadToArray($filename,$meinarray) ; Hier wird die Datei eingelesen und in ein Array gepackt
    FileClose($hFile) ; Datei schliessen

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

    ; Datei zum schreiben öffnen
    $hFile = FileOpen($filename,2)

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

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann
    For $nLfd = 1 To $meinarray[0]
    $arr = StringRegExp($meinarray[$nLfd],'\(exp (\d\d)\)',3)
    If Not @error AND IsArray($arr) Then
    $alterWert = $arr[0]
    $newEXP = $alterWert * $Multiplikator
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'\(exp (\d\d)\)','(exp ' & $newEXP & ')')
    EndIf
    FileWriteLine($hFile,$meinarray[$nLfd])
    Next

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

    ; Datei schliessen
    FileClose($hFile)

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

    ;FERITG
    Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Einfache Druckerauswahlliste

    • McPoldy
    • 5. März 2008 um 11:59

    eine einfache drucker auswahl reicht aber, keine einstellungen, etc. oder

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™