1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. nuts

Beiträge von nuts

  • Com-Objekt mit 2D Array Rückgabe

    • nuts
    • 7. Januar 2010 um 11:10

    Ist ein String. ?(

    Gratz zu Post 2000 :thumbup:

  • Com-Objekt mit 2D Array Rückgabe

    • nuts
    • 7. Januar 2010 um 10:30

    Hey,

    habe ein Problem mit einer Com-Anfrage (Objekt = DVBViewer pro).
    zunächst mal die Doku der Funktion:

    Spoiler anzeigen
    Zitat


    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; // Byte

    Parameters
    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.

    Alles anzeigen

    Hier mein Skript:

    Spoiler anzeigen
    [autoit]


    #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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]


    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

  • Godmode für Windows 7 x86 ! (gibts nicht ? - Gibts doch!!!)

    • nuts
    • 6. Januar 2010 um 19:01

    Aha interessant. Und kein Godmode für XP? :(

  • Godmode für Windows 7 x86 ! (gibts nicht ? - Gibts doch!!!)

    • nuts
    • 6. Januar 2010 um 18:41

    Wegen dem komplexen Skript natürlich :P

    Nee ähm das ist ein Spaß oder? ?(

  • Godmode für Windows 7 x86 ! (gibts nicht ? - Gibts doch!!!)

    • nuts
    • 6. Januar 2010 um 18:37

    Bin verwirrt :rofl:

  • Kleines Problem mit StringRegExp.

    • nuts
    • 6. Januar 2010 um 08:58

    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?

  • Array einlesen + bearbeiten

    • nuts
    • 5. Januar 2010 um 23:18
    [autoit]


    #include <file.au3>

    [/autoit][autoit][/autoit][autoit]

    $datei = FileOpen(@ScriptDir & "\ansii.txt", 0)

    [/autoit][autoit][/autoit][autoit]

    $decode = FileRead($datei, 1)
    $split = StringReplace($decode,") & Chr(",",")
    MsgBox(0,"", $split)
    FileClose($datei)

    [/autoit]


    So müsste es gehen.

  • Array einlesen und ausgeben bis zu einem gewissen Punkt

    • nuts
    • 5. Januar 2010 um 22:16

    Der Bereich beginnt immer mit "9100" und endet mit "V"?

    Vielleicht so? (ungetestet)

    Spoiler anzeigen
    [autoit]


    #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)

    [/autoit]
  • Array einlesen und ausgeben bis zu einem gewissen Punkt

    • nuts
    • 5. Januar 2010 um 21:45

    Poste doch mal dein Skript und vielleicht einen Auszug der Datei. Sollte nicht so schwierig sein :)

  • VB Script für AutoIt umschreiben

    • nuts
    • 5. Januar 2010 um 16:09
    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Set Constants
    Global Const $NET_FW_IP_PROTOCOL_UDP = 17
    Global Const $NET_FW_IP_PROTOCOL_TCP = 6

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $NET_FW_SCOPE_ALL = 0
    Global Const $NET_FW_SCOPE_LOCAL_SUBNET = 1

    [/autoit] [autoit][/autoit] [autoit]

    ;Declare variables
    Dim $errornum

    [/autoit] [autoit][/autoit] [autoit]

    ;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

    [/autoit] [autoit][/autoit] [autoit]

    ; Get the current profile for the local firewall policy.
    Dim $profile
    $profile = $fwMgr.LocalPolicy.CurrentProfile

    [/autoit] [autoit][/autoit] [autoit]

    Dim $port
    $port = Objcreate("HNetCfg.FWOpenPort")
    if @error Then
    ConsoleWrite("Objekt HNetCfg.FWOpenPort konnte nicht erstellt werden" & @CRLF)
    Exit
    endif

    [/autoit] [autoit][/autoit] [autoit]

    $port.Name ='HTTP'
    $port.Protocol =6
    $port.Port =80

    [/autoit] [autoit][/autoit] [autoit]

    ;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

    [/autoit] [autoit][/autoit] [autoit]

    $port.Enabled=TRUE
    ;Use this line instead if you want to add the port, but disabled
    ;port.Enabled = FALSE

    [/autoit]


    So ca. (ohne Error-Handling edit \ -> s. Bernd's Antwort)

  • geschlossen, nicht gelöst: SAP Business One auslesen

    • nuts
    • 5. Januar 2010 um 13:49

    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.

  • GetMonitor-Funktion testen

    • nuts
    • 5. Januar 2010 um 12:51

    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.

  • geschlossen, nicht gelöst: SAP Business One auslesen

    • nuts
    • 5. Januar 2010 um 12:30

    Verwendet SAP überhaupt Standardcontrols?
    Wie wärs mit einer Mail an SAP mit dem Wunsch die Infos als Asci-Code bereitzustellen?

  • Windowtool

    • nuts
    • 5. Januar 2010 um 10:09

    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:

    [autoit][/autoit]
    Spoiler anzeigen
    [autoit]


    #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

    [/autoit]
    [autoit][/autoit]


    In der Hilfe zu Winlist findet sich ein besseres Beispiel.

  • PC Shutdown

    • nuts
    • 4. Januar 2010 um 21:33

    Dann bau doch die Funktion Shutdown (s. Hilfe) ein?

  • Automatisch starten / Updates

    • nuts
    • 4. Januar 2010 um 18:59

    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?

  • Windowtool

    • nuts
    • 4. Januar 2010 um 17:27

    WinSetState & WinList könnte dir beim Maximieren helfen.

  • Windowtool

    • nuts
    • 4. Januar 2010 um 17:13

    Naja für die meisten Skripte gibt es schon andere Umsetzungen.
    Kein Grund es nicht in Autoit zu versuchen und hier zu posten ;)

  • Captcha

    • nuts
    • 4. Januar 2010 um 15:40

    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.

  • Hilfe mit Send Befehl

    • nuts
    • 4. Januar 2010 um 15:33
    Spoiler anzeigen
    [autoit]


    global $counter = 1

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Send($counter)
    $counter +=1
    Send("{ENTER}")
    if $counter = 10 then exit
    WEnd

    [/autoit]

    So ca.? edit \ zu langsam :whistling:

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™