[OT on]
Es gibt auch User (wie mich), die gar nicht die Portal-Ansicht benutzen, sondern die Foren-Ansicht. Dort werden einem alle neuen Nachrichten angezeigt. Man kann also gar nichts verpassen (wenn man wirklich alles liest).
Somit ist dann auch das pushen nicht nötig. ![]()
[OT off]
Beiträge von Oscar
-
-
Mir fällt aber auch kein Grund ein die ControlID eines LV-Items zu ermitteln ein, da alle mir bekannten Funktionen zu LV-Items mit dem Index arbeiten,
Mir fällt schon ein Grund ein: Wenn man einzelne Listview-Einträge farblich markieren will (z.B. mit GUICtrlsetBkColor), benötigt man die Control-ID. Das habe ich bei meinem Starplayer benutzt, um das aktuelle Lied zu markieren.
Ich kenne aber auch nur die Möglichkeit alle Control-IDs in einem Array zu speichern. Der LV-Index entspricht dann dem Index im Array. -
Stimmt! Daran hatte ich nicht gedacht. Hab's geändert! Neue Version in Post #1.
Danke, für den Bugreport!
-
Hunderstel ist doch kein Problem. Erst, wenn Du die Tausenderstelle genau haben willst, wird es schwierig (Laufzeit).
-
Nein, ich denke, so ein Skript verstösst nicht gegen die Forenregeln. Die Aktualisierungsrate sollte aber nicht zu oft eingestellt sein (einmal pro Minute sollte dabei IMHO ausreichen).
-
Hier mal eine Stoppuhr mit einzelnen Segmenten und Start/Pause/Stopp:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
Opt('GUIOnEventMode', 1)$hGui = GUICreate('Stoppuhr', 200, 100)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
Global $ahTime[4], $aOld[4], $iTimer, $fPause = False
For $i = 0 To 3
$ahTime[$i] = GUICtrlCreateLabel(StringFormat('%0' & 2 + Number($i = 3) & 'i', 0), 40 + $i * 30, 20, 30, 20)
GUICtrlSetFont(-1, 14, 400, 0, 'Tahoma', 5)
If $i < 3 Then
GUICtrlCreateLabel(':', 62 + $i * 30, 20, 10, 20)
GUICtrlSetFont(-1, 14, 400, 0, 'Tahoma', 5)
EndIf
Next
$hStart = GUICtrlCreateButton('Start', 10, 60, 50, 25)
GUICtrlSetOnEvent(-1, '_Start')
$hPause = GUICtrlCreateButton('Pause', 70, 60, 50, 25)
GUICtrlSetOnEvent(-1, '_Pause')
GUICtrlSetState(-1, $GUI_DISABLE)
$hStopp = GUICtrlCreateButton('Stopp', 130, 60, 50, 25)
GUICtrlSetOnEvent(-1, '_Stopp')
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()While Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _End()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_EndFunc _Start()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($hStart, $GUI_DISABLE)
GUICtrlSetState($hStopp, $GUI_ENABLE)
GUICtrlSetState($hPause, $GUI_ENABLE)
$iTimer = TimerInit()
AdlibRegister('_ShowTime', 10)
EndFunc ;==>_StartFunc _Pause()
[/autoit] [autoit][/autoit] [autoit]
$fPause = Not $fPause
Switch $fPause
Case True
AdlibUnRegister('_ShowTime')
GUICtrlSetData($hPause, 'Weiter')
Case False
AdlibRegister('_ShowTime', 10)
GUICtrlSetData($hPause, 'Pause')
EndSwitch
EndFunc ;==>_PauseFunc _Stopp()
[/autoit] [autoit][/autoit] [autoit]
AdlibUnRegister('_ShowTime')
_ShowTime()
GUICtrlSetState($hStart, $GUI_ENABLE)
GUICtrlSetState($hStopp, $GUI_DISABLE)
GUICtrlSetState($hPause, $GUI_DISABLE)
EndFunc ;==>_StoppFunc _ShowTime()
[/autoit]
Local $aTime[4], $iTicks = TimerDiff($iTimer)
$aTime[2] = Int($iTicks / 1000)
$aTime[3] = Int($iTicks - $aTime[2] * 1000)
$aTime[0] = Int($aTime[2] / 3600)
$aTime[2] = Mod($aTime[2], 3600)
$aTime[1] = Int($aTime[2] / 60)
$aTime[2] = Mod($aTime[2], 60)
For $i = 0 To 3
If $aTime[$i] <> $aOld[$i] Then GUICtrlSetData($ahTime[$i], StringRight('00' & $aTime[$i], 2 + Number($i = 3)))
Next
$aOld = $aTime
EndFunc ;==>_ShowTimeAber eine AdlibZeit von kleiner als 10 halte ich auch für schlecht, weil die _ShowTime-Funktion schon einige Millisekunden (je nach Rechner) benötigt.
-
Ja! Du hast die entsprechende Stelle bereits zitiert.
-
@Mr_gitarre: Bei mir tritt der, von Dir beschriebene, Fehler nicht auf (weder unter WinXP noch unter Win7). Wenn der Fehler nur bei Dir auftritt, musst Du schonmal bei Dir (Deinem Rechner) nach den Ursachen suchen.

Manchmal ist nicht mal AutoIt Schuld an solchen Fehlern, siehe: Refreshfehler bei _ArrayDisplay :pinch:
-
Es gibt eine neue Version (siehe Post #1).
Man kann jetzt den Zahlenbereich anpassen. -
Zu Deinem ersten Posting kann man nicht viel sagen (keine Testmöglichkeit).
[autoit]
Zum zweiten Problem (alle Einträge markieren):_GUICtrlListView_SetItemSelected($hListview, -1, True)
[/autoit]
Das markiert alle Einträge.
-
Auch von mir: Herzlichen Glückwunsch zum Geburtstag.
-
Hi Xeno!
Alles Gute zu Deinem heutigen Geburtstag. Feiere schön und bleib uns mit Rat und Tat erhalten.
-
Entweder WinGetPos (Fensterkoordinaten/-Größe) oder WinGetClientSize (Client-Area)
-
Eine S3? Die ist doch schon uralt, oder? Ich meine mich erinnern zu können, dass ein Kumpel die mal in einem Win98-Rechner drinhatte. Das war vor >10 Jahren.
Was ich mich nun frage: Ist der übrige Rechner genauso alt? Wenn ja, vergiss das mit Win7.Wenn der Rest besser/schneller ist, dann kaufe Dir eine neue Grafikkarte oderbenutze weiterhin WinXP.Edit: Nicht gesehen. Geht um ein Laptop.
-
Vorsicht! Nicht jedes Board liefert eine eindeutige Seriennummer. Oft wird "unknow" oder "0000-0000-0000-0000" zurückgegeben.
Ich würde dem Rat (Post#6) von AspirinJunkie folgen. Mehrere Komponenten nehmen und daraus eine MD5-Checksumme. Das dürfte ausreichen. -
UEZ: So geht's
[autoit]
[/autoit]
#include <Array.au3>
$string = '14 124 AutoIt 4 283 Coding macht Spass 0815 Ende'
$array = StringRegExp($string, '([^\d+|\h]+?)(?:\h|\z)', 3)
_ArrayDisplay($array) -
Oh mann, das gibt es nicht. Ich habe das Problem entdeckt.
Das ist eigentlich unglaublich, aber war absolut reproduzierbar. Es war das Einstellungsprogramm (SetPoint) für meine Logitech-Tastatur/-Maus.
Wenn ich das Einstellungsprogramm beendet habe, funktionierte _ArrayDisplay einwandfrei. Habe ich das Einstellungsprogramm wieder gestartet, traten die Refreshfehler wieder auf.Es handelte sich dabei um die Version 4.80.103 von SetPoint (wurde zusammen mit der Tastatur geliefert). Jetzt habe ich mal ein Update auf die aktuelle Version 6.15.6 gemacht und dort tritt der Fehler auch mit gestarteten SetPoint nicht mehr auf.
Wieso allerdings SetPoint diesen Refreshfehler verursacht hat, wird mir wohl für immer ein Rätsel bleiben.

Problem gelöst! Vielen Dank an alle, die sich zusammen mit mir den Kopf zerbrochen haben.

-
Meiner Erfahrung nach können höchstens die richtigen Informatiker programmieren. Habe noch keinen Wirtschaftsinformatiker gesehen, der irgendwas konnte.
Ohoh...

Profil von "Xenobiologist":
[...]
Beruf: Wirtschaftsinformatiker -
Nö, kein Backup!

Vielleicht sollte ich mir mal angewöhnen, vor jeder Programminstallation ein Backup zu erstellen, dann könnte man das besser eingrenzen.

-
Ich bin ja auch schon am zweifeln, ob es überhaupt an AutoIt liegt. Die Grafikkarte hatte ich auch schon im Verdacht, aber bisher konnte ich diesen Refreshfehler nur bei _ArrayDisplay und bei meinem Programm "TSAdress" ausmachen.
Ich habe auch schon den aktuellsten Grafikkartentreiber installiert, aber der Fehler tritt immer noch auf.
Zum testen habe ich bereits mehrere Styles durchprobiert, aber dieses Skript läuft einwandfrei (ohne Refreshfehler):Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>$sHeader = 'a|b|c'
[/autoit] [autoit][/autoit] [autoit]
Global $iExStyle = $LVS_EX_GRIDLINES + $LVS_EX_FULLROWSELECT + $LVS_EX_DOUBLEBUFFER
$hGui = GUICreate('Test', 340, 220, Default, Default, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_SIZEBOX, $WS_MINIMIZEBOX))
$aiGUISize = WinGetClientSize($hGui)
$hListView = GUICtrlCreateListView($sHeader, 0, 0, $aiGUISize[0], $aiGUISize[1] - 26, $LVS_SHOWSELALWAYS, $iExStyle)
For $i = 0 To 31
GUICtrlCreateListViewItem(Random(1000, 9999, 1) & '|' & Random(1000, 9999, 1) & '|' & Random(1000, 9999, 1), $hListView)
Next
GUICtrlSendMsg($hListView, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg($hListView, $LVM_SETCOLUMNWIDTH, 1, 100)
GUICtrlSendMsg($hListView, $LVM_SETCOLUMNWIDTH, 2, 100)
GUICtrlSetResizing($hListView, $GUI_DOCKBORDERS)
GUISetState()
WinSetOnTop($hGui, '', 1)Do
[/autoit]
Until GUIGetMsg() = -3Ich raff das einfach nicht. Wieso tritt der Fehler nicht immer auf?
Bei einem Hardwaredefekt müsste das doch immer auftreten. Oder auch wenn da ein Programm querschiessen sollte.
Ich habe auch schon alle Hintergrundprogramme beendet und einige unwichtige Dienste deaktiviert. So langsam bin ich am Ende.
Notfalls muss ich in den sauren Apfel beissen und Windows neu installieren.