Versuchs mal mit Zeitdifferenz, statt Sleep:
[autoit]$start = TimerInit()
While 1
If TimerDiff($start) >= 5000 Then
Send('2')
$start = TimerInit()
EndIf
Sleep(100)
; anderer Code in der Schleife
WEnd
Versuchs mal mit Zeitdifferenz, statt Sleep:
[autoit]$start = TimerInit()
While 1
If TimerDiff($start) >= 5000 Then
Send('2')
$start = TimerInit()
EndIf
Sleep(100)
; anderer Code in der Schleife
WEnd
zu 1.
Such mal nach der Excel-UDF. Da kannst du direkt von AutoIt Exceldokumente erstellen, bearbeiten...
zu 2.
Ist deine Tabelle ein ListView?
Da gibt es extra einen Style, der die abwechselnde Hintergrundfarbe ermöglicht. ( GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE) )
Hier mal ein Bsp.:
[autoit]#include <GuiConstants.au3>
#include <GuiListView.au3>
GuiCreate("Sample List View", 140, 100, -1, -1, $WS_OVERLAPPEDWINDOW)
$listView = GuiCtrlCreateListView("|Sample|ListView", 10, 10, 120, 80, -1, $LVS_EX_HEADERDRAGDROP)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE) ; legt fest, dass Hintergrundfarbe wechselt
GUICtrlSetBkColor(-1, 0xE6E6FA) ; Hintergrundfarbe 1
GuiCtrlCreateListViewItem("|A|One", $listView)
GUICtrlSetBkColor(-1, 0xcccccc) ; Hintergrundfarbe 2
GuiCtrlCreateListViewItem("|B|Two", $listView)
GUICtrlSetBkColor(-1, 0xcccccc) ; Hintergrundfarbe 2
GuiCtrlCreateListViewItem("|C|Three", $listView)
GUICtrlSetBkColor(-1, 0xcccccc) ; Hintergrundfarbe 2
GuiSetState()
_GUICtrlListView_SetColumnWidth($listView, 1, $LVSCW_AUTOSIZE_USEHEADER)
While GuiGetMsg() <> $GUI_EVENT_CLOSE
WEnd
Du kannst dir den Klassennamen ausgeben lassen, vielleicht reicht dir das schon.
Hier mal ein Beispiel, Ausgabe in die Console:
#Include <WinAPI.au3>
#include <guiconstants.au3>
$gui = GUICreate('')
Global $aCtrl[6] = [ _
GUICtrlCreateButton('', 20, 20), _
GUICtrlCreateCheckbox('', 20, 50), _
GUICtrlCreateRadio('', 40, 50), _
GUICtrlCreateEdit('', 100, 20), _
GUICtrlCreateInput('', 20, 80), _
GUICtrlCreateCombo('', 20, 110)]
GUISetState()
Do
For $i = 0 To UBound($aCtrl) -1
ConsoleWrite(_WinAPI_GetClassName($aCtrl[$i]) & @CRLF)
Next
Exit
Until 1
Ausgabe:
Das geht grundsätzlich auch mit WinGetClassList(), da hast du aber den Nachteil, dass keine Zuordnung zu den Controls besteht. Deshalb ist Einzelprüfung wohl günstiger.
Alina
Hi, es ist mit der Word.au3 allein nicht zu lösen. Wie TrueMue schon richtig erwähnt hat, muß man hierzu auf das Word-Objektmodell zurückgreifen.
Es gibt darin aber eine Vielzahl von Objekten und Methoden, deren Anwendung teilweise ziemlich tricky ist.
Für deinen Fall benötigt man Select, Find, Replace und Execute. Wenn mich heut noch die Arbeitswut packen sollte, versuche ich mal das in eine UDF zu bringen. ![]()
Dann nimm doch ein 2D-Array und speichere in D1 das Handle und in D2 einen Verweis auf den Typ.
Hi,
mit folgendem Code läßt sich die aktuelle SciTE-Version im Web auslesen.
Vielleicht kann dies ja mit im Portal integriert werden.
#include <ie.au3>
$url = 'http://www.autoitscript.com/autoit3/scite/'
$oIE = _IECreate($url, 0, 0)
$oFrame = _IEFrameGetCollection($oIE, 0)
$txt = _IEPropertyGet($oFrame, "innertext")
$aVer = StringRegExp($txt, '(?<=with SciTE )\d\.\d{2}', 1)
$aDate = StringRegExp($txt, '(?<=History \().+(?=\))', 1)
MsgBox(0, 'SciTE Version', 'Aktuelle Version: ' & $aVer[0] & @LF & 'vom: ' & $aDate[0])
_IEQuit($oIE)
Hi,
so kannst du Text aus dem Dokument lesen (hier Ausgabe in Console):
#include <word.au3>
$path = 'C:\Dokumente und Einstellungen\...\Test.doc'
$oWordApp = _WordCreate ("", 0, 0)
$oDoc = _WordDocOpen ($oWordApp, $path)
ConsoleWrite($oDoc.Range.Text & @CRLF)
_WordDocClose ($oDoc)
_WordQuit ($oWordApp)
So gehts:
[autoit]#include <array.au3>
Global $string = _FileListToArray("G:\12 2007\", "*.txt")
Global $aTmp[1]
For $i = 1 To UBound($string) -1
_ArrayAdd($aTmp, StringTrimLeft(StringTrimRight($string[$i], 4), 2))
Next
$indx = _ArrayMaxIndex($aTmp, 1, 1)
MsgBox(0, 'Höchster Wert', $string[$indx])
Die Funktion alleine nützt dir nichts. Dazu brauchst du auch die 'WinAPI.au3'.
Schau dir mal: ControlSend() und ControlCommand() an.
Ich hab mal aus der Hilfedatei ein kleines Bsp. gebastelt mit Rechtsklick zum Ändern des Sub-Items.
Für alle, die es mal brauchen können.
Die Zeile: $hWnd = ControlGetHandle('','',$hListView) läßt sich nicht umgehen. Für die neuen Funktionen wird fast immer das Handle benötigt.
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
GUICreate("(Internal) ListView Get Column", 400, 300)
$hListView = GUICtrlCreateListView("col1|col2|col3", 2, 2, 394, 268)
_GUICtrlListView_SetExtendedListViewStyle ($hListView, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES))
_GUICtrlListView_SetColumnWidth($hListView, 0, 100)
GUISetState()
GUICtrlCreateListViewItem("index 0|data1|more1", $hListView)
GUICtrlCreateListViewItem("index 1|data2|more2", $hListView)
GUICtrlCreateListViewItem("index 2|data3|more3", $hListView)
GUICtrlCreateListViewItem("index 3|data4|more4", $hListView)
GUICtrlCreateListViewItem("index 4|data5|more5", $hListView)
Do
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_SECONDARYUP
$hWnd = ControlGetHandle('','',$hListView)
$indx = _GUICtrlListView_SubItemHitTest($hWnd)
$newText = InputBox('Wert ändern', 'Zeile: ' & $indx[0]+1 & '/Spalte: ' & $indx[1]+1, _GUICtrlListView_GetItemText($hWnd, $indx[0], $indx[1]))
If $newText <> '' Then _GUICtrlListView_SetItemText($hWnd, $indx[0], $newText, $indx[1])
EndSwitch
Until $msg = $GUI_EVENT_CLOSE
GUIDelete()
_GUICtrlListView_SubItemHitTest($ListView)
[/autoit]
Kannste alt wer'n, wie 'ne Kuh - lernste immer noch dazu ![]()
Bei der Vielzahl von Func's findet man sich kaum noch durch :wacko:
Achso, du möchtest ein Subitem per Klick auswählen und bearbeiten - das ist meines Wissens nicht möglich.
Du kannst dir nur den Index (oder auch Text) eines gesamten Items (inkl. Subitems) zurückgeben lassen. z.B. Auslösen mit re. Maustaste.
Für das Subitem selber mußt du den Spaltenindex selber angeben.
$msg = GUIGetMsg()
Case $msg = $GUI_EVENT_SECONDARYUP
$indxRow = _GUICtrlListView_GetSelectedIndices($hListView, True)
$SpaltenText = _GUICtrlListView_GetItemText($hListView, $indxRow[1], 'SpaltenIndex') ; 'SpaltenIndex' mußt du vorgeben
Hi,
versuchs mal so:
#include <File.au3>
Global $Quelle = 'Dateipfad'
Global $aFile, $n = 0, $FileOut = 'Datei1_', $sfx = '.txt'
_FileReadToArray($Quelle, $aFile)
For $i = 1 To UBound($aFile) -1
If Mod($i, 100) = 1 Then $n += 1
FileWriteLine($FileOut & $n & $sfx, $aFile[$i])
Next
Oder so:
[autoit]$fh = FileOpen($Datei, 0)
$str = FileRead($fh)
$str = StringRegExpReplace($str, '(?<=<entry name="W">)\d{1,4}(?=</entry>)', 1920)
FileClose($fh)
FileDelete($Datei)
$fh = FileOpen($Datei, 1)
FileWrite($fh, $str)
FileClose($fh)
Büddeschön ![]()
Mach es doch komplett mit AutoIt, dann ist es sicher einfacher.
Ungetestet:
$str = "********013000.000000-420"
$num = 1
$strComputer = "."
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$objNewJob = $objWMIService.Get("Win32_ScheduledJob")
$errJobCreated = $objNewJob.Create("C:\BKU\Update\update.exe", $str, True , $num, , , 'JobID')
MsgBox(0, '', $errJobCreated)
Du hast das Event für den Button falsch gesetzt.
Du hast:
GUISetOnEvent($button, "_button")
[/autoit]
Richtig:
GUICtrlSetOnEvent($button, "_button")
[/autoit]Na Punkt 1, 2 und 3 meiner Antwort.
Du solltest zuerst alle Elemente der GUI deklarieren und erst dann anzeigen lassen.
Außerdem hast du keine Endlos-Schleife drin. Die brauchst du aber, sonst flackert dein Monitor nur kurz und dann ist das Programm beendet.
Vergleiche doch meinen Code mit deinem, dann siehst du den Unterschied.
Naja, ein paar grundlegende Fehler:
1. Alle Elemente der GUI deklarieren
und erst dann
2. GUI anzeigen
3. wird eine Endlosschleife benötigt
4. Ist der Button total überflüssig
#include <guiconstants.au3>
Opt("GUIOnEventMode", 1)
GUICreate ("blubb", 400, 120) ; GUI NAME
GUISetOnEvent($GUI_EVENT_CLOSE, '_ende')
$haha1 = GUICtrlCreateRadio ("1", 70, 25) ; Wahlfelder
GUICtrlSetOnEvent(-1, '_go1')
$haha2 = GUICtrlCreateRadio ("2", 150, 25)
GUICtrlSetOnEvent(-1, '_go2')
$haha3 = GUICtrlCreateRadio ("3", 230, 25)
GUICtrlSetOnEvent(-1, '_go3')
$haha4 = GUICtrlCreateRadio ("4", 310, 25)
GUICtrlSetOnEvent(-1, '_go4')
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(100)
WEnd
Func _ende()
Exit
EndFunc
func _go1()
run ("C:/Programme/Mozilla Firefox/firefox.exe")
exit
endfunc
func _go2()
run ("C:/Programme/Mozilla Firefox/firefox.exe")
exit
endfunc
func _go3()
run ("C:/Programme/Mozilla Firefox/firefox.exe")
exit
endfunc
func _go4()
run ("C:/Programme/Mozilla Firefox/firefox.exe")
exit
endfunc