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

Beiträge von Lottich

  • Pseudo Desktop - Klasse eines störrischen Programmfensters ermitteln

    • Lottich
    • 12. Dezember 2014 um 07:12

    hey Klaros

    Vielleicht solltest du dir doch dieses "129 Zeilen Monster" zu Gemüte führen. Davor brauchst du keine Angst haben und musst es nicht mal zwangsläufig verstehen.
    Bei solchen UDFs liest man sich die Beschreibung durch (der grüne Text) um zu erkennen, was damit bezweckt wird und wie es wiedergegeben wird.

    Bei dieser UDF wird klar, dass Infos zu Prozessen in einem 2D Array wiedergegeben werden, die man sogar eingrenzen/filtern kann.
    Um diese UDF (oder besser Funktion, denn es ist ja nur 1 einzige Funktion) zu nutzen, kopierst du diese einfach in dein Script und rufst diese mit einer Variable beginnend auf

    zum Beispiel so
    [autoit]

    #include "array.au3"
    $this = _ProcessListProperties()

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

    _ArrayDisplay($this)
    ;===============================================================================
    ; Function Name: _ProcessListProperties()
    ; Description: Get various properties of a process, or all processes
    ; Call With: _ProcessListProperties( [$Process [, $sComputer]] )
    ; Parameter(s): (optional) $Process - PID or name of a process, default is "" (all)
    ; (optional) $sComputer - remote computer to get list from, default is local
    ; Requirement(s): AutoIt v3.2.4.9+
    ; Return Value(s): On Success - Returns a 2D array of processes, as in ProcessList()
    ; with additional columns added:
    ; [0][0] - Number of processes listed (can be 0 if no matches found)
    ; [1][0] - 1st process name
    ; [1][1] - 1st process PID
    ; [1][2] - 1st process Parent PID
    ; [1][3] - 1st process owner
    ; [1][4] - 1st process priority (0 = low, 31 = high)
    ; [1][5] - 1st process executable path
    ; [1][6] - 1st process CPU usage
    ; [1][7] - 1st process memory usage
    ; [1][8] - 1st process creation date/time = "MM/DD/YYY hh:mm:ss" (hh = 00 to 23)
    ; [1][9] - 1st process command line string
    ; ...
    ; [n][0] thru [n][9] - last process properties
    ; On Failure: Returns array with [0][0] = 0 and sets @Error to non-zero (see code below)
    ; Author(s): PsaltyDS at http://www.autoitscript.com/forum
    ; Date/Version: 12/01/2009 -- v2.0.4
    ; Notes: If an integer PID or string process name is provided and no match is found,
    ; then [0][0] = 0 and @error = 0 (not treated as an error, same as ProcessList)
    ; This function requires admin permissions to the target computer.
    ; All properties come from the Win32_Process class in WMI.
    ; To get time-base properties (CPU and Memory usage), a 100ms SWbemRefresher is used.
    ;===============================================================================
    Func _ProcessListProperties($Process = "", $sComputer = ".")
    Local $sUserName, $sMsg, $sUserDomain, $avProcs, $dtmDate
    Local $avProcs[1][2] = [[0, ""]], $n = 1

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

    ; Convert PID if passed as string
    If StringIsInt($Process) Then $Process = Int($Process)

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

    ; Connect to WMI and get process objects
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy, (Debug)}!\\" & $sComputer & "\root\cimv2")
    If IsObj($oWMI) Then
    ; Get collection processes from Win32_Process
    If $Process == "" Then
    ; Get all
    $colProcs = $oWMI.ExecQuery("select * from win32_process")
    ElseIf IsInt($Process) Then
    ; Get by PID
    $colProcs = $oWMI.ExecQuery("select * from win32_process where ProcessId = " & $Process)
    Else
    ; Get by Name
    $colProcs = $oWMI.ExecQuery("select * from win32_process where Name = '" & $Process & "'")
    EndIf

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

    If IsObj($colProcs) Then
    ; Return for no matches
    If $colProcs.count = 0 Then Return $avProcs

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

    ; Size the array
    ReDim $avProcs[$colProcs.count + 1][10]
    $avProcs[0][0] = UBound($avProcs) - 1

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

    ; For each process...
    For $oProc In $colProcs
    ; [n][0] = Process name
    $avProcs[$n][0] = $oProc.name
    ; [n][1] = Process PID
    $avProcs[$n][1] = $oProc.ProcessId
    ; [n][2] = Parent PID
    $avProcs[$n][2] = $oProc.ParentProcessId
    ; [n][3] = Owner
    If $oProc.GetOwner($sUserName, $sUserDomain) = 0 Then $avProcs[$n][3] = $sUserDomain & "\" & $sUserName
    ; [n][4] = Priority
    $avProcs[$n][4] = $oProc.Priority
    ; [n][5] = Executable path
    $avProcs[$n][5] = $oProc.ExecutablePath
    ; [n][8] = Creation date/time
    $dtmDate = $oProc.CreationDate
    If $dtmDate <> "" Then
    ; Back referencing RegExp pattern from weaponx
    Local $sRegExpPatt = "\A(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(?:.*)"
    $dtmDate = StringRegExpReplace($dtmDate, $sRegExpPatt, "$2/$3/$1 $4:$5:$6")
    EndIf
    $avProcs[$n][8] = $dtmDate
    ; [n][9] = Command line string
    $avProcs[$n][9] = $oProc.CommandLine

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

    ; increment index
    $n += 1
    Next
    Else
    SetError(2); Error getting process collection from WMI
    EndIf
    ; release the collection object
    $colProcs = 0

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

    ; Get collection of all processes from Win32_PerfFormattedData_PerfProc_Process
    ; Have to use an SWbemRefresher to pull the collection, or all Perf data will be zeros
    Local $oRefresher = ObjCreate("WbemScripting.SWbemRefresher")
    $colProcs = $oRefresher.AddEnum($oWMI, "Win32_PerfFormattedData_PerfProc_Process" ).objectSet
    $oRefresher.Refresh

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

    ; Time delay before calling refresher
    Local $iTime = TimerInit()
    Do
    Sleep(20)
    Until TimerDiff($iTime) >= 100
    $oRefresher.Refresh

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

    ; Get PerfProc data
    For $oProc In $colProcs
    ; Find it in the array
    For $n = 1 To $avProcs[0][0]
    If $avProcs[$n][1] = $oProc.IDProcess Then
    ; [n][6] = CPU usage
    $avProcs[$n][6] = $oProc.PercentProcessorTime
    ; [n][7] = memory usage
    $avProcs[$n][7] = $oProc.WorkingSet
    ExitLoop
    EndIf
    Next
    Next
    Else
    SetError(1); Error connecting to WMI
    EndIf

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

    ; Return array
    Return $avProcs
    EndFunc ;==>_ProcessListProperties

    [/autoit]


    Mit den zurückgegebenen Daten lässt sich sehr gut arbeiten, also versuchs einfach mal.

    by the way: Diese Funktion kommt auf jeden Fall in meine Sammlung :D

  • Dateiname beim Kopieren notfalls ändern?

    • Lottich
    • 11. Dezember 2014 um 19:40
    Zitat von Oscar

    Schau Dir mal Zeile 43 in Deinem Script an! Da fehlt was!

    OMG!!!!
    Da fehlt das $sDir!

    Danke, das war des Rätsels Lösung ^^

  • Dateiname beim Kopieren notfalls ändern?

    • Lottich
    • 11. Dezember 2014 um 08:27

    Hab das Thema mal wieder auf offen gestellt damit hoffentlich mehr Leute reinschauen und die das Problem vielleicht auch feststellen.

  • MouseMove Frage

    • Lottich
    • 11. Dezember 2014 um 07:21

    $inp_Startzeit und $inp_Endzeit sind die Rückgabewerte der in Reihenfolge erstellten Controls. Wenn du die Werte der Controls bekommen willst, musst du die auch auslesen.
    Ändere deine Messageboxen ab in

    [autoit]

    MsgBox(64,"",GUICtrlRead($inp_Startzeit))
    MsgBox(64,"",GUICtrlRead($inp_Endzeit))

    [/autoit]
  • FTP Updater

    • Lottich
    • 10. Dezember 2014 um 07:43

    Klar geht das, zB:

    Schreib dir eine INI-Datei mit den ganzen Dateien, die du evtl. updaten möchtest/planst zu updaten

    Code
    [Updates]
    Datei 1=1
    Datei 2=1
    Datei 3=1
    ...


    Wenn du dann eine Datei zum Update bereitstellst, änderst du den Wert in der INI entsprechend +1, würde dann vielleicht so aussehen

    Code
    [Updates]
    Datei 1=1
    Datei 2=1
    Datei 3=2
    ...


    Bei Programmstart ziehst du jedesmal nur diese INI und speicherst sie meinetwegen als temporäre Datei ab.
    Dann lässt du die Werte der frisch gezogenen INI mit der bereits vorhandenen INI vergleichen und bei Änderung startet dann der Download der Datei(en).
    Wenn alles fertig ist überschreibst du die alte INI, sodass die neuen Daten der INI später als Referenz dienen können.

    Es gibt noch andere Möglichkeiten, doch für einen Einsteiger ist das vermutlich die einfachste Methode.
    Schnapp dir die Hilfe zur Hand und schau dir die Funktionen zu "IniRead", "IniWrite", "InetGet" an. Das dürfte dir weiterhelfen.

  • Dateiname beim Kopieren notfalls ändern?

    • Lottich
    • 9. Dezember 2014 um 08:26

    Sooooo, erstmal @Oscar
    Danke für dein Script, doch diesmal brauch ich es nicht. Mit dem Umstieg von _FileListToArray() zur While-Schleife besteht das Problem was @Tweaky beschrieb nun nicht mehr.

    @Tweaky
    Ich habe, wie bereits erwähnt, von deinem Beispiel die While-Schleife übernommen. Somit tritt das von dir beschriebene Problem nun nicht mehr auf. Danke dafür.
    Offensichtlich stimmt irgendwas nicht mit der Funktion _PathSplit(). Ich habs mehrfach getestet, auch mit mehrfach verschachtelten Ordnern, weil ich zwischendurch dachte,
    _PathSplit() gibt trotz korrekter Anzeige per _ArrayDisplay() einen Ordner zu wenig zurück. Doch das scheint auch nicht der Fall zu sein. Wenn die Zieldatei, selbst in den verschachtelten
    Ordnern, bereits existiert, dann landet die zu erstellende Kopie immer auf dem Desktop.

    Ich hab mal mein Testscript zum Vergleich angepasst um zu verdeutlichen, was genau ich meine.

    Hier das Beispiel
    [autoit]

    #include "array.au3"
    #include "file.au3"

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

    $testquelle = "\AAxtestdir\"
    $testziel = "\BBxtestdir2\"

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

    $quelle = @DesktopDir & $testquelle & "1test.txt"
    $ziel = @DesktopDir & $testziel & "1test.txt"

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

    $quelle2 = @DesktopDir & $testquelle & "2test.txt"
    $ziel2 = @DesktopDir & $testziel & "2test.txt"

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

    _my_Filemove($quelle, $ziel, 9)
    _your_Filemove($quelle2, $ziel2, 9)

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

    Func _my_Filemove($quelle, $ziel, $attrib = 0)
    Local $split1, $split2, $string, $filelist, $newfile, $anhang = "_Kopie_", $count = 1
    $split1 = StringSplit($ziel, "\")
    $split2 = StringSplit($split1[$split1[0]], ".")
    $string = StringReplace($ziel, $split1[$split1[0]], "", -1)
    If Not FileExists($ziel) Then
    FileMove($quelle, $ziel, 9)
    Else
    $newfile = $string & "\" & $split2[1] & $anhang & $count & "." & $split2[2]
    While FileExists($newfile)
    $count += 1
    $newfile = $string & "\" & $split2[1] & $anhang & $count & "." & $split2[2]
    WEnd
    FileMove($quelle, $newfile, $attrib)
    EndIf
    EndFunc

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

    Func _your_Filemove($quelle, $ziel, $attrib = 0)
    Local $split1, $split2, $string, $filelist, $newfile, $anhang = "_Kopie_", $count = 0
    Local $sDrive = "", $sDir = "", $sFilename = "", $sExtension = ""

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

    Local $aPathSplit = _PathSplit($ziel, $sDrive, $sDir, $sFilename, $sExtension)
    If Not FileExists($ziel) Then
    FileMove($quelle, $ziel, 9)
    Else
    While FileExists($ziel)
    $count += 1
    $ziel = $sDrive & $sFilename & $anhang & $count & $sExtension
    WEnd
    FileMove($quelle, $ziel, $attrib)
    EndIf
    EndFunc ;==>_your_Filemove

    [/autoit]


    Geht das vielleicht noch jemanden so????

  • Dateiname beim Kopieren notfalls ändern?

    • Lottich
    • 8. Dezember 2014 um 19:26

    Habs eben probiert mit deiner Funktion und etwas kurioses festgestellt:

    1. Kopiervorgang war erfolgreich ==> file A wurde erfolgreich verschoben von Ordner 1 nach Ordner 2
    2. File A in Ordner 1 kopiert und erneut die Funktion ausgeführt
    3. Kopiervorgang NICHT erfolgreich und File A wurde zu File A_Kopie_1 in Ordner 1

    wtf...
    dabei zeigt mir _ArrayDisplay($aPathSplit) die korrekten Werte an?!?!

  • Ein Problem mit RegWrite

    • Lottich
    • 8. Dezember 2014 um 18:15

    Ist es nicht so, dass der Registrypfad nicht zwangsläufig existieren muss? Der Pfad wird doch durch Regwrite angelegt, wenn dieser nicht existiert.
    Allerdings gibt es scheinbar Ausnahmnen. Nicht überall lassen sich neue Pfade anlegen, selbst mit #RequireAdmin. Zumindest nicht unter Win7 x64.

    Versuch mal einen neuen Registrypfad zu setzen, nur mal zum Test.

  • Dateiname beim Kopieren notfalls ändern?

    • Lottich
    • 7. Dezember 2014 um 23:32

    Danke Tweaky

    Allerdings war es dann doch nicht soooo einfach. Hab es nun so gelöst

    [autoit]

    Func _my_Filemove($quelle, $ziel, $attrib = 0)
    Local $split1, $split2, $string, $filelist, $newfile, $anhang = "_Kopie_", $count = 1
    $split1 = StringSplit($ziel, "\") ;
    $string = StringReplace($ziel, $split1[$split1[0]], "", -1) ; Zielordner aus dem Zielpfad bekommen
    $split2 = StringSplit($split1[$split1[0]], ".") ; zu kopierende Datei in Name und Endung aufteilen
    If Not FileExists($ziel) Then
    FileMove($quelle, $ziel, 9)
    Else
    $filelist = _FileListToArray($string, $split2[1] & "*") ; Filter auf Dateinamen beschränken
    For $i = 1 To $filelist[0]
    If StringInStr($filelist[$i], $split2[1] & $anhang) = True Then $count += 1
    Next
    $newfile = $string & "\" & $split2[1] & $anhang & $count & "." & $split2[2]
    FileMove($quelle, $newfile, $attrib)
    EndIf
    EndFunc

    [/autoit]


    Jetzt brauch ich nur noch überall im Script die vielen "FileMoves" gegen diesen Funktionsnamen austauschen.
    Aber vielleicht kann man das noch besser schreiben?

  • Dateiname beim Kopieren notfalls ändern?

    • Lottich
    • 5. Dezember 2014 um 19:48
    Beispiel Massenverschiebung von Dateien
    [autoit]

    For $i = 1 To $aFileList[0]
    $iAttrib = FileGetAttrib($pDeskDir & "\" & $aFileList[$i])
    If $iAttrib <> "D" Then
    $aSplitB = StringSplit($aFileList[$i],".")
    $sString = $aSplitB[$aSplitB[0]]
    Select

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

    ; Textdateien
    Case $sString = "txt" Or $sString = "pdf" Or $sString = "doc"
    ; hier muss evtl ne If-Else-Bedingung hin
    FileMove($pDeskDir & "\" & $aFileList[$i],$pTextFiles & "\" & $aFileList[$i],9)
    $zTextFiles += 1

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

    ; ausführbare Dateien
    Case $sString = "exe" Or $sString = "bat" Or $sString = "reg"
    ; hier muss evtl ne If-Else-Bedingung hin
    FileMove($pDeskDir & "\" & $aFileList[$i],$pRunables & "\" & $aFileList[$i],9)
    $zRunables += 1

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

    ; gepackte Dateien
    Case $sString = "7z" Or $sString = "iso" Or $sString = "isz" Or $sString = "rar" Or $sString = "zip"
    ; hier muss evtl ne If-Else-Bedingung hin
    FileMove($pDeskDir & "\" & $aFileList[$i],$pGepacktes & "\" & $aFileList[$i],9)
    $zGepacktes += 1

    [/autoit]


    Hey, ich steh grad auf der Leitung. Ich möchte mir hier noch eine Prüfung einbauen, dass, falls eine Datei schon existiert, die zu kopierende Datei umbenannt wird.
    zB nach "Dateiname__Kopie_1" oder _2 oder _3, je nachdem wieviele Dateien halt schon mit diesem Namen vorhanden sind.
    Nur fällt mir momentan nicht ein, wie ich diese Prüfungsroutine schreiben soll.

    Könnt ihr mir da Tipps geben?

    MfG Lo..

  • MouseMove Frage

    • Lottich
    • 5. Dezember 2014 um 18:19

    Ich hatte auch mal das Problem mit der Zeit. Musste sie in 3 Rubriken aufteilen (Früh-, Spät- und Nachtschicht). Ich hab mich dafür entschieden die Uhrzeit in Ticks umzuwandeln.
    Das lies sich dann problemlos vergleichen

    Codeauszug von mir
    [autoit]

    Func _get_schicht($var); erkennt Früh- , Spät- oder Nachtschicht mit entsprechendem Datum
    Local $retVar = "Nachtschicht", $splitzzz
    Local $ticks = _TimeToTicks(@HOUR, @MIN, @SEC) / 1000
    If $ticks >= 19800 And $ticks < 48600 Then $retVar = "Frühschicht"
    If $ticks >= 48600 And $ticks < 77400 Then $retVar = "Spätschicht"
    If $var > 0 Then
    Select
    Case $retVar = "Frühschicht"
    $retVar = _NowDate() & " Spätschicht|" & _NowDate() & " Nachtschicht"
    Case $retVar = "Spätschicht"
    $retVar = _NowDate() & " Nachtschicht|" & _NowDate() & " Frühschicht"
    Case $retVar = "Nachtschicht"
    $retVar = _NowDate() & " Frühschicht|" & _NowDate() & " Spätschicht"
    EndSelect
    Else
    If $ticks < 19800 Then
    $splitzzz = StringSplit(_DateAdd('d', -1, _NowCalcDate()), "/")
    $retVar = $splitzzz[3] & "." & $splitzzz[2] & "." & $splitzzz[1] & " " & $retVar
    Else
    $retVar = _NowDate() & " " & $retVar
    EndIf
    EndIf
    Return $retVar
    EndFunc ;==>_get_schicht

    [/autoit]

    Das soll nur als Anschauung dienen.

  • Beiträge verschwinden ins Nichts ?!

    • Lottich
    • 3. Dezember 2014 um 14:46

    So wie Andy halte ich es auch, zumindest bei größeren Posts. Das hat dann auch den Vorteil, dass man noch "reagieren" kann, wenn ein anderer in der Zwischenzeit auch schon gepostet hat.
    Aber nein, mir ging es noch nicht so.

  • Tutorial – OOP in AutoIt

    • Lottich
    • 29. November 2014 um 18:54

    Hallo Make

    danke, dass du dir diese Mühe für uns machst! :thumbup:
    Das ist sehr interessant und ich nehme mir vor, mir mit Hilfe dieses Tutorials (und den folgenden) Oop anzueignen.
    Ein kleiner Hinweis: Im Beispielcode der Klassenerstellung hat sich ein kleiner Fehler eingeschlichen. In Zeile 9 und 10 sollte das doch bestimmt "= Class().Object" sein.
    Hab ganz schön rumgerätselt bis ich das geschnalt hab ;)

  • Icons aus ICL einbinden

    • Lottich
    • 12. November 2014 um 21:39

    Was zum Geier ist denn eine .icl Datei? Könntest ja vielleicht mal eine zur Verfügung stellen.
    Denn vermutlich bin ich da mit meiner Unwissenheit nicht der einzige. Weiss der Geier, welches Programm sowas erzeugt bzw wo die dazu gehört.

  • History erstellen

    • Lottich
    • 11. November 2014 um 16:55

    Theoretisch könntest du dir ein Script schreiben, ebenfalls mit nem Inputfeld. dort schreibst du die Rechneradresse rein und bei klick auf nem Button lässt du deine Eingabe in eine Datei speichern.
    Eine INI würde sich wohl anbieten. Anschliessend startest du das Remotetool (vorzugsweise automatisch mit dem selben Button) und übergibst deinen Input an das Remotetool.
    Das wird wohl aber nur funktionieren, wenn du die Controls des Remotetools mit "Autoit Window Info" auslesen kannst.

    Nachtrag: Besser währe wohl eine Combobox, die bei Start deines Scripts automatisch die INI ausliest und somit die bereits vorhandenen / besuchten Rechner auflistet.

  • [spiel] Wünsch dir was !

    • Lottich
    • 11. November 2014 um 15:23
    Zitat von General Kaboom

    Ich wünsche mir...schwarzen Schnee und fliegende Schweine (damit mich die süsse Brünette ausm Starbucks-Café endlich ranlässt )


    Ich traf eben eine gute Fee und opferte für dich einen Wunsch. Er geht heut abend noch in Erfüllung :thumbup:
    Allerdings wirst du, wenn du ihren Slip runterziehst, feststellen, dass sie eine Transe ist :D

    Ich wünsche mir nen Zwiebelwurstlollie!

  • FTP / _FTP_FileGet geht nur einmal

    • Lottich
    • 10. November 2014 um 19:38
    [autoit]

    #include <FTPEx.au3>

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

    Global $FTP_open, $FTP_Connect
    Global $configdatei = "\config.ini"

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

    $FTP_open = _FTP_Open("myftp")
    $FTP_Connect = _FTP_Connect($FTP_open,"FTPSERVERADRESSE","BENUTZER","PW")

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

    While 1
    _FTP_FileGet($FTP_Connect, $configdatei, @ScriptDir & "\config.ini")
    Sleep (500)
    $info = FileRead (@ScriptDir & $configdatei)
    Sleep (500)
    ToolTip ($info,0,0)
    WEnd

    [/autoit]


    Dein Syntax Aufbau ist falsch. Ausserdem glaub ich, dass Zeile 10 nochmal von dir überarbeitet werden sollte.
    Ich hab das jetzt zwar nicht getestet, sollte aber funktionieren. Aber aus welchem Grund soll denn diese INI immer und immer wieder gezogen werden???

  • AutoIt Sysinternal Tools Synchronizer v0.99.6 build 2020-09-23 beta

    • Lottich
    • 8. November 2014 um 21:54

    Ich finde die Arbeit von UEZ richtig klasse! Mir ists egal, ob der 1-Zeiler das selbe tut.
    Der GUI Aufbau und insbesondere diese Console lassen das Programm extrem professionell rüberkommen.

    Ich bin mir auch sicher, dass ich mir irgendwann dieses (fremde) Wissen für mich zu nutzen weiss.
    Thx UEZ für deine tolle Arbeit. :thumbup:

  • Escape-Taste abfangen

    • Lottich
    • 24. Oktober 2014 um 17:34

    lol, das funktioniert!!!
    Danke!!!

    ich bin bisher immer davon ausgegangen, dass sich HotKeySet nur auf das eigentliche Skript bezieht.
    Wieder was gelernt :)

  • Escape-Taste abfangen

    • Lottich
    • 24. Oktober 2014 um 17:22

    Hallo.

    Eins vorweg: Nein, es handelt sich nicht um einen Keylogger oder sowas!!!

    Das Problem: Final Fantasy 13 (PC-Version) & die Escapetaste

    Aus Gewohnheit drückt man in Spielen die Escapetaste, wenn man ein Menü schliessen will bzw im Menü zurück navigieren möchte. Bei diesem Spiel allerdings wird das Game sofort beendet/der Prozess gekillt.
    ich hab mir das Siel gestern gekauft, 49 GB herunter geladen und nun ca 1 Stunde gespielt. In dieser Stunde hab ich das Game 4 mal neu starten und "von vorne" beginnen müssen, da ich aus Reflex/Gewohnheit
    auf Escape gedrückt hab. Das kotzt mich sowas von an!! in dem Game können Stunden vergehen, bevor man den nächsten Speicherpunkt erreicht und dann war alles für die Katz !!!!

    Es gibt doch die Möglichkeit per WM_Notify() Messages abzufangen aber ich weiss nicht, wie ich das genau umsetzen muss.
    Ich stell mir das ungefähr so vor:

    [autoit]

    #include "misc.au3"

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

    AdlibRegister("wm_notify", 50)
    Local $hDLL = DllOpen("user32.dll")

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

    While ProcessExists("ffxiiimg.exe")
    Sleep(200)
    WEnd
    DllClose($hDLL)

    Func wm_notify()
    If _IsPressed("18", $hDLL) Then
    ;hab nun keine Ahnung mehr, da ich noch nie mit DLLs gearbeitet hab
    ;hier aber nun idR immer irgendwelche DLL-Calls gemacht werden
    EndIf
    EndFunc

    [/autoit]

    Ich bin felsenfest davon überzeugt, dass ich die wm_notify Funktion alleine NIE hinbekommen werde. ich baue auf eure Unterstützung.
    MfG Lottich

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™