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 ![]()
Beiträge von Tweaky
-
-
Ich habe folgendes Skript.
Spoiler anzeigen
[autoit]#include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
;~ #include <GuiScrollBars.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $hGui = GUICreate("Test", 320, 240)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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()Global $hProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $hMod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hProc), $hMod)
OnAutoItExitRegister("_Cleanup")While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _GetFontHeight($hWnd)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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 ;==>_GetFontHeightFunc _CalcEditSize()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $iCnt = _GUICtrlEdit_GetLineCount($hEdit)
$iEditH = $iCnt * $iFontHeight
GUICtrlSetPos($cEdit, 10, 10, 300, $iEditH + $iFontHeight)
EndFunc ;==>_CalcEditSizeFunc _KeyProc($nCode, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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 ;==>_KeyProcFunc _Cleanup()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hProc)
EndFunc ;==>_CleanupFunc _Exit()
[/autoit]
Exit
EndFunc ;==>_ExitLaut 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
-
Genial eukalyptus,
funktioniert super
-
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
-
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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>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
[/autoit] [autoit][/autoit] [autoit]
While 1
$msg = GUIGetMsg()If $msg = $GUI_EVENT_CLOSE Then ExitLoop
[/autoit]
WEnd -
Unter Win 7 siehts auch ein bisschen anders aus (Umrandung beachten)
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiListView.au3>
#include <ListViewConstants.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$farbe1 = 0x00BFFF ;hellblau
[/autoit] [autoit][/autoit] [autoit]
$farbe2 = 0xFFFF00 ;gelb
$farbe3 = 0x00FF7F ;grün
$i = 0GUICreate("Test", 200, 800)
[/autoit] [autoit][/autoit] [autoit]$h_lv = GUICtrlCreateListView("Test", 10, 50, 170, 150, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER), $LVS_EX_DOUBLEBUFFER)
[/autoit] [autoit][/autoit] [autoit]
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)GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(10)
If $i < 10 Then
For $i = 1 To 100
_eintragen($h_lv)
_eintragen($h_lv2)
Next
EndIf
WEndFunc _eintragen($h_lv_tmp)
[/autoit] [autoit][/autoit] [autoit]
_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 ;==>_eintragenFunc _beenden()
[/autoit]
Exit
EndFunc ;==>_beendenAuf dem Bild:
oben mit $LVS_EX_DOUBLEBUFFER
unten ohne $LVS_EX_DOUBLEBUFFERkomisch



-
Danke BugFix,
wie konnte ich diesen Parameter nur übersehen
-
Hi,
gibt es eine Möglichkeit das flackern des ListViews zu verhindern
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiListView.au3>
#include <ListViewConstants.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$farbe1 = 0x00BFFF ;hellblau
[/autoit] [autoit][/autoit] [autoit]
$farbe2 = 0xFFFF00 ;gelb
$farbe3 = 0x00FF7F ;grünGUICreate("Test", 100, 400)
[/autoit] [autoit][/autoit] [autoit]$h_lv = GUICtrlCreateListView("Test", 10, 50, 70, 320, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER))
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSendMsg($h_lv, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($h_lv, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(10)
_eintragen()
WEndFunc _eintragen()
[/autoit] [autoit][/autoit] [autoit]
_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)EndFunc ;==>_eintragen
[/autoit] [autoit][/autoit] [autoit]Func _beenden()
[/autoit]
Exit
EndFunc ;==>_beendenDen Sleep-Wert will ich nur ungern erhöhen, da sonst das eintragen langsamer wird

-
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. -
In der "Downloads"-Box steht die falsche Scite Version.
Es gibt mittlerweile die Version vom 03.07.2011Besteht die Chance, dass der Button "Neue Nachrichten seit ... anzeigen" demnächst mal wieder kommt

-
Ne, geht leider auch nicht

-
Oh, ne lass mal lieber.
Das ich eine oder mehrere Hausnummern zu groß für mich.
Es passt schon so.
-
Ah, ok.
Wenn es keine andere Möglichkeit gibt, dann muß ichs halt so machen.Dank dir

-
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>
[/autoit] [autoit][/autoit] [autoit]
#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>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]; notify messages
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")Global $sIn = @SystemDir & "\shell32.dll" ;; default icon file
[/autoit] [autoit][/autoit] [autoit]
Global $hGui, $LV, $Extract, $LHT, $IHM$hGui = GUICreate("", 500, 400, -1, -1, -1, $WS_EX_ACCEPTFILES)
[/autoit] [autoit][/autoit] [autoit]GUISetOnEvent($GUI_EVENT_DROPPED, "GuiEvent", $hGui)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "GuiEvent", $hGui)$LV = GUICtrlCreateListView("", 5, 5, 490, 350, $LVS_ICON)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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); Build Menu
[/autoit] [autoit][/autoit] [autoit]
$fil_mnu = GUICtrlCreateMenu("&extract")
$menu_save_all_as_ico = GUICtrlCreateMenuItem("Save all as ICO", $fil_mnu)
GUICtrlSetOnEvent(-1, "menu_save_all_as_ico")$menu_save_all_as_png = GUICtrlCreateMenuItem("Save all as PNG", $fil_mnu)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent(-1, "menu_save_all_as_png"); status bar ..
[/autoit] [autoit][/autoit] [autoit]
Global $aStatusParts[2] = [400, -1]
Global $aTempStatus[2] = ["", ""]$StatusBar = _GUICtrlStatusBar_Create($hGui, $aStatusParts, $aTempStatus, $SBARS_SIZEGRIP)
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlStatusBar_SetMinHeight($StatusBar, 20)
_GUICtrlStatusBar_SetText($StatusBar, "Icon Extractor")GUISetState(@SW_SHOW, $hGui)
[/autoit] [autoit][/autoit] [autoit]Update()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(100)
ChkExtract()
WEndFunc GuiEvent()
[/autoit] [autoit][/autoit] [autoit]
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
ExitCase $GUI_EVENT_DROPPED
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If StringRegExp(@GUI_DragFile, "(?i)\.(cpl|dll|exe|icl|ocx)", 0) Then
_GUICtrlListView_DeleteAllItems($LV)
$sIn = @GUI_DragFile
Update()
EndIf
EndSwitch
EndFunc ;==>GuiEvent; function - save all as ico as
[/autoit] [autoit][/autoit] [autoit]
Func menu_save_all_as_ico()
; all icons ?
$IHM = _WinAPI_ExtractIconEx($sIn, -1, 0, 0, 0)For $i = 1 To $IHM
[/autoit] [autoit][/autoit] [autoit]
$filename = @ScriptDir & "\icon_" & $i & ".ico";_GUICtrlStatusBar_SetText($StatusBar, "extracting ICO icon " & $i & " of " & $IHM)
[/autoit] [autoit][/autoit] [autoit]_ExtractIconToFile($sIn, $i, $filename)
[/autoit] [autoit][/autoit] [autoit]Next
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GUICtrlStatusBar_SetText($StatusBar, "")EndFunc ;==>menu_save_all_as_ico
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; function - save all as png files
[/autoit] [autoit][/autoit] [autoit]
Func menu_save_all_as_png()
; all icons ?
$IHM = _WinAPI_ExtractIconEx($sIn, -1, 0, 0, 0)For $i = 1 To $IHM
[/autoit] [autoit][/autoit] [autoit]
$filename = @ScriptDir & "\icon_" & $i & ".png";$Ret = DllCall("shell32", "long", "ExtractAssociatedIcon", "int", 0, "str", $sIn, "int*", $i)
[/autoit] [autoit][/autoit] [autoit]
$hIcon = $Ret[0]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
$pBitmap = DllCall($ghGDIPDll, "int", "GdipCreateBitmapFromHICON", "ptr", $hIcon, "int*", 0)
$pBitmap = $pBitmap[2]_GDIPlus_ImageSaveToFile($pBitmap, $filename)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_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_pngFunc ChkExtract()
[/autoit] [autoit][/autoit] [autoit]
If $Extract Then
$Extract = 0Local $FOD = FileSaveDialog("Save extracted icon as..", "", "Icon file (*.ico)")
[/autoit] [autoit][/autoit] [autoit]If Not @error And $FOD <> "" Then
[/autoit] [autoit][/autoit] [autoit]
WinSetTitle($hGui, "", "Extracting...")
_ExtractIconToFile($sIn, $LHT, $FOD)If @error Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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 ;==>ChkExtractFunc Update()
[/autoit] [autoit][/autoit] [autoit]
$IHM = _WinAPI_ExtractIconEx($sIn, -1, 0, 0, 0)WinSetTitle($hGui, "", "Icons found in " & StringMid($sIn, StringInStr($sIn, "\", 0, -1) + 1) & ": " & $IHM)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $IHM
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateListViewItem($i, $LV)
GUICtrlSetImage(-1, $sIn, -$i, 1)
Next
EndFunc ;==>UpdateFunc DefName()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $FN = StringFormat("%0" & StringLen($IHM) & "d", $LHT)
Return $FN & "_" & StringTrimRight(StringMid($sIn, StringInStr($sIn, "\", 0, -1) + 1), 3) & "ico"
EndFunc ;==>DefName; double click on item -> extract as--.
[/autoit] [autoit][/autoit] [autoit]
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndLV, $tInfo
$hWndLV = GUICtrlGetHandle($LV)$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$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_NOTIFYGlobal $aINM[1]
[/autoit] [autoit][/autoit] [autoit]; #FUNCTION# =============================================================================================
[/autoit] [autoit][/autoit] [autoit]
; 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 = 18If $iPath = 1 Then $iCrt = 26
[/autoit] [autoit][/autoit] [autoit]
If Not FileExists($sInFile) Then Return SetError(1, 0, 0)
If Not IsInt($iIcon) Then Return SetError(2, 0, 0)$hInst = _LoadLibraryEx($sInFile, $LOAD_LIBRARY_AS_DATAFILE)
[/autoit] [autoit][/autoit] [autoit]
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; Helper Functions beyond this point
[/autoit] [autoit][/autoit] [autoit]Func LTHR($sNum)
[/autoit] [autoit][/autoit] [autoit]
Return Hex(BitRotate($sNum, -8), 4)
EndFunc ;==>LTHRFunc _LoadLibraryEx($sFile, $iFlag)
[/autoit] [autoit][/autoit] [autoit]
Local $hInst = DllCall("Kernel32.dll", "hwnd", "LoadLibraryExA", "str", $sFile, "hwnd", 0, "int", $iFlag)
Return $hInst[0]
EndFunc ;==>_LoadLibraryExFunc _FreeLibrary($hModule)
[/autoit] [autoit][/autoit] [autoit]
Local $aRes = DllCall("Kernel32.dll", "hwnd", "FreeLibrary", "hwnd", $hModule)
EndFunc ;==>_FreeLibraryFunc _StringSplitRegExp($sString, $sPattern, $sIncludeMatch = False, $iCount = 0)
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_StringSplitRegExpFunc _ResourceEnumNames($hModule, $iType)
[/autoit] [autoit][/autoit] [autoit]
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 ;==>_ResourceEnumNamesFunc ___EnumResNameProc($hModule, $pType, $pName, $lParam)
[/autoit]
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 ;==>___EnumResNameProcBei 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

-
Danke Oscar,
funktioniert perfekt
-
Oh, da weis ich gar nicht wo ich anfagen soll.
Kann mir einer helfen? -
Hi,
ich habe folgendes SkriptSpoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <ScreenCapture.au3>
#include <WindowsConstants.au3>HotKeySet("{F1}", "_shoot")
[/autoit] [autoit][/autoit] [autoit]Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_PAINT, 'WM_PAINT')_GDIPlus_Startup() ;Vorschau
[/autoit] [autoit][/autoit] [autoit]
Global $iPreviewMaxDim = 200, $hPreviewBitmap, $iPreviewWidth, $iPreviewHeightGlobal $hPreviewGui = GUICreate('Vorschau-Fenster', $iPreviewMaxDim, $iPreviewMaxDim + 24, -1, -1)
[/autoit] [autoit][/autoit] [autoit]
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)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(10)
WEndFunc _end()
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BitmapDispose($hPreviewBitmap)
_GDIPlus_GraphicsDispose($hPreviewGraphic)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_endFunc _PreviewLoadImage($sImgFile)
[/autoit] [autoit][/autoit] [autoit]
$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)$hMatrix = _GDIPlus_MatrixCreate()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_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)$iVector = $iPreviewWidth / $iPreviewHeight
[/autoit] [autoit][/autoit] [autoit]
If $iVector > 1 Then
$iPreviewWidth = $iPreviewMaxDim
$iPreviewHeight = Int($iPreviewWidth / $iVector)
Else
$iPreviewHeight = $iPreviewMaxDim
$iPreviewWidth = Int($iPreviewHeight * $iVector)
EndIf$hBrush = _GDIPlus_BrushCreateSolid(0xFFEBCD)
[/autoit] [autoit][/autoit] [autoit]
$hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF8EB8FD) ;Hintergrundfarbe_GDIPlus_GraphicsFillRect($hPreviewGraphic, 0, 0, $iPreviewMaxDim, $iPreviewMaxDim, $hBrush)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($hPreviewGraphic, $hPreviewBitmap, ($iPreviewMaxDim - $iPreviewWidth) / 2, ($iPreviewMaxDim - $iPreviewHeight) / 2, $iPreviewWidth, $iPreviewHeight)
EndFunc ;==>_PreviewLoadImageFunc WM_PAINT($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
If $hWnd = $hPreviewGui Then
_GDIPlus_GraphicsDrawImageRect($hPreviewGraphic, $hPreviewBitmap, ($iPreviewMaxDim - $iPreviewWidth) / 2, ($iPreviewMaxDim - $iPreviewHeight) / 2, $iPreviewWidth, $iPreviewHeight)
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_PAINTFunc _shoot()
[/autoit]
$datei2 = @TempDir & "\" & "test2.jpg"
_ScreenCapture_Capture($datei2, 400, 400, 500, 500)
_PreviewLoadImage($datei2)
EndFunc ;==>_shootWenn 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

-
Ich denke du willst es so, oder?
[autoit]$var = "hallo"
[/autoit][autoit][/autoit][autoit]If $var = "abc" Or $var = "xyz" Then
[/autoit]
MsgBox(0, "", "abc/xyz")
ElseIf $var = "hallo" Then
MsgBox(0, "", "hallo")
Else
Exit
EndIf -
Hi,
ich weiß ich weiß, diese Umfrage hatten wir schon tausendundeinmal
Dennoch würde mich der aktuelle Stand interessieren.
Falls euer fehlen sollte, bitte einfach antworten. Ich werde ihine dann ergänzen. -
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