Das lässt sich mit einer einfachen Elektronik-Schaltung nicht machen. Dazu musst Du schon eine MicroController-Schaltung benutzen.
Davon habe ich aber auch keine Ahnung. Vielleicht fragst Du mal in diesem Forum.
Beiträge von Oscar
-
-
Vielleicht so (nicht besonders Ressourcenschonend):
Spoiler anzeigen
[autoit]
[/autoit]
#include <ScreenCapture.au3>
ShellExecute('calc.exe')
WinWait('Rechner')
$handle = WinGetHandle('Rechner')
$hGUI = GUICreate("Screen Capture", 400, 300)
$hPic = GUICtrlCreatePic('', 0, 0, 400, 300)
GUISetState()
Do
_ScreenCapture_CaptureWnd(@ScriptDir & 'Screenshot.jpg', $handle)
GUICtrlSetImage($hPic, @ScriptDir & 'Screenshot.jpg')
Until GUIGetMsg() = -3 -
-Thema verschoben-
-
Else ist dazu da, wenn die Bedingung nach If nicht zutriftt. Zum Beispiel:
[autoit]
[/autoit]
If WinExists("Untitled -") Then
MsgBox(0, "", "Window exists")
Else
MsgBox(0, "", "Window not exists")
EndIf -
Nein, das $-Zeichen ist nur für die Standard-Admin-Freigaben. Wenn Du eigene anlegst, musst Du das so eintragen, wie der Freigabename lautet.
-
Wie oben schon erwähnt habe ich auch eine ATI. Allerdings noch die HD 3870 und mit der spiele ich z.B. "Call of duty 5" in einer Auflösung von 1920x1200 auf einem 24" Monitor.
Die 4870 ist ja noch etwas besser, also voll geeignet.
-
Benutze einfach den Freigabepfad z.B.:
[autoit]ShellExecute("\\[Servername]\c\installation\setup.exe")
[/autoit] -
Erstmal: Dein Beispiel kann nicht funktionieren, weil MsgBox die weitere Ausführung des Script verhindert.
[autoit]
Aber unabhängig davon, solltest Du zum testen, ob sich ein bestimmtes Fenster öffnet lieber WinExists() benutzen:
[/autoit]
If WinExists("Untitled -") Then
MsgBox(0, "", "Window exists")
EndIf -
"AMD für Spiele ungeeignet" ist doch völliger Unsinn!
Ich habe den gleichen Prozessor, dazu 4GB DDR2-RAM und eine AMD(ATI) 3870er Grafikkarte.
Reicht (mir) völlig. Auch zum spielen.
Heutzutage vielleicht eine 4890er Grafikkarte (so es das Budget zulässt) dazu. -
Wie lange ich gebraucht habe?
Kann ich nicht so genau sagen. Im Großen und Ganzen habe ich die Funktion heute vormittag geschrieben. Zwischendurch habe ich aber noch gefrühstückt, also eine genaue Stundenzahl kann ich nicht angeben.
-
-
Ohne den genauen Inhalt von $LV zu kennen, würde ich sagen so:
Spoiler anzeigen
[autoit]
[/autoit]
Func _checknewest()
Local $icount, $sNewest, $iNewest
_GUICtrlListView_DeleteAllItems($LVNP)
If StringRight($imagepath, 1) <> '\' Then $imagepath &= '\'
$icount = _GUICtrlListView_GetItemCount($LV)
For $i = 0 To $icount - 1
$ListViewText = _GUICtrlListView_GetItemText($LV, $i)
$aImageList = _FileListToArray($imagepath & $ListViewText, '*', 1)
If Not @error Then
$sNewest = '0000/00/00'
$iNewest = 0
For $j = 1 To $aImageList[0]
$sDate = StringRegExpReplace(FileGetTime($imagepath & $ListViewText & '\' & $aImageList[$j], 0, 1), '(\d{4})(\d{2})(\d{2}).+', '$1/$2/$3')
If $sDate > $sNewest Then
$sNewest = $sDate
$iNewest = $j
EndIf
Next
GUICtrlCreateListViewItem($imagepath & $ListViewText & '\' & $aImageList[$iNewest], $LVNP)
EndIf
Next
EndFunc ;==>_checknewest -
Natürlich ist sowas möglich.
Wo kommst Du denn nicht weiter? -
Für ein Projekt brauchte ich gerade eine Funktion zum umwandeln von Wochentagen (Mo, Di, Mi usw.) in das konkrete Datum (Format: 2009/08/13). Dabei sollte man auch Wochentagsintervalle (z.B. Mo-Fr) angeben können.
Es gibt die Möglichkeit vom Bezugsdatum aus in der Vergangenheit ($bTime = False) oder in der Zukunft ($bTime = True) die Daten ausgeben zu lassen.
Naja, rausgekommen ist diese Funktion:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3> ; wird für die Funktion benötigt
#include <Date.au3> ; wird für die Funktion benötigt; Beispiele -Anfang-
[/autoit] [autoit][/autoit] [autoit]
$aDate = _DayIntervalToDateArray('Mo-Sa')
_ArrayDisplay($aDate, 'Intervall = Mo-Sa')
$aDate = _DayIntervalToDateArray('MI.-fr.', False)
_ArrayDisplay($aDate, 'Intervall = MI.-fr.')
$aDate = _DayIntervalToDateArray('Do.')
_ArrayDisplay($aDate, 'Intervall = Do.')
$aDate = _DayIntervalToDateArray('Do.', False)
_ArrayDisplay($aDate, 'Intervall = letzter Do.')
$aDate = _DayIntervalToDateArray('So.', False, 2009, 12, 24) ; gesucht: Sonntag vor Heiligabend
_ArrayDisplay($aDate, 'Intervall = So. vor Heiligabend')
; Beispiele -Ende-;===============================================================================
[/autoit]
; Function Name: _DayIntervalToDateArray($sInterval[, $bTime = True][, $iYear = @YEAR][, $iMonth = @MON][, $iDay = @MDAY])
; Description:: gibt ein Array mit Daten zurück, die dem übergebenen Wochentagsintervall entsprechen
; Parameter(s): $sIntervall = Wochentag oder ein Intervall (von...bis)
; $bTime = False (Vergangenheit) oder True (Zukunft)
; $iYear, $iMonth, $iDay = Falls man ein anderes Bezugsdatum angeben will
; Requirement(s): #include <Array.au3>
; #include <Date.au3>
; Return Value(s): nullbasiertes Array
; im Fehlerfall: Rückgabe = "0" und @error = 1
; Author(s): Oscar (http://www.autoit.de)
;===============================================================================
Func _DayIntervalToDateArray($sInterval, $bTime = True, $iYear = @YEAR, $iMonth = @MON, $iDay = @MDAY)
Local $aInterval = StringSplit($sInterval, '-')
If $aInterval[0] > 2 Then Return SetError(1, 0, 0)
Local $aWeekDay[7][2] = [['Mo', 0],['Di', 1],['Mi', 2],['Do', 3],['Fr', 4],['Sa', 5],['So', 6]]
Local $aDay[2] = [-1, -1], $aDate[1], $iDateSub, $iTimeFormat
For $i = 1 To $aInterval[0]
For $j = 0 To UBound($aWeekDay) - 1
If StringInStr($aInterval[$i], $aWeekDay[$j][0]) Then
$aDay[$i - 1] = $aWeekDay[$j][1]
ExitLoop
EndIf
Next
Next
If $aDay[0] = -1 Then Return SetError(1, 0, 0)
If $aDay[1] > -1 Then ; Wenn ein "von-bis-Intervall" übergeben wurde, dann...
ReDim $aDate[$aDay[1] - $aDay[0] + 1]
For $i = 0 To $aDay[1] - $aDay[0] ; Alle Wochentage aus dem Intervall
$iDateSub = ($aWeekDay[$aDay[0] + $i][1] - 6) + (6 - _DateToDayOfWeekISO($iYear, $iMonth, $iDay)); (gesuchter Wochentag - 6) + (6 - heute)
If $bTime Then
If $iDateSub < 0 Then $iDateSub += 7 ; wenn der Wochentag kleiner heute, dann nächste Woche
Else
If $iDateSub >= 0 Then $iDateSub -= 7 ; wenn der Wochentag größer/gleich heute, dann letzte Woche
EndIf
$aDate[$i] = _DateAdd('D', $iDateSub, StringFormat('%04i/%02i/%02i', $iYear, $iMonth, $iDay)) ; Datum vom Wochentag ins Ausgabe-Array
Next
Else ; ansonsten wurde nur ein einzelner Wochentag übergeben
$iDateSub = ($aWeekDay[$aDay[0]][1] - 6) + (6 - _DateToDayOfWeekISO($iYear, $iMonth, $iDay)); (gesuchter Wochentag - 6) + (6 - heute)
If $bTime Then
If $iDateSub < 0 Then $iDateSub += 7 ; wenn der Wochentag kleiner heute, dann nächste Woche
Else
If $iDateSub >= 0 Then $iDateSub -= 7 ; wenn der Wochentag größer/gleich heute, dann letzte Woche
EndIf
$aDate[0] = _DateAdd('D', $iDateSub, StringFormat('%04i/%02i/%02i', $iYear, $iMonth, $iDay)) ; Datum vom Wochentag ins Ausgabe-Array
EndIf
_ArraySort($aDate) ; Ausgabe-Array sortieren
Return $aDate
EndFunc ;==>_DayIntervalToDateArrayIm Script sind diverse Beispiele aufgeführt, wie man die Funktion nutzen kann. Die Beispiele erklären die Funktion wohl besser, als 1000 Worte.
Vielleicht braucht ja noch jemand so eine Funktion.
-
Oder mit RegExp:
[autoit]
[/autoit]
$text = '\\server\share\order1\dummy.txt'
MsgBox(0, "", StringRegExpReplace($text, '(.+\\).*', '$1')) -
Super umgesetzt! Habe ich auch gleich mal archiviert.

-
Hmmm...war es früher nicht mal so, dass der Sleepwert in der Endlosschleife die Reaktionzeit der Events beeinflusst hat?
Sprich: Man durfte den Wert nicht zu groß wählen, weil dann die Events (z.B. Buttonklick) erst später ausgeführt wurden?
Ich hab das gerade mal ausgetestet:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
Opt('GUIOnEventMode', 1)
GUICreate('Test', 400, 200)
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
GUICtrlCreateButton('Testbutton', 30, 30, 100, 25)
GUICtrlSetOnEvent(-1, '_Button')
GUISetState()While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100000)
WEndFunc _End()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _Button()
[/autoit]
MsgBox(0, 'Test', 'Test')
EndFunc
Trotz des hohen Sleepwerts reagiert der Button sofort. Oder war das schon immer so und es ist mir jetzt erst aufgefallen?
Was mich am MessageLoop-Modus stört ist die dynamische Rechenzeit-Zuweisung. Wenn der User z.B. die Maus bewegt, wird dem Script mehr Rechenzeit zugewiesen (die Schleife wird öfter ausgeführt).
Ein kleines Beispielscript verdeutlicht dieses:Spoiler anzeigen
[autoit]
[/autoit]
#include <GUIConstantsEx.au3>
GUICreate('Test', 400, 200)
$hCount = GUICtrlCreateLabel('0', 30, 30, 100, 25)
GUISetState()
Do
GUICtrlSetData($hCount, GUICtrlRead($hCount) + 1)
Until GUIGetMsg() = $GUI_EVENT_CLOSE
Der Zähler läuft schneller, wenn die Maus bewegt wird. -
Klar ist C schneller, aber gerade die While-Schleife dafür zu verwenden...
For...Next ist in dem Fall deutlich schneller:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
$iTimer = TimerInit()
$mytest = 0
While ($mytest < 1000000)
$mytest += 1
WEnd
ConsoleWrite('While...WEnd:' & TimerDiff($iTimer)&@CR)$iTimer = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
$mytest = 0
Do
$mytest += 1
Until $mytest = 1000000
ConsoleWrite('Do...Until:' & TimerDiff($iTimer)&@CR)$iTimer = TimerInit()
[/autoit]
$mytest = 0
For $i = 0 To 1000000
$mytest += 1
Next
ConsoleWrite('For...Next:' & TimerDiff($iTimer)&@CR) -
Nun, vermutlich wird kein UPnP-Device gefunden. In dem Fall existiert das Object nicht und es kommt die Fehlermeldung.
-
Wenn Du Zahlen vergleichen willst, musst Du das AutoIt mitteilen, ansonsten werden die Werte als String interpretiert:
Spoiler anzeigen
[autoit]
[/autoit]
For $i = 1 To $ini[0]
$number1 = Number(IniRead($nvs[$i], "test", "test1", ""))
$number2 = Number(IniRead($nvs[$i + 1], "test", "test1", ""))
If $number1 < $number2 Then
MsgBox(0, "", "ist" & $number1 & "kleiner als" & $number2 & '?')
EndIf
If $number1 > $number2 Then
MsgBox(0, '', $number1 & ' bigger than ' & $number2)
EndIf
Next