Na dann such mal schön mit PixelSearch nach deinem farbigen Button. Kannst ja den Bereich zum Suchen sicher etwas eingrenzen.
Falls nix gefunden wird, da Button weiter unten im nicht sichtbaren Bereich, sendest du einfach {PageDown} und suchst erneut.
Beiträge von BugFix
-
-
Neben anderen, zutreffenden Threads, findest du bei "Ressourcen" als Suchbegriff u.a. https://autoit.de/index.php?page…70059#post70059.
Ich denke, da ist alles drin, was du wissen möchtest. -
Betreff Chrome: Lies mal hier nach.
Zu deiner Frage: OK, da ist ein Button auf der Seite. Denn willst du per Namen identifizieren. - Und dann? Automatisiert klicken kannst du ihn in Chrome nicht, falls das dein Wunsch ist.
-
Ich benutze Google Chrome (ff ist kaputt troz reinstall, IE ist dumm)
Du hast vergessen: Und Google Chrome macht mich zum gläsernen Menschen!!Wenn du Chrome nutzen möchtest, da wirklich schnell, dann bitte Iron. Der hat nämlich all die Sammelleidenschaft und Nachhausetelefoniererei aus Google Chrome entfernt und ist nur ein Browser.
Deine Frage allerdings habe ich nicht verstanden: Wort - Button - in die Länge ziehen...
Ich versteh nur Bahnhof.
-
Du kannst Ressourcen z.B. in eine leere Dll schreiben und diese verwenden. Dazu findest du im Forum einige Beispiele. Gib einfach mal "Ressourcen" in die SuFu ein.
-
Habe auch asuprobirt habe fehler meldung
Was soll diese völlig sinnfreie Äußerung?1. Hast du mal auf das Datum des Threads geschaut? (Samstag, 8. Dezember 2007, 15:15)
Seitdem haben wir einige Versionsschritte in AutoIt hinter uns. Das Skript muß sehr wahrscheinlich angepaßt werden.2. Wenn du Fehlermeldungen bekommst, lies sie. Und wenn du wünscht, dass wir dir dazu Hilfe leisten, dann Poste Code und Fehlermeldungen - aber dann bitte auch im richtigen Forum.
3. Wenn du Probleme mit der deutschen Sprache hast, schalte bitte die Rechtschreibprüfung in deinem Editor an! Es ist eine Zumutung dein Kauderwelsch zu Lesen!
-
Es kann sein, dass zusätzlich vom Programm geprüft wird, ob im Eingabefeld der Schreibcursor sich bewegt. Setze doch mal zusätzlich nach dem Senden der Daten den Cursor an Pos1 und dann an End und bestätige zusätzlich mit Enter den Schreibvorgang. Vielleicht löst das dann das nötige Event aus.
-
so, hat jemand ne ahnung was das soll und was ich dagengen mache kann, weil das is ja ne datei aus den includes, da kann ich ja schlecht was veränderen
Der Fehler kommt aber, weil ein übergebener Parameter "badly formatted" ist. Also schau auf deine Parameter, ob sie den Erfordernissen der Funktion entsprechen.
Da du keinen Code gepostet hast, kann ich das nicht beurteilen. -
Könntest du so machen:
Spoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <Array.au3>Local $path = 'C:\test' ; Pfad mit den Unterordnern
[/autoit] [autoit][/autoit] [autoit]
Local $log = 'log.ini'
Local $aFolder = _FileListToArray($path, '*', 2)
Global $aLV_Item[1][2] = [['']]
Local $ind, $aInd, $text$gui = GUICreate('test')
[/autoit] [autoit][/autoit] [autoit]
$LV = GUICtrlCreateListView('INI', 20, 20, 150, 150)
GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
$hLV = GUICtrlGetHandle($LV)
$button = GUICtrlCreateButton('Zeige INI-Pfad', 20, 200, 100, 20)For $i = 1 To UBound($aFolder) -1
[/autoit] [autoit][/autoit] [autoit]
If FileExists($path & '\' & $aFolder[$i] & '\' & $log) Then
If $aLV_Item[UBound($aLV_Item)-1][0] <> '' Then ReDim $aLV_Item[UBound($aLV_Item)+1][2]
$aLV_Item[UBound($aLV_Item)-1][0] = $path & '\' & $aFolder[$i] & '\' & $log
$aLV_Item[UBound($aLV_Item)-1][1] = $aFolder[$i] & '.ini'
GUICtrlCreateListViewItem($aFolder[$i] & '.ini', $LV)
EndIf
NextGUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
Case $button
$ind = _GUICtrlListView_GetSelectedIndices($hLV)
If $ind Then
$text = _GUICtrlListView_GetItemText($hLV, $ind)
$aInd = _ArraySearch($aLV_Item, $text, 0, 0, 0, 0, 1, 1)
If Not @error Then MsgBox(0, 'Pfad', 'Der Pfad zur INI lautet:' & @lf & $aLV_Item[$aInd][0])
EndIf
EndSwitch
WEnd -
1. Für die UDF bitte das Handle des Listview und nicht die ID verwenden.
2. Nach meiner Erfahrung ist die Verwendung von True/False als Parameter für Descending/Ascending fehlerhaft. Ich verwende dort die in der Hilfe angegebene Variante: Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)] -
Stimmt, ist wirklich nicht die Offenbarung

Probier mal folgendes:
[autoit]
Ändere deine Funktion _insLine() so ab:Func _insLine()
[/autoit][autoit][/autoit][autoit]
For $i = 27 To 3 Step -1
$string = StringReplace(GuiCtrlRead($Edit1), _multiLine($i) , @CRLF & @CRLF)
GuICtrlSetData($Edit1, $string)
Next
Switch @GUI_CtrlId
Case 5
$stringAdd = @crlf & "Satz 1" & @CRLF & @CRLF
Case 6
$stringAdd = @crlf & "Satz 2" & @CRLF & @CRLF
Case 7
$stringAdd = @crlf & "Satz 3" & @CRLF & @CRLF
EndSwitch
$string = StringReplace(GuiCtrlRead($Edit1), @crlf & @CRLF ,$stringAdd)
GuICtrlSetData($Edit1, $string)
EndFuncFunc _multiLine($count)
[/autoit]
Local $ret = ''
For $i = 1 To $count
$ret &= @CRLF
Next
Return $ret
EndFuncUngetestet, aber sollte laufen.
-
Erinnert mich stark an das, was ich mal vor 2 1/2 Jahren gemacht hab

https://autoit.de/index.php?page…D=7629#post7629 -
Falls du es aber zeitgleich in beiden Varianten benötigst, klone es doch:
[autoit]#Include <GDIPlus.au3>
[/autoit][autoit][/autoit][autoit]
Local $path = "C:\WINDOWS\system32\oobe\images\oemlogo.gif"
_GDIPlus_Startup()
Local $hImage = _GDIPlus_ImageLoadFromFile($path)
Local $tmpPath = @TempDir & '\oemlogo.gif'
_GDIPlus_ImageSaveToFile($hImage, $tmpPath)$gui = GUICreate("test")
[/autoit][autoit][/autoit][autoit]
$pic = GUICtrlCreatePic($tmpPath, 20, 20, 255, 40)
GUISetState()Do
[/autoit]
Sleep(50)
Until GUIGetMsg() = -3 -
Nicht wirklich, da mit ReDim auch kein dynamischer Array realieren kannst sondern einfach einem bestehenden eine neue Grenze vergibst.
Reine Definitionsfrage
Wenn ich zur Laufzeit ein Array in seiner Größe verändere ist das eine Dynamik. Ergo: Wir haben ein dynamisches Array.
Was du meinst, ist die faulheitsbasierte Arrayvariante, die sich selbst Platz im Speicher verschafft, wenn nötig.
Aber wir sind doch fleißig, darum gibt es in AutoIt so etwas nicht.
-
Du kannst auch meine Funktion _GetIntersection() dazu verwenden (basiert ebenfalls auf Dictionary Objekt). Findest du hier: https://autoit.de/index.php?page…60542#post60542
-
Erweiterung der Funktionalität:
- Bei Anzeige von Bildern braucht die Bildgröße nicht mehr übergeben werden, dies wird in der Funktion selbst ermittelt. (s. Post 1) -
Da sind noch weitere Aspekte zu beachten.
Wenn du ein wirklich großes Projekt verwaltest, wie z.B. ein Warenwirtschaftssystem, dann sollten all jene Fenster, die in der späteren Arbeit häufig frequentiert werden (Kunden, Artikel, Aufträge, Rechnungen, muß man abwägen) definitiv vorab erstellt werden, da schon mit dem Befüllen der Datenstrukturen genug Zeit drauf geht.
Eher selten genutzte Fenster (Inventur, Infofenster) kann man dann durchaus zur Laufzeit erstellen.
Und riesige Schleifen? - Egal ob im OnEventMode oder mit GUIGetMsg, je größer das Projekt desto mehr sollte der Übersicht halber jeder Vorgang in eine eigene Funktion ausgelagert werden. Dann läßt sich auch bei GUIGetMsg die Hauptschleife noch lesen. -
Im OnEvent-Mode läßt sich das noch etwas straffen. Allerdings ist nach wie vor das Problem des Hineinklickens.
[autoit]
Hier habe ich jetzt noch etwas verfeinert, sodass beim Ziehen des Sliders zwischen zwei Strichen je nach Position auf- oder abgerundet wird auf den nächsten/vorigen 10er Wert.#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit]
#include <GuiSlider.au3>
Opt('GUIOnEventMode', 1)$Form1 = GUICreate("Test", 275, 103, 193, 125)
[/autoit][autoit][/autoit][autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, '_end')
$Slider1 = GUICtrlCreateSlider(8, 8, 265, 49, BitOR($TBS_AUTOTICKS,$TBS_ENABLESELRANGE))
GUICtrlSetOnEvent(-1, '_slider')
GUISetState(@SW_SHOW)While 1
[/autoit][autoit][/autoit][autoit]
Sleep(100)
WEndFunc _end()
[/autoit][autoit][/autoit][autoit]
Exit
EndFuncFunc _slider()
[/autoit][autoit][/autoit][autoit]
GUICtrlSetData($Slider1, _GetRound(Round(GUICtrlRead($Slider1)/10,1))*10)
EndFuncFunc _GetRound($val)
[/autoit]
Local $d = Int($val/0.5)
If Mod($d, 2) Then $d += 1
Return $d/2
EndFunc -
Oder ist das wieder mal ein dummer Vista Fehler ?
Gut möglich, in XP klappt es wie vom Threadstarter gewünscht ==> wenn du den Slider zwischen 2 Striche ziehst, wandert er zum nächst höheren. (Ziehst du ihn genau auf einen Strich, bleibt er natürlich dort)
Edit:
Ich weiß jetzt, was du meinst ==> mit der Maus einfach in den Slider klicken, da bekommst du bei 10er Skalierung immer nur jeden zweiten Strich, das ist völlig normal. -
Na das geht aber schöner
[autoit]
#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit]
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
$Form1 = GUICreate("Test", 275, 103, 193, 125)
$Slider1 = GUICtrlCreateSlider(8, 8, 265, 49)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')While 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndFunc WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
Local $hWndFrom,$iCode, $tNMHDR, $hWndSlider, $val
$hWndSlider = $Slider1
If Not IsHWnd($hWndSlider) Then $hWndSlider = GUICtrlGetHandle($hWndSlider)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iCode = DllStructGetData($tNMHDR, "Code")
If $hWndFrom = $hWndSlider And $iCode = -16 Then
GUICtrlSetData($Slider1, Ceiling(GUICtrlRead($Slider1) / 10)*10)
EndIf
EndFunc