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

  • bereich definieren

    • BugFix
    • 17. April 2010 um 16:53

    Nun, bei uns funktioniert es. Somit ist ein Fehler im Code ausgeschlossen. Das Problem liegt also auf andere Weise bei dir.

  • bereich definieren

    • BugFix
    • 17. April 2010 um 16:45

    Und um es noch kürzer zu machen, befüllt man die Struktur in einem Aufruf. ;)

    [autoit]

    HotKeySet('#!e', '_exit')

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

    While 1
    ConsoleWrite( _MouseOverRECT(10, 10, 200, 200) & @CRLF)
    Sleep(100)
    WEnd

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

    Func _exit()
    Exit
    EndFunc

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

    Func _MouseOverRECT($iLeft, $iTop, $iRight, $iBottom)
    Local $tRECT = DllStructCreate('int Left;int Top;int Right;int Bottom')
    Local $old = Opt("MouseCoordMode", 1), $aMousePos = MouseGetPos()
    Opt("MouseCoordMode", $old)
    DllCall("user32", 'long', 'SetRect', 'ptr', DllStructGetPtr($tRECT), 'long', $iLeft, 'long', $iTop, 'long', $iRight, 'long', $iBottom)
    Local $ret = DllCall("user32", 'long', 'PtInRect', 'ptr', DllStructGetPtr($tRECT), 'long', $aMousePos[0], 'long', $aMousePos[1])
    If $ret[0] > 0 Then Return True
    Return False
    EndFunc

    [/autoit]

    Verwendung von Opt("MouseCoordMode", 1) ist richtig und wichtig. Aber auch bitte den vorherigen Wert speichern und anschließend zurücksetzen. Es kann ja sein, dass im Programm momentan ein anderer Modus genutzt wird.

  • Suche Jemand, der mir eine Leitstelle Coden kann

    • BugFix
    • 17. April 2010 um 14:40

    Ich weiß nicht, ob sich dafür jemand findet.
    Solch eine Software ist recht komplex. Das braucht schon einige hundert Mannstunden um das im vollen Funktionsumfang zu erstellen. Selbst wenn du da einen 1-EUR Jober findest zum Programm schreiben, ist das noch immer 'ne Stange Geld.

  • HotKeys in SciTE

    • BugFix
    • 17. April 2010 um 12:02

    SciTE bietet noch ein paar mehr HotKeys als jene, die über "Menü-Bearbeiten" angezeigt werden.
    Ich hab mal hier eine Auflistung gemacht. Einige kannte ich auch noch nicht (z.B. rechteckigen Bereich auswählen od. Zeile tauschen).
    Bisher hab ich um eine Zeile zu löschen diese markiert und dann gelöscht. Aber das Markieren kann man sich sparen, einfach Cursor in die Zeile, Strg+Shift+L ;)

    HotKeys in SciTE
    Code
    Schriftgröße - vergrößern		Ctrl+Keypad+
    Schriftgröße - verkleinern		Ctrl+Keypad-
    Schriftgröße - zurück auf normal	Ctrl+Keypad/
    
    
    Tab aktivieren links vom aktuellen Tab	Ctrl+Tab
    Tab aktivieren rechts vom aktuellen Tab	Ctrl+Shift+Tab
    
    
    Einrücken				Tab
    Einrücken rückgängig			Shift+Tab
    
    
    Löschen bis Wortanfang			Ctrl+BackSpace
    Löschen bis Wortende			Ctrl+Delete
    Löschen bis Zeilenanfang		Ctrl+Shift+BackSpace
    Löschen bis Zeilenende			Ctrl+Shift+Delete
    
    
    Gehe zum Dokumentanfang			Ctrl+Home
    Auswahl bis Dokumentanfang		Ctrl+Shift+Home
    Gehe zum Zeilenanfang			Home
    Gehe zum Anfang der gezeigten Zeile 	Alt+Home  (wenn Zeilenumbruch aktiv, Pos. nach dem Umbruch)
    Gehe zum Dokumentende			Ctrl+End
    Auswahl bis Dokumentende		Ctrl+Shift+End
    Gehe zum Ende der gezeigten Zeile 	Alt+End  (wenn Zeilenumbruch aktiv, Pos. vor dem Umbruch)
    
    
    Lesezeichen Erstellen/Löschen		Ctrl+F2
    Gehe zum nächsten Lesezeichen		F2
    Auswahl bis zum nächsten Lesezeichen	Alt+F2
    
    
    Suche Auswahl				Ctrl+F3
    Suche Auswahl rückwärts			Ctrl+Shift+F3
    
    
    Scrollen aufwärts			Ctrl+Up
    Scrollen abwärts			Ctrl+Down
    
    
    Zeile ausschneiden			Ctrl+L
    Zeile kopieren				Ctrl+Shift+T
    Zeile löschen				Ctrl+Shift+L
    Zeile tauschen mit voriger		Ctrl+T
    
    
    Auswahl duplizieren			Ctrl+D
    
    
    Rechteckigen Block auswählen				Alt+Shift+Movement
    Rechteckige Blockauswahl erweitern bis Zeilenanfang	Alt+Shift+Home
    Rechteckige Blockauswahl erweitern bis Zeilenende	Alt+Shift+End
    Alles anzeigen

    Dateien

    HotKeys_SciTE.txt 1,54 kB – 1.834 Downloads
  • _GUICtrlRichEdit_Create ohne blinkender Cursor

    • BugFix
    • 17. April 2010 um 09:26
    Zitat von veronesi

    Doch beim Text des Labels muss ich auch einzelne Wörter Fett markieren können.


    Alternativ kannst du doch den Text in mehrere Label stückeln, dann ist auch die Formatierung kein Problem. Denn du benötigst doch kein Eingabefeld, sondern fertiger Text wird ausgegeben. Um da auch dynamischen Text anzeigen (und formatieren) zu können, kannst du zur Laufzeit die Abmessungen ermitteln und die Labels antsprechend anpassen (suche mal nach 'Textmeter').

  • Suchfunktion in einem großen Array - ich blicks nicht

    • BugFix
    • 16. April 2010 um 23:26

    Ich werd nicht ganz schlau, was du möchtest.
    - In den Exceldateien steht (vermutlich) ein Begriff (wo steht der), den du suchen willst.

    Dann ist es doch viel einfacher, die Excelsuche zu nutzen. Kannst du auch über AutoIt anschieben und auswerten.

    Bsp.:

    [autoit]

    ; Eintrag suchen
    Local $sFilePath = 'C:\test\si.xls'
    Local $sSuchbegriff = '15.02.2009'

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

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 0
    Local $oBook = $oExcel.Workbooks.Open($sFilePath)
    Local $oSheet = $oBook.Sheets(1)

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

    Local $Zelle, $Address = 0
    $Zelle = $oSheet.UsedRange.Find($sSuchbegriff)
    If $Zelle <> '' Then $Address = $Zelle.Address ; Suchbegriff gefunden in Zelle.Adresse

    [/autoit]
  • DLL-Dateien erstellen (nicht mit AutoIt)?

    • BugFix
    • 16. April 2010 um 23:02

    Erstellen lassen sich mit AutoIt keine Dll. Aber du kannst jede beliebige Dll verwenden und mit eigenem Inhalt füllen. Dazu kannst du den Resourcehacker oder den XN Resource Editor verwenden.

  • Makro in Excel umwandeln zu autoit

    • BugFix
    • 16. April 2010 um 22:27

    Das sollte so gehen:
    (In deinem Fall natürlich eine bestehende Datei öffnen.)

    [autoit]

    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 1
    $oExcel.SheetsInNewWorkbook = 1 ; Anzahl der gewünschten Sheets beim Erstellen festlegen
    Local $oBook = $oExcel.Workbooks.Add ; im Excel-Objekt ein Workbook-Objekt erstellen
    Local $oSheet = $oBook.Sheets(1)
    Local $i = 9 ; <== Startzeile

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

    $Zeilenanzahl = $oExcel.Worksheets(1).UsedRange.Rows.Count
    While $i <= $Zeilenanzahl
    $oSheet.Rows($i).Interior.ColorIndex = 34
    $i += 2
    WEnd

    [/autoit]
  • Makro in Excel umwandeln zu autoit

    • BugFix
    • 16. April 2010 um 22:11

    Ahh, jetzt verstehe ich.
    Aber das kann schon rein logisch nicht klappen. Du gibst die Funktion an, die das Makro ausführen würde. Dazu wird intern VBA aufgerufen. Dieser Schritt fehlt, wenn du es per AutoIt machst.
    Also du willst folgendes:
    - Eingabe: Startzeile
    - Ermitteln: letzte belegte Zeile
    - in diesem Bereich jede zweite Zeile mit gewählter Hintergrundfarbe ausfüllen

    Das meinte ich übrigens mit Pseudocode ;) - nicht das Kommentieren des Codes.
    Wenn du das so möchtest, werde ich mal eine AutoItvariante dazu erstellen.

  • Makro in Excel umwandeln zu autoit

    • BugFix
    • 16. April 2010 um 21:30

    Schreib mal bitte in Pseudocode, was genau getan werden soll. Aus dem Makro werde ich nicht schlau.
    Also in der Form:
    - Tabelle öffnen
    - von Zeile X bis zur letzten belegten Zeile markieren
    etc. aber jedes Detail.

  • Makro in Excel umwandeln zu autoit

    • BugFix
    • 16. April 2010 um 20:25

    Du willst also in einer Exceltabelle dieses Makro ausführen aber in Form eines AutoIt-Skripts?

  • List Text Fett

    • BugFix
    • 16. April 2010 um 18:03

    Nimm besser ein Listview, da geht es (ListView - SubItem einzeln färben/formatieren, Finale Version!).

  • Konsolen-UDF

    • BugFix
    • 16. April 2010 um 17:44

    Es gibt (fast) nichts, was nicht schon gemacht wurde. :rofl:
    Guckst du: Eigene Console

  • Rechner verbessern , Prozessor & Co

    • BugFix
    • 15. April 2010 um 21:04

    Billig heißt, mit möglichst wenig Aufwand einen Effekt erreichen.
    Arbeitsspeicher aufpeppen (bis 4GB geht bei dem Board) und andere CPU (Athlon™ 64 X2 Dual Core verkraftet das Board). Das ist die preiswerteste Variante um aus der Kiste mehr rauszuholen.

  • Nur Zahlen in ein Input eingeben

    • BugFix
    • 15. April 2010 um 19:31

    Gib dem Input den Style: ES_NUMBER. ;)

  • StringReplace Zeilenumbruch erhalten

    • BugFix
    • 15. April 2010 um 17:05
    Zitat von MrB

    BugFix

    Hast sogar Recht.

    Naja, blindes Huhn findt auch mal 'n Korn. :rofl:

  • Fehlerhafte Werte von _GUICtrlTab_GetItemRect() und _GUICtrlTab_GetItemRectEx()

    • BugFix
    • 15. April 2010 um 15:25
    Zitat von nuts

    Nichts anderes macht deine Funktion!


    Natürlich, nur sind die Daten im Array, wenn du es beim Erstellen lädst, statisch. Mit der Funktion erfolgt die Berechnung im Moment des Zugriffs. ;)

    Aber du hast recht: Hauptsache funktioniert :D

  • Fehlerhafte Werte von _GUICtrlTab_GetItemRect() und _GUICtrlTab_GetItemRectEx()

    • BugFix
    • 15. April 2010 um 14:38
    Zitat von nuts

    lässt sich die absolute Position des Tabitems doch berechnen und z.B. in ein Array ablegen?


    Könnte man machen, ist aber nicht flexibel. Wenn der User z.B. die Möglichkeit hat die Registertitel zu ändern, ändern sich auch die Positionen aller Item.

    Ich habe deshalb jetzt eine Funktion erstellt, die die Koordianten relativ zum Fenster ermittelt und bei der Gelegenheit habe ich aus den beiden Funktionen eine gemacht. Ist doch blödsinnig, nur wegen eines anderen Returntypes eine neue Funktion zu verwenden.

    So klappt es jetzt:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiTab.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>

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

    $Form1 = GUICreate("Test", 297, 341, 210, 144)
    $TabID = GUICtrlCreateTab(18, 18, 280, 240)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
    $tab1 = GUICtrlCreateTabItem("Tab 0")
    $tab2 = GUICtrlCreateTabItem("Tab 1")
    $tab3 = GUICtrlCreateTabItem("Tab 2")
    $tab4 = GUICtrlCreateTabItem("Tab 3")
    GUICtrlCreateTabItem("")
    $labelRect = GUICtrlCreateLabel('', 8, 270, 280, 17)
    $labelMouse = GUICtrlCreateLabel('', 8, 305, 280, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_SECONDARYUP
    For $i = 0 To 3
    $old = Opt('MouseCoordMode', 2)
    $mouse = MouseGetPos()
    Opt('MouseCoordMode', $old)
    GUICtrlSetData($labelMouse, 'MousePos: ' & $mouse[0] & ', ' & $mouse[1])
    If _MouseOverTabItem($Form1, $TabID, $i) Then
    WinSetTitle($Form1, '', 'Right clicked Index: ' & $i)
    $rect = _GUICtrlTab_GetItemRectRelativ($Form1, $TabID, $i)
    GUICtrlSetData($labelRect, 'ItemRECT: ' & $rect[0] & ', ' & $rect[1] & ', ' & $rect[2] & ', ' & $rect[3])
    ExitLoop
    EndIf
    Next
    EndSwitch
    WEnd

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

    Func _MouseOverTabItem($GUI, $TabID, $iTabItem)
    If Not BitAND(WinGetState($GUI), 8) Then Return False
    Local $old = Opt('MouseCoordMode', 2)
    Local $posM = MouseGetPos(), $tMouse = DllStructCreate($tagPOINT)
    DllStructSetData($tMouse, 1, $posM[0])
    DllStructSetData($tMouse, 2, $posM[1])
    Opt('MouseCoordMode', $old)
    Local $tTabItem = _GUICtrlTab_GetItemRectRelativ($GUI, $TabID, $iTabItem, 1)
    If _WinAPI_PtInRect($tTabItem, $tMouse) Then
    Return True
    Else
    Return False
    EndIf
    EndFunc ;==>_MouseOverTabItem

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

    ;===============================================================================
    ; Function Name: _GUICtrlTab_GetItemRectRelativ($GUI, $TabID, $iTabItem, $iReturnType=0)
    ; Description: Gibt die Koordinaten eines TabItem relativ zu den GUI-Koordinaten zurück
    ; Parameter(s): $GUI - Fensterhandle
    ; $TabID - ID des Tab (nicht Handle!)
    ; $iTabItem - Tabitem Index
    ; $iReturnType - Rückgabetyp Array=0 (Standard), RECT-Struktur=1
    ; Return Value(s): Array oder Struktur mit den TabItem Koordinaten (left, top, right, bottom)
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _GUICtrlTab_GetItemRectRelativ($GUI, $TabID, $iTabItem, $iReturnType=0)
    Local $hWnd = GUICtrlGetHandle($TabID)
    Local $TabPos = ControlGetPos($GUI, '', $TabID)
    Local $tRECT = _GUICtrlTab_GetItemRectEx($hWnd, $iTabItem)
    Local $posLeft = $TabPos[0]+2, $posTop = $TabPos[1]+2
    Local $width = (DllStructGetData($tRECT,3) - DllStructGetData($tRECT,1))
    Local $height = DllStructGetData($tRECT,4) - DllStructGetData($tRECT,2)
    If $iTabItem > 0 Then
    For $i = 0 To $iTabItem -1
    $tRECT = _GUICtrlTab_GetItemRectEx($hWnd, $i)
    $posLeft += (DllStructGetData($tRECT,3) - DllStructGetData($tRECT,1))
    Next
    EndIf
    If $iReturnType Then
    DllCall("user32", 'long', 'SetRect', 'ptr', DllStructGetPtr($tRECT), _
    'long', $posLeft, 'long', $posTop, 'long', $posLeft+$width, 'long', $posTop +$height)
    Return $tRECT
    Else
    Local $aOut[4] = [$posLeft, $posTop, $posLeft +$width, $posTop +$height]
    Return $aOut
    EndIf
    EndFunc ;==>_GUICtrlTab_GetItemRectRelativ

    [/autoit]
  • Basis-Client für IRC-Chat

    • BugFix
    • 15. April 2010 um 13:20

    IRC ist ein dezentrales, verteiltes Protokoll. Beim HTTP Protokoll hast du eine abgeschlossene Ende-zu-Ende Verbindung zwischen Webbrowser und Webserver, das ist beim IRC nicht der Fall. Ein IRC-Client kann sich zwar verschlüsselt zum IRC-Server verbinden, aber der ist selbst mit einer Vielzahl anderer User und Server verbunden und übernimmt die Funktion eines Proxy. Du hast keine Gewähr, dass der Server diese Verbindungen auch verschlüsselt. Es kommt also für den 'geneigten Lauscher' nur darauf an, sich an der richtigen Stelle einzuklinken um unverschlüsselt mitlesen zu können. :huh:

  • Fehlerhafte Werte von _GUICtrlTab_GetItemRect() und _GUICtrlTab_GetItemRectEx()

    • BugFix
    • 15. April 2010 um 13:10
    Zitat von nuts

    Man müsste an die Koordinaten relativ zur GUI rankommen.


    Hab jetzt nochmal verschiedene Positionen getestet. Es ist wirklich ein Unding, die Funktion gibt Breite und Höhe der Items korrekt zurück aber die Left/Top-Position beginnt für Item0 immer mit 2,2.

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™