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

Beiträge von funkey

  • Transparentes Radio, Combobox

    • funkey
    • 28. Januar 2012 um 22:09

    Du hast immer noch nicht gesagt, wie genau das ganze aussehen soll!

  • Transparentes Radio, Combobox

    • funkey
    • 27. Januar 2012 um 21:39

    Das ist aber nicht das gleiche. Checkbox geht da noch besser als ein Radiobutton.
    Hier mal mein Checkbox-Beispiel kurz erweitert:

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    #include <GUIConstantsEx.au3>
    #include <SendMessage.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    Global Enum _
    $i_Start_Row = -1, _
    $i_hGUI_Row, $i_hPic_Row, $i_hCB_Row, _
    $i_Total_Rows
    Global $aTrnsChckBxs_DATA[1][$i_Total_Rows]

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

    Global $hGUI = GUICreate("Test transparent checkbox replacement", 400, 240)
    Global $nPic = GUICtrlCreatePic(@AutoItExe & "\..\Examples\GUI\msoobe.jpg", 0, 0, 400, 240, 0)

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

    GUICtrlCreateCheckbox("Standard checkbox", 10, 10, 200, 20)
    GUICtrlCreateCheckbox("Standard checkbox transparent", 10, 50, 200, 20)
    GUICtrlSetBkColor(-1, -2)
    GUICtrlCreateCheckbox("Standard checkbox without theme", 10, 90, 200, 20)
    GUICtrlSetBkColor(-1, -2)
    DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0)

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

    GUICtrlCreateRadio("Standard checkbox without theme", 210, 90, 170, 20)
    GUICtrlSetBkColor(-1, -2)
    DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0)

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

    GUICtrlCreateCheckbox("Standard checkbox workaround", 10, 130, 13, 13)
    GUICtrlCreateLabel("Standard checkbox workaround", 26, 130, 170, 13)
    GUICtrlSetBkColor(-1, -2)

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

    GUICtrlCreateRadio("Standard radio button workaround", 210, 130, 13, 13)
    GUICtrlCreateLabel("Standard radio button workaround", 226, 130, 200, 13)
    GUICtrlSetBkColor(-1, -2)

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

    Global $nCB1 = _GUICtrlTransCheckbox_Create($hGUI, $nPic, "TransparentCheckbox 1", 10, 170)
    Global $nCB2 = _GUICtrlTransCheckbox_Create($hGUI, $nPic, "TransparentCheckbox 2", 10, 210)

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

    GUISetState(@SW_SHOW, $hGUI)

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

    While 1
    $nGUIMsg = GUIGetMsg()

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

    Switch $nGUIMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $nCB1, $nCB2
    ConsoleWrite("CheckBox [" & GUICtrlRead($nGUIMsg, 1) & "] checked = " & (GUICtrlRead($nGUIMsg) = $GUI_CHECKED) & @LF)
    EndSwitch
    WEnd

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

    Func _GUICtrlTransCheckbox_Create($hGUI, $nBackPic, $sText, $iLeft, $iAbove, $iWidth = -1, $iHeight = -1, $iStyle = -1, $iExStyle = 0)
    Local $nCB = GUICtrlCreateCheckbox($sText, $iLeft, $iAbove, $iWidth, $iHeight, $iStyle, $iExStyle)
    Local $hCB = GUICtrlGetHandle($nCB)
    Local $hPic = GUICtrlGetHandle($nBackPic)

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

    If $aTrnsChckBxs_DATA[0][0] = 0 Then
    GUIRegisterMsg($WM_NOTIFY, '_TrnsChckBx_WM_NOTIFY')
    EndIf

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

    $aTrnsChckBxs_DATA[0][0] += 1
    ReDim $aTrnsChckBxs_DATA[$aTrnsChckBxs_DATA[0][0] + 1][$i_Total_Rows]

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

    $aTrnsChckBxs_DATA[$aTrnsChckBxs_DATA[0][0]][$i_hGUI_Row] = $hGUI
    $aTrnsChckBxs_DATA[$aTrnsChckBxs_DATA[0][0]][$i_hPic_Row] = $hPic
    $aTrnsChckBxs_DATA[$aTrnsChckBxs_DATA[0][0]][$i_hCB_Row] = $hCB

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

    Return $nCB
    EndFunc ;==>_GUICtrlTransCheckbox_Create

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

    Func _GUICtrlTransCheckbox_Delete($nChckBx)
    Local $hCB = GUICtrlGetHandle($nChckBx)
    Local $aTmp[$aTrnsChckBxs_DATA[0][0]][$i_Total_Rows]

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

    GUICtrlDelete($nChckBx)

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

    For $i = 1 To $aTrnsChckBxs_DATA[0][0]
    If $aTrnsChckBxs_DATA[$i][$i_hCB_Row] <> $hCB Then
    $aTmp[0][0] += 1

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

    $aTmp[$aTmp[0][0]][$i_hGUI_Row] = $aTrnsChckBxs_DATA[$i][$i_hGUI_Row]
    $aTmp[$aTmp[0][0]][$i_hPic_Row] = $aTrnsChckBxs_DATA[$i][$i_hPic_Row]
    $aTmp[$aTmp[0][0]][$i_hCB_Row] = $aTrnsChckBxs_DATA[$i][$i_hCB_Row]
    EndIf
    Next

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

    ReDim $aTmp[$aTmp[0][0] + 1][$i_Total_Rows]
    $aTrnsChckBxs_DATA = $aTmp

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

    Return $aTmp[0][0]
    EndFunc ;==>_GUICtrlTransCheckbox_Delete

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

    Func _TrnsChckBx_WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    Local $hWndFrom, $iIDFrom, $tNMHDR
    Local Const $tagNMCUSTOMDRAW = 'hwnd hWndFrom;uint_ptr IDFrom;int_ptr Code;dword DrawStage;hwnd hDC;' & $tagRECT & ';dword_ptr ItemSpec;uint ItemState;lparam ItemlParam'

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

    Local Const $STM_GETIMAGE = 0x0173

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

    Local $tNMCD = DllStructCreate($tagNMCUSTOMDRAW, $lParam)
    Local $hWndFrom = DllStructGetData($tNMCD, 'hWndFrom')
    Local $iCode = BitOR(DllStructGetData($tNMCD, 'Code'), 0)
    Local $DrawStage = DllStructGetData($tNMCD, 'DrawStage')
    Local $ItemSpec = DllStructGetData($tNMCD, 'ItemSpec')
    Local $hDC = DllStructGetData($tNMCD, 'hDC')
    Local $hPic, $aPos, $hMemDC, $hBitmap, $hPrev
    Local $iAbove, $iBeneath, $iBoxSize = 13
    For $i = 1 To $aTrnsChckBxs_DATA[0][0]
    If $hWndFrom = $aTrnsChckBxs_DATA[$i][$i_hCB_Row] Then
    Switch $iCode
    Case $NM_CUSTOMDRAW
    Switch $DrawStage
    Case $CDDS_PREPAINT
    $hPic = $aTrnsChckBxs_DATA[$i][$i_hPic_Row]
    $aPos = ControlGetPos($hWnd, '', $hWndFrom)

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

    If @error Then
    ExitLoop
    EndIf

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

    If $aPos[3] < $iBoxSize Then $iBoxSize = $aPos[3]
    $iAbove = Floor(($aPos[3] - $iBoxSize) / 2)
    $iBeneath = $iAbove + $iBoxSize

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

    $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
    $hBitmap = _SendMessage($hPic, $STM_GETIMAGE, $IMAGE_BITMAP, 0)
    $hPrev = _WinAPI_SelectObject($hMemDC, $hBitmap)
    _WinAPI_BitBlt($hDC, 0, 0, $iBoxSize, $iAbove, $hMemDC, $aPos[0], $aPos[1], $SRCCOPY) ;field above checkbox
    _WinAPI_BitBlt($hDC, 0, $iBeneath, $iBoxSize, $iBeneath - $iAbove, $hMemDC, $aPos[0], $aPos[1] + $iBeneath, $SRCCOPY) ;field beneath checkbox
    _WinAPI_BitBlt($hDC, $iBoxSize, 0, $aPos[2] - $iBoxSize, $aPos[3], $hMemDC, $aPos[0] + $iBoxSize, $aPos[1], $SRCCOPY) ;checkbox text field
    _WinAPI_SelectObject($hMemDC, $hPrev)
    _WinAPI_DeleteDC($hMemDC)
    Return $CDRF_DODEFAULT
    EndSwitch
    EndSwitch

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

    ExitLoop
    EndIf
    Next

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

    Return $GUI_RUNDEFMSG
    EndFunc ;==>_TrnsChckBx_WM_NOTIFY

    [/autoit]
  • Transparentes Radio, Combobox

    • funkey
    • 27. Januar 2012 um 21:09

    Was willst du genau erreichen? Transparente Controls über einem Bild, oder wie genau. Warum auch Combobox? Für Checkbox habe ich mal was geschrieben und für Radiobuttons gibt es auch was.
    Wenn du das Windows Theme auschaltest (DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)) sollte $GUI_BKCOLOR_TRANSPARENT auch genügen.
    Aber eben je nachdem was du genau willst, gibt es immer eine Lösung.
    Schreib mal ein Beispielskript, damit man genau sieht was du möchtest.

  • InfoLabel - Einfaches Label aufgepeppt

    • funkey
    • 27. Januar 2012 um 14:50

    Hier ein kleines Beispiel wie man sein Programm ein bischen aufpeppen kann.
    Vllt kann es jemand mal brauchen.

    Spoiler anzeigen
    [autoit]

    GUICreate("Test InfoLabel", 400, 220)

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

    Global $nInfoLbl = _InfoLabel_Create(110, 10, 180, 40, "This is an example text" & @CRLF & "with two lines. Click me!", "InfoLabel title", 0x44FF)
    Global $nInfoLbl2 = _InfoLabel_Create(110, 60, 180, 40, "This is an example text" & @CRLF & "with two lines" & @CRLF & "no three! And no title.")
    _InfoLabel_Create(10, 110, 380, 100, "AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys). AutoIt is also very small, self-contained and will run on all versions of Windows out-of-the-box with no annoying 'runtimes' required!", "Introduction")

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

    GUISetState()

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

    Global $iMsg
    While 1
    $iMsg = GUIGetMsg()
    Switch $iMsg
    Case -3
    ExitLoop
    Case $nInfoLbl
    _InfoLabel_SetText($nInfoLbl, "New Text" & @CRLF & "Thank you ;)")
    Case $nInfoLbl2
    _InfoLabel_SetTitle($nInfoLbl2, "New Title")
    EndSwitch
    WEnd

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

    Func _InfoLabel_Create($x, $y, $w, $h, $sText, $sTitle = "", $iTitleCol = 0xFF0000)
    GUICtrlCreateLabel("", $x + 2, $y + $h, $w, 2, 0x05) ;$SS_GRAYRECT, acts as shadow
    GUICtrlCreateLabel("", $x + $w, $y + 2, 2, $h, 0x05) ;$SS_GRAYRECT, acts as shadow
    Local $nCtrl = GUICtrlCreateLabel($sTitle, $x, $y, $w, $h, BitOR(0x00800000, 0x1), 0x8) ;WS_BORDER or $SS_CENTER
    GUICtrlSetColor(-1, $iTitleCol)
    GUICtrlSetBkColor(-1, 0xFFFFDF)

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

    Local $sStart
    If $sTitle <> "" Then $sStart = @CRLF
    GUICtrlCreateLabel($sStart & $sText, $x, $y, $w, $h, 0x1) ;$SS_CENTER
    GUICtrlSetBkColor(-1, -2) ;$GUI_BKCOLOR_TRANSPARENT
    Return $nCtrl
    EndFunc ;==>_InfoLabel_Create

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

    Func _InfoLabel_SetTitle($nCtrl, $sTitle)
    If GUICtrlRead($nCtrl) = "" Then GUICtrlSetData($nCtrl + 1, @CRLF & GUICtrlRead($nCtrl + 1))
    If $sTitle = "" Then GUICtrlSetData($nCtrl + 1, StringStripWS(GUICtrlRead($nCtrl + 1), 1))
    GUICtrlSetData($nCtrl, $sTitle)
    EndFunc ;==>_InfoLabel_SetTitle

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

    Func _InfoLabel_SetText($nCtrl, $sText)
    If GUICtrlRead($nCtrl) = "" Then
    GUICtrlSetData($nCtrl + 1, $sText)
    Else
    GUICtrlSetData($nCtrl + 1, @CRLF & $sText)
    EndIf
    EndFunc ;==>_InfoLabel_SetText

    [/autoit]

    Viel Spaß

  • dynamischer classenname

    • funkey
    • 25. Januar 2012 um 16:09

    Du kannst ein Control auch aufgrund seiner Position und Größe ermitteln.

  • FileOpenDialog Mehrfachauswahl Dateipfad vollständig anzeigen

    • funkey
    • 19. Januar 2012 um 21:53

    Ich schlage vor du beschäftigst dich mal mit Arrays. ;)
    Es gibt hier einige Tutorials dazu.

  • FileOpenDialog Mehrfachauswahl Dateipfad vollständig anzeigen

    • funkey
    • 19. Januar 2012 um 21:19
    [autoit]

    #include <Array.au3>

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

    Global $sFiles = FileOpenDialog("Titel", @ScriptDir, "Alle (*.*)", 7)
    If @error Then Exit
    Global $aFiles = StringSplit($sFiles, "|", 2)

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

    For $i = 1 To UBound($aFiles) -1
    $aFiles[$i] = $aFiles[0] & "\" & $aFiles[$i]
    Next

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

    _ArrayDisplay($aFiles)

    [/autoit]
  • FileOpenDialog Mehrfachauswahl Dateipfad vollständig anzeigen

    • funkey
    • 19. Januar 2012 um 20:04
    Zitat von Hilfe

    Results for multiple selections are "Directory|file1|file2|..."

    Das heißt, am besten machst du einen StringSplit und ersetzt dann den Dateinamen durch Pfad & Dateiname einfach in einer Schleife.

  • TGA Bild zu einem Jpg oder Bmp Bild?

    • funkey
    • 18. Januar 2012 um 20:58

    Einfach eine Wrapper-Funktion schreiben, der als Parameter der alte und der neue Name der Datei übergeben wird. einfacher gehts wohl nicht.

  • Happy Birthday Oscar

    • funkey
    • 18. Januar 2012 um 19:25

    Hey Oscar! Alles Gute zum Geburtstag!! :party:
    Viel Glück und Gesundheit und viel Spaß beim Feiern!! :party::party::party::party::party::party::party::party::party::party::D

  • Transparentes Fenster ohne $WS_EX_layered

    • funkey
    • 14. Januar 2012 um 00:22

    Du könntest jedes Control in ein eigenes Fenster mt Größe des Controls zeichnen.

    [autoit]

    GUICreate("Button", 100, 20, 100, 100, 0x80000000, -1, WinGetHandle(AutoItWinGetTitle()))
    GUICtrlCreateButton("Button1", 0, 0, 100, 20)
    GUISetState()

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

    GUICreate("Button", 100, 20, 300, 300, 0x80000000, -1, WinGetHandle(AutoItWinGetTitle()))
    GUICtrlCreateButton("Button2", 0, 0, 100, 20)
    GUISetState()

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

    GUICreate("Button", 100, 20, 500, 500, 0x80000000, -1, WinGetHandle(AutoItWinGetTitle()))
    GUICtrlCreateButton("Button3", 0, 0, 100, 20)
    GUISetState()

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

    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • Knight Rider mit "Feststelltaste" und "Num"

    • funkey
    • 13. Januar 2012 um 22:00
    [autoit]

    #include <WinAPIEx.au3>

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

    $iStateCAPSLOCK = _WinAPI_GetKeyState(0x14) ;VK_CAPITAL - CAPS LOCK key
    $iStateNUMLOCK = _WinAPI_GetKeyState(0x90) ;VK_NUMLOCK - NUM LOCK key

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

    ConsoleWrite("CapsLock: " & $iStateCAPSLOCK & @CRLF)
    ConsoleWrite("NumLock: " & $iStateNUMLOCK & @CRLF)

    [/autoit]
  • problem mit _stringbetween und quelltext auslesen :(

    • funkey
    • 13. Januar 2012 um 16:00

    Oder einfacher mit _FileWriteFromArray().

  • problem mit _stringbetween und quelltext auslesen :(

    • funkey
    • 13. Januar 2012 um 03:58

    Zu _StringBetween(): Diese Funktion gibt ein Array zurück ;)

  • ImageSearch Problem

    • funkey
    • 13. Januar 2012 um 03:56

    Die DLL ist wahrscheinlich nur 32-Bit. Deshalb musst du auch das Skript für 32-Bit kompilieren.
    Füge diese Zeile am Anfang deines Skriptes ein:

    [autoit]

    #AutoIt3Wrapper_UseX64=n

    [/autoit]
  • Filefindfirstfile mit mehreren Wildcards möglich?

    • funkey
    • 12. Januar 2012 um 17:13

    Dann schreibst du dir am besten eine Funktion, der du die verschiedenen Wildcards mit "|" getrennt übergibst. In der Funktion dann eines nach dem anderen. ;)

  • Neue AutoIt STABLE!! v3.3.8.0

    • funkey
    • 11. Januar 2012 um 21:12

    Cheater Dieter: Das ist mindestens die vorvorletzte Version von Scite4AutoIt. Such dir im englischen Forum die neueste Version.

  • Gui-Fenster "magnetisch" machen?

    • funkey
    • 8. Januar 2012 um 20:31

    Vielleicht hilft auch das: DockIt

  • Wie Schrift um 90 Grad gekippt im Label darstellen?

    • funkey
    • 7. Januar 2012 um 19:16

    Alles frei verwendbar! ;)

  • Uncheck checkbox und Admin File löschen

    • funkey
    • 7. Januar 2012 um 18:24

    Indem du DOS-Befehle verwendest.

    RunAs(....., ...., ..., ..., @ComSpec & " /c " & 'del C:\BlaBla, ....)

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™