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

Beiträge von Andy

  • [UPDATE] FTP Client weitere hilfe

    • Andy
    • 11. Oktober 2009 um 19:58

    Ich mache es so, das je nach User bestimmte Rechte vergeben werden. Je mehr Rechte, je mehr ist erlaubt. So können sich User mit dem Namen "Anonym" und dem Passwort "Passwort" einloggen, bekommen aber nur einen bestimmten Ordner zu sehen mit einigen Files zum Download. Diese Anonymen dürfen auch nicht uploaden. So einen "Anonymous"-User kannst du auch in deinem Programm anlegen.
    Aber AutoBert hat vollkommen recht, NIEMALS darfst du deine eigenen Zugangsdaten weitergeben, bzw in einem Programm "verstecken". Wenn dein Server gekarpert und für illegale Transaktionen benutzt wird, geht die Staatsanwaltschaft davon aus, daß das mit deiner Zustimmung passiert!

  • In einem Spiel eine Nachricht optisch schön darstellen

    • Andy
    • 11. Oktober 2009 um 19:47

    genau wie bei vielen Videoplayern benutzen auch viele Spiele eigene Grafiktreiber bzw. sprechen die Grafikkarte direkt über den Treiber an. Daher hat Windows überhaupt keine Ahnung, was überhaupt vor sich geht. Dementsprechend wird alles, was in so ein "Fenster" per GDI+ geschrieben wird, bestenfalls mit dem nächsten Frame der Graka wieder überschrieben. Daher kann man auch im Vollbildmodus nicht einfach ein "normales Fenster" anzeigen.

  • AutoIt Script sich selbst finden (oder umbenennen?!?) + Auflösung erzwingen.

    • Andy
    • 11. Oktober 2009 um 18:20

    Hallo,
    zu 1.)
    a) Wenn du eine GUI verwendest, könntest du den Fenstertitel abfragen.
    b) Wenn das Programm gestartet wird, könntest du den Namen mit

    [autoit]

    @ScriptName

    [/autoit]

    abfragen und einfach wieder auf den "richtigen" Namen umkopieren und ggf das Script stoppen

    zu 2.)
    http://www.autoitscript.com/forum/index.php?showtopic=29170&hl=EnumDisplaySettings

    ciao
    Andy

  • In einem Spiel eine Nachricht optisch schön darstellen

    • Andy
    • 11. Oktober 2009 um 12:39

    Hallo,
    lies mal die Hilfe zu $tagRECT nach:
    Parameter:
    Left legt die X-Koordinate der oberen linken Ecke fest
    Top legt die Y-Koordinate der oberen linken Ecke fest
    Right legt die X-Koordinate der unteren rechten Ecke fest
    Bottom legt die Y-Koordinate der unteren rechten Ecke fest

    z.B.

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <FontConstants.au3>

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

    Global $tRECT, $hFont, $hOldFont, $hDC

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

    HotKeySet("{ESC}", "_Exit")

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

    $tRECT = DllStructCreate($tagRect)

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

    $hDC = _WinAPI_GetDC(0)
    $hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _
    $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
    $hOldFont = _WinAPI_SelectObject($hDC, $hFont)

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

    _WinAPI_SetTextColor($hDC, 0x0000FF)
    _WinAPI_SetBkColor($hDC, 0x000000)
    ; comment next line to get black background instead of transparent one
    _WinAPI_SetBkMode($hDC, $TRANSPARENT)

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

    While 1
    $pos=mousegetpos()
    DllStructSetData($tRECT, "Left", $pos[0])
    DllStructSetData($tRECT, "Top", $pos[1])
    DllStructSetData($tRECT, "Right", $pos[0]+250)
    DllStructSetData($tRECT, "Bottom", $pos[1]+50)

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


    _WinAPI_DrawText($hDC, "Hello world!", $tRECT, $DT_CENTER)
    Sleep(100)
    WEnd

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

    Func _Exit()
    _WinAPI_SelectObject($hDC, $hOldFont)
    _WinAPI_DeleteObject($hFont)
    _WinAPI_ReleaseDC(0, $hDC)
    _WinAPI_InvalidateRect(0, 0)
    $tRECT = 0
    Exit
    EndFunc ;==>_Exit

    [/autoit]
  • Portfreigabe am Router

    • Andy
    • 10. Oktober 2009 um 21:34

    Hallo,

    Zitat

    Nun das was ich nicht verstehe, nämlich wenn ich von meinem Rechner auf einen FTP-Server zugreife (z.B. den von AutoIt) muss ich ja keine Ports freischalten (an meinem Roiter) obwohl mein Rechner ja vom Server Daten empfängt

    Doch, du hast diese Ports "freigeschaltet", ansonsten würde dein Router schon die Anfrage nach "draussen" blockieren. Schau mal im Konfigurationsmenü deines Routers, dort sind idR. die Ports 80 für HTTP schon offen.
    Beispiele aus meinem Router, die Protokolle und die damit verbundenen Ports
    Virtual Server FTP TCP 21/21
    Virtual Server HTTP TCP 80/80
    Virtual Server HTTPS TCP 443/443
    Virtual Server DNS UDP 53/53
    Virtual Server SMTP TCP 25/25
    Virtual Server POP3 TCP 110/110
    Virtual Server Telnet TCP 23/23
    Weiterhin sind noch einige weitere Ports offen, 20 für FTP und noch einiges andere.

    Wenn du jetzt beispielsweise von dir aus eine Verbindung zu einem anderen Rechner im Internet über Http aufbauen möchtest, dann generiert dein Browser eine Anfrage über Port 80 nach "draussen". Wenn nun Firewall/Router ihr OK geben (Port freigegeben) kommt das Paket beim anderen Rechner (laufender Webserverdienst auf Port 34518 ) an und dort passiert folgendes:
    Das Paket "klopft" beim Router (Portier im Hotel) an: "Hi, eure (IP)Adresse hab ich gefunden, ich hab da eine Nachricht für einen Webserver im Zimmer(Port) 80, aber wie komme ich jetzt dahin?"
    Der Portier telefoniert mit Zimmer 80, daß allerdings der Browser gemietet hat. Browser:"Das Paket hab ich nicht bestellt, das kommt hier nicht rein!"
    Der Portier guckt nun in seiner Liste nach, er weiss, dass im Zimmer Nummer 80 der Http-Browser wohnt, aber der nimmt grundsätzlich nur Pakete entgegen, die er selbst angefordert hat!
    Was für ein Glück, der Portier hat in seinem Hotel einen speziellen Aufzug, mit dem er die (nicht angeforderten) Pakete für Zimmer 80 ans Zimmer 34518 "weiterleiten" kann. Im Zimmer 34581 wohnt der Webserver. Da steht jetzt das Paket vor der Tür vor einem wahren Schrank von Türsteher!
    Paket:"Hallo, der Portier (Router) hat mich hierher weitergeleitet, ich hab da ein Paket für den Webserver!"
    Türsteher:"Klasse, der wohnt hier, und Pakete wollen hier laufend rein, aber damit nicht jeder hier einfach so reinspazieren kann, bin ich hier! Wenn du hier rein willst, musst du erstmal sagen wie du heisst und auch das geheime Kennwort wissen!"
    Das Paket nennt Namen und Passwort, der Türsteher guckt auf seiner Liste nach, ob das Paket überhaupt bekannt ist und lässt das Paket rein.
    Der Webserver hat aber (üblicherweise) ziemlich viel Stress und schnauzt das Paket an:" Hier nimm den Expressaufzug direkt zurück wo du hergekommen bist und sag das nächste Paket kann kommen. Wenn ihr euch nicht beeilt, geb ich den Expressaufzug jemand anderem und ihr müsst wieder zum Portier, neu anmelden!". Das Paket rast zurück, kommt am heimischen Router an und schreit schon von weitem:"Hab Antwort vom Webserver, das nächste Paket soll kommen...." Der heimische Router wartet schon auf das Paket und lässt es sofort durch zum Browser ins Zimmer 80....

    In Wahrheit ist es noch viel komplizierter^^. Aber so ähnlich läuft es ab....

    Wenn nun im Hotel ein neuer Gast im Zimmer 2234 einzieht und einen FTP-Server betreiben will, dann meldet er das beim Portier und der guckt, ob irgend ein anderer Gast schon einen FTP-Server betreibt. Wenn nicht, dann weiss der Portier, das alle (nicht vom Zimmer 21 angeforderten) reinkommenden Pakete, die zu einem FTP-Server wollen, zum Zimmer 2234 weitergeleitet (geforwardet^^) werden müssen....das Zimmer 21 hat nämlich der Browser auch gemietet, so kann er mit diesem Absender seine FTP-Pakete an andere Rechner verschicken.

    Hoffentlich hab ich dich nicht zu sehr verwirrt^^

    ciao
    Andy

  • markaberes Problem mit Case

    • Andy
    • 10. Oktober 2009 um 20:24

    Hi;

    Zitat

    Wenn du GuiCtrlDelete aufrufst wird das Contrl gelöscht und die ControlID wieder neu vergeben

    Genau so ist es.
    @Reaker
    Jede Wette, ich halte dein Programm irgendwo an und frage dich dann, welche ConrolID welchem Button zugeordnet ist, das weiss zu dem Zeitpunkt weder du noch dein Script so genau.
    Was ich überhaupt nicht verstehe, warum du dieses Chaos überhaupt veranstaltest. GUI´s und Controls erstellen, und je nach Anforderung sichtbar/unsichtbar machen....

    Zitat

    naja was heißt chaos...das ist doch total übersichtlich...

    made my day^^ wenn das so übersichtlich ist, wieso findest du den Fehler dann nicht sofort?!
    ciao
    Andy

  • Aus verlinkten Bild, die Bild Url heraus filtern

    • Andy
    • 10. Oktober 2009 um 11:20

    Hallo,
    die "zu Fuß"-Lösung, es werden sich aber sicher noch einige RegEx´er melden^^

    Spoiler anzeigen
    [autoit]

    $text = FileRead("quelltext.txt") ;quelltext in variable
    $von = StringInStr($text, "name=""1993904065""") ;Position des Strings feststellen
    $src = StringInStr($text, "src=", 0, 1, $von)+4 ;ab name= die nächste Position NACH DEM src= finden (position hinter dem gleichheitszeichen)
    $ende_src = StringInStr($text, ">", 0, 1, $src) ;nächste Position des > finden
    $url = StringMid($text, $src , $ende_src - $src ) ;zwischen den beiden Positionen steht der gesuchte string
    MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$url' & @lf & @lf & 'Return:' & @lf & $url) ;### Debug MSGBOX

    [/autoit]


    Andy

  • [UPDATE] FTP Client weitere hilfe

    • Andy
    • 9. Oktober 2009 um 20:30

    Hallo erstmal,

    Zitat

    Mit der Board Suche habe ich leider nix passendes gefunden

    Ja, die Boardsuche ist echt übel, aber schau mal dieses Script könnte dir da weiterhelfen. Oder du suchst "von Hand" per google nur auf https://autoit.de/www.autoit.de.
    Zu deiner Frage, es gibt MASSIG Scripte, die einen FTP-client beinhalten, da wäre es sicher einfacher ein schon geschriebenes Script anzupassen.

    Zitat

    Gibt es generell ein Tutorial oder einen Ansatz um einen FTP Clienten zu erstellen

    In der Hilfe findest du unter dem Stichwort FTP nicht viel, aber in der FTP_EX.au3 UDF sind eigentlich alle Funktionen enthalten.

    ciao
    Andy

  • menüpunkt über systray auswählen

    • Andy
    • 9. Oktober 2009 um 20:12

    Hallo,
    wenn du das Update "von Hand" starten kannst aber nicht automatisch, dann ist etwas faul....
    Rechtsklick auf das Traysymbol, Antivir Konfigurieren, dann Expertenmodus anhaken, in der Liste auf Allgemeines, dann Update, dort den obersten Radiobutton (Automatische Updates) aktivieren. OK drücken, fettich...

    Wenn du die kostenlose Version verwendest, nervt es weniger, wenn man mit einem AutoIt-Script das nach jedem Update erscheinende Fenster automatisch wegklickt. Die exe in den Autostartordner schieben, fertig....

    Spoiler anzeigen
    [autoit]

    while 1
    sleep (1000)
    if winexists("Notifier von Avira AntiVir Personal - Free Antivirus") Then
    controlclick("Notifier von Avira AntiVir Personal - Free Antivirus","","[CLASS:Button; INSTANCE:1]")
    endif
    wend

    [/autoit]
  • brauche regex hilfe

    • Andy
    • 9. Oktober 2009 um 15:57

    Hi,

    Zitat

    wozu ist "UBound" habe in der Hilfedatei geschaut aber ich versteh das nicht so recht...


    UBound gibt dir die Grösse der Dimension eines Arrays zurück....allerdings ist diese Grösse der Dimension nicht immer schon vorher festgelegt!

    Du dimensionierst in der Regel ein Array VOR der Verwendung mit z.B

    [autoit]

    DIM $aArray[10] ;Achtung Nullbasiert! $aArray[0] bis $aArray[9]

    [/autoit]


    Allerdings kann es auch vorkommen, daß dir eine Funktion ein Array zurückgibt von dem du die Dimensionen garnicht wissen kannst. Um nicht auf ungültige Indizes im Array zuzugreifen, bestimmst du die "Obergrenze" mittels Ubound.
    Allerdings lauert dort ein Stolperstein, denn Ubound gibt dir die Größe der Dimension, d.h. die Anzahl der Array-Items.
    Im oben genannten Beispiel mit DIM $aArray[10] wird Ubound($aArray) also 10 sein...
    Das führt bei folgendenm Script zum Fehler:

    [autoit]

    DIM $aArray[10] ;Achtung Nullbasiert! $aArray[0] bis $aArray[9]
    For $i= 1 to ubound($aArray)
    $aArray[$i]=$i
    next

    [/autoit]


    %i zählt von 1 bis 10, allerdings ist das Array dimensioniert von 0 bis 9!!!!!
    Daher immer nur bis Ubound()-1 Zählen!

    [autoit]

    DIM $aArray[10] ;Achtung Nullbasiert! $aArray[0] bis $aArray[9]
    For $i= 0 to ubound($aArray)-1 ; das "nullte" Item soll auch verwendet werden, also von 0 bis 9
    $aArray[$i]=$i
    next

    [/autoit]
  • Ordner öfnnen / Dateien suchen / umbenennen / eigenschaften ändern / kopieren / erflogreich kopiert dann löschen

    • Andy
    • 9. Oktober 2009 um 09:25

    Hi,
    eine gute Idee ist es, nicht jedesmal das Rad neu erfinden zu wollen.
    Für die rekursive Dateisuche gibt es schon schnelle Möglichkeiten fix und fertig, z.B. die von Oscar hier
    Ansonsten würde ich mir mal an deiner Stelle an einem gemütlichen Wochenende die AutoIt-Hilfe zur Brust nehmen und dort einfach mal gucken was es alles für Möglichkeiten gibt!
    Da aber zu allen deinen Themen schon haufenweise Seiten in der Suche gelistet werden, klinke ich mich ab hier aus.
    ciao
    Andy

  • Ordner öfnnen / Dateien suchen / umbenennen / eigenschaften ändern / kopieren / erflogreich kopiert dann löschen

    • Andy
    • 9. Oktober 2009 um 08:35

    Ja.

  • brauche regex hilfe

    • Andy
    • 8. Oktober 2009 um 16:15

    Ich habe das so verstanden, daß er den Bereich im String sucht, bei dem eine IP_Adresse gefolgt von einem Leerzeichen, einem Querstrich, einem Leerzeichen und einer weiteren IP-Adresse matcht.....

  • Glücksspiel

    • Andy
    • 8. Oktober 2009 um 16:13
    Zitat

    erstaunlich ist, das das guthaben ständig wie in dem vid erklärt steigt.
    Jedoch senkt sich die begeisterung wieder wenn man sieht, um 150 % des guthabens zu erlangen muss man um die 2000 mal spielen

    ...das ist nicht erstaunlich, das ist Mathematik^^
    Überhaupt nicht erstaunlich ist es, daß man nach dieser Methode SICHER IMMER VERLIERT, was dein Programm ja auch "nachweist" da man irgendwann (logischerweise) pleite ist ;)
    Der Link zu Youtube führt zu einem "Werbevideo" eines Spielcasinos, denn die erste Regel im Casino lautet: "Die Bank gewinnt IMMER!"

    Falls jemand denkt, man muss nur niedrig genug setzen....ich habe das Script mal dahingehend abgeändert.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Simulator", 224, 128, 200, 168)
    $Label1 = GUICtrlCreateLabel("Guthaben:", 24, 24, 54, 17)
    $Label2 = GUICtrlCreateLabel("1000", 80, 24, 106, 17)
    $Label3 = GUICtrlCreateLabel("Spiele:", 24, 48, 36, 17)
    $Label4 = GUICtrlCreateLabel("0", 80, 48, 106, 17)
    $Button1 = GUICtrlCreateButton("Pause", 8, 88, 75, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Start", 88, 88, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $go = 0
    $einsatz = 1
    $guthaben = 1000
    $spiele = 0

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $go = 0
    Case $Button2
    _get()
    $promille=number(inputbox("Casino","Wieviel Promille deines Kapitals sollen gesetzt werden?","1"))
    $einsatz = $promille/1000*$guthaben
    $go = 1
    EndSwitch
    If $go = 1 Then
    $spiele += 1
    $guthaben -= $einsatz
    _get()
    If Random(1, 2, 1) = 1 Then
    $guthaben += $einsatz * 2
    $einsatz = $promille/1000*$guthaben
    _get()
    Else
    $einsatz *= 2
    _get()
    EndIf
    If $guthaben < 1 Then
    MsgBox(0, "Pleite", "Du bist Pleite")
    $guthaben=1000
    $spiele=0
    $go = 0
    EndIf

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

    EndIf
    WEnd

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

    Func _get()
    GUICtrlSetData($Label2, $guthaben)
    GUICtrlSetData($Label4, $spiele)
    EndFunc ;==>_get

    [/autoit]

    Je niedriger der Einsatz, desto länger dauert es, bis man verliert.....

  • statursbar ico

    • Andy
    • 8. Oktober 2009 um 15:12
    [autoit]

    $icon=GUICtrlCreateicon("icon0002.ico",-1,1,1,20,20)
    $iconhandle=GUICtrlGetHandle($icon)
    _GUICtrlStatusBar_EmbedControl($gui030002, 0, $iconhandle,4)

    [/autoit]
  • TCPConnect bremst Message-Routine aus

    • Andy
    • 8. Oktober 2009 um 13:53

    Hi,
    ich habe kein Problem mit dem Programm. Sofort nach dem Drücken des Buttons ist er wieder weg.....
    Wenn es bei dir "hängt" dann liegt es m.E. am Connect....
    ciao
    Andy

    /*EDIT*/ ggf hilft dir dieser Thread auch nicht weiter, aber es erklärt die (nicht vermeidbare) Wartezeit

  • Skript performanter gestalten

    • Andy
    • 8. Oktober 2009 um 12:48
    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    Local $msg, $Input1, $Input2, $Beenden
    local $lan_IP="nicht feststellbar"
    local $wlan_IP="nicht feststellbar"

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

    dim $a[1][1]

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

    #Region ### START Koda GUI section ### Form=
    GUICreate("Form1", 263, 187, 390, 114)

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

    $a = _GetAllNetAdapterInfo() ;alle Adapterinfos aus der Registry auslesen und in ein Array schreiben
    if not isarray($a) Then ; wenn es keine Netzwerkadapter gibt, programm beenden
    msgbox(1,"Fehler", "Es können keine Netzwerkadapter festgestellt werden!"&@crlf&"Programm wird beendet!")
    Exit
    endif

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

    _ArrayDisplay($a) ;auskommentieren wenn nicht benötigt!

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

    For $i =1 to $a[0][0] ;alle adapter durchsuchen
    if $a[$i][1]="LAN-Verbindung" then $lan_IP=$a[$i][5] ;wenn in der 2. Spalte der String "LAN-Verbindung" vorkommt, dann die 5. Spalte merken
    if $a[$i][1]="Drahtlose Netzwerkverbindung" then $wlan_IP=$a[$i][5] ;wenn in der 2. Spalte der String "Drahtlose Netzwerkverbindung" vorkommt, dann die 5. Spalte merken
    next

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

    $Input1 = GUICtrlCreateInput($lan_IP, 112, 28, 105, 21) ;hier die gedfundene IP eintragen
    $Input2 = GUICtrlCreateInput($wlan_IP, 112, 69, 105, 21) ;hier die gedfundene IP eintragen
    GUICtrlCreateLabel("LAN IP Adresse", 16, 32, 79, 17)
    GUICtrlCreateLabel("WLAN IP Adresse", 16, 72, 90, 17)
    $Beenden = GUICtrlCreateButton("Beenden", 40, 120, 177, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $Beenden
    ExitLoop
    EndSelect

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

    WEnd

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

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

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

    Func _GetAllNetAdapterInfo()
    Local $infoarr[1][9], $keyarr[1], $i = 0, $x = 0, $counter = 0, $tmp, $tmp2, $short

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

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

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

    ;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

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

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

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

    ;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

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

    ;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

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

    ;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

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

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

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

    $i = $i + 1
    WEnd

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

    Return $infoarr
    EndFunc ;==>_GetAllNetAdapterInfo

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

    Func GetIP($AdapterName)
    Local $objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2'), $Output = 0
    Local $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    Local $colItems2 = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration', 'WQL', 0x30)
    If IsObj($colItems2) Then
    For $objItem2 In $colItems2
    If $objItem.Caption = $objItem2.Caption Then
    If $objItem.NetConnectionID = $AdapterName Then
    $Output = $objItem2.IPAddress(0)
    EndIf
    EndIf
    Next
    EndIf
    Next
    EndIf
    Return $Output
    EndFunc ;==>GetIP

    [/autoit]

    hab dein script mal "Chefkompatibel" umgebaut :)

    */EDIT/* Adapter genauer spezifiziert....

  • Aktion bei Button Click

    • Andy
    • 8. Oktober 2009 um 12:39
    Zitat

    Ich bekomm zwar Infos über den Button aber leider nicht welche Funktion er ausführt...

    :)
    ...DAS wäre auch schön :D:D:D
    Aber Spass beiseite, wenn du die "richtigen" Informationen zu diesem Button hast, dann kannst du ihn aus deinem Script z.B. mit

    [autoit]

    controlclick()

    [/autoit]

    ansprechen. Das funktioniert auch, wenn das Fenster mit dem Button "unsichtbar" ist.

  • Button drücken

    • Andy
    • 7. Oktober 2009 um 20:17

    Hi, wenn du sowieso abfragst....aus der Hilfe.....

    [autoit]

    If FileExists("C:\autoexec.bat") Then ; existiert....
    MsgBox(4096, "Datei C:\autoexec.bat", "Existiert")
    Else ; ansonsten
    MsgBox(4096,"Datei C:\autoexec.bat", "existiert NICHT")
    EndIf

    [/autoit]


    ...und wenn man absolut ANGST vor Operatoren hat (oder keine Ahnung vom negieren von Wahrheitswerten)....

    [autoit]

    If FileExists("C:\autoexec11.bat") Then ; existiert....
    ; man darf auch mal NIX machen....
    Else ; ansonsten
    MsgBox(4096,"Datei C:\autoexec11.bat", "existiert NICHT")
    EndIf

    [/autoit]
  • Button drücken

    • Andy
    • 7. Oktober 2009 um 19:16
    Zitat

    Die Kugel sagt mir

    Meine sagt nix, wird am vernachlässigten Polieren liegen...
    Und meine interne Software Brain1.0 meldet nur ein "Nicht genug Informationen um eine eindeutige Hilfe zu geben!"
    ...werde mal auf 2.0 upgraden müssen....

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™