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

Beiträge von Tweaky

  • Organize Includes

    • Tweaky
    • 26. August 2011 um 18:10

    Aha,
    du meinst im BugTracker melden.
    Kannst du das bitte übernehmen.
    Ich weiß nicht wie ich dies auf englisch schreiben soll.
    Denke du findest die passenderen Worte ;)

  • Organize Includes

    • Tweaky
    • 26. August 2011 um 16:55

    Ich habe folgendes Skript.

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    ;~ #include <GuiScrollBars.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Global $hGui = GUICreate("Test", 320, 240)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    Global $cEdit = GUICtrlCreateEdit("", 10, 10, 300, 18, BitOR($ES_MULTILINE, $ES_WANTRETURN))
    Global $hEdit = GUICtrlGetHandle($cEdit)
    Global $iFontHeight = _GetFontHeight($hEdit)
    Global $iEditH = $iFontHeight * 2
    _CalcEditSize()
    GUISetState()

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

    Global $hProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hMod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hProc), $hMod)
    OnAutoItExitRegister("_Cleanup")

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

    While 1
    Sleep(100)
    WEnd

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

    Func _GetFontHeight($hWnd)
    Local $hDC = _WinAPI_GetDC($hEdit)
    Local $tTEXTMETRIC = DllStructCreate($tagTEXTMETRIC)
    DllCall("gdi32.dll", "bool", "GetTextMetricsW", "handle", $hDC, "ptr", DllStructGetPtr($tTEXTMETRIC))
    _WinAPI_ReleaseDC($hEdit, $hDC)
    Return DllStructGetData($tTEXTMETRIC, "tmAscent")
    EndFunc ;==>_GetFontHeight

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

    Func _CalcEditSize()
    Local $iCnt = _GUICtrlEdit_GetLineCount($hEdit)
    $iEditH = $iCnt * $iFontHeight
    GUICtrlSetPos($cEdit, 10, 10, 300, $iEditH + $iFontHeight)
    EndFunc ;==>_CalcEditSize

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

    Func _KeyProc($nCode, $wParam, $lParam)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    If $wParam = $WM_KEYDOWN Then
    If DllStructGetData($tKEYHOOKS, "vkCode") = 13 Then
    _WinAPI_SetWindowPos($hEdit, 0, 10, 10, 300, $iEditH + $iFontHeight * 2, $SWP_NOZORDER)
    EndIf
    EndIf
    _CalcEditSize()
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc ;==>_KeyProc

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

    Func _Cleanup()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hProc)
    EndFunc ;==>_Cleanup

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    Laut OI 1.0.0.50 wird #include <GuiScrollBars.au3> nicht benötigt.
    Jedoch läuft das Skript dann nicht mehr.

    Kannste mal danach schauen?

    Danke

  • Edit - Feld so groß wie der Text

    • Tweaky
    • 26. August 2011 um 15:59

    Genial eukalyptus,
    funktioniert super :)

  • Edit - Feld so groß wie der Text

    • Tweaky
    • 25. August 2011 um 21:17
    Zitat von misterspeed

    Das Resizen passt so wohl auch noch nicht ganz, denke aber bekommst das schon in den Griff.


    Genau das ist ja mein Problem.
    Ich habe nichts gefunden, wo ich die Höhe an die Zeilenanzahl genau anpassen kann :thumbdown:

  • Edit - Feld so groß wie der Text

    • Tweaky
    • 25. August 2011 um 15:00

    Hi,
    ich würde gerne ein Edit-Feld erzeugen, welches in der Höhe so groß ist wie der eingegebene Text.
    Drücke ich Enter, soll das Edit-Feld in der Höhe größer werden.
    Lösche ich eine Zeile soll das Edit-Feld in der Höhe kleiner werden.
    Beides immer genauso groß wie der Inhalt.

    Ist dies möglich?

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    GUICreate("Meine GUI mit einem Edit-Feld") ; Erstellt ein GUI-Fenster welches mittig ausgerichtet wird

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

    $myedit = GUICtrlCreateEdit("", 176, 32, 100, 25, BitOR($ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL))

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

    GUISetState()

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    While 1
    $msg = GUIGetMsg()

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

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit]
  • ListView - Flackern verhindern

    • Tweaky
    • 23. August 2011 um 22:39

    Unter Win 7 siehts auch ein bisschen anders aus (Umrandung beachten)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $farbe1 = 0x00BFFF ;hellblau
    $farbe2 = 0xFFFF00 ;gelb
    $farbe3 = 0x00FF7F ;grün
    $i = 0

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

    GUICreate("Test", 200, 800)

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

    $h_lv = GUICtrlCreateListView("Test", 10, 50, 170, 150, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER), $LVS_EX_DOUBLEBUFFER)
    GUICtrlSendMsg($h_lv, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($h_lv, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    $h_lv2 = GUICtrlCreateListView("Test", 10, 220, 170, 150, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER))
    GUICtrlSendMsg($h_lv2, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($h_lv2, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")

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

    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(10)
    If $i < 10 Then
    For $i = 1 To 100
    _eintragen($h_lv)
    _eintragen($h_lv2)
    Next
    EndIf
    WEnd

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

    Func _eintragen($h_lv_tmp)
    _GUICtrlListView_BeginUpdate($h_lv_tmp)
    $wert = Random(0, 100, 1)
    $lv_zeile = GUICtrlCreateListViewItem($wert, $h_lv_tmp)
    If $wert < 33 Then
    $farbe = $farbe1
    ElseIf $wert > 66 Then
    $farbe = $farbe3
    Else
    $farbe = $farbe2
    EndIf
    GUICtrlSetBkColor($lv_zeile, $farbe)
    _GUICtrlListView_EndUpdate($h_lv_tmp)
    EndFunc ;==>_eintragen

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

    Func _beenden()
    Exit
    EndFunc ;==>_beenden

    [/autoit]


    Auf dem Bild:
    oben mit $LVS_EX_DOUBLEBUFFER
    unten ohne $LVS_EX_DOUBLEBUFFER

    komisch :?::?::?:

    Bilder

    • Bild.jpg
      • 26,84 kB
      • 193 × 347
  • ListView - Flackern verhindern

    • Tweaky
    • 22. August 2011 um 14:22

    Danke BugFix,
    wie konnte ich diesen Parameter nur übersehen :whistling:

  • ListView - Flackern verhindern

    • Tweaky
    • 22. August 2011 um 12:48

    Hi,
    gibt es eine Möglichkeit das flackern des ListViews zu verhindern :?:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $farbe1 = 0x00BFFF ;hellblau
    $farbe2 = 0xFFFF00 ;gelb
    $farbe3 = 0x00FF7F ;grün

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

    GUICreate("Test", 100, 400)

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

    $h_lv = GUICtrlCreateListView("Test", 10, 50, 70, 320, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER))
    GUICtrlSendMsg($h_lv, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($h_lv, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")

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

    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(10)
    _eintragen()
    WEnd

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

    Func _eintragen()
    _GUICtrlListView_BeginUpdate($h_lv)
    $wert = Random(0, 100, 1)
    $lv_zeile = GUICtrlCreateListViewItem($wert, $h_lv)
    If $wert < 33 Then
    $farbe = $farbe1
    ElseIf $wert > 66 Then
    $farbe = $farbe3
    Else
    $farbe = $farbe2
    EndIf
    GUICtrlSetBkColor($lv_zeile, $farbe)
    _GUICtrlListView_EndUpdate($h_lv)

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

    EndFunc ;==>_eintragen

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

    Func _beenden()
    Exit
    EndFunc ;==>_beenden

    [/autoit]

    Den Sleep-Wert will ich nur ungern erhöhen, da sonst das eintragen langsamer wird :S

  • Fehler auf der Translationseite

    • Tweaky
    • 21. August 2011 um 13:00

    Kurzer Zwischenstand:

    Leider funktioniert es immer noch nicht.

    Bei mir ist es so:
    Firefox 6 und IE9 gehen nicht.
    K-Meleon 1.6.0 funktioniert.

    Warum dies so ist kann ich leider nicht sagen, da ich mich damit nicht auskenne.

    Der_Doc weiß momentan leider auch nicht weiter.
    Dazu kommt eine zeitliches Problem von Der_Doc sich um die Translationsseite kümmern zu können.

  • Probleme mit neuem Forum? Hierrein schreiben!

    • Tweaky
    • 14. August 2011 um 12:37

    In der "Downloads"-Box steht die falsche Scite Version.
    Es gibt mittlerweile die Version vom 03.07.2011

    Besteht die Chance, dass der Button "Neue Nachrichten seit ... anzeigen" demnächst mal wieder kommt :?:

  • Icons extrahieren

    • Tweaky
    • 13. August 2011 um 21:31

    Ne, geht leider auch nicht :S

  • Icons extrahieren

    • Tweaky
    • 13. August 2011 um 21:24

    Oh, ne lass mal lieber.
    Das ich eine oder mehrere Hausnummern zu groß für mich.
    Es passt schon so. :D

  • Icons extrahieren

    • Tweaky
    • 13. August 2011 um 21:10

    Ah, ok.
    Wenn es keine andere Möglichkeit gibt, dann muß ichs halt so machen.


    Dank dir ;)

  • Icons extrahieren

    • Tweaky
    • 13. August 2011 um 20:36

    Hi,
    ich habe mir vor langer Zeit mal dieses Skript gesichert.
    Es sollen alle Icons aus der exe extrahiert und als ico gespeichert werden.

    Leider funktioniert es nun nicht mehr.
    Ich denke es liegt an Win 7 64bit.
    Es wäre am besten, wenn es unter Win XP und Win 7 funktionieren würde.

    Spoiler anzeigen
    [autoit]

    #include <APIConstants.au3>
    #include <Constants.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiStatusBar.au3>
    #include <ListViewConstants.au3>
    #include <StatusBarConstants.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    ; notify messages
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    Global $sIn = @SystemDir & "\shell32.dll" ;; default icon file
    Global $hGui, $LV, $Extract, $LHT, $IHM

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

    $hGui = GUICreate("", 500, 400, -1, -1, -1, $WS_EX_ACCEPTFILES)

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

    GUISetOnEvent($GUI_EVENT_DROPPED, "GuiEvent", $hGui)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GuiEvent", $hGui)

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

    $LV = GUICtrlCreateListView("", 5, 5, 490, 350, $LVS_ICON)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUICtrlSetTip(-1, "Drop a supported file here to view it's icons." & @LF & "Double Click an icon to extract.")
    _GUICtrlListView_SetView($LV, 1)

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

    ; Build Menu
    $fil_mnu = GUICtrlCreateMenu("&extract")
    $menu_save_all_as_ico = GUICtrlCreateMenuItem("Save all as ICO", $fil_mnu)
    GUICtrlSetOnEvent(-1, "menu_save_all_as_ico")

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

    $menu_save_all_as_png = GUICtrlCreateMenuItem("Save all as PNG", $fil_mnu)
    GUICtrlSetOnEvent(-1, "menu_save_all_as_png")

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

    ; status bar ..
    Global $aStatusParts[2] = [400, -1]
    Global $aTempStatus[2] = ["", ""]

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

    $StatusBar = _GUICtrlStatusBar_Create($hGui, $aStatusParts, $aTempStatus, $SBARS_SIZEGRIP)
    _GUICtrlStatusBar_SetMinHeight($StatusBar, 20)
    _GUICtrlStatusBar_SetText($StatusBar, "Icon Extractor")

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

    GUISetState(@SW_SHOW, $hGui)

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

    Update()

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

    While 1
    Sleep(100)
    ChkExtract()
    WEnd

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

    Func GuiEvent()
    Switch @GUI_CtrlId
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $GUI_EVENT_DROPPED
    If StringRegExp(@GUI_DragFile, "(?i)\.(cpl|dll|exe|icl|ocx)", 0) Then
    _GUICtrlListView_DeleteAllItems($LV)
    $sIn = @GUI_DragFile
    Update()
    EndIf
    EndSwitch
    EndFunc ;==>GuiEvent

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

    ; function - save all as ico as
    Func menu_save_all_as_ico()
    ; all icons ?
    $IHM = _WinAPI_ExtractIconEx($sIn, -1, 0, 0, 0)

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

    For $i = 1 To $IHM
    $filename = @ScriptDir & "\icon_" & $i & ".ico";

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

    _GUICtrlStatusBar_SetText($StatusBar, "extracting ICO icon " & $i & " of " & $IHM)

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

    _ExtractIconToFile($sIn, $i, $filename)

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

    Next
    _GUICtrlStatusBar_SetText($StatusBar, "")

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

    EndFunc ;==>menu_save_all_as_ico

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

    ; function - save all as png files
    Func menu_save_all_as_png()
    ; all icons ?
    $IHM = _WinAPI_ExtractIconEx($sIn, -1, 0, 0, 0)

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

    For $i = 1 To $IHM
    $filename = @ScriptDir & "\icon_" & $i & ".png";

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

    $Ret = DllCall("shell32", "long", "ExtractAssociatedIcon", "int", 0, "str", $sIn, "int*", $i)
    $hIcon = $Ret[0]

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

    _GDIPlus_Startup()
    $pBitmap = DllCall($ghGDIPDll, "int", "GdipCreateBitmapFromHICON", "ptr", $hIcon, "int*", 0)
    $pBitmap = $pBitmap[2]

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

    _GDIPlus_ImageSaveToFile($pBitmap, $filename)
    _GDIPlus_ImageDispose($pBitmap)
    _GDIPlus_Shutdown()
    _WinAPI_DestroyIcon($Ret[0])
    _GUICtrlStatusBar_SetText($StatusBar, "extracting PNG icon " & $i & " of " & $IHM)
    Next
    _GUICtrlStatusBar_SetText($StatusBar, "")
    EndFunc ;==>menu_save_all_as_png

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

    Func ChkExtract()
    If $Extract Then
    $Extract = 0

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

    Local $FOD = FileSaveDialog("Save extracted icon as..", "", "Icon file (*.ico)")

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

    If Not @error And $FOD <> "" Then
    WinSetTitle($hGui, "", "Extracting...")
    _ExtractIconToFile($sIn, $LHT, $FOD)

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

    If @error Then
    WinSetTitle($hGui, "", "Error extracting icon - Error Code: " & @error)
    Else
    WinSetTitle($hGui, "", "Icons found in " & StringMid($sIn, StringInStr($sIn, "\", 0, -1) + 1) & ": " & $IHM)
    EndIf
    EndIf
    EndIf
    EndFunc ;==>ChkExtract

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

    Func Update()
    $IHM = _WinAPI_ExtractIconEx($sIn, -1, 0, 0, 0)

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

    WinSetTitle($hGui, "", "Icons found in " & StringMid($sIn, StringInStr($sIn, "\", 0, -1) + 1) & ": " & $IHM)

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

    For $i = 1 To $IHM
    GUICtrlCreateListViewItem($i, $LV)
    GUICtrlSetImage(-1, $sIn, -$i, 1)
    Next
    EndFunc ;==>Update

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

    Func DefName()
    Local $FN = StringFormat("%0" & StringLen($IHM) & "d", $LHT)
    Return $FN & "_" & StringTrimRight(StringMid($sIn, StringInStr($sIn, "\", 0, -1) + 1), 3) & "ico"
    EndFunc ;==>DefName

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

    ; double click on item -> extract as--.
    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndLV, $tInfo
    $hWndLV = GUICtrlGetHandle($LV)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndLV
    Switch $iCode
    Case $NM_DBLCLK
    Local $tPoint = _WinAPI_GetMousePos(True, $hGui)
    Local $LVHT = _GUICtrlListView_HitTest($hWndLV, DllStructGetData($tPoint, "X"), DllStructGetData($tPoint, "Y"))
    If $LVHT[0] <> -1 Then
    $Extract = 1
    $LHT = ($LVHT[0] + 1)
    EndIf
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Global $aINM[1]

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

    ; #FUNCTION# =============================================================================================
    ; Name...........: _ExtractIconToFile
    ; Description ...: Extract an icon resource from a cpl, dll, exe, icl, ocx to a *.ico file
    ; Syntax.........: _ExtractIconToFile($sInFile, $iIcon, $sOutIco[, $iPath = 0])
    ; Parameters ....: $sInFile - Path to file that contains the icon to extract.
    ; $iIcon - Icon Number to extract, eg; -1 (The first icon starts at -1)
    ; $sOutIco - Full path where to save the extracted icon to, eg; "C:\My Icons\new.ico"
    ; $iPath - If set to 1 then the extraction path will be created if it doesn't exist.
    ; If left as 0 then if the extraction path doesn't exist it won't be created.
    ; Return values .: Success - Return 1 and @error 0
    ; Failure - Return 0 and @error 1 ~ 12
    ; @error 1 = Invalid $sInFile parameter
    ; @error 2 = Invalid $iIcon parameter
    ; @error 3 = LoadLibrary failed to return a valid ptr
    ; @error 4 = $iIcon does not exist in the $sInFile
    ; @error 5 = Failed to Find RT_GROUP_ICON Resource
    ; @error 6 = Returned RT_GROUP_ICON Resource as 0 bytes
    ; @error 7 = Failed to Load RT_GROUP_ICON Resource
    ; @error 8 = Failed to Lock RT_GROUP_ICON Resource
    ; @error 9 = Failed to create DLL Struct for RT_GROUP_ICON data
    ; @error 10 = Data in DLL Struct is null
    ; @error 11 = Failed to Open output file path
    ; @error 12 = Failed to write file at output path
    ; (Most the error returns were for my own debug purpose)
    ; Author ........: smashly
    ; Modified.......:
    ; Remarks .......: A big Thank You to Siao for the heads up on _ResourceEnumNames & ___EnumResNameProc
    ; Also Thank You to WeaponX for his _StringSplitRegExp
    ; Related .......:
    ; Link ..........;
    ; Example .......; _ExtractIconToFile(@SystemDir & "\shell32.dll", -42, @HomeDrive & "\Extracted.ico")
    ; ========================================================================================================
    Func _ExtractIconToFile($sInFile, $iIcon, $sOutIco, $iPath = 0)
    Local Const $LOAD_LIBRARY_AS_DATAFILE = 0x00000002
    Local Const $RT_ICON = 3
    Local Const $RT_GROUP_ICON = 14
    Local $hInst, $iGN = "", $hFind, $aSize, $hLoad, $hLock, $tRes
    Local $sData, $sHdr, $iOrd, $aHtail, $iCnt, $Offset, $FO, $iCrt = 18

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

    If $iPath = 1 Then $iCrt = 26
    If Not FileExists($sInFile) Then Return SetError(1, 0, 0)
    If Not IsInt($iIcon) Then Return SetError(2, 0, 0)

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

    $hInst = _LoadLibraryEx($sInFile, $LOAD_LIBRARY_AS_DATAFILE)
    If Not IsPtr($hInst) Then Return SetError(3, 0, 0)
    _ResourceEnumNames($hInst, $RT_GROUP_ICON)
    For $i = 1 To $aINM[0]
    If $i = StringReplace($iIcon, "-", "") Then
    $iGN = $aINM[$i]
    ExitLoop
    EndIf
    Next
    If $iGN = "" Then
    _FreeLibrary($hInst)
    Return SetError(4, 0, 0)
    EndIf
    $hFind = DllCall("kernel32.dll", "int", "FindResourceA", "int", $hInst, "str", $iGN, "long", $RT_GROUP_ICON)
    If $hFind[0] = 0 Then
    _FreeLibrary($hInst)
    Return SetError(5, 0, 0)
    EndIf
    $aSize = DllCall("kernel32.dll", "dword", "SizeofResource", "int", $hInst, "int", $hFind[0])
    If $aSize[0] = 0 Then
    _FreeLibrary($hInst)
    Return SetError(6, 0, 0)
    EndIf
    $hLoad = DllCall("kernel32.dll", "int", "LoadResource", "int", $hInst, "int", $hFind[0])
    If $hLoad[0] = 0 Then
    _FreeLibrary($hInst)
    Return SetError(7, 0, 0)
    EndIf
    $hLock = DllCall("kernel32.dll", "int", "LockResource", "int", $hLoad[0])
    If $hLock[0] = 0 Then
    _FreeLibrary($hInst)
    Return SetError(8, 0, 0)
    EndIf
    $tRes = DllStructCreate("byte[" & $aSize[0] & "]", $hLock[0])
    If Not IsDllStruct($tRes) Then
    _FreeLibrary($hInst)
    Return SetError(9, 0, 0)
    EndIf
    $sData = DllStructGetData($tRes, 1)
    If $sData = "" Then
    _FreeLibrary($hInst)
    Return SetError(10, 0, 0)
    EndIf
    $sHdr = StringLeft($sData, 14)
    $iOrd = Dec(LTHR("0x" & StringRight(StringLeft($sData, 42), 4))) ;index start of icon in the library
    $aHtail = _StringSplitRegExp(StringTrimLeft($sData, 14), '(.){28}', True)
    $iCnt = $aHtail[0]
    $Offset = ($iCnt * 16) + 6
    For $r = 1 To $aHtail[0]
    $sDByte = Dec(Hex(BitRotate("0x" & StringLeft(StringRight($aHtail[$r], 12), 4), -8), 4))
    $aHtail[$r] = StringTrimRight($aHtail[$r], 4)
    $sHdr &= $aHtail[$r] & LTHR($Offset) & "0000"
    $Offset += $sDByte
    Next
    For $i = 1 To $iCnt
    $hFind = DllCall("kernel32.dll", "int", "FindResourceA", "int", $hInst, "str", "#" & $iOrd, "long", $RT_ICON)
    $aSize = DllCall("kernel32.dll", "dword", "SizeofResource", "int", $hInst, "int", $hFind[0])
    $hLoad = DllCall("kernel32.dll", "int", "LoadResource", "int", $hInst, "int", $hFind[0])
    $hLock = DllCall("kernel32.dll", "int", "LockResource", "int", $hLoad[0])
    $tRes = DllStructCreate("byte[" & $aSize[0] & "]", $hLock[0])
    $sHdr &= StringTrimLeft(DllStructGetData($tRes, 1), 2)
    $iOrd += 1
    Next
    _FreeLibrary($hInst)
    Dim $aINM[1]
    $FO = FileOpen($sOutIco, $iCrt)
    If $FO = -1 Then Return SetError(11, 0, 0)
    $FW = FileWrite($FO, $sHdr)
    If $FW = 0 Then Return SetError(12, 0, 0)
    FileClose($FO)
    Return SetError(0, 0, 1)
    EndFunc ;==>_ExtractIconToFile

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

    ; Helper Functions beyond this point

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

    Func LTHR($sNum)
    Return Hex(BitRotate($sNum, -8), 4)
    EndFunc ;==>LTHR

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

    Func _LoadLibraryEx($sFile, $iFlag)
    Local $hInst = DllCall("Kernel32.dll", "hwnd", "LoadLibraryExA", "str", $sFile, "hwnd", 0, "int", $iFlag)
    Return $hInst[0]
    EndFunc ;==>_LoadLibraryEx

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

    Func _FreeLibrary($hModule)
    Local $aRes = DllCall("Kernel32.dll", "hwnd", "FreeLibrary", "hwnd", $hModule)
    EndFunc ;==>_FreeLibrary

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

    Func _StringSplitRegExp($sString, $sPattern, $sIncludeMatch = False, $iCount = 0)
    Local $sReservedPattern = Chr(0), $sTemp, $aResult
    Local $sReplacePattern = $sReservedPattern
    If $sIncludeMatch Then $sReplacePattern = "$0" & $sReplacePattern
    $sTemp = StringRegExpReplace($sString, $sPattern, $sReplacePattern, $iCount)
    If StringRight($sTemp, 1) = $sReservedPattern Then $sTemp = StringTrimRight($sTemp, 1)
    $aResult = StringSplit($sTemp, $sReservedPattern, 1)
    Return $aResult
    EndFunc ;==>_StringSplitRegExp

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

    Func _ResourceEnumNames($hModule, $iType)
    Local $aRet, $IsPtr = IsPtr($hModule), $xCB
    If $IsPtr Then
    $xCB = DllCallbackRegister('___EnumResNameProc', 'int', 'int*;int*;int*;int*')
    MsgBox(0,0,"jetzt kommt der Fehler")
    $aRet = DllCall('kernel32.dll', 'int', 'EnumResourceNamesW', 'ptr', $hModule, 'int', $iType, 'ptr', DllCallbackGetPtr($xCB), 'ptr', 0) ;???????????????????????????????????????????
    MsgBox(0,0,"jetzt kommt der Fehler")
    DllCallbackFree($xCB)
    EndIf
    EndFunc ;==>_ResourceEnumNames

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

    Func ___EnumResNameProc($hModule, $pType, $pName, $lParam)
    Local $aSize = DllCall('kernel32.dll', 'int', 'GlobalSize', 'ptr', $pName), $tBuf
    If $aSize[0] Then
    $tBuf = DllStructCreate('wchar[' & $aSize[0] & ']', $pName)
    ReDim $aINM[UBound($aINM) + 1]
    $aINM[0] += 1
    $aINM[UBound($aINM) - 1] = DllStructGetData($tBuf, 1)
    Else
    ReDim $aINM[UBound($aINM) + 1]
    $aINM[0] += 1
    $aINM[UBound($aINM) - 1] = "#" & $pName
    EndIf
    Return 1
    EndFunc ;==>___EnumResNameProc

    [/autoit]

    Bei dieser Zeile kommt der Fehler

    [autoit]

    $aRet = DllCall('kernel32.dll', 'int', 'EnumResourceNamesW', 'ptr', $hModule, 'int', $iType, 'ptr', DllCallbackGetPtr($xCB), 'ptr', 0)

    [/autoit]

    Hoffe ihr könnt mir helfen 8)

  • Bildvorschau funktioniert nicht

    • Tweaky
    • 9. August 2011 um 18:40

    Danke Oscar,
    funktioniert perfekt :thumbup:

  • Bildvorschau funktioniert nicht

    • Tweaky
    • 9. August 2011 um 16:57

    Oh, da weis ich gar nicht wo ich anfagen soll.
    Kann mir einer helfen?

  • Bildvorschau funktioniert nicht

    • Tweaky
    • 8. August 2011 um 23:13

    Hi,
    ich habe folgendes Skript

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <ScreenCapture.au3>
    #include <WindowsConstants.au3>

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

    HotKeySet("{F1}", "_shoot")

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

    Opt('GUIOnEventMode', 1)
    GUIRegisterMsg($WM_PAINT, 'WM_PAINT')

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

    _GDIPlus_Startup() ;Vorschau
    Global $iPreviewMaxDim = 200, $hPreviewBitmap, $iPreviewWidth, $iPreviewHeight

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

    Global $hPreviewGui = GUICreate('Vorschau-Fenster', $iPreviewMaxDim, $iPreviewMaxDim + 24, -1, -1)
    Global $hPreviewGraphic = _GDIPlus_GraphicsCreateFromHWND($hPreviewGui)
    GUISetState(@SW_SHOW, $hPreviewGui)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    $datei = @TempDir & "\" & "test.jpg"
    _ScreenCapture_Capture($datei, 0, 0, 100, 100)
    _PreviewLoadImage($datei)

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

    While 1
    Sleep(10)
    WEnd

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

    Func _end()
    _GDIPlus_BitmapDispose($hPreviewBitmap)
    _GDIPlus_GraphicsDispose($hPreviewGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_end

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

    Func _PreviewLoadImage($sImgFile)
    $hPreviewBitmap = _GDIPlus_BitmapCreateFromFile($sImgFile)
    If $hPreviewBitmap = 0 Then
    _GDIPlus_GraphicsFillRect($hPreviewGraphic, 0, 0, $iPreviewMaxDim, $iPreviewMaxDim)
    Return
    EndIf
    $iPreviewWidth = _GDIPlus_ImageGetWidth($hPreviewBitmap)
    $iPreviewHeight = _GDIPlus_ImageGetHeight($hPreviewBitmap)

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

    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, 200, 0)
    _GDIPlus_MatrixRotate($hMatrix, 90, "False")
    _GDIPlus_GraphicsSetTransform($hPreviewGraphic, $hMatrix)
    _GDIPlus_GraphicsClear($hPreviewGraphic)
    _GDIPlus_GraphicsDrawImage($hPreviewGraphic, $sImgFile, -$iPreviewWidth / 2, -$iPreviewHeight / 2)

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

    $iVector = $iPreviewWidth / $iPreviewHeight
    If $iVector > 1 Then
    $iPreviewWidth = $iPreviewMaxDim
    $iPreviewHeight = Int($iPreviewWidth / $iVector)
    Else
    $iPreviewHeight = $iPreviewMaxDim
    $iPreviewWidth = Int($iPreviewHeight * $iVector)
    EndIf

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

    $hBrush = _GDIPlus_BrushCreateSolid(0xFFEBCD)
    $hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
    $hBrush = _GDIPlus_BrushCreateSolid(0xFF8EB8FD) ;Hintergrundfarbe

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

    _GDIPlus_GraphicsFillRect($hPreviewGraphic, 0, 0, $iPreviewMaxDim, $iPreviewMaxDim, $hBrush)
    _GDIPlus_GraphicsDrawImageRect($hPreviewGraphic, $hPreviewBitmap, ($iPreviewMaxDim - $iPreviewWidth) / 2, ($iPreviewMaxDim - $iPreviewHeight) / 2, $iPreviewWidth, $iPreviewHeight)
    EndFunc ;==>_PreviewLoadImage

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

    Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    If $hWnd = $hPreviewGui Then
    _GDIPlus_GraphicsDrawImageRect($hPreviewGraphic, $hPreviewBitmap, ($iPreviewMaxDim - $iPreviewWidth) / 2, ($iPreviewMaxDim - $iPreviewHeight) / 2, $iPreviewWidth, $iPreviewHeight)
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_PAINT

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

    Func _shoot()
    $datei2 = @TempDir & "\" & "test2.jpg"
    _ScreenCapture_Capture($datei2, 400, 400, 500, 500)
    _PreviewLoadImage($datei2)
    EndFunc ;==>_shoot

    [/autoit]

    Wenn ich die GUI minimiere und dann wieder hervorhole, ist das Bild nicht mehr sichtbar.
    Wie kann man dies beheben?

    Außerdem will ich während die GUI minimiert ist mit "F1" das Bild ändern. Jedoch ist auch dann nach dem hervorholen der GUI kein Bild da.
    Wie kann man dies beheben?

    Danke :)

  • Or-Operator in If-Bedingungen

    • Tweaky
    • 26. Juni 2011 um 01:17

    Ich denke du willst es so, oder?

    [autoit]

    $var = "hallo"

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

    If $var = "abc" Or $var = "xyz" Then
    MsgBox(0, "", "abc/xyz")
    ElseIf $var = "hallo" Then
    MsgBox(0, "", "hallo")
    Else
    Exit
    EndIf

    [/autoit]
  • Welchen Internet Browser für Windows nutzt ihr - Umfrage ?

    • Tweaky
    • 25. Juni 2011 um 23:01

    Hi,
    ich weiß ich weiß, diese Umfrage hatten wir schon tausendundeinmal :D

    Dennoch würde mich der aktuelle Stand interessieren.
    Falls euer fehlen sollte, bitte einfach antworten. Ich werde ihine dann ergänzen.

  • Reaktivierung Euerer Translation.Autoit Accounts

    • Tweaky
    • 13. Juni 2011 um 13:52

    Ein kleine Ergänzung dazu:
    Für allen denen nicht ganz klar ist um was es hier geht.
    Es geht um die Übersetzseite der englischen Hilfe ins Deutsche
    Zu erreichen ist die Seite unter
    http://translation.autoit.de/index.php

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™