@grebph du hast dich nicht zurück gemeldet, hat es bei dir funktioniert ?
Beiträge von Rodny_le_lude
-
-
Hallo Liebe Leute da es mir immer zu mühsam war meinen Router eine neue Ip zu verpassen habe ich ein kleines Script geschrieben das die ganze sache deutlich vereinfacht.
Vorzugsweise für den Typ A falls jemand ein Typ B oder C hat wäre es echt nice wenn ihr schreiben könntet ob es bei euch auch funktioniert.Spoiler anzeigen
AutoIt
Alles anzeigen#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_UseUpx=y #NoTrayIcon #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <Winhttp.au3> #include <crypt.au3> #include <string.au3> Global Const $pInI = @ScriptDir & "\speedportmanager.ini" $hspeedportIP = IniRead($pInI,"Config","whosis","http://192.168.2.1") $hspeedportPW = IniRead($pInI,"Config","pw","") $sAgent = IniRead($pInI,"Config","UserAgent","") If Not FileExists($pInI) Then $hspeedportIP = InputBox("first start","Wenn sie den Speedport Reconnector zum erstmal starten haben sie die möglichkeit den Pfad zum Speedport anzugeben. Standart Ip " & $hspeedportIP,$hspeedportIP) If Not $hspeedportIP Then MsgBox(64,"Error","Sie haben keinne angaben gemacht das Programm wird jetzt beendet") Exit Else IniWrite($pInI,"Config","whosis",$hspeedportIP) EndIf EndIf $hnetOpen = _WinHttpOpen($sAgent) $hnetConnect = _WinHttpConnect($hnetOpen,$hspeedportIP) $hnetGet = _WinHttpSimpleRequest($hnetConnect,"GET","/html/login/index.html") If Not $hnetGet Or @error Then MsgBox(64,"Error","Router ist unter " & $hspeedportIP & " nicht erreichbar") _exit() EndIf If Not $hspeedportPW Then $xInput = InputBox("Router Password","Bitte geben sie ihr Router Password in das Eingabefeld ein") If Not $xInput Then _exit() $hspeedportPW = _Crypt_HashData($xInput,$CALG_MD5) $hspeedportPW = StringTrimLeft($hspeedportPW,2) IniWrite($pInI,"Config","pw",$hspeedportPW) EndIf $hnetGet = _WinHttpSimpleRequest($hnetConnect,"POST","/data/Login.json","","csrf_token=nulltoken&password=" & StringLower($hspeedportPW) & "&showpw=0") $hnetToken = _WinHttpSimpleRequest($hnetConnect,"GET","/html/content/internet/connection.html") $hnetToken = _StringBetween($hnetToken,'var csrf_token = "','"') If @error Then MsgBox(64,"Error","Sicherheitstoken konnte nicht erzeugt werden. Bitte wenden sie sich an den Autor des Programmes.") _exit() EndIf $hnetToken = $hnetToken[0] $hnetDisable = _WinHttpSimpleRequest($hnetConnect,"POST","/data/Connect.json","","req_connect=disabled&csrf_token=" & $hnetToken) Sleep(2000) $hnetEnable = _WinHttpSimpleRequest($hnetConnect,"POST","/data/Connect.json","","req_connect=online&csrf_token=" & $hnetToken) _exit() Func _exit() _WinHttpCloseHandle($hnetConnect) _WinHttpCloseHandle($hnetOpen) Exit EndFunc
-
Hallo liebe Leute
Ich habe das Problem das GDI+ anscheinend nicht die kompletten Unicode Characters darstellen kann die es so gibt.
Anhand des Reload Zeichen's gut erkennbar, mit einem normalem lable keinn Problem kann das gleiche Zeichen nicht in GDI+ gezeichnet werden.Das ganze scheint ziemlich Random zu sein ein Zeichen wird dargestellt ein anderes wiederum nicht.
Spoiler anzeigen
AutoIt
Alles anzeigen#include <GUIConstantsEx.au3> #include <GDIPlus.au3> $hGUI = GUICreate("Test", 400, 300) GUISetState(@SW_SHOW) GUICtrlCreateLabel(ChrW("10227"),10,100,100,100) GUICtrlSetFont(-1,20,400,1,"Arial") _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_BrushCreateSolid(0xFF00007F) $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $hFont = _GDIPlus_FontCreate($hFamily, 20, 1) $tLayout = _GDIPlus_RectFCreate(0,0, 0, 0) _GDIPlus_GraphicsDrawStringEx($hGraphic, ChrW("10227"), $hFont, $tLayout, $hFormat, $hBrush) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown()
-
Die frage die du dir stellen solltest, willst du das image zugeschnitten bekommen oder willst du es lediglich stretchen.
Den wenn du es nur stretchen willst u. es als Gui Hintergrund fungieren soll reicht auch Guictrlcreatepic.Ansonsten:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <Gdiplus.au3>_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit];größe des images u. des Guis
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$gui_w = 450
$gui_h = 350;schnitt position
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$x_pos = 0
$y_pos = 0$hgui = GUICreate("Test", $gui_w, $gui_h, -1, -1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_SHOW)$bmp_l = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\hd.jpg")
[/autoit] [autoit][/autoit] [autoit]
$hgr = _GDIPlus_GraphicsCreateFromHWND($hgui)$bmp_new = _GDIPlus_BitmapCloneArea($bmp_l, $x_pos, $y_pos, $gui_w, $gui_h, $GDIP_PXF32ARGB)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsDrawImageRect($hgr, $bmp_new, 0, 0, $gui_w, $gui_h)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
_GDIPlus_BitmapDispose($bmp_l)
_GDIPlus_BitmapDispose($bmp_new)
_GDIPlus_GraphicsDispose($hgr)
_GDIPlus_Shutdown()
ExitEndSwitch
[/autoit]
WEnd -
Schau dir mal _GDIPlus_BitmapCloneArea an, das sollte genau die function sein nach der du suchst.
-
hier hast du mal zwei Varianten:
Spoiler anzeigen
[autoit]$company = RegRead("" & $computer & "\HKEY_LOCAL_MACHINE\SOFTWARE\SIP", "Company")
[/autoit] [autoit][/autoit] [autoit]
If StringLower(StringLeft($company, 1)) = "k" Then
$company = StringRight($company, 4)
EndIf;Variante 1####################################
[/autoit] [autoit][/autoit] [autoit]
Switch $company
Case 2221 To 2225
$empfaenger = "A"
GUICtrlSetState($nic_radio1, $GUI_CHECKED)
Case 2226 To 2229
$empfaenger = "B"
GUICtrlSetState($nic_radio3, $GUI_CHECKED)
Case 2230
$empfaenger = "C"
GUICtrlSetState($nic_radio3, $GUI_CHECKED)
Case Else
MsgBox(64,"Error","Error")
EndSwitch;Variante 2####################################
[/autoit]
If $company >= "2221" And $company <="2225" Then
$empfaenger = "A"
GUICtrlSetState($nic_radio1, $GUI_CHECKED)
ElseIf $company >= "2226" And $company<="2229" Then
$empfaenger = "B"
GUICtrlSetState($nic_radio3, $GUI_CHECKED)
ElseIf $company = "2230" Then
$empfaenger = "C"
GUICtrlSetState($nic_radio3, $GUI_CHECKED)
EndIf -
@Krabat
genau das ist das Problem
Wie gesagt ich hab es auch getestet mit einem sehr alten Programm von mir und da tritt dieser Mausbug nicht auf.EDIT: so gehts
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>$Form1 = GUICreate("Form1", 615, 438, 192, 164)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateInput("",10,10,100,20)
GUICtrlSetCursor(-1,5)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit]
WEnd -
Naja was soll ich grossartig zeigen
Spoiler anzeigen
[autoit]#include <EditConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 192, 164)
$Input1 = GUICtrlCreateInput("Input1", 80, 96, 153, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit]
WEndfahr einfach mal mit der Maus hin und her über die Inputbox.
-
Hi Leute
Ist eigentlich schonmal jemanden aufgefallen das wenn man ein Inputfeld erzeugt
und anschließend mit der Maus darüber fährt das der Cursor stottert. Ich habs grad nochmal mit einem Programm
getestet was schon älter ist dort war dieser BUG nicht vorhanden. Die aktuelle Autoitversion die ich benutze ist
die stable 3.3.8.1 u. mein Bs Win 7 x64. -
Hab auch einen Fehler gefunden, im Beispiel Script für _GUIImageList_AddBitmap
ALT:
Spoiler anzeigen
[autoit]#include <GuiConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WinAPI.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]
Local $listview, $hImage
Local $Wow64 = ""
If @AutoItX64 Then $Wow64 = "\Wow6432Node"
Local $sPath = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $Wow64 & "\AutoIt v3\AutoIt", "InstallDir") & "\Examples\GUI\Advanced\Images"GUICreate("Imagelist: AddBitmap", 400, 300)
[/autoit] [autoit][/autoit] [autoit]
$listview = GUICtrlCreateListView("", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($listview, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
GUISetState(); Lädt die Bilder
[/autoit] [autoit][/autoit] [autoit]
$hImage = _GUIImageList_Create(16, 32)
_GUIImageList_AddBitmap($hImage, $sPath & "Red.bmp")
_GUIImageList_AddBitmap($hImage, $sPath & "Green.bmp")
_GUIImageList_AddBitmap($hImage, $sPath & "Blue.bmp")
_GUICtrlListView_SetImageList($listview, $hImage, 1); Fügt die Spalten hinzu
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_AddColumn($listview, "Items", 120); Fügt die Items hinzu
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_AddItem($listview, "Item 1", 0)
_GUICtrlListView_AddItem($listview, "Item 2", 1)
_GUICtrlListView_AddItem($listview, "Item 3", 2); Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
[/autoit]
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_MainNeu:
Spoiler anzeigen
[autoit]#include <GuiConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WinAPI.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>_Main()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]
Local $listview, $hImage
Local $Wow64 = ""
If @OSArch = "X64" Then $Wow64 = "\Wow6432Node"
Local $sPath = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $Wow64 & "\AutoIt v3\AutoIt", "InstallDir") & "\Examples\GUI\Advanced\Images\"GUICreate("Imagelist: AddBitmap", 400, 300)
[/autoit] [autoit][/autoit] [autoit]
$listview = GUICtrlCreateListView("", 2, 2, 394, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($listview, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_DOUBLEBUFFER))
GUISetState(); Lädt die Bilder
[/autoit] [autoit][/autoit] [autoit]
$hImage = _GUIImageList_Create(16, 32)
_GUIImageList_AddBitmap($hImage, $sPath & "Red.bmp")
_GUIImageList_AddBitmap($hImage, $sPath & "Green.bmp")
_GUIImageList_AddBitmap($hImage, $sPath & "Blue.bmp")
_GUICtrlListView_SetImageList($listview, $hImage, 1); Fügt die Spalten hinzu
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_AddColumn($listview, "Items", 120); Fügt die Items hinzu
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_AddItem($listview, "Item 1", 0)
_GUICtrlListView_AddItem($listview, "Item 2", 1)
_GUICtrlListView_AddItem($listview, "Item 3", 2); Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
[/autoit]
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main -
Toller Benchmark
Mein Ergebniss:
=============== MINX-O-MAT =====================================
- CPU: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz (4 x 3200MHz)
- CPU-Cooldown [====================]
+ Test 1: 745543 points.
+ Test 2: 285990 points.
+ Test 3: 143500 points.
+ Test 4: 334760 points.
+ Test 5: 3463663 points. -
gibt es auch die möglichkeit das pad mit autoit zu steuern oder?
hmh ja das geht ist aber doch eigentlich Schwachsinn einen Joystick/pad zu emulieren.
Oder willst du was bauen das Turbotasten emuliert ?
http://www.activevb.de/cgi-bin/apiwiki/JoyGetPos -
besten Dank UEZ für die links damit klappt es wunderbar
-
Danke funkey
_WinAPI_RoundRect scheint genau das zu sein was ich gesucht habe, manchmal sieht man den Wald vor
lauter Bäumen nicht :wacko: -
Hi Leute kann mir bitte jemand erklären wie ich ein abgerundetes Rechteck mit Gdi+ erstellen kann am
besten mit Border. Ich kann das ganze zwar auch per Image lösen doch das gefällt mir nicht so.bisher habe ich das: sieht ein bisschen albern aus
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>Global $x=100,$y=10,$width = 100,$height = 100 ,$radius = 20
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate("GDI+", 400, 300)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetState()_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
[/autoit] [autoit][/autoit] [autoit]
$hPen = _GDIPlus_PenCreate(0xFF4f6793,1,2)
_GDIPlus_GraphicsDrawLine($hGraphic,$x + $radius,$y,$x + $width -$radius,$y,$hPen)
_GDIPlus_GraphicsDrawArc($hGraphic,$x + $width - $radius, $y, $radius,$radius, 270, 90,$hPen)_GDIPlus_GraphicsDrawLine($hGraphic,$x + $width, $y + $radius, $x + $width,$y + $height - $radius,$hPen)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawArc($hGraphic,$x + $width - $radius, $y + $height - $radius,$radius, $radius, 0, 90,$hPen)_GDIPlus_GraphicsDrawLine($hGraphic,$x + $width - $radius, $y + $height,$x + $radius, $y + $height,$hPen)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawArc($hGraphic,$x, $y + $height - $radius, $radius,$radius, 90, 90,$hPen)_GDIPlus_GraphicsDrawLine($hGraphic,$x, $y + $height - $radius, $x, $y + $radius,$hPen)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawArc($hGraphic,$x, $y, $radius, $radius, 180, 90,$hPen)Do
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Until GUIGetMsg() = $GUI_EVENT_CLOSE_GDIPlus_GraphicsDispose($hGraphic)
[/autoit]
_GDIPlus_PenDispose($hPen)
_GDIPlus_Shutdown()und das ist die lösung per image: geht zwar auch super aber will ich trozdem nicht
Spoiler anzeigen
[autoit]Func _bitmap_stretch($pic,$nw,$nh)
[/autoit] [autoit][/autoit] [autoit]
;by Rodney_le_lude
Local $strech_pointer[3],$gbitmap,$context,$hgraphic
Local $bitmap = _GDIPlus_BitmapCreateFromFile($pic)
If @error Then Return SetError(1)
Local $width = _GDIPlus_ImageGetWidth($bitmap)
Local $height = _GDIPlus_ImageGetHeight($bitmap)
If $nw < $width And $nh < $height Then
$bitmap = _bitmap_reduce($bitmap,$nw,$nh)
Return $bitmap
ElseIf $nw < $width And $nh >= $height Then
$bitmap = _bitmap_reduce($bitmap,$nw,-1)
ElseIf $nw >= $width And $nh < $height Then
$bitmap = _bitmap_reduce($bitmap,-1,$nh)
ElseIf $nw = $width And $nh = $height Then
Return $bitmap
EndIf$width = _GDIPlus_ImageGetWidth($bitmap)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$height = _GDIPlus_ImageGetHeight($bitmap)$hgraphic = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$gbitmap = _GDIPlus_BitmapCreateFromGraphics($nw,$height,$hgraphic)
$context = _GDIPlus_ImageGetGraphicsContext($gbitmap)$strech_pointer[0] = _GDIPlus_BitmapCloneArea($bitmap,0,0,$width/2,$height,$GDIP_PXF32ARGB)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$strech_pointer[1] = _GDIPlus_BitmapCloneArea($bitmap,$width/2,0,1,$height,$GDIP_PXF32ARGB)
$strech_pointer[2] = _GDIPlus_BitmapCloneArea($bitmap,$width/2,0,$width/2,$height,$GDIP_PXF32ARGB)_GDIPlus_GraphicsDrawImageRect($context,$strech_pointer[0],0,0,$width/2,$height)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($context,$strech_pointer[2],$nw-$width/2,0,$width/2,$height)
_GDIPlus_BitmapDispose($strech_pointer[0])
_GDIPlus_BitmapDispose($strech_pointer[2])For $i = $width/2 To $nw - $width/2 -1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($context,$strech_pointer[1],$i,0,1,$height)
Next
_GDIPlus_BitmapDispose($strech_pointer[1])$strech_pointer[0] = _GDIPlus_BitmapCloneArea($gbitmap,0,0,$nw,$height/2,$GDIP_PXF32ARGB)
[/autoit] [autoit][/autoit] [autoit]
$strech_pointer[1] = _GDIPlus_BitmapCloneArea($gbitmap,0,$height/2,$nw,1,$GDIP_PXF32ARGB)
$strech_pointer[2] = _GDIPlus_BitmapCloneArea($gbitmap,0,$height/2,$nw,$height/2,$GDIP_PXF32ARGB)_GDIPlus_GraphicsDispose($context)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_BitmapDispose($gbitmap)$gbitmap = _GDIPlus_BitmapCreateFromGraphics($nw,$nh,$hgraphic)
[/autoit] [autoit][/autoit] [autoit]
$context = _GDIPlus_ImageGetGraphicsContext($gbitmap)_GDIPlus_GraphicsDrawImageRect($context,$strech_pointer[0],0,0,$nw,$height/2)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($context,$strech_pointer[2],0,$nh-$height/2,$nw,$height/2)
_GDIPlus_BitmapDispose($strech_pointer[0])
_GDIPlus_BitmapDispose($strech_pointer[2])For $i = $height/2 To $nh - $height/2 -1
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImageRect($context,$strech_pointer[1],0,$i,$nw,1)
Next
_GDIPlus_BitmapDispose($strech_pointer[1])_GDIPlus_GraphicsDispose($context)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDispose($hgraphic)_GDIPlus_BitmapDispose($bitmap)
[/autoit] [autoit][/autoit] [autoit]
Return $gbitmapEndFunc
[/autoit] [autoit][/autoit] [autoit]Func _bitmap_reduce($bitmap,$width = -1,$height = -1)
[/autoit] [autoit][/autoit] [autoit]
;by Rodney_le_lude
If $width = -1 And $height = -1 Then Return $bitmap
Local $hgraphic,$hbitmap,$context
If $width = -1 Then $width = _GDIPlus_ImageGetWidth($bitmap)
If $height = -1 Then $height = _GDIPlus_ImageGetHeight($bitmap)$hgraphic = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
[/autoit]
$hbitmap = _GDIPlus_BitmapCreateFromGraphics($width,$height,$hgraphic)
$context = _GDIPlus_ImageGetGraphicsContext($hbitmap)
_GDIPlus_GraphicsDrawImageRect($context,$bitmap,0,0,$width,$height)
_GDIPlus_GraphicsDispose($context)
_GDIPlus_GraphicsDispose($hgraphic)
_GDIPlus_BitmapDispose($bitmap)
Return $hbitmap
EndFunc[Blockierte Grafik: http://img16.imageshack.us/img16/8209/35323219.th.png]
-
Hi leute ich bin grad dabei ein kleines Stackprogramm zu Scripten und habe das Problem icons die größer als 32x32px sind "Largeicons"
zu extrahieren (handle icons). Shgetfileinfo "siehe MSDN" gibt mir leider auch nicht das Resourcenfile und index aus in dem die bzw das Icon lagert. Nach langem suchen
bin ich dan auf diese Seite gestoßen klick . Mein Problem ist das es anscheinend in delphi geschrieben ist , und damit komme ich nicht klar es in Autoit umzusetzen. Falls mir jemand diese functionen übersetzen könnte wäre ich echt geplättet . Manche werden jetzt denken man könnte ja auf die iconResource per registry zugreifen , das geht aber nur bis zu einem gewissen Punkt. Wenn eine Dateierweiterung sein icon über eine Shellex erweiterung
(iconhandler) bekommt und keine Verknüpfung zu dieser hat bekommt man keinnen index und keine Resource. Als gutes Beispiel kann ich hier Alcohol 120% nennen dessen Erweiterung zb MDF u. MDS bekommen ihre icons von einem iconHandler. Also um es nochmal zusammenzufassen bis 32x32 funktioniert Shgetfileinfo zum extrahieren perfect auch mit files die ihr icon von einem ichonhandler bekommen, aber extragroße icons zb 48x48 o. 128x128
lassen sich nicht extrahieren.EDIT:
[autoit]
hier mal die Function die ich zurzeit benutze um icons zu extrahieren (max. 32x32px)
Winapiex.au3 wird vorrausgesetzt.Func Shellicon_set($path,$controlID,$ricon=False)
[/autoit]
Local $hWnd,$tInfo,$hIcon
$hWnd = GUICtrlGetHandle($controlID)
$tInfo = DllStructCreate($tagSHFILEINFO)
_WinAPI_ShellGetFileInfo($path, BitOR($SHGFI_ICON, $SHGFI_SHELLICONSIZE), 0, $tInfo)
$hIcon = DllStructGetData($tInfo, 'hIcon')
If Not $ricon Then
_WinAPI_DestroyIcon(_SendMessage($hWnd,0x0172,$IMAGE_ICON, $hIcon))
Else
Return $hIcon
EndIf
EndFunc -
guck mal hier: http://www.autoitscript.com/forum/topic/12…hl__comm%20port
Ich hab mir mit dieser UDF ein Huawei Patcher gebaut mit dem ich immer das SD Laufwerk an u. ausschalte, fuktioniert sehr gut.
Es ist aber zu beachten das es nur mit einem 32 bit Os läuft.. -
Aber das ist schlichtweg ein Fake - Dein Quellcode hat nur ein was Gutes - er bringt keine Fehlermeldung. Ansonsten passiert nix. Dein Download-Link verweist auf ein externes Player-Programm, wo nirgends ersichtlich ist, ob es mit AutoIt geschrieben wurde und ob es überhaupt von Dir stammt. Bei fertigen Programmen ohne (garantierte) Herkunftshinweise werden es die meisten User so machen wie ich - Finger weg.
Soweit ich das hier im Forum geschnallt habe, ist es ein Forum für Programmierer und soclche die es werden wollen. Da haben solche halbsaidenen Offerten bestimmt nichts zu suchen.Da ist garnichts gefaket, der Sourcecode ist schlichtweg nichtmehr da. Guck mal aufs Datum in der Zwischenzeit ist mir das Cms Abgeraucht worauf ich hin ein ein neues installiert habe deshalb sieht die Website aus wie Kraut u. Rüben.Ich Arbeite aber momentan am PFT 2.0 und wenn der RL Zeitpunkt da ist werde ich auch wieder Joomla installieren u. die Site neu gestallten. Und zum Radiocrawler der war so garnicht als einzelnes Programm gedacht sondern nur ein Test, aber bitte wenn dich die Source interessiert http://ul.to/i05gvfo2
ps der Funkt immer noch
-
Hab was im Englischem Forum gefunden , falls es noch einen intressiert hier die Function
Spoiler anzeigen
[autoit]Func _ImageColorRegExpReplace($hImage, $iColSrch, $iColNew, $iCount = 0)
[/autoit] [autoit][/autoit] [autoit]
Local $Reslt, $stride, $format, $Scan0, $iIW, $iIH, $hBitmap1
Local $v_BufferA, $AllPixels, $sREResult1, $sResult$iIW = _GDIPlus_ImageGetWidth($hImage)
[/autoit] [autoit][/autoit] [autoit]
$iIH = _GDIPlus_ImageGetHeight($hImage)$hBitmap1 = _GDIPlus_BitmapCloneArea($hImage, 0, 0, $iIW, $iIH, $GDIP_PXF32ARGB)
[/autoit] [autoit][/autoit] [autoit]; Locks a portion of a bitmap for reading or writing
[/autoit] [autoit][/autoit] [autoit]
$Reslt = _GDIPlus_BitmapLockBits($hBitmap1, 0, 0, $iIW, $iIH, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32ARGB);Get the returned values of _GDIPlus_BitmapLockBits ()
[/autoit] [autoit][/autoit] [autoit]
$width = DllStructGetData($Reslt, "width")
$height = DllStructGetData($Reslt, "height")
$stride = DllStructGetData($Reslt, "stride")
$format = DllStructGetData($Reslt, "format")
$Scan0 = DllStructGetData($Reslt, "Scan0")$v_BufferA = DllStructCreate("byte[" & $height * $width * 4 & "]", $Scan0) ; Create DLL structure for all pixels
[/autoit] [autoit][/autoit] [autoit]
$AllPixels = DllStructGetData($v_BufferA, 1)
;ConsoleWrite("$AllPixels, raw data, first 9 colours = " & StringRegExpReplace($AllPixels, "(.{98})(.*)", "\1") & @CRLF); Searches on this string - $sREResult1 whch has the prefix "0x" removed and a space put between pixels 8 characters long.
[/autoit] [autoit][/autoit] [autoit]
$sREResult1 = StringRegExpReplace(StringTrimLeft($AllPixels, 2), "(.{8})", "\1 ")
;ConsoleWrite("$sREResult1 first 9 colours = " & StringRegExpReplace($sREResult1, "(.{81})(.*)", "\1") & @CRLF)If StringInStr($iColNew, "0x") > 0 Then $iColNew = StringReplace($iColNew, "0x", ""); Remove "0x" not needed
[/autoit] [autoit][/autoit] [autoit]; StringRegExpReplace performed and white spaces removed
[/autoit] [autoit][/autoit] [autoit]
$sResult = StringStripWS(StringRegExpReplace($sREResult1, $iColSrch, $iColNew, $iCount),; Replace "0x" prefix and set modified data back to DLL structure, $v_BufferA
[/autoit] [autoit][/autoit] [autoit]
DllStructSetData($v_BufferA, 1, "0x" & $sResult)
_GDIPlus_BitmapUnlockBits($hBitmap1, $Reslt) ; releases the locked regionReturn $hBitmap1
[/autoit]
EndFunc ;==>_ImageColorRegExpReplacewenn jemand eine noch bessere Methode kennt immer her damit ansonsten begnüge ich mich damit
-
danke chip aber im grunde ist es ja das gleiche was meine function auch macht . :wacko: