Du hast immer noch nicht gesagt, wie genau das ganze aussehen soll!
Beiträge von funkey
-
-
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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>Global Enum _
[/autoit] [autoit][/autoit] [autoit]
$i_Start_Row = -1, _
$i_hGUI_Row, $i_hPic_Row, $i_hCB_Row, _
$i_Total_Rows
Global $aTrnsChckBxs_DATA[1][$i_Total_Rows]Global $hGUI = GUICreate("Test transparent checkbox replacement", 400, 240)
[/autoit] [autoit][/autoit] [autoit]
Global $nPic = GUICtrlCreatePic(@AutoItExe & "\..\Examples\GUI\msoobe.jpg", 0, 0, 400, 240, 0)GUICtrlCreateCheckbox("Standard checkbox", 10, 10, 200, 20)
[/autoit] [autoit][/autoit] [autoit]
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)GUICtrlCreateRadio("Standard checkbox without theme", 210, 90, 170, 20)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor(-1, -2)
DllCall("UxTheme.dll", "int", "SetWindowTheme", "hwnd", GUICtrlGetHandle(-1), "wstr", "Explorer", "wstr", 0)GUICtrlCreateCheckbox("Standard checkbox workaround", 10, 130, 13, 13)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("Standard checkbox workaround", 26, 130, 170, 13)
GUICtrlSetBkColor(-1, -2)GUICtrlCreateRadio("Standard radio button workaround", 210, 130, 13, 13)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("Standard radio button workaround", 226, 130, 200, 13)
GUICtrlSetBkColor(-1, -2)Global $nCB1 = _GUICtrlTransCheckbox_Create($hGUI, $nPic, "TransparentCheckbox 1", 10, 170)
[/autoit] [autoit][/autoit] [autoit]
Global $nCB2 = _GUICtrlTransCheckbox_Create($hGUI, $nPic, "TransparentCheckbox 2", 10, 210)GUISetState(@SW_SHOW, $hGUI)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nGUIMsg = GUIGetMsg()Switch $nGUIMsg
[/autoit] [autoit][/autoit] [autoit]
Case $GUI_EVENT_CLOSE
Exit
Case $nCB1, $nCB2
ConsoleWrite("CheckBox [" & GUICtrlRead($nGUIMsg, 1) & "] checked = " & (GUICtrlRead($nGUIMsg) = $GUI_CHECKED) & @LF)
EndSwitch
WEndFunc _GUICtrlTransCheckbox_Create($hGUI, $nBackPic, $sText, $iLeft, $iAbove, $iWidth = -1, $iHeight = -1, $iStyle = -1, $iExStyle = 0)
[/autoit] [autoit][/autoit] [autoit]
Local $nCB = GUICtrlCreateCheckbox($sText, $iLeft, $iAbove, $iWidth, $iHeight, $iStyle, $iExStyle)
Local $hCB = GUICtrlGetHandle($nCB)
Local $hPic = GUICtrlGetHandle($nBackPic)If $aTrnsChckBxs_DATA[0][0] = 0 Then
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_NOTIFY, '_TrnsChckBx_WM_NOTIFY')
EndIf$aTrnsChckBxs_DATA[0][0] += 1
[/autoit] [autoit][/autoit] [autoit]
ReDim $aTrnsChckBxs_DATA[$aTrnsChckBxs_DATA[0][0] + 1][$i_Total_Rows]$aTrnsChckBxs_DATA[$aTrnsChckBxs_DATA[0][0]][$i_hGUI_Row] = $hGUI
[/autoit] [autoit][/autoit] [autoit]
$aTrnsChckBxs_DATA[$aTrnsChckBxs_DATA[0][0]][$i_hPic_Row] = $hPic
$aTrnsChckBxs_DATA[$aTrnsChckBxs_DATA[0][0]][$i_hCB_Row] = $hCBReturn $nCB
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_GUICtrlTransCheckbox_CreateFunc _GUICtrlTransCheckbox_Delete($nChckBx)
[/autoit] [autoit][/autoit] [autoit]
Local $hCB = GUICtrlGetHandle($nChckBx)
Local $aTmp[$aTrnsChckBxs_DATA[0][0]][$i_Total_Rows]GUICtrlDelete($nChckBx)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $aTrnsChckBxs_DATA[0][0]
[/autoit] [autoit][/autoit] [autoit]
If $aTrnsChckBxs_DATA[$i][$i_hCB_Row] <> $hCB Then
$aTmp[0][0] += 1$aTmp[$aTmp[0][0]][$i_hGUI_Row] = $aTrnsChckBxs_DATA[$i][$i_hGUI_Row]
[/autoit] [autoit][/autoit] [autoit]
$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
NextReDim $aTmp[$aTmp[0][0] + 1][$i_Total_Rows]
[/autoit] [autoit][/autoit] [autoit]
$aTrnsChckBxs_DATA = $aTmpReturn $aTmp[0][0]
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>_GUICtrlTransCheckbox_DeleteFunc _TrnsChckBx_WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
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'Local Const $STM_GETIMAGE = 0x0173
[/autoit] [autoit][/autoit] [autoit]Local $tNMCD = DllStructCreate($tagNMCUSTOMDRAW, $lParam)
[/autoit] [autoit][/autoit] [autoit]
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)If @error Then
[/autoit] [autoit][/autoit] [autoit]
ExitLoop
EndIfIf $aPos[3] < $iBoxSize Then $iBoxSize = $aPos[3]
[/autoit] [autoit][/autoit] [autoit]
$iAbove = Floor(($aPos[3] - $iBoxSize) / 2)
$iBeneath = $iAbove + $iBoxSize$hMemDC = _WinAPI_CreateCompatibleDC($hDC)
[/autoit] [autoit][/autoit] [autoit]
$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
EndSwitchExitLoop
[/autoit] [autoit][/autoit] [autoit]
EndIf
NextReturn $GUI_RUNDEFMSG
[/autoit]
EndFunc ;==>_TrnsChckBx_WM_NOTIFY -
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. -
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)
[/autoit] [autoit][/autoit] [autoit]
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")GUISetState()
[/autoit] [autoit][/autoit] [autoit]Global $iMsg
[/autoit] [autoit][/autoit] [autoit]
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
WEndFunc _InfoLabel_Create($x, $y, $w, $h, $sText, $sTitle = "", $iTitleCol = 0xFF0000)
[/autoit] [autoit][/autoit] [autoit]
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)Local $sStart
[/autoit] [autoit][/autoit] [autoit]
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_CreateFunc _InfoLabel_SetTitle($nCtrl, $sTitle)
[/autoit] [autoit][/autoit] [autoit]
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_SetTitleFunc _InfoLabel_SetText($nCtrl, $sText)
[/autoit]
If GUICtrlRead($nCtrl) = "" Then
GUICtrlSetData($nCtrl + 1, $sText)
Else
GUICtrlSetData($nCtrl + 1, @CRLF & $sText)
EndIf
EndFunc ;==>_InfoLabel_SetTextViel Spaß
-
Du kannst ein Control auch aufgrund seiner Position und Größe ermitteln.
-
Ich schlage vor du beschäftigst dich mal mit Arrays.

Es gibt hier einige Tutorials dazu. -
[autoit]
#include <Array.au3>
[/autoit][autoit][/autoit][autoit]Global $sFiles = FileOpenDialog("Titel", @ScriptDir, "Alle (*.*)", 7)
[/autoit][autoit][/autoit][autoit]
If @error Then Exit
Global $aFiles = StringSplit($sFiles, "|", 2)For $i = 1 To UBound($aFiles) -1
[/autoit][autoit][/autoit][autoit]
$aFiles[$i] = $aFiles[0] & "\" & $aFiles[$i]
Next_ArrayDisplay($aFiles)
[/autoit] -
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.
-
Einfach eine Wrapper-Funktion schreiben, der als Parameter der alte und der neue Name der Datei übergeben wird. einfacher gehts wohl nicht.
-
Hey Oscar! Alles Gute zum Geburtstag!!
Viel Glück und Gesundheit und viel Spaß beim Feiern!!










-
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()))
[/autoit][autoit][/autoit][autoit]
GUICtrlCreateButton("Button1", 0, 0, 100, 20)
GUISetState()GUICreate("Button", 100, 20, 300, 300, 0x80000000, -1, WinGetHandle(AutoItWinGetTitle()))
[/autoit][autoit][/autoit][autoit]
GUICtrlCreateButton("Button2", 0, 0, 100, 20)
GUISetState()GUICreate("Button", 100, 20, 500, 500, 0x80000000, -1, WinGetHandle(AutoItWinGetTitle()))
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
GUICtrlCreateButton("Button3", 0, 0, 100, 20)
GUISetState()Do
[/autoit]
Until GUIGetMsg() = -3 -
[autoit]
#include <WinAPIEx.au3>
[/autoit][autoit][/autoit][autoit]$iStateCAPSLOCK = _WinAPI_GetKeyState(0x14) ;VK_CAPITAL - CAPS LOCK key
[/autoit][autoit][/autoit][autoit]
$iStateNUMLOCK = _WinAPI_GetKeyState(0x90) ;VK_NUMLOCK - NUM LOCK keyConsoleWrite("CapsLock: " & $iStateCAPSLOCK & @CRLF)
[/autoit]
ConsoleWrite("NumLock: " & $iStateNUMLOCK & @CRLF) -
Oder einfacher mit _FileWriteFromArray().
-
Zu _StringBetween(): Diese Funktion gibt ein Array zurück

-
Die DLL ist wahrscheinlich nur 32-Bit. Deshalb musst du auch das Skript für 32-Bit kompilieren.
[autoit]
Füge diese Zeile am Anfang deines Skriptes ein:#AutoIt3Wrapper_UseX64=n
[/autoit] -
Dann schreibst du dir am besten eine Funktion, der du die verschiedenen Wildcards mit "|" getrennt übergibst. In der Funktion dann eines nach dem anderen.

-
Cheater Dieter: Das ist mindestens die vorvorletzte Version von Scite4AutoIt. Such dir im englischen Forum die neueste Version.
-
Vielleicht hilft auch das: DockIt
-
Alles frei verwendbar!

-
Indem du DOS-Befehle verwendest.
RunAs(....., ...., ..., ..., @ComSpec & " /c " & 'del C:\BlaBla, ....)