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

Beiträge von Bitboy

  • Funktion GetIfTable aus der Iphlpapi.dll

    • Bitboy
    • 1. April 2009 um 19:59

    Habe ein Problem mit dem Aufruf der Funktion. Ich bekomme als Fehlercode 122 - ERROR_INSUFFICIENT_BUFFER zurück.
    Auch weiß ich nicht ob die beiden Strukturen $MIB_IFTABLE und $MIB_IFROW so richtig verschachtelt sind.

    Hätte jemand einen Tipp für mich? Würde mich echt freuen besonders da ich grade erst angefangen hab mich mit api Funktionen zu beschäftigen.

    Spoiler anzeigen
    [autoit]

    $str = "byte wszName[510];long dwIndex;long dwtype;long dwMTU;long dwSpeed;long dwPhysAddrLen;byte bPhysAddr[7];long dwAdminStatus;long dwOperStatus;long dwLastChange;"
    $str = $str & "long dwInOctets;long dwInUcastPkts;long dwInNUcastPkts;long dwInDiscards;long dwInErrors;long dwInUnknownProtos;long dwOutOctets;long dwOutUcastPkts;"
    $str = $str & "long dwOutNUcastPkts;long dwOutDiscards;long dwOutErrors;long dwOutQLen;long dwDescrLen;byte bDescr[255]"
    $MIB_IFROW = DllStructCreate($str)

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

    $MIB_IFTABLE = DllStructCreate("long dwNumEntries;" & $MIB_IFROW)

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

    $err = DllCall("Iphlpapi.dll", "dword","GetIfTable","ptr", DllStructGetPtr($MIB_IFTABLE), "long*", DllStructGetSize($MIB_IFTABLE),"int",1)

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

    _ArrayDisplay($err)

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

    MsgBox(0,$err,DllStructGetData($MIB_IFTABLE, "dwNumEntries"))

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

    EndFunc

    [/autoit]
  • Anwendung und Fortschrittsbalken gleichzeitig starten

    • Bitboy
    • 26. März 2009 um 05:46
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    ;Zuerst die Gui Erstellen
    GUICreate("My GUI Progressbar", 500, 40, 100, 60) ;Ein leeres Fenster
    $progressbar1 = GUICtrlCreateProgress(10, 10, 480, 20); Fortschrittsbalken
    GUISetState(@SW_Show) ;Gui anzeigen

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

    $outfile = "C:\GRUB.iso"
    $isofertig = 504072192 ;kb
    $isoaktuell = 0
    ;Befehl ausführen
    $command = "mkisofs.exe -o " & $outfile & " ""C:\GRUB"""
    Run($command)
    Do
    $isoaktuell = FileGetSize($outfile); in kb
    GUICtrlSetData($progressbar1, $isoaktuell/$isofertig*100)
    Sleep(500)
    Until $isoaktuell + 1 >= $isofertig

    [/autoit]
  • Aus einer Textdatei sortierte Listen erstellen

    • Bitboy
    • 25. März 2009 um 21:12

    Wie wärs damit?

    [autoit]

    Local $tmparr, $kunde, $file, $file2,$writeline

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

    $file = Fileopen (@WorkingDir & "\export_rcv090324052240.txt",0)
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop

    $tmparr = StringSplit($line,";")


    If FileExists(@WorkingDir & "\" & $kunde & ".txt") Then
    $begin = 3 ;Bestehende dateien ab spaltenummer __ erweitern.
    Else
    $begin = 2
    EndIf

    $kunde = $tmparr[2]
    $writeline = ""
    For $i = $begin To $tmparr[0] -1
    $writeline = $writeline & $tmparr[$i] & ";"
    Next

    $file2 = FileOpen ( @WorkingDir & "\" & $kunde & ".split", 1 )

    FileWrite($file2,$writeline)
    FileClose ($file2)

    ;MsgBox(0, "Line read:", $line)
    Wend

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

    FileClose ($file)

    [/autoit]
  • "RunAs" und ausführen als Administrator funktioniert nicht

    • Bitboy
    • 25. März 2009 um 20:15

    So hatte ich es auch erst versucht, aber so ganz optimal lief das nicht.

    Vermute dabei ein Problem mit den Rechten. hab den Pfad auch so im Explorer eingegeben und wurde nach Benutzer und Passwort gefragt obwohl in den Rechten der Freigabe "Jeder" eingestellt ist.

  • Anwendung und Fortschrittsbalken gleichzeitig starten

    • Bitboy
    • 25. März 2009 um 20:00

    Ok, ich erkläre es mal ausführlich.

    $isofertig speichert die Größe der fertigen Iso-Datei. Leider kann ich dir keinen Vorschlag machen wie du den bestimmen kannst.
    Edit:
    $isofertig = DirGetSize("C:\GRUB")
    Die fertige iso-Datei wird etwas größer sein denke ich, aber das macht nichts
    Editende

    $isoaktuell steuert zusammen mit $isofertig die Anzeige der progressbar. den wert kannst du am Anfang auf 0 setzen.

    der cmd-befehl muss dahin wo jetzt "; Befehl ausführen steht"

    In der schleife wird dann kontinuierlich die größe der Isodatei abgefragt. du muss noch den pfad und den dateinamen eintragen

    Eine Progressbar nimmt standardmäßig einen wert zwischen 1 und 100. es ist also sinnvoll, auszurechnen wieviel prozent
    ($isoaktuell/$isofertig*100)bereits fertig sind.

    das +1 kann man wohl auch weglassen, da hilft ausprobieren

    PS: in die schleife vllt noch ein Sleep(500)

    Wie gesagt, die Methode funktioniert nur wenn du die Größe der fertigen Iso-Datei bestimmen kannst.http://www.autoit.de/dokumentation_…CtrlSetData.htm

  • "RunAs" und ausführen als Administrator funktioniert nicht

    • Bitboy
    • 25. März 2009 um 18:52

    Netzwerkverzeichnisse nimmt autoit nicht so gern, auch dann nicht wenns für jeden freigegeben ist.
    fü eine installation schlage ich folgendes vor:

    -Netzlaufwerk verbinden
    -Installationsdateien kopieren
    -Netzlaufwerk trennen
    -Installation ausführen

    Das funzt ziemlich stabil

  • Anwendung und Fortschrittsbalken gleichzeitig starten

    • Bitboy
    • 25. März 2009 um 18:00

    Kennst du denn die Größe der iso-Datei bevor sie erstellt wird? Ansonsten seh ich keine guten chancen eine progressbar zu bauen.

    so könnte es gehen:

    $isofertig
    $isoaktuell

    Befehl ausführen
    Do
    $isoaktuell = FileGetSize(isodatei)
    GUICtrlSetData($progressbar1,$isoaktuell/$isofertig*100)

    Until $isoaktuell + 1 >= $isofertig

  • Warum funzt das nicht?

    • Bitboy
    • 24. März 2009 um 22:49
    Zitat von Bitboy
    [autoit]

    Do
    If _IsPressed ("01", $dll) Then
    $i = $i +1
    Do
    $tmp = GUIGetMsg()
    Until $tmp = $GUI_EVENT_PRIMARYUP
    EndIf
    Until $i = 30

    [/autoit]

    hab die 30 Klicks nicht von Hand nachgezählt.

    Alles anzeigen

    schon probiert? ist doch ne do schleife und ich hab bei mir keinen unterschied bemerkt wie schnell ich klicke

  • Warum funzt das nicht?

    • Bitboy
    • 24. März 2009 um 22:40
    [autoit]

    Do
    If _IsPressed ("01", $dll) Then
    $i = $i +1
    Do
    $tmp = GUIGetMsg()
    Until $tmp = $GUI_EVENT_PRIMARYUP
    EndIf
    Until $i = 30

    [/autoit]

    hab die 30 Klicks nicht von Hand nachgezählt.

  • Warum funzt das nicht?

    • Bitboy
    • 24. März 2009 um 22:07

    Ich vermute folgendes:
    In der Zeit wo du "einen" Klick machst, läuft die schleife 30 mal durch. Dadurch ist die Bedingung erfüllt.
    Wenn du dir $i am Ende anzeigen lässt, ist der wert 30.

    So könnte es gehen:
    do
    if mousedown then
    $i = $i +1
    Do
    Until Mouseup
    endif
    until $i = 30

    Leider weiß ich nicht wie man die ereignisse mouseup und mousedown abfragt.

  • Was ist das für ein Format: 0x2FF2 ?

    • Bitboy
    • 24. März 2009 um 19:22

    Versuch es doch mal als Dezimalzahl, dann hast du auch die Umrechnung gespart.

    [HKEY_LOCAL_MACHINE\SOFTWARE\softwareabc\]

    "ID"=dword:00001234

  • _GetAllNetworkAdapter()

    • Bitboy
    • 21. März 2009 um 18:14

    Ich weiß ist schon ein älterer Thread aber bei mir hat die Funktion auf einem PC nicht richtig funktioniert, daher hab ich es mal in folgender Form neugeschrieben:

    Spoiler anzeigen
    [autoit]


    #include<Array.au3>
    ;######################################################################################################
    ;# Function Name: _GetAllNetAdapterInfo()
    ;# Description:: Auslesen aller vorhandenen Netzwerkadapter und deren Konfiguration
    ;# Parameter(s): keine
    ;# Requirement(s): keine
    ;# Return Value(s): Erfolg Array[0][0] Anzahl der Adapter
    ;# Array[n][0] Adapter Name (wie in Systemsteuerung ==> Netzwerkverbindungen)
    ;# Array[n][1] Adapter Beschreibung
    ;# Array[n][2] IP-Adresse
    ;# Array[n][3] SubNetMask
    ;# Array[n][4] DHCP-Enabled (0/1)
    ;# Array[n][5] DHCP IP-Adresse
    ;# Array[n][6] DHCP SubNetMask
    ;# Array[n][7] DHCP Default Gateway
    ;# Array[n][8] DHCP Server
    ;# Fehler Array[0][0] Leerstring (kein Adapter vorhanden)
    ;# Author(s): Bitboy, nach einer Idee von BugFix ([email='bugfix@autoit.de'][/email])
    ;######################################################################################################
    Func _GetAllNetAdapterInfo ()
    Local $infoarr[1][9], $keyarr[1], $i=0, $x=0, $counter=0, $tmp, $tmp2, $short

    ;Registrierte Adapter zählen
    While 1
    $i = $i + 1
    $tmp = RegEnumKey("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services", $i)
    If @error <> 0 then ExitLoop

    ;Adapter sind in den einzigen Schlüsseln die mit "{" beginnen
    If StringInStr($tmp,"{") Then
    $short = 1 ;Merker zum Verkürzen der Schleife da Keys alphabetisch sortiert
    $counter = $counter + 1
    Redim $keyarr[$counter+1]
    $keyarr[$counter] = $tmp ;Speichern der Adapterschlüssel
    $keyarr[0] = $counter
    Else
    If $short = 1 Then ExitLoop
    EndIf
    WEnd

    ;Funktion verlassen wenn kein Adapter gefunden wurde
    If $counter = 0 Then
    $infoarr[0][0] = 0
    Return $infoarr
    EndIf

    ;Rückgabearray an Adapterzahl anpassen
    Redim $infoarr[$counter+1][9]
    $infoarr[0][0] = $counter

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

    ; TCP-Informationen auslesen
    For $i = 1 to $counter
    $infoarr[$i][2] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $keyarr[$i] & '\Parameters\Tcpip', 'IPAddress')
    $infoarr[$i][3] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $keyarr[$i] & '\Parameters\Tcpip', 'SubnetMask')
    $infoarr[$i][4] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $keyarr[$i] & '\Parameters\Tcpip', 'EnableDHCP')
    $infoarr[$i][5] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $keyarr[$i] & '\Parameters\Tcpip', 'DhcpIPAddress')
    $infoarr[$i][6] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $keyarr[$i] & '\Parameters\Tcpip', 'DhcpSubnetMask')
    $infoarr[$i][7] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $keyarr[$i] & '\Parameters\Tcpip', 'DhcpDefaultGateway')
    $infoarr[$i][8] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $keyarr[$i] & '\Parameters\Tcpip', 'DhcpServer')
    Next

    ;Adapternamen auslesen
    $i = 1
    $short = 0
    While 1
    $tmp = RegEnumKey("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}",$i)
    If @error <> 0 then ExitLoop

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

    $tmp2 = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\" & $tmp, "NetCfgInstanceId")
    For $x = 1 To $counter

    ;Zugeordnete Verbindung auslesen
    $infoarr[$x][1] = RegRead('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\' & $keyarr[$x] & '\Connection', 'Name')

    If $tmp2 = $keyarr[$x] Then
    $infoarr[$x][0] = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\" & $tmp, "DriverDesc")
    $short = $short +1 ;gefundene Namen zählen
    EndIf
    Next

    If $short = $counter Then ExitLoop ;Alle Adapternamen gefunden

    $i = $i +1
    WEnd

    Return $infoarr
    EndFunc

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

    $test = _GetAllNetAdapterInfo()
    _ArrayDisplay($test)

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

    Exit

    [/autoit]

    Kritik und Verbesserungsvorschläge erwünscht ;)

  • Array deklarieren und initialisieren

    • Bitboy
    • 19. März 2009 um 06:48

    Wie wäre es dann mit der Funktion WinWait? Dabei wartet das Script bis das Fenster existiert. Dann wäre läuft es unabhängig von der Rechnergeschwindigkeit.

  • Fragen

    • Bitboy
    • 18. März 2009 um 19:45

    Dateiendung registrieren: [ offen ] Dateityp registrieren. =)?

  • hardware abfrage

    • Bitboy
    • 17. März 2009 um 19:57

    Im Schlüssel HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses\ solltest du fündig werden. Den genauen Schlüssel kannst du herausfinden indem du zum Beispiel mit regshot ein Registry Abbild erstellst, dann das gerät verbindest, ein 2. Abbild machst und beide vergleichen lässt.

  • UltraVNC Mirror Treiber

    • Bitboy
    • 17. März 2009 um 19:33

    Achso hab ich vergessen zu erwähnen, ich arbeite mit der aktuellen Version von UltraVNC also 1.0.5.3.
    Aus diesem Grund wollte ich den Installer für 1.0 auch nicht mehr verwenden.

    Werde wohl noch ein paar Run-Parameter versuchen.

    Eine Installation des Treibers mit dem kommandozeilentool devcon hat auch nicht funktioniert :(


    Edit:

    [autoit]

    Run( "C:\drivers\driver\xp\setupdrv.exe install", "C:\drivers\driver\xp\", @SW_SHOW)

    [/autoit]

    TADAAAAAA *sing*

    Großes Dankeschön, der Tipp mit dem WorkingDir war Gold Wert!

  • UltraVNC Mirror Treiber

    • Bitboy
    • 17. März 2009 um 18:26

    Nabend zusammen. Ich wollte mir eine Script für die Installation von UltraVNC zusammenbasteln.
    Scheitern tut es derzeit an dem Mirrortreiber.
    Immer kommt die Fehlermeldung "Driver installation failed"

    Habe bisher folgendes versucht:

    [autoit]


    Run("C:\drivers\driver\xp\setupdrv install")
    Run("C:\drivers\driver\xp\setupdrv.exe install")
    Run(FileGetShortName(@ComSpec & " /c " & 'C:\drivers\driver\xp\setupdrv install'), "", @SW_SHOW)
    Run(@ComSpec & " /c " & 'C:\drivers\driver\xp\setupdrv install', "", @SW_SHOW)
    Run("C:\drivers\driver\xp\install.bat")

    [/autoit]

    Dasselbe auch nochmal mit den Befehlen RunWait und Runas und Runaswait.

    Bin echt mit meinem Latein am Ende, gibt man den Befehl von Hand in die Konsole ein gehts, genau wie das starten über die bat-Datei.

    Hat jemand eine Idee?

  • Fragen

    • Bitboy
    • 16. März 2009 um 20:24

    Programme solltest du unter folgendem Regschlüssel eintragen können:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ (ungetestet)

    Dateiendungen kannst du unter HKEY_CLASSES_ROOT registrieren.

    Hab kein fertigen Code parat aber ich denke du kannst die Struktur von vorhandenen Schlüsseln einfach kopieren

  • variable Variable in INI schreiben

    • Bitboy
    • 4. März 2009 um 12:26

    irgendwie versteh ich das nicht so ganz. bei einer INI ist es afaik egal in welcher Reihenfolge die angaben drin stehen, der key muss nur eindeutig sein.

  • Brauche eine Funktion zum Auslesen des Handles der durch einen Prozess geöffneten Datei

    • Bitboy
    • 4. März 2009 um 12:18

    Ist dir denn der Pfad vorher bekannt in dem die Datei gespeichert wird?

    Dann könntest du vllt prüfen bei welcher Datei sich die Größe ändert.

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™