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

Beiträge von Kanashius

  • Toggle Strg möglich?

    • Kanashius
    • 12. Juli 2019 um 00:52

    Ich hab aber eine Möglichkeit über Keyboard hooks gefunden, mit der bei einem Klick auf LCTRL die Taste solange gedrückt gehalten wird, bis sie erneut gedrückt wird.

    Funktionsweise: 250ms nachdem LCTRL losgelassen wird, wird LCTRL gedrückt gehalten, bis LCTRL erneut (gedrückt und) losgelassen wird. Wird die 162 in Zeile 19 durch eine 163 ersetzt, löst die rechte CTRL Taste das gedrückt halten aus.

    C
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    
    Global $bCtrlIsPressed=false
    
    $hmod = _WinAPI_GetModuleHandle(0)
    $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
    
    While sleep(100)
    WEnd
    
    Func keyDown($keycode)
        ;ConsoleWrite("KEYCODE: "&$KeyCode&" pressed"&@crlf)
    EndFunc
    
    Func keyUp($keycode)
        ;ConsoleWrite("KEYCODE: "&$KeyCode&" released"&@crlf)
        If $keycode=162 Then
            If NOT $bCtrlIsPressed Then AdlibRegister("_press",250)
            $bCtrlIsPressed=NOT $bCtrlIsPressed
        EndIf
    EndFunc
    
    Func _press()
        AdlibUnRegister("_press")
        Send("{LCTRL down}")
    EndFunc
    
    Func _KeyProc($nCode, $wParam, $lParam)
        Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
        If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
        Local $r=DllStructGetData($tKEYHOOKS, "vkCode")
        If DllStructGetData($tKEYHOOKS,"flags")=$LLKHF_ALTDOWN Then $r="E"&DllStructGetData($tKEYHOOKS, "flags")
        If $wParam = $WM_KEYDOWN Then keyDown($r)
        If $wParam = $WM_KEYUP Then keyUp($r)
        Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc   ;==>_KeyProc
    Alles anzeigen

    Ich hoffe, dass erfüllt jetzt deine Bedinungen :)

    MfG Kanashius.

  • Toggle Strg möglich?

    • Kanashius
    • 12. Juli 2019 um 00:10
    Zitat von Gluecksbaerli

    kann ich eine combination von ctrl und z.b. f10 hotkeyset nehmen oder geht das da dann auch nicht mit ctrl bzw einen andere combination aus zwei sachen ( weil doppel belegung)?

    Zitat von Kanashius

    , sofern STRG nicht genutzt wird, da HotKeySet alle Tasten, die in der Kombination sind, blockiert

    Es wäre echt angenehm, wenn du die Beiträge gründlicher lesen würdest. Ich hab in dem Thread nichts geschrieben, weil Alpines dir eigentlich genügend tipps gegeben hat.

    Ich hab mich erst am Ende gemeldet, damit du nicht das komplexe Script nimmst, einfach weil es funktioniert.

    MfG Kanashius.

  • Toggle Strg möglich?

    • Kanashius
    • 11. Juli 2019 um 21:53

    Bevor das Script von xSunLighTx3 noch zum Einsatz kommt, hier eine Lösung, die weniger CPU-auslastung hervorbringt, sauberer/kürzer ist,...

    Der Hotkey für _down (F10) kann frei gesetzt werden, sofern STRG nicht genutzt wird, da HotKeySet alle Tasten, die in der Kombination sind, blockiert.

    Der Hotkey für _up (F11) kann auch weggelassen werden, da es reicht erneut LSTRG auf der Tastatur zu drücken um das gedrückt halten aufzuheben. Die Funktion kann dann natürlich auch entfernt werden.

    Code
    HotKeySet("{F10}", "_down")
    HotKeySet("{F11}", "_up")
    
    While Sleep(10)
    WEnd
    
    Func _down()
        Send("{lctrl down}")
    EndFunc
    
    Func _up()
        Send("{lctrl up}")
    EndFunc
    Alles anzeigen
  • AutoIt für Linux?

    • Kanashius
    • 6. Juli 2019 um 12:38

    PlayOnLinux ist ebenfalls "nur" wine, mit dem unterschied, dass es wine für dich konfiguriert ;)

    Zitat


    PlayOnLinux basiert auf Wine und profitiert von all seinen Funktionen, wobei es dessen Komplexität vom Benutzer fernhält.

    Es ist also definitiv kein wine Ersatz. Es ist nur dazu da, die Nutzung von Wine zu vereinfachen, indem andere User die richtige Wine-Konfiguration, die am besten funktioniert herausfinden und bei PlayOnLinux hochladen.

  • Lange Zeile mit vielen Anführungszeichen in cmd ausführen aus AutoIT heraus

    • Kanashius
    • 5. Juli 2019 um 14:34

    Hast du es auch so probiert?

    _RunDos("for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter%:\Accuchek\%i"" 2>nul")

    Doppelte " sind escaped und können damit in einem String ($string="IchBinEinString") verwendet werden.

    Du musst natürlich auch die " um den String schreiben.

    Ohne fliegen einem die Fehler ja nur so um die Ohren :D

    Code
    _RunDos(for
    ~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,81) : error: Statement cannot be just an expression. (illegal character)
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,84) : error: Statement cannot be just an expression.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,95) : error: Statement cannot be just an expression.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,95) : error: syntax error (illegal character)
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,96) : error: Statement cannot be just an expression.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,110) : error: Statement cannot be just an expression. (illegal character)
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter%:\Accuchek
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,120) : error: Statement cannot be just an expression. (illegal character)
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter%:\Accuchek\%i
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,123) : error: Statement cannot be just an expression.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter%:\Accuchek\%i""
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,124) : error: Statement cannot be just an expression.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter%:\Accuchek\%i"" 2
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,129) : error: syntax error
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter%:\Accuchek\%i"" 2>nul)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,129) : error: Statement cannot be just an expression.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter%:\Accuchek\%i"" 2>nul)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,18) : error: f(): undefined function.
    _RunDos(for /f ""
    ~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,79) : error: _RunDos(): undefined function.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""')
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,87) : error: rd(): undefined function.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,90) : error: s(): undefined function.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,95) : error: q(): undefined function.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,123) : error: i(): undefined function.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter%:\Accuchek\%i""
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    "D:\Desktop\dateien\Adobe CS6\ReplaceAmtlib.au3"(26,129) : error: nul(): undefined function.
    _RunDos(for /f ""delims="" %i in ('dir /b ""%DriveLetter%:\Accuchek\Backup*""') do rd /s /q ""%DriveLetter%:\Accuchek\%i"" 2>nul)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    Alles anzeigen
  • Bildschirmausschnitt als bmp zum Drücken

    • Kanashius
    • 3. Juli 2019 um 21:34

    Ich frag mich, wieso du ein solches Tool mit Excel umsetzen möchtest... Excel ist nun wahrlich nicht das erste Programm, was mir einfällt, wenn es um Videos geht...

    Es wäre doch viel einfacher direkt in AutoIt nen IE-Fenster zu erstellen (oder meine Preferenz: JavaFX). Die Steuerung wäre leichter umzusetzen und du hättest die komplette Kontrolle über praktisch alles.

    Wenn du ne komplett Beschreibung von dem Programm erstellt, also alles was es können soll, wie es aussehen soll,... würde ich am Wochenende ggf. schauen, dass ich das Programmiere.

    Mit freundlichen Grüßen,

    Kanashius.

  • GUIs nahezu perfekt DPI-skalierbar machen - sogar mit Per-Monitor-DPI Scaling für Windows 10

    • Kanashius
    • 19. Juni 2019 um 21:07

    Windows 7 hat tatsächlich keine Möglichkeit, die DPI-Skalierung für einzelne Monitore zu regeln. Das war tatsächlich der Grund für mich, auf Windows 10 zu wechseln... der einzige :/

    Ich hab nen 4k Monitor und 2 FHD. Auf dem 4k Monitor war lesen auf Dauer anstrengend, weil die Schrift so klein war. Jetzt mit 150% geht es recht gut.

    \Offtopic

    Aber sobald ich genug Geld zusammen hab für nen neues Mainbord,CPU und Graphiccard werd ich auf Linux mit Win10 VM mit GPU passthrough wechseln :). Die Microsoft Politik nervt mich ziemlich und Win10 hat so viele Macken/nervige Dinge und das obwohl ich bestimmt schon >10 Stunden in die Konfiguration gesteckt hab... Von den neuen verschlimmbesserten Einstellungen ganz zu schweigen X/. Da Konfigurier ich mir lieber mein Arch Linux nen paar Tage und hab dann meine Ruhe 8o.

    Ich freu mich schon auf die neuen AMD-Prozessoren: Ryzen 9 3900X—12C/24T, 3.8GHz to 4.6GHz, 70MB cache, 105W TDP, $499 :love:

    Offtopic\

  • VM Umgebung erkennen und blockieren

    • Kanashius
    • 18. Juni 2019 um 19:46

    Darf ich fragen, wieso du nicht möchtest, dass dein Programm in einer VM betrieben wird? Ich hab bisher noch keinen guten Grund gefunden und sehe es eher als Hindernis... aufgrund der Windows 10 Politik,Funktionsweise,... arbeite ich auf einem Rechner mit Linux und starte die Win10 VM ausschließlich für Programme die nicht unter Linux laufen. (Von Sicherheitsaspekten ganz zu schweigen). Dementsprechend könnte ich dein Programm nie benutzen.

    Es würde mich daher interessieren, aus welchem Grund/Gründen du das ausführen in der VM verhindern willst.

    Mit freundlichen Grüßen,

    Kanashius.

  • Eine Funktion mehrfach starten

    • Kanashius
    • 26. April 2019 um 13:28

    In dem Fall würde ich wie in Linux mit dem Lockfile-Prinzip arbeiten: Einfach eine Datei erstellen, wenn du die Datei zum bearbeiten öffnest und danach wieder löschen. Vor dem erstellen und beim Scheitern des erstellens (2 erstellen gleichzeitig) => Solange die Datei existiert: warten.

    Bzw.: Wenn du eine Datei zum schreiben öffnest, kann einanderer Prozess die Datei garnicht beschreiben ;)

  • dbf einlesen

    • Kanashius
    • 20. März 2019 um 12:31

    Ich kenn dbase nicht, auf die schnelle hab ich aber das hier gefunden: https://www.autoitscript.com/forum/topic/17…se-udf-and-dll/

    Damit die Daten einlesen und dann mit string/arrays weiterverarbeiten :)

  • Gradientenverlauf mit Multi Colored Maker

    • Kanashius
    • 7. März 2019 um 23:47

    Bei UEZ wird die Hexadezimale darstellung genommen. Diese sieht so aus:

    0xFFFFFFFF für weiß. 0xFF000000 für schwarz. Statt von 0 bis 10 gehen diese von 0 bis 9 und zusätzlich noch von a bis f. Demnach ist FF=255 -> (15*16+15). Ergibt sich aus F*16+F. Also: AF=10*16+15=175.

    Dabei gibt es 4 paare. 0x FF FF FF FF dabei steht das erste FF für die Transparenz. Dann R,G und B. Zum verrechnen werden Bitweise operationen genutzt:

    Code
    $iInt=BitShift(255,-24)+BitShift(0,-16)+BitShift(125,-8)+150 ;entspricht also dem Wert 0xFF007D96 und somit dem RGB Wert: 0, 125, 150 mit der Transparenz 255 also voll sichtbar.
    $iA=BitRotate(BitAND($iInt,0xFF000000),-24,"D")
    $iR=BitRotate(BitAND($iInt,0x00FF0000),-16,"D")
    $iG=BitRotate(BitAND($iInt,0x0000FF00),-8,"D")
    $iB=BitAND($iInt,0x000000FF)
    
    ConsoleWrite($iInt&" => "&Hex($iInt)&" = "&$iA&" - "&$iR&", "&$iG&", "&$iB&@crlf)
  • Gradientenverlauf mit Multi Colored Maker

    • Kanashius
    • 7. März 2019 um 22:47

    Andy Jo, haben sogar beide bei gewissen Pixeln streifen, ist mir aufgefallen ;)

    Aber: Du solltest die Burshes wieder freigeben, könnte sonst unschön werden, grad wenn mit nem schieberegler neugezeichnet wird ;)

  • Gradientenverlauf mit Multi Colored Maker

    • Kanashius
    • 7. März 2019 um 20:34

    Hab mal nen kleines Script für den Farbverlauf geschrieben, es können verschiedene Farben mit dem Prozentanteil angegeben werden.

    C
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    
    local $arColors=[[0xFF000000,0],[0xFFFF0000,0.2],[0xFF00FF00,0.4],[0xFF0000FF,0.6],[0xFF000000,0.8]]
    _drawLinearGradiants($arColors)
    If @error Then MsgBox(48,"Error","The error "&@error&" accured!")
    
    ;
    ;
    ; Give: 2D Array with colors and percentages
    ; Error: 1 - There are less then 2 colors given or the arry is not 2D
    ;         2 - The second value in the 2D array is not a percentage
    ;         3 - There is a lower percentage value in the second value of the 2D Array then in a value before
    Func _drawLinearGradiants(ByRef $arColors)
       If UBound($arColors)<2 or UBound($arColors,2)<>2 Then return SetError(1,0,-1)
       For $i=0 to UBound($arColors)-1 step 1
          If $arColors[$i][1]<0 or $arColors[$i][1]>1 Then return SetError(2,0,-1)
          If $i>0 and $arColors[$i][1]<$arColors[$i-1][1] Then  return SetError(3,0,-1)
       next
    
       local $iX=0,$iY=0,$iWidth=800,$iHeight=600
       local $emptyBorder=10
       _GDIPlus_Startup()
    
       Local $hGUI,$hGraphic,$hBrush
       $hGUI=GUICreate("Gradiant", $iWidth, $iHeight+20)
       GUISetState(@SW_SHOW)
       $hGraphic=_GDIPlus_GraphicsCreateFromHWND($hGUI)
       _GDIPlus_GraphicsClear($hGraphic,0xFFFFFFFF)
       $iX+=$emptyBorder
       $iY+=$emptyBorder
       $iWidth-=2*$emptyBorder
       $iHeight-=2*$emptyBorder
    
       local $arBrushes[UBound($arColors)+2]
       $arBrushes[0]=_GDIPlus_LineBrushCreate($iX+0,$iY+$iHeight/2,$iX+$iWidth*$arColors[0][1],$iY+$iHeight/2,$arColors[0][0],$arColors[0][0])
       _GDIPlus_GraphicsFillRect($hGraphic,$iX,$iY,$iWidth*$arColors[0][1],$iHeight,$arBrushes[0])
       for $i=1 to UBound($arColors)-1 step 1
          $arBrushes[$i]=_GDIPlus_LineBrushCreate($iX+$iWidth*$arColors[$i-1][1],$iY+$iHeight/2,$iX+$iWidth*$arColors[$i][1],$iY+$iHeight/2,$arColors[$i-1][0],$arColors[$i][0])
          _GDIPlus_GraphicsFillRect($hGraphic,$iX+$iWidth*$arColors[$i-1][1],$iY,$iWidth*$arColors[$i][1]-$iWidth*$arColors[$i-1][1],$iY+$iHeight,$arBrushes[$i])
       next
       $arBrushes[UBound($arBrushes)-1]=_GDIPlus_LineBrushCreate($iX+$iWidth*$arColors[Ubound($arColors)-1][1],$iY+$iHeight/2,$iX+$iWidth,$iY+$iHeight/2,$arColors[Ubound($arColors)-1][0],$arColors[Ubound($arColors)-1][0])
       _GDIPlus_GraphicsFillRect($hGraphic,$iX+$iWidth*$arColors[Ubound($arColors)-1][1],$iY,$iWidth-$iWidth*$arColors[Ubound($arColors)-1][1],$iY+$iHeight,$arBrushes[UBound($arBrushes)-1])
       for $i=0 to UBound($arBrushes)-1 step 1
          _GDIPlus_BrushDispose($arBrushes[$i])
       next
       ; Loop until the user exits.
       Do
       Until GUIGetMsg() = $GUI_EVENT_CLOSE
       ; Clean up resources
       _GDIPlus_GraphicsDispose($hGraphic)
       _GDIPlus_Shutdown()
    EndFunc   ;==>Example
    Alles anzeigen

    MfG Kanashius

  • [IE] zugrif auf CheckBox im HTML Formular

    • Kanashius
    • 28. Februar 2019 um 16:01
    Code
    _IEFormElementCheckBoxSelect($oForm,"1","exactSearch",1,"byValue",1)

    sollte tun, was du möchtest.

    [1.] Du gibst das IE-Object (Formular) an

    [2.] und dann das, was im Feld value steht (hier "1"), da bei $sMode "byValue" angewählt ist.

    [3.] Mit der ID "exactSearch" wählen wir die Checkbox (Ich nehm lieber IDs, da diese EINDEUTIG sein sollten, Namen werden eher öfter verwendet).

    [4.] 1 natürlich um anzuzeigen, das ausgewählt werden soll.

    [5.] $sMode steht vorne schon

    [6.] und die letzte 1, damit es ankommt, als hätte der User was geklickt/geändert (mag unnötig sein, kommt auf die Implementierung der Webseite an). Dient halt dazu, Funktionen (JS) aufzurufen, die normalerweise bei der Userinteraction ausgelöst werden.

    MfG Kanashius

  • Abspielen zweier Videos (synchron) mittels FFmpeg

    • Kanashius
    • 13. Februar 2019 um 19:30
    Code
    Global $iWidth=800,$iHeight=115
    
    $hGui=GUICreate("",$iWidth,$iHeight)
    $hInputPathOne=GUICtrlCreateInput("",10,10,$iWidth-60,25)
    GUICtrlSendMsg(-1, 0x1501, 0, "Path Movie 1")
    $hButtonSelPathOne=GUICtrlCreateButton("...",$iWidth-40,10,30,25)
    $hInputPathTwo=GUICtrlCreateInput("",10,45,$iWidth-60,25)
    GUICtrlSendMsg(-1, 0x1501, 0, "Path Movie 2")
    $hButtonSelPathTwo=GUICtrlCreateButton("...",$iWidth-40,45,30,25)
    $hButtonPlay=GUICtrlCreateButton("Play",10,80,$iWidth-20,25)
    GUISetState()
    
    While 1
        $iMsg=GUIGetMsg()
        Switch $iMsg
            Case -3
                Exit
            Case $hButtonSelPathOne
                $sPath=_getPath()
                If $sPath<>-1 Then
                    GUICtrlSetData($hInputPathOne,$sPath)
                EndIf
            Case $hButtonSelPathTwo
                $sPath=_getPath()
                If $sPath<>-1 Then
                    GUICtrlSetData($hInputPathTwo,$sPath)
                EndIf
            Case $hButtonPlay
                If FileExists(GUICtrlRead($hInputPathOne)) and FileExists(GUICtrlRead($hInputPathTwo)) Then
                    Run('ffmpeg -i "'&GUICtrlRead($hInputPathOne)&'" -vf "[in] scale=iw/2:ih/2,pad=2*iw:ih [left]; movie="'&GUICtrlRead($hInputPathTwo)&'",scale=iw/2:ih/2[right];[left][right]overlay=main_w/2:0[out]" -c:v prores output.mov')
                EndIf
        EndSwitch
    WEnd
    
    Func _getPath()
        $hFile=FileOpenDialog("Choose Movie",@DesktopDir,"All (*.*)",BitOR(1,2),"",$hGui)
        If @error Then
            return -1
        Else
            return $hFile
        EndIf
    EndFunc
    Alles anzeigen

    Musst eventuell den Run-Befehl anpassen, aber sonst sollte es so funktionieren :)

  • "Dateipfad öffnen" nachbilden

    • Kanashius
    • 23. Januar 2019 um 18:43

    Mithilfe von

    Code
    ShellExecute(@WindowsDir & "\explorer.exe", "/select," & '"' & $path & '"')

    Kann auch eine Datei in dem Ordner direkt ausgewählt werden.

  • Kurze Frage zu Send-Befehl ? (+{END})

    • Kanashius
    • 2. Dezember 2018 um 01:20

    Das genutzte {END} ist immer die Ende Taste, unabhängig von deiner Tastatur und deren Layout. Es reicht also vollkommen, einfach {END} zu schrieben.

  • Sehr schnell in GUI schreiben

    • Kanashius
    • 27. November 2018 um 14:25

    Ja, das ist correkt :)

  • Sehr schnell in GUI schreiben

    • Kanashius
    • 25. November 2018 um 17:29

    1. Wenn die Anzeige für Sekunden aktualisiert werden soll, aktualisiere nicht alle 30 Millisekunden, sonder alle 500 bis 250 ms (Das Sleep in Zeile 24).

    2. Nicht jedesmal ein neues Label erstellen, sondern einmal 4 Label erstellen und diese aktualisieren. Es ist deutlich mehr aufwand ein neues label zu erstellen, statt den text zu ändern. So hast du innerhalb von sekunden tausende labels die übereinander liegen. Das zeichen der gui wird also mit der zeit immer langsamer.

  • Internet sperren für Prüfungssituationen

    • Kanashius
    • 26. Oktober 2018 um 13:28

    Naja, die erste Frage wäre natürlich, ob es eine Option ist, von Office 365 wegzugehen und stattdessen Opensource Software wie OpenOffice zu nutzen. (Btw. die sinnvollste Methode, da Schüler gleich lernen, dass es gute kostenlose Software gibt, statt der teuren Microsoft Office software.)

    Blockieren ist sonst so nicht einfach möglich, dafür müssten meines Wissens nach extra Treiber installiert werden und das wird recht schnell kompliziert.

    Was gehen sollte, wäre das du in cmd mit "netstat -tabn" alle aktiven Verbindungen ausließt. Dabei kannst du einen Filter einbauen und die Aufsichtsperson bei der Klausur wird benachrichtigt, wenn dort eine neue Verbindung auftaucht, die nicht gefiltert wird. (Der Prozess, der die Verbindung herstellt wird ebenfalls angezeigt)

    (netstat -tabn benötigt Administratorrechte #requireAdmin)

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™