Mit TimerInit/-Diff funktioniert es auch nicht. Es geht nur mit der Timer-UDF ("_Timer_SetTimer"), weil diese unabhängig von der GUI-Abfrage aufgerufen wird.
Beiträge von Oscar
-
-
Zum Thema "eindeutschen" habe ich auch noch ein Beispiel:
Aus "Coffee to go" wird oft ein "Kaffee to go" (Autsch), aber das Schlimmste war dann der "Kaffee togo" (das stand wirklich so auf dem Schild).
Ich frage mich allerdings warum nicht einfach "Kaffee zum mitnehmen" verwendet wird. Ist das nicht "cool" genug?
-
Die Timer-UDF verwenden statt AdlibRegister:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <Timers.au3>
#include <WindowsConstants.au3>Global $hGui = GUICreate("My GUI edit")
[/autoit] [autoit][/autoit] [autoit]
Global $cEdit = GUICtrlCreateEdit("", 20, 20, 200, 202, $ES_READONLY + $WS_VSCROLL)
GUISetState()_GUICtrlEdit_AppendText($cEdit, @SEC)
[/autoit] [autoit][/autoit] [autoit]_Timer_SetTimer($hGui, 200, "_Test")
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_Timer_KillAllTimers($hGui)
Exit
EndSwitch
WEndFunc _Test($hWnd, $Msg, $iIDTimer, $dwTime)
[/autoit]
#forceref $hWnd, $Msg, $iIDTimer, $dwTime
ConsoleWrite(@SEC & @CRLF)
_GUICtrlEdit_AppendText($cEdit, @CRLF & @SEC)
EndFunc ;==>_Test -
Auch von mir die allerherzlichsten Glückwünsche für euch beide.
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Ich brauchte gerade eine Funktion, die aus einem ListView eine HTML-Tabelle erstellt, also habe ich mir eine Funktion geschrieben.
Vielleicht kann ja noch jemand sowas gebrauchen (Beispiel ist dabei):Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
; Beispiel für die Funktion "_ListView2HTMLTable"#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiListView.au3>Global $sTestFilename = @TempDir & '\ListView2HTML.html', $sHTML, $hFile
[/autoit] [autoit][/autoit] [autoit]
$hGui = GUICreate('ListView2HTML', 600, 300)
$idListView2HTML = GUICtrlCreateButton('ListView2HTML', 10, 10, 140, 25)
$idListView = GUICtrlCreateListView('Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag', 10, 50, 580, 240)
$hListView = GUICtrlGetHandle($idListView)
For $i = 0 To 9
$sItem = ''
For $j = 0 To 6
$sItem &= Random(10, 99, 1) & '|'
Next
GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $idListView)
Next
_GUICtrlListView_JustifyColumn($hListView, 3, 2) ; Spalten 3 und 4 zentriert
_GUICtrlListView_JustifyColumn($hListView, 4, 2)
_GUICtrlListView_JustifyColumn($hListView, 5, 1) ; Spalten 5 und 6 rechtsbündig
_GUICtrlListView_JustifyColumn($hListView, 6, 1)
GUISetState()
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $idListView2HTML
GUICtrlSetState($idListView2HTML, $GUI_DISABLE)
$sHTML = _ListView2HTMLTable($hListView, 'Test')
If Not @error Then
$hFile = FileOpen($sTestFilename, 2)
If $hFile <> -1 Then
FileWrite($hFile, $sHTML)
FileClose($hFile)
ShellExecute($sTestFilename)
Sleep(5000)
FileDelete($sTestFilename)
EndIf
EndIf
GUICtrlSetState($idListView2HTML, $GUI_ENABLE)
EndSwitch
WEnd; #FUNCTION# ====================================================================================================================
[/autoit]
; Name...........: _ListView2HTMLTable
; Description ...: Gibt ein ListView als HTML-Tabelle zurück.
; Syntax.........: _ListView2HTMLTable($hListView, $sTitle = 'ListView2HTMLTable')
; Parameters ....: $hListView - das Handle des ListViews
; $sTitle - Title für die HTML-Seite
; Return values .: Success = die HTML-Seite als String
; Failure
; 1 = Handle für das ListView ist fehlerhaft
; 2 = das ListView besitzt keine Einträge
; Author ........: Oscar (http://www.autoit.de)
; ===============================================================================================================================
Func _ListView2HTMLTable($hListView, $sTitle = 'ListView2HTMLTable')
Local $sFontFamily = 'Verdana', $sFontSize = '10pt' ; Schriftart und -größe für die Tabelle
Local $sBorder = '4' ; Randstärke
Local $sCellspacing = '2' ; Zellenabstand
Local $sCellpadding = '8' ; Zelleninnenabstand
Local $sHeaderBGColor = '#1750A7', $sHeaderColor = '#FFFFFF' ; Hintergrund- und Textfarbe für die Kopfzeile der Tabelle
Local $sBGColor1 = '#FFFFE0', $sBGColor2 = '#E8FFE8' ; Hintergrundfarben für gerade/ungerade Zeilen der Tabelle
If Not IsHWnd($hListView) Then Return SetError(1, 0, 0)
Local $iItemCount = _GUICtrlListView_GetItemCount($hListView)
If $iItemCount < 1 Then Return SetError(2, 0, 0)
Local $iColumnCount = _GUICtrlListView_GetColumnCount($hListView)
Local $aColumns, $aItem, $aAlign[3] = ['left', 'right', 'center']
Local $sHTML = StringFormat('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n<html>\n\t<head>\n\t\t<title>%s</title>\n\t</head>\n\t<body>\n', $sTitle)
$sHTML &= StringFormat('\t\t<table style="font-family:%s; font-size:%s; border-color:#1750A7; border-style:ridge" border="%s" cellspacing="%s" cellpadding="%s">\n', $sFontFamily, $sFontSize, $sBorder, $sCellspacing, $sCellpadding)
$sHTML &= StringFormat('\t\t\t<tr style="background-color: %s; color: %s">\n', $sHeaderBGColor, $sHeaderColor)
For $i = 0 To $iColumnCount - 1
$aColumns = _GUICtrlListView_GetColumn($hListView, $i)
$sHTML &= StringFormat('\t\t\t\t<th width="%s" align="center">%s</th>\n', $aColumns[4], $aColumns[5])
Next
$sHTML &= StringFormat('\t\t\t</tr>\n')
For $i = 0 To $iItemCount - 1
If Mod($i, 2) Then
$sHTML &= StringFormat('\t\t\t<tr style="background-color: %s">\n', $sBGColor1)
Else
$sHTML &= StringFormat('\t\t\t<tr style="background-color: %s">\n', $sBGColor2)
EndIf
$aItem = _GUICtrlListView_GetItemTextArray($hListView, $i)
For $j = 0 To $iColumnCount - 1
$aColumns = _GUICtrlListView_GetColumn($hListView, $j)
$sHTML &= StringFormat('\t\t\t\t<td align="%s">%s</td>\n', $aAlign[$aColumns[0]], $aItem[$j + 1])
Next
$sHTML &= StringFormat('\t\t\t</tr>\n')
Next
$sHTML &= StringFormat('\t\t</table>\n\t</body>\n</html>\n')
Return SetError(0, 0, $sHTML)
EndFunc -
Sowas gab's schon. Progandy hat ein schönes Beispiel erstellt: https://autoit.de/index.php?page…51440#post51440
-
Stimmt! Das scheint ein Bug zu sein.
-
Bei mir wird das korrekt zurückgegeben:
[autoit]
[/autoit]
#include <GUIConstantsEx.au3>
$hGui = GUICreate('Test', 600, 400)
$idButton = GUICtrlCreateButton('test', 10, 10, 100, 20)
GUISetState()
MsgBox(0, 'Test', BitAND(GUICtrlGetState($idButton), $GUI_ENABLE) = $GUI_ENABLE) -
AspirinJunkie hat Dir doch schon gezeigt, woran (fehlendes FileClose) der steigende Speicherverbrauch liegt.
[autoit]
Du musst in der Funktion "_GetDriveInkOnDesktop()" nach dem WEnd einFileClose($h_search)
[/autoit]
einfügen, sonst wird das Handle nicht geschlossen. -
[verschoben nach H&U]
-
Das Problem ist die automatische Typverwaltung von Variablen bei AutoIt. Wenn der Variablen nicht direkt True/False zugewiesen wird (sondern Null/Eins), dann wird das als String interpretiert, was bei einer If-Abfrage immer zu True führt.
[autoit]
Umgehen kann man das mit Execute oder Number. Siehe hier:
[/autoit][autoit][/autoit][autoit]
$var = '0'
$var = Execute($var)
If $var Then
ConsoleWrite('Execute = $GUI_CHECKED' & @CR)
Else
ConsoleWrite('Execute = $GUI_UNCHECKED' & @CR)
EndIf$var = '0'
[/autoit]
$var = Number($var)
If $var Then
ConsoleWrite('Number = $GUI_CHECKED' & @CR)
Else
ConsoleWrite('Number = $GUI_UNCHECKED' & @CR)
EndIf -
[verschoben nach Hilfe & Unterstützung]
-
Ich würde mir einfach ein eigenes Txt-Format ausdenken. Spalten des Arrays mit einem Trenner zusammenfügen und zeilenweise in eine Datei schreiben.
Das ist auch sehr schnell. Habe das schon mit diversen Listview-Datenbanken so gemacht. -
Ilse, bitte vermeide Doppelposts! Wenn Du noch etwas hinzufügen willst, bearbeite Deinen Beitrag!
Natürlich verursacht das Skript einen Fehler. Das Array $a_FontData ist ja gar nicht definiert.
Das ist als Beispielskript völlig ungeeignet. Bitte poste das komplette Skript! -
Das darf auch nicht in der Funktion stehen. Du musst ggf. im Hauptprogramm auf @error prüfen und dann _IEQuit ausführen.
-
Wieso soll das nicht funktionieren?
Klappt bei mir einwandfrei:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <IE.au3>
_IEErrorHandlerRegister("MyErrFunc")
_IELoadWaitTimeout(100)
$oIE = _IECreate('http://192.168.4.8/4534', 0,1)
sleep(5000)
_IEQuit($oIE)
MsgBox(0, '', 'Beenden')Func MyErrFunc()
[/autoit]
; Important: the error object variable MUST be named $oIEErrorHandler
Local $ErrorScriptline = $oIEErrorHandler.scriptline
Local $ErrorNumber = $oIEErrorHandler.number
Local $ErrorNumberHex = Hex($oIEErrorHandler.number,
Local $ErrorDescription = StringStripWS($oIEErrorHandler.description, 2)
Local $ErrorWinDescription = StringStripWS($oIEErrorHandler.WinDescription, 2)
Local $ErrorSource = $oIEErrorHandler.Source
Local $ErrorHelpFile = $oIEErrorHandler.HelpFile
Local $ErrorHelpContext = $oIEErrorHandler.HelpContext
Local $ErrorLastDllError = $oIEErrorHandler.LastDllError
Local $ErrorOutput = ""
$ErrorOutput &= "--> COM Error Encountered in " & @ScriptName & @CR
$ErrorOutput &= "----> $ErrorScriptline = " & $ErrorScriptline & @CR
$ErrorOutput &= "----> $ErrorNumberHex = " & $ErrorNumberHex & @CR
$ErrorOutput &= "----> $ErrorNumber = " & $ErrorNumber & @CR
$ErrorOutput &= "----> $ErrorWinDescription = " & $ErrorWinDescription & @CR
$ErrorOutput &= "----> $ErrorDescription = " & $ErrorDescription & @CR
$ErrorOutput &= "----> $ErrorSource = " & $ErrorSource & @CR
$ErrorOutput &= "----> $ErrorHelpFile = " & $ErrorHelpFile & @CR
$ErrorOutput &= "----> $ErrorHelpContext = " & $ErrorHelpContext & @CR
$ErrorOutput &= "----> $ErrorLastDllError = " & $ErrorLastDllError
MsgBox(0, "COM Error", $ErrorOutput)
SetError(1)
Return
EndFunc ;==>MyErrFunc -
Dafür gibt es _IEErrorHandlerRegister():
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <IE.au3>
_IEErrorHandlerRegister("MyErrFunc")
_IELoadWaitTimeout(100)
$oIE = _IECreate('http://192.168.4.8/4534', 0,1)
sleep(10000)Func MyErrFunc()
[/autoit]
; Important: the error object variable MUST be named $oIEErrorHandler
Local $ErrorScriptline = $oIEErrorHandler.scriptline
Local $ErrorNumber = $oIEErrorHandler.number
Local $ErrorNumberHex = Hex($oIEErrorHandler.number,
Local $ErrorDescription = StringStripWS($oIEErrorHandler.description, 2)
Local $ErrorWinDescription = StringStripWS($oIEErrorHandler.WinDescription, 2)
Local $ErrorSource = $oIEErrorHandler.Source
Local $ErrorHelpFile = $oIEErrorHandler.HelpFile
Local $ErrorHelpContext = $oIEErrorHandler.HelpContext
Local $ErrorLastDllError = $oIEErrorHandler.LastDllError
Local $ErrorOutput = ""
$ErrorOutput &= "--> COM Error Encountered in " & @ScriptName & @CR
$ErrorOutput &= "----> $ErrorScriptline = " & $ErrorScriptline & @CR
$ErrorOutput &= "----> $ErrorNumberHex = " & $ErrorNumberHex & @CR
$ErrorOutput &= "----> $ErrorNumber = " & $ErrorNumber & @CR
$ErrorOutput &= "----> $ErrorWinDescription = " & $ErrorWinDescription & @CR
$ErrorOutput &= "----> $ErrorDescription = " & $ErrorDescription & @CR
$ErrorOutput &= "----> $ErrorSource = " & $ErrorSource & @CR
$ErrorOutput &= "----> $ErrorHelpFile = " & $ErrorHelpFile & @CR
$ErrorOutput &= "----> $ErrorHelpContext = " & $ErrorHelpContext & @CR
$ErrorOutput &= "----> $ErrorLastDllError = " & $ErrorLastDllError
MsgBox(0, "COM Error", $ErrorOutput)
SetError(1)
Return
EndFunc ;==>MyErrFunc -
Dann mal mehr Informationen:
- Welches Programm willst Du fernsteuern?
- An welcher Stelle hängt Dein Skript?
- Dein bisheriges Skript? -
Vielleicht mit ControlFocus erst das Eingabefeld auswählen, dann "Enter" senden?!

-
Oder so:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Global $aNewText[5] = [4, "Neuer Text 1", "Neuer Text 2", "Neuer Text 3", "Neuer Text 4"], $aRow[5]$hFile = FileOpen(@ScriptDir & "\ilse.txt", 0) ; Datei zum lesen öffnen
[/autoit] [autoit][/autoit] [autoit]
If $hFile = -1 Then Exit MsgBox(0, "Fehler", "Konnte Datei nicht zum lesen öffnen.")
$aRow[0] = FileReadLine($hFile)
For $i = 1 To 4
$aRow[$i] = FileReadLine($hFile)
$aRow[$i] = StringRegExpReplace($aRow[$i], ".+?(\|.+)", $aNewText[$i] & "$1", 1)
Next
FileClose($hFile)$hFile = FileOpen(@ScriptDir & "\ilse.txt", 2) ; Datei zum schreiben öffnen
[/autoit]
If $hFile = -1 Then Exit MsgBox(0, "Fehler", "Konnte Datei nicht zum schreiben öffnen.")
FileWriteLine($hFile, $aRow[0])
For $i = 1 To 4
FileWriteLine($hFile, $aRow[$i])
Next
FileClose($hFile)