@YaeroxXO: Vorallem komm ich mit Gimp ums verderben nicht klar =D
Beiträge von lachi
-
-
Außerdem braucht man ja auch nicht die komplette CS.
Man kann sich ja das kaufen, was man braucht.
Und denn muss es auch nicht das große Photoshop sein.
Da nutzt wohl ein großteil von uns eh nur 5% vom Funktionsumfang.Ich finde aber gut, dass noch niemand mit dem Argument gekommen ist, dass man alles, was man mit Photoshop CS6 machen kann, auch mit Gimp machen kann.
Klar geht, aber der Zeitaufwand könnt höher sein -
Ich nutzt sie jetzt ja.
Jetzt weiß ich ja, dass es diese Funktion gibt.
Und das Google durchquälen hatte leider vorhin auch nichts gebracht =D -
Ah doch so einfach.
Mir fehlte das
[autoit]_GUICtrlComboBox_GetCurSel
[/autoit]
Kommando.Danke dir
-
Moin moin Leute.
Folgendes anliegen.
Ich bin hier dezent am verzweifeln mit den Dropdowns.
Und zwar:
Problem:
Ich habe 2 Dropdowns für Endpunkte.
Die Namen der Endpunkte sind nicht Unique (Einzigartig).
Es kann 2 oder mehr Endpunkte mit dem selben Namen geben.Folgende weitere Anforderungen:
- Das Programm soll später prüfen, ob in beiden Dropdowns die selben Endpunkte ausgewählt sind.
- Das Programm soll später die IP zu dem Endpunkt raussuchen.
- Es soll nur der Endpunktname im Dropdown zu lesen sein für den User.
Wenn der User nun auf dem Server 2 Endpunkte mit dem Namen Hamburg angegeben hat gäbe es Komplikationen bisher bei:
1. Hamburg (ID 1) hat den selben Namen wie Hamburg (ID 5)
2. Er würde bisher das Array durchsuchen und das erste Hamburg nehmen, was er findet
3. Es soll "Hamburg" im Dropdown stehen. Nicht "Endpunkt 5: Hamburg"In HTML/PHP wüsste ich sofort wie ich dieses Problem lösen könnte. Dort kann man ja einfach die ID direkt mit angeben.
Nur leider in AutoIT nicht...Oder ist es möglich, dass man auslesen kann, der wievielte Eintrag ausgewählt wurde?
Oder eine UDF?
Mir ist vieles/alles recht. Hauptsache es läuft und die User kriegen nichts von dem Chaos dahinter mit =DDanke schon einmal für die Anstrengung eurer Grauen Zellen.
Mit freundlichen Grüßen
lachi -
Wurde nun anders gelößt.
###############################################################################################Moin moin Leute,
entweder bin ich zu blöd, oder es geht echt nicht wie ich es denke.
Persönlich tendiere ich zum ersterenSo
Problem:
Ich habe eine XML File und in dieser XML File hat 1 Relevanter Knoten ein Attribute id="1".
Wie kriege ich die jetzt ausgelesen?
Es dreht sich um den Inhalt bei:
/adhoc/measurements/pair id="1"/df_avgDas kleine auslese Script von mir schafft es nur, wenn keine ID angegeben ist.
Dann bekomme ein Array mit 12 Leeren Einträgen zurück (Bis $tempField[12])
Was ich ansonsten nutzen könnte für die ID ist mir bisher nicht schlüssig gewurden.
Ausser _XMLGetAttrib.
Aber das holt nur den Wert des Attributs raus...
Und nein, ich kann die XML nicht ändern bzw. ändern lassen.Für die, welche die XMLDomWrapper gerade nicht zur Hand haben habe ich diese nochmal angefügt.
"XML File"
Code
Alles anzeigen<adhoc> <result>2</result> <result_percent>35.298</result_percent> <alarm/> <measurements> <pair id="1"> <rfc_1889_jitter_average_ms>0.0</rfc_1889_jitter_average_ms> <jitter_delay_variation_maximum_ms>1.0</jitter_delay_variation_maximum_ms> <transaction_rate_avg_sec>0.0</transaction_rate_avg_sec> <throughput_avg_mbps>0.008</throughput_avg_mbps> <percent_bytes_lost_e1_to_e2>0.0</percent_bytes_lost_e1_to_e2> <response_time_avg_sec>0.0</response_time_avg_sec> <maximum_consecutive_lost_datagrams>0.0</maximum_consecutive_lost_datagrams> <oneway_delay_average_ms>0.1</oneway_delay_average_ms> <packet_count>0</packet_count> <df_avg>0.0</df_avg> <mos_average>4.03</mos_average> <datagrams_out_of_order_e1_e2>0</datagrams_out_of_order_e1_e2> </pair> <pair id="2"> <rfc_1889_jitter_average_ms>0.0</rfc_1889_jitter_average_ms> <jitter_delay_variation_maximum_ms>2.0</jitter_delay_variation_maximum_ms> <transaction_rate_avg_sec>0.0</transaction_rate_avg_sec> <throughput_avg_mbps>0.008</throughput_avg_mbps> <percent_bytes_lost_e1_to_e2>0.0</percent_bytes_lost_e1_to_e2> <response_time_avg_sec>0.0</response_time_avg_sec> <maximum_consecutive_lost_datagrams>0.0</maximum_consecutive_lost_datagrams> <oneway_delay_average_ms>0.2</oneway_delay_average_ms> <packet_count>0</packet_count> <df_avg>0.0</df_avg> <mos_average>4.03</mos_average> <datagrams_out_of_order_e1_e2>0</datagrams_out_of_order_e1_e2> </pair> </measurements> <thresholds> <pair id="1"></pair> <pair id="2"></pair> </thresholds> </adhoc>
"Code zum Auslesen"
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <_XMLDomWrapper.au3>
#include <Array.au3>$open = _XMLFileOpen(!!!PFAD ZUR XML BEI EUCH EINTRAGEN!!!)
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite("$open " & @TAB & $open & @CRLF)
If $open == 1 Then
$pfad = "/adhoc/measurements/pair"
$tempValue = _XMLGetValue($pfad)
ConsoleWrite("$tempValue " & @TAB & $tempValue & @CRLF)
ConsoleWrite("!@error " & @error & "| @extended " & @extended & @CRLF)
If IsArray($tempValue) Then
For $i = 0 To $tempValue[0] Step 1
ConsoleWrite("$tempValue["& $i & "] " & @TAB & $tempValue[$i] & @CRLF)
Next
EndIf
ConsoleWrite("-#####################################################" & @CRLF)
$tempField= _XMLGetField($pfad)
ConsoleWrite("$tempField" & @TAB & $tempField& @CRLF)
ConsoleWrite("!@error " & @error & "| @extended " & @extended & @CRLF)
If IsArray($tempField) Then
For $i = 0 To $tempField[0] Step 1
ConsoleWrite("$tempField["& $i & "] " & @TAB & $tempField[$i] & @CRLF)
Next
EndIf
_ArrayDisplay($tempField[1])
EndIfExit
[/autoit]Danke schonmal fürs anstrengen eure Hirnzellen
mfg lachi -
Ok, da war mein Gedankengang denn doch ein bisschen zu kurz.
Denn schande über mein Haupt und vergess was ich geschrieben hab -
Naja, aber wie ich das verstanden habe möchte er von Zeile 2 ab loslegen oder nicht?
-
Naja, aber was ist schlimm daran, wenn die 1:1 Übersetzung auch erweitert wird?
Das macht sie ja nur besser als das Original.
Praktisch wäre es denn vorallem, wenn die von der Orig. Hilfe dies mitbekommen und auch umsetzen. -
Ich hab die Deutsche, wie auch die in AutoIt genutzt.
Gegoogelt hab ich auch, aber anscheint falsch =DUnd so feste bin ich noch nicht mit GDI+
Ist das erste mal, dass ich das jetzt nutze.Tjoa, vieles ist einfacher als man denkt und ich hab gnadenlos vorbeigedacht.
Naja hatte ja auch noch anderes zu tunHm... müsste man mal bei den Verantwortlichen für die Hilfe anhauen, dass das dort eingetragen wird.
So, gerade gemacht. -
Es wäre doch Praktisch, wenn es einen Hinweis gäbe, dass man _GDIPlus_ImageLoadFromFile mit _GDIPlus_ImageDispose wieder auflößt.
[autoit]_GDIPlus_ImageLoadFromFile
[/autoit]
_GDIPlus_ImageDisposeZitatBemerkungen
Wenn man mit dem Image-Objekt fertig ist, ist _GDIPlus_ImageDispose aufzurufen, um die Ressourcen wieder freizugebenOder ähnlich
-
Wunderbar.
Danke dir.
Lag ich ja garnicht so falsch, aber doch son bisschenSomit haut das Programm endlich alles weg, was es anlegt =D
Wusste halt noch net, wie genau das geht mit dem Freigeben
-
Er braucht ja auch die Zeile.
Dafür ist ja das $i da.Der Wert wird von der For-Schleife immer um 1 hochgezählt.
[autoit]$line = FileReadLine($file, $i)
[/autoit] -
Moin,
[autoit]
mein Verdacht liegt ja, wie bereits geschrieben in GDI+.
Genauer bei:
[/autoit]
_GDIPlus_ImageLoadFromFile()
; oder
_GDIPlus_GraphicsCreateFromHWND()Wie ich drauf komme?
Ich hab an der Workfile weiter gearbeitet und mit diesen Funktionen weitere PNGs eingebunden.
Diese wehren sich ebenfalls gegen das Löschen.Trotzdem schonmal Danke für deine mühe.
-
Moin moin,
du kannst hier doch recht einfach mit einer For Schleife Arbeiten.
Die Hilfe zeigt die dafür folgendes:
[autoit]
[/autoit]
; Read in lines of text until the EOF is reached
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
MsgBox(0, "Line read:", $line)
WendAlso zb:
[autoit]
[/autoit][autoit][/autoit][autoit]
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
_IEFormElementSetValue ($oQuery2, $line)
$Seach2 = _IEGetObjByName($IE,"ShowSearch")
_IEAction($Seach2,"click")
sleep(1000)
_IELOADWAIT($IE)
_IELOADWAIT($IE)
_IENavigate($IE, "javascript:MarkAll('Form_Liste')", 0)$oForm_LS = _IEFormGetObjByName ($IE, "Form_Liste")
[/autoit][autoit][/autoit][autoit]
$oQuery3 = _IEFormElementGetObjByName ($oForm_LS, "art_tmp")
_IEFormElementSetValue ($oQuery3, "ebayenditemsure")
$Show = _IEGetObjByName($IE,"Ausfuehren_Button")
_IEAction($Show,"click")_IELOADWAIT($IE)
[/autoit][autoit][/autoit][autoit]
$oForm_OF = _IEFormGetObjByName ($IE, "enditemform")
$oQuery4 = _IEFormElementGetObjByName ($oForm_OF, "EndItemReason")
_IEFormElementSetValue ($oQuery4, "NotAvailable")$Submitx = _IEGetObjByName($IE,"ConfirmButton")
[/autoit][autoit][/autoit][autoit]
_IEAction($Submitx,"click")_IELOADWAIT($IE)
[/autoit]
_IENavigate($IE, "Linked.x")
WEndDas sollte es eigentlich sein.
Du startest halt nur in der 1. Zeile und nicht in der 2...Das könnte man ggf. umgehen mit einer For-Schleife.
[autoit]
Von 2 bis iwas ganz hohes
[/autoit]
; Read in lines of text until the EOF is reached
For $i = 2 To 1000000000000 Step 1
$line = FileReadLine($file, $i)
If @error = -1 Then ExitLoop
MsgBox(0, "Line read:", $line)
NextSollte so gehen Theoretisch
Also zb:
[autoit]
[/autoit][autoit][/autoit][autoit]
For $i = 2 To 1000000000000 Step 1
$line = FileReadLine($file, $i)
If @error = -1 Then ExitLoop
_IEFormElementSetValue ($oQuery2, $line)
$Seach2 = _IEGetObjByName($IE,"ShowSearch")
_IEAction($Seach2,"click")
sleep(1000)
_IELOADWAIT($IE)
_IELOADWAIT($IE)
_IENavigate($IE, "javascript:MarkAll('Form_Liste')", 0)$oForm_LS = _IEFormGetObjByName ($IE, "Form_Liste")
[/autoit][autoit][/autoit][autoit]
$oQuery3 = _IEFormElementGetObjByName ($oForm_LS, "art_tmp")
_IEFormElementSetValue ($oQuery3, "ebayenditemsure")
$Show = _IEGetObjByName($IE,"Ausfuehren_Button")
_IEAction($Show,"click")_IELOADWAIT($IE)
[/autoit][autoit][/autoit][autoit]
$oForm_OF = _IEFormGetObjByName ($IE, "enditemform")
$oQuery4 = _IEFormElementGetObjByName ($oForm_OF, "EndItemReason")
_IEFormElementSetValue ($oQuery4, "NotAvailable")$Submitx = _IEGetObjByName($IE,"ConfirmButton")
[/autoit][autoit][/autoit][autoit]
_IEAction($Submitx,"click")_IELOADWAIT($IE)
[/autoit]
_IENavigate($IE, "Linked.x")
NextMit freundlichen Grüßen
lachi -
Moinsens,
[autoit]
also ich konnte das Problem schonmal eingrenzen.
Es liegt entweder an:
[/autoit]
_GDIPlus_ImageLoadFromFile()
; oder
_GDIPlus_GraphicsCreateFromHWND()Bei _GDIPlus_GraphicsCreateFromHWND() steht ja in der Hilfe:
Bemerkungen
Wenn man mit dem Grafik-Objekt fertig ist, ist _GDIPlus_GraphicsDispose aufzurufen, um die Ressourcen wieder freizugeben_GDIPlus_GraphicsDispose()
[/autoit]
Habe ich probiert, aber leider ohne Resultat...
Mal weiter gucken.
Vielleicht ließt das ja auch einer, der mehr Ahnung von GDI+ hat und der kann mir denn weiter helfen.
Wenn nicht, denn halt nicht -
Moin AutoBert,
für Euch lauffähig wäre dies Script nur mit größerem Aufwand, dass ist das Problem...
Sonst gäbe es schon ein lauffähiges Script.Das was ich angefügt habe, sind schon die Codeteile, welche was mit den Grafiken zu tun haben.
Na denn setz ich mich mal dran und zwacke was ab von der aktuellen Version.So: Hier habt ihr denn einmal ein Zip mit:
Angepasster Version von dem Programm.
au3
exe
Grafiken
Benötigte Zusatz Include
autoit.de/wcf/attachment/16682/ -
Problem gelöst!
[autoit]
Gesucht war:_GDIPlus_ImageDispose($hGUIHeaderIcon)
[/autoit]Genauer Lösungsweg in Post #5.
Danke an Make-Grafik
Thread auf gelöst gesetzt.
###############################################################################################
Guten Tag allerseits.Ich hätte da mal ein kleines Problem, wo ich nicht weiter weiß.
Und zwar:Problem:
[autoit]
Ich habe ein eigenes kleines GUI.
In diesem GUI sind 4 Grafiken eingebunden.
3x .png
1x .ico
Die 3 Grafiken löscht er.
Das Icon will er nicht löschen.
Die 4 Grafiken werden mit FileInstall in den @TempDir geschrieben.
Als Beispiel:FileInstall("img/Icon16px.ico", @TempDir & "/PMGEICO.ico", 1)
[/autoit]Denn am Ende des Scriptes wird eine Funktion aufgerufen um die Grafiken zu löschen und das Script zu Beenden.
[autoit]
[/autoit][autoit][/autoit][autoit]
Func _PMClose() ; Beim Aufruf wird das Programm beendet
_WinAPI_DeleteObject($hGUIStartButtonBmpNew)
_WinAPI_DeleteObject($hGUITesttypButtonBmpNew)
_WinAPI_DeleteObject($hGUIZielendpunktButtonBmp)
GUIDelete($hGUIDisplay) ; Lösche das GUI
_ProgressDelete($hGUIProgressBar) ; MUST BE DONE ON EXIT
_Progress_CallBack_Free(1) ; Force Killing Timer
_GDIPlus_Shutdown()$temp = 1
[/autoit]
While FileExists(@TempDir & "\PMNETCOR*.png") = True And $temp < 10
$temp += $temp
;~ FileDelete(@TempDir & "\PMGEICO.png") ; Funktioniert zurzeit nicht
FileDelete(@TempDir & "\PMNstart.png")
FileDelete(@TempDir & "\PMNtesttyp.png")
FileDelete(@TempDir & "\PMNzielendpunkt.png")
FileDelete(@TempDir & "\PMGEICO.ico") ; Funktioniert zurzeit nicht
WEnd
Exit
EndFunc ;==>_PMCloseDie 4 Grafiken werden nur angezeigt.
[autoit]
Die 3 .png als Button und das Icon als Icon.
[/autoit][autoit][/autoit][autoit]
$hGUIDisplay = GUICreate($sGUITitle, $iGUIWidth, $iGUIHeight, -1, -1, $WS_POPUP)[...]
[/autoit][autoit][/autoit][autoit]GUICtrlCreateLabel("", $iGUIBorderWidth, $iGUIBorderWidth, 17, 17, 0, 0x100000)
[/autoit][autoit][/autoit][autoit]
$hGUIHeaderIcon = _GDIPlus_ImageLoadFromFile(@TempDir & "/PMGEICO.ico")
$hGUIHeaderIconNew = _GDIPlus_GraphicsCreateFromHWND($hGUIDisplay)
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")[...]
[/autoit][autoit][/autoit][autoit]Func MY_WM_PAINT($hWnd, $msg, $wParam, $lParam) ; Draw PNG image
[/autoit]
_WinAPI_RedrawWindow($hGUIDisplay, 0, 0, $RDW_UPDATENOW)
_GDIPlus_GraphicsDrawImage($hGUIHeaderIconNew, $hGUIHeaderIcon, 3, 3)
_WinAPI_RedrawWindow($hGUIDisplay, 0, 0, $RDW_VALIDATE)
Return $GUI_RUNDEFMSG
EndFunc ;==>MY_WM_PAINTFolgender Code ist für die 3 Buttuns.
[autoit]
[/autoit][autoit][/autoit][autoit]
; Start Button
$hGUIStartButton = GUICtrlCreateButton("Start", 10, 96, 32, 32, $BS_BITMAP)
$hGUIStartButtonBmp = _GDIPlus_BitmapCreateFromFile(@TempDir & "/PMNstart.png")
If @OSBuild < 6000 Then
$hGUIStartButtonBmpNew = ConvertBitmap($hGUIStartButtonBmp)
Else
$hGUIStartButtonBmpNew = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hGUIStartButtonBmp)
EndIf
_GDIPlus_BitmapDispose($hGUIStartButtonBmp)
_WinAPI_DeleteObject(GUICtrlSendMsg($hGUIStartButton, $BM_SETIMAGE, $IMAGE_BITMAP, $hGUIStartButtonBmpNew))[...]
[/autoit][autoit][/autoit][autoit]Func ConvertBitmap($hBitmap) ; Workaround für WinXP
[/autoit]
Local $iButtonColor = _WinAPI_GetSysColor($COLOR_BTNFACE)
$iButtonColor = 0x10000 * BitAND($iButtonColor, 0xFF) + BitShift($iButtonColor, 16) + BitAND($iButtonColor, 0x00FF00)
Local $iWidth = _GDIPlus_ImageGetWidth($hBitmap), $iHeight = _GDIPlus_ImageGetHeight($hBitmap)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", 0, "int", 0x0026200A, "ptr", 0, "int*", 0)
Local $hBitmap_New = $aResult[6]
Local $hCtx_new = _GDIPlus_ImageGetGraphicsContext($hBitmap_New)
Local $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000 + $iButtonColor)
_GDIPlus_GraphicsFillRect($hCtx_new, 0, 0, $iWidth, $iHeight, $hBrush)
_GDIPlus_GraphicsDrawImageRect($hCtx_new, $hBitmap, 0, 0, $iWidth, $iHeight)
Local $hHBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap_New)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_BitmapDispose($hBitmap_New)
_GDIPlus_GraphicsDispose($hCtx_new)
Return $hHBitmap
EndFunc ;==>ConvertBitmapGescheiterte Lösungsversuche:
- Anderes Dateiformat
- Paar andere Sachen, welche ich gerade nicht mehr im Kopf hab...
- Sicherstellen, dass icon eine Datei ist:
[/autoit]
ConsolWrite(FileGetAttrib(@TempDir & "\PMGEICO.ico") & @CRLF)
-> AMal gucken, vielleicht kann mir einer von euch sagen, wo ich einen Fehler eingebaut habe.
Mit freundlichen Grüßen
-
Könnt nicht, sondern ist genau das, was ich suche.
Vielen Dank dir.mfg lachi
-
Moin moin.
Kann man irgendwie die gesamte ComboBox auslesen?
Also nicht das ausgewählte, sondern den gesamten Inhalt?
Bzw. gibt es etwas, damit man prüfen kann, ob schon was in der ComboBox steht?Ich hau mal ein Beispiel ran:
[autoit]GUICtrlSetData($hGUITesttypCombo, "asd|qwe|rtz|fgh", "asd")
[/autoit]
$aComboAusgelesen = _FuncZumAuslesen($hGUITesttypCombo)_ArrayDisplay($aComboAuslgesen)Wie gesagt: Ich möchte NICHT nur das ausgewählte, sondern ALLES eingetragene aus der ComboBox auslesen bzw. ich möchte Wissen, ob asd und qwe schon in der ComboBox stehen.
Ich hoffe ihr versteht was ich meine.
mfg lachiPS: Ja, Google habe ich gefragt und auch hier gesucht.