Beiträge von BugFix
-
-
[autoit]
$input = ''
[/autoit][autoit][/autoit][autoit]Func _BlauClick()
[/autoit]
$input = 'DuDa'
Filewrite("text.txt" , "hallo " & $input & " das hier ist ein text")
EndFuncWäre schon besser, wenn du Code reinstellst, damit man sieht, was es überhaupt werden soll.
-
Klar geht das.
[autoit]
Am Besten du verwendest OnEvent - Mode.Opt("GUIOnEventMode", 1)
[/autoit]
;...
GUICtrlCreateButton("Blau", 20, 20, 40, 25)
GUICtrlSetOnEvent(-1, "_BlauClick")
;..
;..
Func _BlauClick()
; Send("Blau") oder wie auch immer das realisiert sein soll
EndFuncEdit peethebee: OnEventMode auch angemacht

-
Scheint ein generelles Problem für einige Windows-interne Abfrage Fenster zu sein.
Siehe auch hier:
Dateidownload-Fenster vom IE - kein Klick funktioniertBis jetzt das einzig Funktionierende ist MouseClick().
-
Zitat
Original von Gun-Food
Welche Stolpersteine meinst du?Diese Aktion nennt sich Stolpersteine. Dort werden kleine Messingquader mit Namen von Opfern an diversen Orten in Fußwege eingelassen.
Nicht wirklich zum 'Stolpern', sondern zum gedanklichen stolpern.
http://de.wikipedia.org/wiki/Stolpersteine -
Hipp-Hipp-Hurra
- gelöst.Ist vielleicht nicht die elegantetse Methode, aber es funktioniert. Ich simuliere nur per Send(), wie ich es sonst per Hand getan hätte.
In der Funktion " Button1Click()" wird das erledigt.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <GuiListView.au3>
Opt("GUIOnEventMode", 1)
Dim $arItem[8]
$AForm1 = GUICreate("AForm1", 633, 454, 193, 115)
GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
$ListView1 = GUICtrlCreateListView("Spalte1|Spalte2|Spalte3", 76, 76, 429, 221, BitOR _
($LVS_REPORT,$LVS_SHOWSELALWAYS), BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES, _
$LVS_EX_FULLROWSELECT))
GUICtrlSendMsg(-1, 0x101E, 0, 80)
GUICtrlSendMsg(-1, 0x101E, 1, 80)
GUICtrlSendMsg(-1, 0x101E, 2, 80)
For $i = 0 To 7
$arItem[$i] = GUICtrlCreateListViewItem('Zeile ' & $i & '- 1' & '| - 2 | - 3', $ListView1)
Next
$Button1 = GUICtrlCreateButton("Move With Selection", 388, 340, 121, 29, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc AForm1Close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc Button1Click()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $arSelItems = _GUICtrlListViewGetSelectedIndices($ListView1, 1)
Local $skip = -1 ; wie weit und in welche Richtung verschieben
For $i = 1 To $arSelItems[0]
_MoveLVItem($arSelItems[$i], $skip, $ListView1)
Next
GUISetState(@SW_LOCK, $AForm1)
ControlClick($AForm1, '', $ListView1)
$idx = _GUICtrlListViewGetSelectedIndices($ListView1, 0)
Send("{UP " & $idx & "}") ; Auf Listenanfang
For $i = 1 To $arSelItems[0]
If $i = 1 Then
If $arSelItems[$i]+$skip > 0 Then
Send("{DOWN " & $arSelItems[$i]+$skip & "}")
EndIf
Else
Send("^{DOWN " & $arSelItems[$i]-$arSelItems[$i-1] & "}")
Send("^{SPACE}")
EndIf
Next
GUISetState(@SW_UNLOCK, $AForm1)
EndFunc;----------------------------------------------------------------------------------------------------------------------
[/autoit]
; Funktion _MoveLVItem($ItemIndex, $StepWidth, $hLV)
;
; Beschreibung verschiebt per Index angegebenen Eintrag eines ListViewCtrl um eine Anzahl Positionen
;
; Parameter $ItemIndex: Index der Zeile
; $StepWidth: Anzahl Zeilen um die der Eintrag verschoben wird (negative Zahl - aufwärts)
; $hLV: ListView ID
;
; Erfordernisse #include <GuiListView.au3>
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
#include <GuiListView.au3>
Func _MoveLVItem($ItemIndex, $StepWidth, $hLV)
If ($ItemIndex + $StepWidth) < 0 Or _
($ItemIndex + $StepWidth) > _GUICtrlListViewGetItemCount($hLV)-1 Then
SetError(1)
Return 0
EndIf
Local $txt2skip = _GUICtrlListViewGetItemText($hLV, $ItemIndex)
_GUICtrlListViewInsertItem($hLV, $ItemIndex + $StepWidth, $txt2skip)
_GUICtrlListViewDeleteItem($hLV, $ItemIndex+1)
Return -1
EndFunc ;==>_MoveLVItem -
Vielleicht auch eine Variante:
Leg doch einfach fest, wieviel Zeilen ein Block maximal haben darf. Und dann direkt die Zeilen aus deiner Datei lesen.
[autoit]$maxBlock = 20 ; oder wieviel auch immer
[/autoit]
$last = 0
Do
$endBlock = $last+$maxBlock
If $endBlock > $zeilenGesamt Then $endBlock = $zeilenGesamt
For $i = $last+1 to $endBlock
; verarbeiten
Next
$last = $endBlock
Until $i = $zeilenGesamt -
Finde ich nicht so passend, wenn der Beitrag im Skriptforum verwendet wird für H&Ü - deshalb abgetrennt.
Schreib doch mal deinen Code hier rein, nicht nur so einen Schnipsel. Im Moment, weiß ich nicht was du möchtest.
-
_MoveLVItem($ItemIndex, $StepWidth, $hLV)
Der per $ItemIndex angegebene Eintrag eines ListView wird um die in $StepWidth angegebene Anzahl (und Richtung, '-' nach oben) verschoben.
Edit:
Hab jetzt mal noch eine ergänzende Funktion für das Verschieben markierter Elemente hinzugefügt (die obige Funktion verwendet).An der Funktion hab ich noch einen Bug gefixt - Verschieben mit positiver Zahl war fehlerhaft.
_MoveAndMarkLVItem($hLV, $hGUI, $Skip)
Hier in einem Bsp.
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <GuiListView.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Dim $arItem[8]
$AForm1 = GUICreate("AForm1", 633, 454, 193, 115)
GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
$ListView1 = GUICtrlCreateListView("Spalte1|Spalte2|Spalte3", 76, 76, 429, 221, BitOR _
($LVS_REPORT,$LVS_SHOWSELALWAYS), BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES, _
$LVS_EX_FULLROWSELECT))
GUICtrlSendMsg(-1, 0x101E, 0, 80)
GUICtrlSendMsg(-1, 0x101E, 1, 80)
GUICtrlSendMsg(-1, 0x101E, 2, 80)
For $i = 0 To 7
$arItem[$i] = GUICtrlCreateListViewItem('Zeile ' & $i & '- 1' & '| - 2 | - 3', $ListView1)
Next
$Button1 = GUICtrlCreateButton("Move With Selection", 388, 340, 121, 29, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
GUICtrlCreateLabel('Anzahl Zeilen und Richtung ("-" ist Auf) ', 140, 345, 200)
$count = GUICtrlCreateInput('-1', 340, 343, 30)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc AForm1Close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc Button1Click()
[/autoit] [autoit][/autoit] [autoit]
_MoveAndMarkLVItem($ListView1, $AForm1, GUICtrlRead($count) )
Switch @error
Case 1
MsgBox(0, 'Fehler', 'GUI oder ListView nicht vorhanden')
Case 2
MsgBox(0, 'Fehler', 'Schrittgröße oder Richtung falsch')
EndSwitch
EndFunc;----------------------------------------------------------------------------------------------------------------------
[/autoit]
; Funktion _MoveAndMarkLVItem($hLV, $hGUI, $Skip)
;
; Beschreibung verschiebt alle markierten Einträge eines ListViewCtrl um eine Anzahl Positionen
;
; Parameter $hLV: ListView ID
; $hGUI: GUI ID
; $Skip: Anzahl Zeilen um die die Einträge verschoben werden (negative Zahl - aufwärts)
;
; Return Erfolg: -1
; Fehler: 0 SetError 1 - GUI oder ListView nicht vorhanden
; 2 - Skip verweist auf Bereich außerhalb des ListViewIndex
;
; Erfordernisse #include <GuiListView.au3>
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
Func _MoveAndMarkLVItem($hLV, $hGUI, $Skip)
If (Not WinExists($hGUI)) Or (ControlGetHandle($hGUI, '', $hLV) = '') Then
SetError(1)
Return 0
EndIf
Local $arSelItems = _GUICtrlListViewGetSelectedIndices($hLV, 1)
If $Skip < 0 Then
For $i = 1 To $arSelItems[0]
_MoveLVItem($arSelItems[$i], $Skip, $hLV)
If @error Then
SetError(2)
Return 0
EndIf
Next
Else
For $i = $arSelItems[0] To 1 Step -1
_MoveLVItem($arSelItems[$i], $Skip, $hLV)
If @error Then
SetError(2)
Return 0
EndIf
Next
EndIf
GUISetState(@SW_LOCK, $hGUI)
ControlClick($hGUI, '', $hLV)
$idx = _GUICtrlListViewGetSelectedIndices($hLV, 0)
Send("{UP " & $idx & "}") ; Auf Listenanfang
For $i = 1 To $arSelItems[0]
If $i = 1 Then
If $arSelItems[$i]+$Skip > 0 Then
Send("{DOWN " & $arSelItems[$i]+$Skip & "}")
EndIf
Else
Send("^{DOWN " & $arSelItems[$i]-$arSelItems[$i-1] & "}")
Send("^{SPACE}")
EndIf
Next
GUISetState(@SW_UNLOCK, $hGUI)
Return -1
EndFunc ;==>_MoveAndMarkLVItem
;----------------------------------------------------------------------------------------------------------------------
; Funktion _MoveLVItem($ItemIndex, $StepWidth, $hLV)
;
; Beschreibung verschiebt per Index angegebenen Eintrag eines ListViewCtrl um eine Anzahl Positionen
;
; Parameter $ItemIndex: Index der Zeile
; $StepWidth: Anzahl Zeilen um die der Eintrag verschoben wird (negative Zahl - aufwärts)
; $hLV: ListView ID
;
; Erfordernisse #include <GuiListView.au3>
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
#include <GuiListView.au3>
Func _MoveLVItem($ItemIndex, $StepWidth, $hLV)
If ($ItemIndex + $StepWidth) < 0 Or _
($ItemIndex + $StepWidth) > _GUICtrlListViewGetItemCount($hLV)-1 Then
SetError(1)
Return 0
EndIf
Local $txt2skip = _GUICtrlListViewGetItemText($hLV, $ItemIndex)
If $StepWidth < 0 Then
_GUICtrlListViewInsertItem($hLV, $ItemIndex + $StepWidth, $txt2skip)
_GUICtrlListViewDeleteItem($hLV, $ItemIndex+1)
Else
_GUICtrlListViewInsertItem($hLV, $ItemIndex + $StepWidth+1, $txt2skip)
_GUICtrlListViewDeleteItem($hLV, $ItemIndex)
EndIf
Return -1
EndFunc ;==>_MoveLVItemAch, das ist ja mein Post Nr: :kette: 1 0 0 0
-
So ohne Code schwierig.
Also:
- MultiseleKtion Element 3 und 6
- Element 3 soll Element 2 werden (wohin soll 2 ?)
- Element 6 soll Element 5 werden (wohin soll 5 ?)
- beide Elemente sollen an neuer Position markiert seinIst das korrekt?
EDIT:
Hab dir mal 'ne Lösung gemacht. Die 'verdrängten' Elemente wandern einen Platz hoch.
Eine Multiselektion per Skript habe ich nicht hinbekommen. Blau sowieso nicht, maximal läßt sich der zuletzt verschobene Eintrag grau markieren.Hab dafür eine neue Funktion erstellt ( _MoveLVItem), die sicher auch für andere interessant sein könnte. Stell ich mal noch in die Skripte.
Spoiler anzeigen
[autoit]#Include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Dim $arItem[8]
$AForm1 = GUICreate("AForm1", 633, 454, 193, 115)
GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
$ListView1 = GUICtrlCreateListView("Spalte1|Spalte2|Spalte3", 76, 76, 429, 221, BitOR _
($LVS_REPORT,$LVS_SHOWSELALWAYS), BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES, _
$LVS_EX_FULLROWSELECT))
GUICtrlSendMsg(-1, 0x101E, 0, 50)
GUICtrlSendMsg(-1, 0x101E, 1, 50)
GUICtrlSendMsg(-1, 0x101E, 2, 50)
For $i = 0 To 7
$arItem[$i] = GUICtrlCreateListViewItem('Zeile ' & $i & '- 1' & '| - 2 | - 3', $ListView1)
Next
$Button1 = GUICtrlCreateButton("Move With Selection", 388, 340, 121, 29, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc AForm1Close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc Button1Click()
[/autoit] [autoit][/autoit] [autoit]
Local $arSelItems = _GUICtrlListViewGetSelectedIndices($ListView1, 1)
Local $skip = -1 ; wie weit und in welche Richtung verschieben
For $i = 1 To $arSelItems[0]
_MoveLVItem($arSelItems[$i], $skip, $ListView1)
;~ _GUICtrlListViewSetItemSelState($ListView1, $arSelItems[$i]+$skip) ; markiert nur letzten Wert
Next
EndFuncFunc _MoveLVItem($ItemIndex, $StepWidth, $hLV)
[/autoit]
If ($ItemIndex + $StepWidth) < 0 Or _
($ItemIndex + $StepWidth) > _GUICtrlListViewGetItemCount($hLV)-1 Then
SetError(1)
Return 0
EndIf
Local $txt2skip = _GUICtrlListViewGetItemText($hLV, $ItemIndex)
Local $txtFromTarget = _GUICtrlListViewGetItemText($hLV, $ItemIndex + $StepWidth)
_GUICtrlListViewInsertItem($hLV, $ItemIndex + $StepWidth, $txt2skip)
_GUICtrlListViewDeleteItem($hLV, $ItemIndex+1)
Return -1
EndFunc -
Nein, deine Hotkeys sollen so aussehen:
[autoit]HotKeySet("p1", "p1") ; Tastenfolge <P> + <1> ruft p1() auf
[/autoit] -
Als erstes: Schau dir mal die Funktion IniReadSection() an. Würde dir etliches an Code ersparen

Ich würde dir eigentlich davon abraten Hotkeys für eine einzelne Taste festzulegen. z.B. wegen genau der Probleme, die du jetzt hast - die ursprüngliche Tastenfunktion soll ja nicht verloren gehen.
Vielleicht besser für Programmaufrufe: "p" + "1".... usw. -
Ich habs ja mit IE6 getestet und geht auch nicht.
ControlFocus vorher bringt auch nichts.
Geht wirklich nur MouseClick - ziemlich blöd. -
Mir auch nicht klar, was du möchtest.
Leerzeichen werden doch gelesen und sind in der Ausgabe enthalten.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiEdit.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
$AForm1 = GUICreate("AForm1", 633, 454, 193, 115)
GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
$Edit1 = GUICtrlCreateEdit("", 115, 76, 380, 137)
GUICtrlSetData(-1, _
"Befehl1 -Parameter1 -Parameter2 -Parameter3" & @CRLF & _
"Befehl2 -Parameter1 -Parameter2 -Parameter3" & @CRLF & _
"Befehl3 -Parameter1 -Parameter2 -Parameter3" & @CRLF & _
"Befehl4 -Parameter1 -Parameter2 -Parameter3" & @CRLF & _
"Befehl5 -Parameter1 -Parameter2 -Parameter3")
$Button1 = GUICtrlCreateButton("Button1", 356, 244, 137, 29, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
$Input1 = GUICtrlCreateInput("", 115, 316, 380, 21)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc AForm1Close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc Button1Click()
[/autoit]
For $i = 1 To _GUICtrlEditGetLineCount($Edit1)
$getline = _GUICtrlEditGetLine($Edit1, $i)
GUICtrlSetData($Input1, $getline)
Sleep(2000)
Next
EndFunc -
Zitat
Papst Array der Erste
LOL
Meine Insignien sind:
ROWS
COLUMNS und
INDEXIhre Dreifaltigkeit sei gepriesen.

-
Mein Vorschlag:
[autoit]If Not _SerienNRCheckFunc() Then
[/autoit][autoit][/autoit][autoit]
If InputBox("Passwort", "Bitte Passwort eingeben: ", "", "*") <> $passwort Then
MsgBox(0, '', "Keine Berechtigung - Programm wird beendet")
Exit
EndIf
EndIf
; Hier beginnt das restliche ProgrammFunc _SerienNRCheckFunc()
[/autoit]
; Return "True" wenn gefunden
EndFunc -
Zitat
Original von Tweaky
mache mal einen neuen Tread auf für das Speichern-Problem.
Vielleicht hat da ja jemand einen Tipp.*bg* - was ein fehlendes "h" doch ausmacht, so wird aus einem Diskussionsstrang eine Lauffläche.

-
Hi, hab grad auch mal probiert.
[autoit]
Und wie es aussieht, gibt es wirklich keinen Weg das Fenster "Dateidownload" im MS-IE per AutoIt Befehl zu steuern.
Alle Aktionen um den "Speichern" - Button zu betätigen:ControlClick("Dateidownload", "", 4424)
[/autoit]
ControlClick("Dateidownload", "", "&Speichern")
ControlClick("Dateidownload", "", "[CLASS:Button; INSTANCE:2]")
Send("!s")führen nur dazu, dass der Button markiert wird.
[autoit]
Aber auch einSend("{ENTER}")
[/autoit]wenn der Button markiert ist, bleibt wirkungslos.
Das gilt übrigens für alle Button in diesem Fenster.
EDIT: Achja, bevor hier der Tipp kommt mit _INetGet() zu laden: Das ist nicht möglich, weil zum Erreichen der Links eingelogt wird und beim Verlassen des Object Focus die Links nicht mehr erreichbar sind.
Naja, eines geht doch: MouseClick()
Aber wer macht das schon gern... -
Wenn das proggi auf deinem PC schon ist, wird es all deine sicherungsmaßnahmen auch wieder deaktivieren.
Dagegen hilft vorerst nur eingeschränkter Modus. (grauenhaft, weil damit Windows fast arbeitsunfähig ist) -
Also das hier müssten doch die Links auf die Rechnungen sein:
Code<tr bgcolor="#FFF3E5"> <td width="88" valign="middle" class="formtable">xx.xx.xxxx</td> <td width="88" valign="middle" class="formtable">x.xx €</td> <td width="88" valign="middle" class="formtable"><a href="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pdf" target="_blank"><img src="img_fm/ico_pdf.gif" border="0" width="16" height="16"></a> <a href="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pdf.pdf" target="_blank">Download</a></td> <td width="88" valign="middle" class="formtable"><a href="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.=CSV" target="_blank"><img src="img_fm/ico_csv.gif" border="0" width="16" height="16"></a> <a href="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pdf=CSV" target="_blank">Download</a></td> <td width="88" valign="middle" class="formtable"><a href="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..pdf" target="_blank"><img src="img_fm/ico_pdf.gif" border="0" width="16" height="16"></a> <a href="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pdf.pdf" target="_blank">Download</a></td> <td width="88" valign="middle" class="formtable"><a href="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.=CSV" target="_blank"><img src="img_fm/ico_csv.gif" border="0" width="16" height="16"></a> <a href="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pdf=CSV" target="_blank">Download</a></td> </tr>
[autoit]
All das steht in einer Tabelle. Da es die erste auf der Seite ist, hat sie den Index 0. (Falls doch nicht, probier mit 1)
Den Inhalt der Tabelle schreibst du dir erst mal in ein Array.$oTable = _IETableGetCollection ($oIE, 0)
[/autoit]
$aTableData = _IETableWriteToArray ($oTable)Dann kannst du schauen, welche Arrayelemente die Links enthalten. z.B.: In ein anderes Array schreiben, wenn im Element 'Download' enthalten. Mußt du sehen, wie die Tabelle im Array wiedergegeben wird.