Ist ein String. ![]()
Gratz zu Post 2000 ![]()
Ist ein String. ![]()
Gratz zu Post 2000 ![]()
Hey,
habe ein Problem mit einer Com-Anfrage (Objekt = DVBViewer pro).
zunächst mal die Doku der Funktion:
ZitatAlles anzeigen
function GetAsArray(ChannelID: Integer; StartTime: TDateTime; EndTime: TDateTime; out List: OleVariant): Integer;Returns a variant SafeArray of EPGItems which meet the criteria. This function is for highspeed data retrieval.
The returned array is two dimensional [0..EPGItemCount, 0..EPGItemPropertiescount]. The second dimension is defined as follows:List[i,0] := EPGChannelID; // Longword (unsigned int)
List[i,1] := EventID; // Longword (unsigned int)
List[i,2] := Time; // Datetime (Double)
List[i,3] := Duration; // Datetime (Double)
List[i,4] := Event; // String
List[i,5] := Title; // String
List[i,6] := Description; // String
List[i,7] := CharSet; // Byte
List[i,8] := Content; // ByteParameters
ChannelID
The EPGChannelID as explained in IEPGManager.hasEPG. If you want all channel set this to 0.
StartTime
The start time and date. If set to 0 it gets all available EPG data till EndTime.
EndTime
The end time and date. If set to 0 it gets all available EPG data from StartTime till the end of the buffer.
If StartTime=EndTime you get all programs running at this point of time.
List
A Variant to be filled with the data.
Returns
The count of entries in the array.
Hier mein Skript:
#include <array.au3>
$DVBViewer = ObjGet("", "DVBViewerServer.DVBViewer") ;Verbindung aufbauen -> klappt
If $DVBViewer = 0 Then ; ohne Verbindung das Skript beenden
MsgBox(1, "", "Keine Verbindung zum DVBViewer möglich")
Exit
EndIf
dim $list
$SID = $DVBViewer.CurrentChannel.Tuner.SID() ; SID des getunten Senders holen
$TSID = $DVBViewer.CurrentChannel.Tuner.TransportStreamID() ;TID des getunten Senders holen
$NID = $DVBViewer.CurrentChannel.Tuner.NetworkID()
$EPGID = $SID + $TSID * 65536 ;DVBV spezifisch, diese Zeile ist richtig
ConsoleWrite($SID & " " & $TSID & " " & $NID & " " & $EPGID & @CRLF) ;debug zeile -> Abfragen sind erfolgreich
[/autoit] [autoit][/autoit] [autoit]$test = $DVBViewer.EPGManager.GetasArray($EPGID,0,0, $list) ;Array holen
[/autoit] [autoit][/autoit] [autoit]ConsoleWrite($test & @CRLF) ; Den "Count" der Arrayeinträge bekomme ich, die Anfrage klappt also scheinbar
[/autoit] [autoit][/autoit] [autoit]If IsArray($list) then _ArrayDisplay($list) ; $list ist nur kein Array
MsgBox(1, "", @error) ; @error = 0
Seht ihr den Fehler? Gibt es bei Com-Rückgaben als Array noch etwas besonderes zu beachten?
Danke schonmal für die Hilfe ![]()
Gruß nuts
Aha interessant. Und kein Godmode für XP? ![]()
Wegen dem komplexen Skript natürlich ![]()
Nee ähm das ist ein Spaß oder? ![]()
Da stellt sich die Frage ob es nicht sinnvoller ist die IP's in einem zweiten Schritt auf ihre Gültigkeit zu prüfen.
Noch zusätzlich auf 0-255 im Segment zu prüfen wird vermutlich nicht wirklich schnell sein.
Du willst aber RegExp üben oder?
#include <file.au3>
$datei = FileOpen(@ScriptDir & "\ansii.txt", 0)
[/autoit][autoit][/autoit][autoit]$decode = FileRead($datei, 1)
$split = StringReplace($decode,") & Chr(",",")
MsgBox(0,"", $split)
FileClose($datei)
So müsste es gehen.
Der Bereich beginnt immer mit "9100" und endet mit "V"?
Vielleicht so? (ungetestet)
#include <file.au3>
#Include <string.au3>
#Include <Array.au3>
Dim $asettings, $i = 0, $sresult, $aresult
If Not _FileReadToArray("settings.txt", $asettings) Then
MsgBox(4096, "Fehler", "Fehler beim Einlesen der Datei!" & @CRLF & "Fehlercode: " & @error)
Exit
EndIf
$sSearch = " 9100"
_ArrayDisplay($asettings)
$iIndex = _ArraySearch($asettings, $sSearch)
If @error Then MsgBox(0, "Nicht gefunden", '"' & $sSearch & '" wurde in dem Array nicht gefunden.')
while 1
if $sSearch[$iIndex+$i] <> "V" then
$sresult &= $sSearch[$iIndex+$i] &"|"
$i += 1
Else
$i = 0
ExitLoop
endif
wend
$aresult =stringsplit( StringtrimRight($sresult, 1), "|")
_ArrayDisplay($aresult)
Poste doch mal dein Skript und vielleicht einen Auszug der Datei. Sollte nicht so schwierig sein ![]()
;Set Constants
Global Const $NET_FW_IP_PROTOCOL_UDP = 17
Global Const $NET_FW_IP_PROTOCOL_TCP = 6
Global Const $NET_FW_SCOPE_ALL = 0
Global Const $NET_FW_SCOPE_LOCAL_SUBNET = 1
;Declare variables
Dim $errornum
;Create the firewall manager object.
Dim $fwMgr
$fwMgr = ObjCreate("HNetCfg.FwMgr")
if @error Then
ConsoleWrite("Objekt HNetCfg.FwMgr konnte nicht erstellt werden" & @CRLF)
Exit
endif
; Get the current profile for the local firewall policy.
Dim $profile
$profile = $fwMgr.LocalPolicy.CurrentProfile
Dim $port
$port = Objcreate("HNetCfg.FWOpenPort")
if @error Then
ConsoleWrite("Objekt HNetCfg.FWOpenPort konnte nicht erstellt werden" & @CRLF)
Exit
endif
$port.Name ='HTTP'
$port.Protocol =6
$port.Port =80
;If using Scope, don't use RemoteAddresses
$port.Scope =$NET_FW_SCOPE_ALL
;Use this line to scope the port to Local Subnet only
;port.Scope = NET_FW_SCOPE_LOCAL_SUBNET
$port.Enabled=TRUE
;Use this line instead if you want to add the port, but disabled
;port.Enabled = FALSE
So ca. (ohne Error-Handling edit \ -> s. Bernd's Antwort)
Sehr gut möglich, dass man an die Info's anders rankommt.
Am besten mal bei SAP nachfragen, ohne SAP Business One ist es hier nämlich schwierig zu helfen.
Eben, ist nur die Frage ob die physikalische Größe per Edid (oder sonstwie) übermittelt und hinterlegt wird.
Anschließend kann der Wert dann mit zusammen der nativen Auflösung errechnet werden.
Verwendet SAP überhaupt Standardcontrols?
Wie wärs mit einer Mail an SAP mit dem Wunsch die Infos als Asci-Code bereitzustellen?
Die Zeile $a +=1 muss/kann raus.
In der Form hat dein Skript aber fatale Auswirkungen, da auch unsichtbare Fenster geändert werden (und davon gibts ne ganze Menge).
Schau dir dazu mal das Array an:
#include <array.au3>
allemaxi()
Func allemaxi()
$winlist = WinList()
_ArrayDisplay($winlist)
For $a = 1 To $winlist[0][0]
;WinSetState($winlist[$a][0], "", @SW_MAXIMIZE)
;$a += 1
Next
Sleep(50)
EndFunc ;==>allemaxi
In der Hilfe zu Winlist findet sich ein besseres Beispiel.
Dann bau doch die Funktion Shutdown (s. Hilfe) ein?
Dazu muss der PC geweckt werden.
z.B. über WOL-Event (dazu gibts hier im Forum auch Beispiele) eines anderen PC' s oder über einen Bios-Timer (http://www.dvbviewer.info/forum/index.php?showtopic=19714 ka wie das genau funktioniert).
Oder soll der PC einfach vom Standby/Ruhezustand aufgeweckt werden?
WinSetState & WinList könnte dir beim Maximieren helfen.
Naja für die meisten Skripte gibt es schon andere Umsetzungen.
Kein Grund es nicht in Autoit zu versuchen und hier zu posten ![]()
Na das geht schon (alles ist möglich
).
Kannst dir die Zeichen mit GDI+ nach einen vordefinierten Muster zeichnen lassen und je nachdem auch einzelne Parameter zufällig wählen um unterschiedliche Ergebnisse zu bekommen.
Ist jetzt aber ingesamt nicht sooo einfach umzusetzen.
global $counter = 1
While 1
Send($counter)
$counter +=1
Send("{ENTER}")
if $counter = 10 then exit
WEnd
So ca.? edit \ zu langsam ![]()