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

  • If Bedingung - Fehler

    • BugFix
    • 21. April 2010 um 09:04

    Damit du deine eigene Abfrage verstehst, habe ich es mal in die Teilausdrücke zerlegt:

    [autoit]

    If ( $xoldArraynum1 <> 1 And $xoldArraynum1 = 9 And $yoldArraynum1 = 0 ) _ ; Teilausdruck nur wahr wenn ..<>1 UND ..=9 UND ..=0
    ; trifft eine der folgenden Bedingungen zu ist der GESAMTAUSDRUCK WAHR! (durch Or)
    Or $yoldArraynum1 = 2 _
    Or $yoldArraynum1 = 4 _
    Or $yoldArraynum1 = 6 _
    Or $yoldArraynum1 = 8 Then

    [/autoit]
  • Netzwerkkarten deactivieren und wieder activieren von allen betriebsystemen?

    • BugFix
    • 21. April 2010 um 07:58

    Funktionen einfach zu übernehmen macht wenig Sinn. Man sollte schon einen Blick hineinwerfen.
    In der Funktion _NICContol() wird $strFolderName in Abhängigkeit zur Systemsprache gesetzt. Es wird aber nur EN und FR abgeprüft. Für dein System bleibt demzufolge die Variable einfach leer.

  • Bitte auf verschiedenen Systemen testen und anpassen -->_GuiCtrlListView_MarkItem

    • BugFix
    • 20. April 2010 um 14:14
    Zitat von funkey

    Ganz so einfach geht es auch wieder nicht.

    :D - ja, die Offsets muß man leider mit reinrechnen. Aber zumindest muß man nicht 4 Linien zeichnen. ;)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <WinAPI.au3>

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

    Local $hGui, $listview, $button, $item1, $item2, $item3, $item4, $item5, $msg

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

    $hGui = GUICreate("listview items", 220, 250, 100, 200)

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

    If Random(0, 1, 1) Then GUICtrlCreateMenu("Test") ;manchmal mit, manchmal ohne Menü

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

    $listview = GUICtrlCreateListView("col1 |col2|col3|col4 ", 10, 10, 200, 150, -1, 0x21)
    $button = GUICtrlCreateButton("Click Me!!!!", 75, 170, 70, 20)
    $item1 = GUICtrlCreateListViewItem("item1|col12|col13|col14", $listview)
    $item2 = GUICtrlCreateListViewItem("item2|col22|col23|col24", $listview)
    $item3 = GUICtrlCreateListViewItem("item3|col32|col33|col34", $listview)
    $item4 = GUICtrlCreateListViewItem("item4|col42|col43|col44", $listview)
    $item5 = GUICtrlCreateListViewItem("item5|col52|col53|col54", $listview)
    GUISetState()

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

    Do
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $button
    _GuiCtrlListView_MarkItem($hGui, $listview, Random(0, 4, 1), Random(0, 3, 1))
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE

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

    Func _GuiCtrlListView_MarkItem($hWndGui, $hWnd, $iIndex, $iSubItem, $Color = 0xFF, $Redraw = 1)
    ;funkey April 16, 2010
    Local $aWndSize = WinGetPos($hWndGui)
    Local $aWndClientSize = WinGetClientSize($hWndGui)
    Local $aPos = ControlGetPos($hWndGui, "", $hWnd)

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

    Local $tRECT = DllStructCreate('int Left;int Top;int Right;int Bottom')
    Local $aRect = _GUICtrlListView_GetSubItemRect($hWnd, $iIndex, $iSubItem)
    DllCall("user32", 'long', 'SetRect', 'ptr', DllStructGetPtr($tRECT), _
    'long', $aRect[0] + $aPos[0] + $aWndSize[2] - $aWndClientSize[0], _
    'long', $aRect[1] + $aPos[1] + $aWndSize[3] - $aWndClientSize[1], _
    'long', $aRect[2] + $aPos[0] + $aWndSize[2] - $aWndClientSize[0], _
    'long', $aRect[3] + $aPos[1] + $aWndSize[3] - $aWndClientSize[1])

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

    If $Redraw Then _WinAPI_RedrawWindow($hWndGui)

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

    Local $hDC, $hBrush, $obj_orig
    $hDC = _WinAPI_GetWindowDC($hWndGui)
    $hBrush = _WinAPI_CreateSolidBrush($Color)
    $obj_orig = _WinAPI_SelectObject($hDC, $hBrush)
    _WinAPI_FrameRect($hDC, DllStructGetPtr($tRECT), $hBrush)

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

    ; clear resources
    _WinAPI_SelectObject($hDC, $obj_orig)
    _WinAPI_DeleteObject($hBrush)
    _WinAPI_ReleaseDC($hWndGui, $hDC)
    EndFunc ;==>_GuiCtrlListView_MarkItem

    [/autoit]
  • GUI mit eigener grafik(Ramen buttons)

    • BugFix
    • 20. April 2010 um 09:49

    Arbeite mit

    [autoit]

    GUIRegisterMsg($WM_MOVE,"_WM_MOVE")

    [/autoit]

    um bei Bewegung der GUI neu zeichnen zu lassen.
    Sinnvoll wäre auch noch WM_ENTERSIZEMOVE abzufragen um auch nach einem Resizing neu zu zeichnen.

  • Bitte auf verschiedenen Systemen testen und anpassen -->_GuiCtrlListView_MarkItem

    • BugFix
    • 19. April 2010 um 21:52

    Wäre es nicht einfacher, statt der 4 Einzellinien mit _WinAPI_FrameRect() zu zeichnen?
    Das RECT könntest du dir gleich mit _GUICtrlListView_GetItemRectEx() ausgeben lassen.

  • video codec für avi auslesen

    • BugFix
    • 19. April 2010 um 17:49

    - Datei binär einlesen
    - Offset 32, also mit einer Verschiebung von 32 Zeichen beginnt die Codec-Info (i.A. steht direkt vor der Info 'vid' o.ä.)
    - die nächsten Bytes enthalten die CodecInfo
    - beachten bei Größenangabe: wenn -1, Zahlenwert +256 wegen Speicherübertrag

  • Einzelne TabItems verstecken?

    • BugFix
    • 19. April 2010 um 15:55

    Wenn ich nicht irre, darf die Runtimebibliothek für VBA weitergegeben werden. Dann wäre es vielleicht auch möglich ohne installiertes Office darauf zuzugreifen. Ist aber sicher nicht unkompliziert.

  • video codec für avi auslesen

    • BugFix
    • 19. April 2010 um 15:07

    Das sollte helfen:

    Spoiler anzeigen
    Zitat

    AVI Header Format

    AVI files contain a 56-byte header, starting at offset 32 within the file.


    offset

    size

    description

    0

    4

    time delay between frames in microseconds

    4

    4

    data rate of AVI data

    8

    4

    padding multiple size, typically 2048

    12

    4

    parameter flags

    16

    4

    number of video frames

    20

    4

    number of preview frames

    24

    4

    number of data streams (1 or 2)

    28

    4

    suggested playback buffer size in bytes

    32

    4

    width of video image in pixels

    36

    4

    height of video image in pixels

    40

    4

    time scale, typically 30

    44

    4

    data rate (frame rate = data rate / time scale)

    48

    4

    starting time, typically 0

    52

    4

    size of AVI data chunk in time scale units

    Alles anzeigen
  • PNG in GUI einbauen

    • BugFix
    • 19. April 2010 um 14:57
    Zitat von Crys

    solange man keine GUI braucht!


    Nun, gerade die GUI-Erstellung/Bearbeitung ist eigentlich in AutoIt recht einfach zu handeln. Guck dir das mal in anderen Sprachen an. 8|

  • PNG in GUI einbauen

    • BugFix
    • 19. April 2010 um 14:42

    Versuche mal zu verstehen, was dort passiert. WM_PAINT ist eine Windowsnachricht, die man natürlich nur mit einer Funktion verknüpfen kann.
    Du mußt für beide Bilder ein Imagehandle erstellen und brauchst in der Func MY_WM_PAINT nur eine Zeile hinzufügen:
    _GDIPlus_GraphicsDrawImage($gui_grafik, $handle_bild2, 50, 50)

  • 567 = 100%

    • BugFix
    • 19. April 2010 um 13:40
    Zitat von autoitinstallermaker

    Allerdings kann ich ja schlecht dem Kompiler sagen 567 oder ähnliches sind 100%.


    Was spricht dagegen? Stinknormale Prozentrechnung: Wenn 567=100%, dann 5,67=1%.

  • PNG in GUI einbauen

    • BugFix
    • 19. April 2010 um 12:36

    Hier legst du die Position des Bildes fest:

    [autoit]

    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)

    [/autoit]


    Und ja, das Freigeben der Ressourcen sollte man sich angewöhnen.

  • Einzelne TabItems verstecken?

    • BugFix
    • 19. April 2010 um 10:04

    Ich mach mal einen neuen Eintrag, damit du merkst, dass noch was an Antwort gekommen ist ;) .

    Also:
    Ownerdraw funktioniert hierfür nicht. Ich kann alles zeichnerische auf dem Ctrl selbst gestalten aber nicht das Ctrl selber.

    Wenn es dir extrem wichtig ist, unbedint Tabs zu verstecken, gibt es einen Lösungsweg von hinten durch die Brust aufs Auge. :D
    - Exceltabelle - dadrin VBA-Editor aufrufen und ein Macro bauen mit deiner GUI. Du wirst merken, dass die Tabgestaltungsmöglichkeiten deutlich einfacher zu realisieren sind als in AutoIt (z.B. auf jedem Item ein eigenes Hintergrundbild, alle Ctrls transparent). Und das für dich wichtige: Visible=False ^^
    Die Tabs heißen in VBA übrigens Multiseiten.
    Der Pferdefuß ist das Interagieren zwischen AutoIt und VBA. VBA verwendet keine Ctrl, die du per ControlCommand() etc. ansprechen könntest. Insofern wäre ein Weg, von VBA sich ändernde Werte in die Hintergrund-Exceltabelle zu schreiben, die du dann (anstatt GuiGetMsg) intervallmäßig auf Änderungen prüfst.
    Ist sicher nicht optimal, aber damit kannst du dein Ziel umsetzen.
    Um eine VBA-Form ohne das dahinterliegende Excelsheet anzuzeigen, mußt du im VBAProject 'Diese Arbeitsmappe' auswählen und dort folgendes Makro erstellen:

    Code
    Private Sub Workbook_Open()
        Call Der_Name_deines_Makros_für_die_Form
    End Sub


    So wird die Form direkt beim Aufruf der Exceltabelle allein angezeigt:

    [autoit]

    $sPath = 'Pfad_der_XLS'
    $oExcel = ObjCreate('Excel.Application')
    $oExcel.Visible = False
    $oExcel.Workbooks.Open($sPath)

    [/autoit]


    Nicht vergessen, das Excelobjekt am Ende zu schließen:

    [autoit]

    $oExcel.DisplayAlerts = False ; Beenden ohne Speichern der Änderungen
    $oExcel.Application.Quit

    [/autoit]
  • Einzelne TabItems verstecken?

    • BugFix
    • 18. April 2010 um 18:46

    Soweit ich herausgefunden habe, geht verstecken nicht. Aber du kannst die Breite der 'zu versteckenden' Items auf 0 setzen. Dazu gibt es aber keine Funktion, du mußt beim Zeichnen des Ctrl selbst eingreifen (OWNERDRAW).
    Das hatte ich bei meiner Listview-UDF auch so verwendet.

  • Anzeige im Listfeld ans Ende

    • BugFix
    • 18. April 2010 um 17:49

    Was verstehst du unter Listfeld?

    - bei Listbox: _GUICtrlListBox_SetTopIndex($hWnd, $iIndex)

    - bei Listview: _GUICtrlListView_EnsureVisible($hWnd, $iIndex[, $fPartialOK = False])

  • Wie führe ich Aktionen durch wenn im Eingabefeld ( GUICtrlCreateInput ) geklickt wird?

    • BugFix
    • 18. April 2010 um 16:11

    Für das Markieren, wie folgt. Das andere funktioniert doch, du verwendest nur in einem Fall einen nicht existierenden IconIndex.

    [autoit]

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $GUI_EVENT_PRIMARYUP
    $pos = GUIGetCursorInfo()
    If $pos[4] = $Eingabe_Feld Then
    ControlSend($Hauptfenster, '', $Eingabe_Feld, '{Home}{ShiftDown}{End}{ShiftUp}')
    EndIf
    Case $OK_Button
    ;Textabfrage und desse Speicherung anlegen
    ;Nur Alphanummerisch ==> Keine Sonderzeichen
    GUICtrlSetData ( $Info_Text, "Bitte den Text ohne Sonderzeichen eingeben!" )
    GUICtrlSetImage ( $Icon1, "C:\Windows\System32\shell32.dll", -78)
    Case $Info_Button
    GUICtrlSetData ( $Info_Text, "Informationen wurden aufgerufen." )
    GUICtrlSetImage ( $Icon1, "C:\Windows\System32\shell32.dll", -261)
    MsgBox ( 64, "Info und Hilfe", "TEXT" )

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

    EndSwitch
    WEnd

    [/autoit]
  • Einzelne TabItems verstecken?

    • BugFix
    • 18. April 2010 um 14:29

    Mach es doch so, dass das TabItem nicht auswählbar ist (wenn es angeklickt wird, wird das NachbarItem aktiviert).
    Aber wieso willst du es überhaupt verstecken?

  • Word-UDF, Dokumente verbinden

    • BugFix
    • 18. April 2010 um 14:19

    Hi,
    hier mal eine Funktion um verschiedene Word-Dokumente in einem neuen Dokument zu verbinden.
    Wahlweise kann das neue Dokument angezeigt werden.
    Existieren eine/mehrere der übergebenen Dateien nicht, wird das Dokument mit den vorhandenen Dateien erstellt aber ein Fehler (inkl. Anzahl fehlender Dateien) ausgegeben.

    _WordCombineDocs
    [autoit]

    ;===============================================================================
    ; Function Name: _WordCombineDocs($sNewDocPath, $aPathDocs, $fNewDocOpen = False)
    ; Description: verbindet Worddokumente in einem neuen Dokument (Dokumente bleiben erhalten)
    ; Parameter(s): $sNewDocPath - kpl. Pfad des neuen Dokuments
    ; $aPathDocs - Array mit den Pfaden der zu verbindenden Dokumente
    ; $fNewDocOpen - das neue Dokument öffnen
    ; $fVisible - wenn $fNewDocOpen=True das neue Dokument anzeigen od. nicht
    ; Return Value(s): Erfolg - WordObjekt (Word vorher nicht aktiv und $fNewDocOpen=False), sonst
    ; 1
    ; Teilerfolg WordObjekt od. 1 und @error 2: eine/mehrere Dateien nicht gefunden
    ; @extended = Anzahl fehlender Dateien
    ; Fehler - 0 @error= 1 (kein Array übergeben)
    ; 3 keine Datei gefunden
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _WordCombineDocs($sNewDocPath, $aPathDocs, $fNewDocOpen = False, $fVisible = False)
    If Not IsArray($aPathDocs) Then Return SetError(1,0,0)
    Local $err = 0, $iErr = 0, $oWord, $sFileName, $fWordExists = False
    If ProcessExists('WINWORD.EXE') Then
    $oWord = ObjGet('', "Word.Application")
    $fWordExists = True
    Else
    $oWord = ObjCreate("Word.Application")
    $oWord.Visible = False
    EndIf
    $oWord.Documents.Add("")
    For $i = 0 To UBound($aPathDocs) -1
    If Not FileExists($aPathDocs[$i]) Then
    $iErr += 1
    ContinueLoop
    EndIf
    With $oWord.Selection
    .EndKey(6)
    .InsertBreak(7)
    .InsertFile($aPathDocs[$i])
    EndWith
    Next
    If $iErr Then
    $err = 2
    If $iErr = UBound($aPathDocs) Then
    If Not $fWordExists Then $oWord.Application.Quit(0)
    Return SetError(3,0,0)
    EndIf
    EndIf
    $oWord.ActiveDocument.SaveAs($sNewDocPath)
    If $fNewDocOpen Then
    $oWord.Visible = $fVisible
    $sFileName = StringRight($sNewDocPath, StringLen($sNewDocPath)-StringInStr($sNewDocPath, '\', 1, -1))
    WinActivate($sFileName)
    Return SetError($err,$iErr,$oWord)
    Else
    If Not $fWordExists Then
    $oWord.Application.Quit(-1)
    Return SetError($err,$iErr,1)
    EndIf
    EndIf
    EndFunc ;==>_WordCombineDocs

    [/autoit]

    Dateien

    WordCombineDocs.au3 2,41 kB – 413 Downloads
  • Eigene Funktionen in Scite "vorschlagen" lassen

    • BugFix
    • 17. April 2010 um 22:28

    Bitte nicht in die au3.api eintragen, nach dem nächsten Update ist dann alles futsch. :D
    Erstelle die Datei "au3.user.calltips.api" und füge dort deine eigenen Funktionen ein.

  • Autoitbug bei _GUIImageList_SetBkColor

    • BugFix
    • 17. April 2010 um 22:05

    Übergib die Farben nicht in RGB sondern in BGR ;)
    (vermute ich einfach mal)

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™