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

Beiträge von OhnePlan

  • RichEdit Hyperlinks

    • OhnePlan
    • 25. Juni 2024 um 10:53

    Hallo Oscar,

    vielen Dank, dass das geklappt hat! Jetzt möchte ich gerne noch einen Schritt weitergehen und Hyperlinks implementieren. Allerdings scheitere ich gerade an der Formatierung der Strings. Ich hänge das komplette Skript unten an. Vielleicht kann mir jemand dabei helfen.

    Vielen Dank im Voraus!

    Viele Grüße,

    OhnePlan

    Dateien

    _ChatBoxTest.au3 4,27 kB – 88 Downloads
  • RichEdit Hyperlinks

    • OhnePlan
    • 24. Juni 2024 um 13:20

    Hallo zusammen,

    ich habe eine alte UDF von einem Benutzer hier, leider weiß ich nicht mehr, von wem sie stammt. Er hat eine Chatbox mit RichEdit erstellt, die ziemlich klein und übersichtlich ist und für meine Zwecke vollkommen ausreicht. Da ich nicht weiterkomme, habe ich das Ganze nun auf das Wesentliche beschränkt. Leider funktioniert die Verlinkung zu Webseiten einfach nicht. Hat vielleicht jemand eine Idee?

    Lieben Gruß,

    OhnePlan


    AutoIt
    #include <GuiRichEdit.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WinAPIShellEx.au3>
    #include <MsgBoxConstants.au3>
    
    
    	Global $hWh = GUICreate("RichEdit Link Test", 600, 400)
    	Global $hRichEdit = _ChatBoxCreate($hWh, 10, 10, 580, 380)
    	GUISetState()
    
    	$data = "Hier ist ein Link: https://www.autoit.de" & @CRLF
    	_ChatBoxAdd($hRichEdit, $data)
    
    	While 1
    		$nMsg = GUIGetMsg()
    		Switch $nMsg
    			Case $GUI_EVENT_CLOSE
    				ExitLoop
    		EndSwitch
    		Sleep(10)
    	WEnd
    
    	_GUICtrlRichEdit_Destroy($hRichEdit)
    	GUIDelete($hWh)
    	Exit
    
    
    	Func _ChatBoxCreate($gui, $x = 0, $y = 0, $w = 100, $h = 100)
    		$hRichEdit = _GUICtrlRichEdit_Create($gui, "", $x, $y, $w, $h, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    		_GUICtrlRichEdit_AutoDetectURL($hRichEdit, True)
    		_GUICtrlRichEdit_SetEventMask($hRichEdit, $ENM_LINK) ; Setze das Ereignismask, um Link-Benachrichtigungen einzuschließen
    		GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    		Return $hRichEdit
    	EndFunc
    
    	Func _ChatBoxAdd($box, $txt)
    		_GUICtrlRichEdit_AppendText($box, $txt)
    	EndFunc
    
    	Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    		#forceref $hWnd, $iMsg, $wParam, $lParam
    
    		; Struktur für NMHDR
    		Local $tNMHDR = DllStructCreate("struct;hwnd hWndFrom;uint_ptr idFrom;int code;endstruct", $lParam)
    		Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    		Local $iCode = DllStructGetData($tNMHDR, "code")
    
    		If $hWndFrom = $hRichEdit And $iCode = $EN_LINK Then
    			; Struktur für ENLINK
    			Local $tENLINK = DllStructCreate("struct;uint cbSize;int idFrom;int code;hwnd hWnd;int msg;wparam wParam;lparam lParam;int cpMin;int cpMax;", $lParam)
    			If DllStructGetData($tENLINK, "msg") = $WM_LBUTTONUP Then
    				; Direkter Zugriff auf die CHARRANGE-Struktur
    				Local $cpMin = DllStructGetData($tENLINK, "lParam", "struct.cpMin")
    				Local $cpMax = DllStructGetData($tENLINK, "lParam", "struct.cpMax")
    				ConsoleWrite("cpMin: " & $cpMin & ", cpMax: " & $cpMax & @CRLF) ; Debug-Ausgabe
    
    				If $cpMax > $cpMin Then
    					Local $sLink = _GUICtrlRichEdit_GetTextInRange($hRichEdit, $cpMin, $cpMax)
    					ConsoleWrite("Erkannter Link: " & $sLink & @CRLF) ; Debug-Ausgabe
    					If StringLeft($sLink, 4) = "http" Then
    						Local $result = ShellExecute($sLink)
    						If @error Then
    							MsgBox($MB_ICONERROR, "Fehler", "Konnte den Link nicht öffnen: " & $sLink & @CRLF & "Fehler: " & @error)
    						Else
    							ConsoleWrite("ShellExecute Ergebnis: " & $result & @CRLF) ; Debug-Ausgabe
    						EndIf
    					EndIf
    				Else
    					ConsoleWrite("Ungültiger Bereich: cpMax ist kleiner oder gleich cpMin" & @CRLF)
    				EndIf
    			EndIf
    		EndIf
    	EndFunc
    Alles anzeigen
  • Select Combo Entry

    • OhnePlan
    • 29. April 2024 um 13:48

    oh man... :Face:vielen Dank ^^

  • Select Combo Entry

    • OhnePlan
    • 29. April 2024 um 09:49

    Guten Morgen zusammen,

    ich habe mal wieder ein kleines Problem. Ich schreibe einen Wert einer ComboBox in eine ini Datei. Beim neustart des Programms, soll die ini eingelesen und der Wert in der Combo ausgewählt werden. Leider bekomme ich das nicht hin. Hier ein Textaufbau zum besseren verständnis.

    AutoIt
    	#include <GUIConstantsEx.au3>
    	#include <ComboConstants.au3>
    	#include <String.au3>
    
    	$iniPath = @ScriptDir & "\config.ini"
    	$section = "Hardware"
    	$key = "CPU"
    	$default1 = "512"
    
    	GUICreate("Example ComboBox", 400, 300)
    	$hComboBox = GUICtrlCreateCombo("", 10, 10, 180, 20, $CBS_DROPDOWNLIST)
    	GUICtrlSetData($hComboBox, "512|1024|2048|4096|6144")
    
    	$sValue = IniRead($iniPath, $section, $key, $default1)
    	_pc($sValue)
    	$iIndex = _ComboBox_FindStringExact($hComboBox, $sValue)
    	_pc($iIndex)
    	If $iIndex = -1 Then $iIndex = _ComboBox_FindStringExact($hComboBox, "512")
    
    	;GUICtrlSetData($hComboBox, GUICtrlRead(GUICtrlSendMsg($hComboBox, $CB_GETLBTEXT, $iIndex, "")))
    
    	GUISetState(@SW_SHOW)
    
    	While 1
    		Switch GUIGetMsg()
    			Case $GUI_EVENT_CLOSE
    				Exit
    		EndSwitch
    	WEnd
    
    	Func _ComboBox_FindStringExact($hCombo, $sString)
    		Local $iCount = GUICtrlSendMsg($hCombo, $CB_GETCOUNT, 0, 0)
    		Local $sBuffer, $iResult, $sText
    		For $i = 0 To $iCount - 1
    			$sBuffer = DllStructCreate("char[260]")
    			$iResult = GUICtrlSendMsg($hCombo, $CB_GETLBTEXT, $i, DllStructGetPtr($sBuffer))
    			If $iResult <> -1 Then
    				$sText = DllStructGetData($sBuffer, 1)
    				If $sText = $sString Then
    					Return $i
    				EndIf
    			EndIf
    		Next
    		Return -1
    	EndFunc
    
    	Func _PC($sStr, $iVor = Default, $iNach = Default)
    
    		If $iVor = Default Then $iVor = 1
    		If $iNach = Default Then $iNach = 1
    
    		ConsoleWrite(_StringRepeat(@CRLF, $iVor) & $sStr & _StringRepeat(@CRLF, $iNach+1))
    		Return True
    	EndFunc
    Alles anzeigen

    INI-Datei:

    Code
    [Hardware]
    CPU=2048

    Gruß, OhnePlan

  • Schlechte Icon Qualität

    • OhnePlan
    • 13. März 2024 um 15:06

    Alles klar. Danke dir

  • Schlechte Icon Qualität

    • OhnePlan
    • 13. März 2024 um 13:26

    ok, habs hinbekommen. Befasse mich noch nicht lange mit IcoFX und da lag der Fehler ^^"

    Eine Frage hätte ich noch: Ich kann im Icon selber ja unterschiedliche Größen speichern, wie greif ich darauf zu?

    Code
    GUICtrlCreateIcon($_sDll, $_iIconNr,280,15,$iIconSize,$iIconSize)

    Die Icon Nummer ist das direkte Icon in der DLL. Aber dieses hat ja noch die unterschiedlichen größen gespeichert, quasi wie ein Ordner. Klar kann ich damit die größe angeben. aber welches Icon nimmt er dafür her? Wenn ich das größte grösser brauch wäre es natürlich schön, ich kann dieses auch auswählen und nicht das kleinste grösser mach.

  • Schlechte Icon Qualität

    • OhnePlan
    • 13. März 2024 um 11:54

    Ich nutze icofx https://icofx.ro/index.html

  • Schlechte Icon Qualität

    • OhnePlan
    • 13. März 2024 um 11:29

    Hallo,
    ich habe mir ein schönes Icon für mein Programm gebastelt. Leider ist nach dem Kompilieren die Qualität des Icons schlecht. Das Quellbild hat eine Auflösung von 3700x3700, 300 DPI, und ich konvertiere es in ein 256x256 32-Bit-Icon. Gibt es in AutoIt oder im Compiler irgendwelche Einstellungen dazu?


    Gruß,

    OhnePlan

  • Pfad in neuem Tab öffnen

    • OhnePlan
    • 13. März 2024 um 11:27

    vielen dank ^^

  • Pfad in neuem Tab öffnen

    • OhnePlan
    • 8. März 2024 um 19:16

    Immernoch keiner eine Idee?

  • ISN AutoIt Studio

    • OhnePlan
    • 5. März 2024 um 16:13
    Zitat von ISI360

    Ok, und der Zugriff auf das Projekt erfolgt über ein Netzlaufwerk, oder?
    Die Einstellungen für Autocomplete unter Einstellungen -> Skripteditor -> (Bereich Autocomplete in den Schreibeinstellungen) hast du auch geprüft? (zb. die Option dass dir nur Globale Variablen vorgeschlagen werdem)

    Beides Ja ^^

  • ISN AutoIt Studio

    • OhnePlan
    • 5. März 2024 um 13:53
    Zitat von ISI360

    Das Studio geht immer von der Hauptdatei deines Projektes aus und durchsucht jene Dateien, welche von hier aus als Include verlinkt sind. Ist dies der Fall?

    Ja, das ist definitiv der Fall. Selbst wenn ich ein neue Variable anlege und speichere, findet er sie 3 Zeilen später nicht.

  • Pfad in neuem Tab öffnen

    • OhnePlan
    • 5. März 2024 um 10:49

    In den Ordneroptionen unter Ansicht. Das sollte Systemweit sein?

    Musst halt für die unterschiedlichen Ordnertypen einmal machen.

    Edit: Eben mit dem Bilder Ordner getestet. Funktioniert bei mir

  • Pfad in neuem Tab öffnen

    • OhnePlan
    • 5. März 2024 um 08:03

    Ich meine seit Windows 11 23H2

    Bilder

    • 2024-03-05 08_02_32-.png
      • 15,93 kB
      • 1.188 × 130
  • Pfad in neuem Tab öffnen

    • OhnePlan
    • 4. März 2024 um 21:02

    Keiner eine Idee?

  • Pfad in neuem Tab öffnen

    • OhnePlan
    • 3. März 2024 um 07:07

    Hallo zusammen, ich mal wieder ^^

    ich sitze an einem neuen Script, das mir bei Ausführung bestimmte Ordner und Programme öffnen soll. Die Ordner sollen unter Windows 11 in einem neuen Explorer-Tab geöffnet werden. Meine erste Version macht das über den Send-Befehl, was auch klappt. Nun möchte ich das aber sauberer über die Windows API lösen. Ist das überhaupt machbar? Ich bräuchte da mal Eure Hilfe ^^


    Vielen Dank

    OhnePlan

    AutoIt
    #include "File.au3"
    
    Global $sTxtName = "OpenElementsList.txt"
    FileInstall(".\OpenElementsList.txt", ".\OpenElementsList.txt")
    
    Global $sProgramVersion = "0.0.1.7"
    Global $sProgramName = "OpenElements"
    
    Global $sTxtFile = @ScriptDir & "\" & $sTxtName
    Global $arFolderPaths
    Global $iSleepTime = 300
    Global $bWin11 = False
    Global $iStart = 0
    Global $sWinVersion = @OSVersion
    
    
    If Not FileExists($sTxtFile) Then
        MsgBox(16, "Fehler", "Die Textdatei " & $sTxtName & " wurde nicht gefunden.")
        Exit
    EndIf
    
    
    _FileReadToArray($sTxtFile, $arFolderPaths)
    If @error Then
        MsgBox(16, "Fehler", "Beim Lesen der Textdatei ist ein Fehler aufgetreten. Error: " & @error & @CRLF & @CRLF & $sTxtName & " darf nicht leer sein")
        Exit
    EndIf
    
    
    If IsNumber($arFolderPaths[0]) Then _ArrayDelete($arFolderPaths, 0)
    
    
    For $i = 0 To UBound($arFolderPaths) - 1
        $arFolderPaths[$i] = _RemoveTrailingSlash($arFolderPaths[$i])
    Next
    
    ; Iteriere über die Pfade im Array und entferne nicht existierende Pfade
    For $i = UBound($arFolderPaths) - 1 To $iStart Step -1 ; Rückwärts durch das Array iterieren
        If Not FileExists($arFolderPaths[$i]) Then
            _ArrayDelete($arFolderPaths, $i)
        EndIf
    Next
    
    _FileWriteFromArray($sTxtFile, $arFolderPaths)
    
    
    If $sWinVersion = "WIN_11" Then $bWin11 = True
    
    
    
    If Not WinExists("[CLASS:CabinetWClass]") Then
        $iStart = 1
        ShellExecute($arFolderPaths[0])
        WinWait("[CLASS:CabinetWClass]")
    Else
        WinActivate("[CLASS:CabinetWClass]")
    EndIf
    
    For $i = $iStart To UBound($arFolderPaths) - 1
        If StringInStr(FileGetAttrib($arFolderPaths[$i]), "D") Then
            If $bWin11 Then
                If _TabExists($arFolderPaths[$i]) Then ContinueLoop
    
                _OpenFolderInNewTab($arFolderPaths[$i])
            EndIf
        Else
            ShellExecute($arFolderPaths[$i])
        EndIf
    Next
    
    Exit
    
    Func _TabExists($_sPath)
        Local $oShellWindows = ObjCreate("Shell.Application").Windows
        For $oExplorer In $oShellWindows
            If StringInStr($oExplorer.Document.Folder.Self.Path, $_sPath) Then
                Return True
            EndIf
        Next
        Return False
    EndFunc
    
    Func _RemoveTrailingSlash($sPath)
        If StringRight($sPath, 1) = "/" Or StringRight($sPath, 1) = "\" Then
            Return StringTrimRight($sPath, 1)
        Else
            Return $sPath
        EndIf
    EndFunc
    
    Func _OpenFolderInNewTab($_sPath)
    
      $objShellWindows = ObjCreate("Shell.Application").Windows
      $objShell = ObjCreate("Shell.Application")
    
      For $objExplorer In $objShellWindows
        If StringInStr($objExplorer.Document.Folder.Self.Path, $_sPath) Then
          $objExplorer.Navigate2($_sPath, 0x1000)
          Return
        EndIf
      Next
    
      $objShell.Open($_sPath)
    
    EndFunc
    Alles anzeigen
  • ISN AutoIt Studio

    • OhnePlan
    • 20. Februar 2024 um 05:15

    Hallo ISI360

    echt klasse Projekt. Würde es gerne zu meiner Standard IDE für AutoIT machen, Leider habe ich das selbe Problem wie mbischoff . Die Variablen werden mir nicht vorgeschlagen, egal ob im Projekt oder in einer einzelnen Datei. Speichern hilft nichts, nur Neustarten. Greife über eine NAS auf die Daten zu. AutoBackup ist deaktiviert.


    Gruß OhnePlan

  • Gesamtzeit richtig berechnen

    • OhnePlan
    • 18. Februar 2024 um 07:19

    Guten Morgen,

    ich habs hinbekommen. Muss zugeben, so ein bisschen stand ich schon aufm Schlauch :D.

    Danke für Eure Hilfe


    Gruß OhnePlan

  • Gesamtzeit richtig berechnen

    • OhnePlan
    • 17. Februar 2024 um 12:57

    Weiß mir mit meinem Script keiner Rat?

  • Richtig debuggen?

    • OhnePlan
    • 17. Februar 2024 um 08:33

    Alles klar. Vielen Dank für die Erklärung ^^

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™