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

Beiträge von ytwinky

  • Gesamten Script als Admin Ausführen

    • ytwinky
    • 13. September 2012 um 16:22

    Hi McRau,
    meinst du vllt so etwas?

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;<AutoItScript>
    Opt('MustDeclareVars', 1) ;0=no, 1=require pre-declare
    ;+----------------------------------------------------------------------------+
    ;| Header: Bestimmen der Übergabeparameter |
    ;| ( Alles Strings(!!!), bis auf ArgC ) |
    ;| FontAnzeigeCheck: |Il1 sind Alt-0124, Großes i, Kleines L, Eins |
    Const $Author='LogInAdmin.au3 ©2012 by ytwinky, MD'; |
    ;| EMail: [email='PIII1kSystem-AutoIt3Forum@yahoo.de'][/email] |
    ;| AutoIt3-Version: aktuelle beta |
    ;| Editor: SciTE aktuelle Version, feste Schriftart |
    ;| (Tastenkombination: keine) |
    ;| Zweck : als Admin einloggen |
    ;| Tab auf 2 setzen wg. Lesbarkeit |
    ;+----------------------------------------------------------------------------+
    Const $RegKey='HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\'
    Const $Usr='DefaultUserName', $Kw='DefaultPassword', $NurNetzAuth=2, $MBYes=6, $Esc=27
    Dim $RegUsr='Admin', $RegKw, $s=''
    If Not IsAdmin() Then
    RunAs('Admin', @Computername,'Admin-Kennwort', $NurNetzAuth, @ScriptFullPath, @SystemDir, Default)
    Else
    If $CmdLine[0]>0 Then $RegUsr=$CmdLine[1]
    $RegKw='Admin-Kennwort'
    If Msg('Nächster Benutzer wird ' &$RegUsr, @UserName &' abmelden..', 36)<>$MBYes Then Exit $Esc
    RegWrite($RegKey, $Usr, 'REG_SZ', $RegUsr)
    RegWrite($RegKey, $Kw, 'REG_SZ', $RegKw)
    ShutDown(0) ; so, jetzt noch abmelden --> zum neuen User..
    Msg('Wie konnte das passieren?', 'Ooops..', 64)
    EndIf

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

    Func Msg($What, $Title=$Author, $Icons=0, $ErrLevel=0)
    Local $RetWert=MsgBox($Icons, $Title, $What)
    If $ErrLevel Then Exit $ErrLevel
    Return $RetWert
    EndFunc
    ;</AutoItScript>

    [/autoit]

    Wenn es auf Anhieb nicht funktioniert, mußt du evtl. etwas nachdenken und in der Hilfe blättern..
    Das Script stattet sich selbst mit Adminrechten aus, vorausgesetzt, du gibst zulässige Daten ein..
    Ich selber benutze die Registry als Paßwortspeicher, allerdings unverschlüsselt, deshalb habe ich die betreffenden Teile aus dem Script entfernt, ich hoffe, es dient nicht nur als Studierobjekt und kann dir weiterhelfen..
    Gruß
    ytwinky
    P.S.
    Bedenke, daß kompilierte Skripte wie externe Kommandos behandelt werden..
    (Aber auch, um herauszufinden, ob ein Script kompiliert ist, bietet AutoIt eine Funktion)
    ..viel Spaß beim Stöbern^^

  • Beste Programmiersprache um DLLs zu erstellen

    • ytwinky
    • 18. August 2012 um 23:02

    Hi,

    Zitat von Andy

    Freebasic ist relativ einfach, Eukalyptus hat damit schon einige feine Dll´s erstellt.

    da kann ich natürlich nur zustimmen ^^
    Wer sich da mal etwas einlesen möchte: http://www.freebasic-portal.de/tutorials/dll-…eebasic-24.html
    (Allerdings muß ich zugeben, daß ich das Tut für FreeBasic-Benutzer geschrieben habe..)
    Gruß
    ytwinky

  • Error bei Letzter Zeile der For Schleife

    • ytwinky
    • 11. Juli 2012 um 16:46

    Hi,
    vllt. hilft dir folgendes Schnipsel bei der Fehlersuche ;)

    Spoiler anzeigen
    [autoit]

    $s='Eins|Zwei|Drei'
    $Array=StringSplit($s, '|')
    $Prt='$s:' &$s &@CRLF &'$Array[0]=' &$Array[0] &@CRLF
    For $i=1 To $Array[0]
    $Prt &= $Array[$i] &@CRLF
    Next
    MsgBox(0, '', $Prt)

    [/autoit]

    Es ist sehr praktisch immer die (deutsche) Hilfe parat zu haben..
    Gruß
    ytwinky

  • Osterformel nach Lichtenberg

    • ytwinky
    • 27. April 2012 um 21:18

    Hi,
    das ist nicht wirklich ein Doppelpost ;)
    Nachdem ich jetzt(mit FreeBasic) die Formeln von (Gauss,) Lichtenberg und Oudin verglichen habe, kann ich mit Bestimmtheit sagen:
    Die Formel von Gauss ist nicht für die Berechnung von Osterdaten geeignet :D
    Die beiden anderen liefern fehlerfrei die richtigen Osterdaten, wobei der Algo von Oudin nur marginal schneller ist als der von Lichtenberg(der schnellste ist der von Gauss, allerdings mit der 'Einschränkung', daß er nicht fehlerfrei ist :rofl: )

    Spoiler anzeigen
    [autoit]

    ; #FUNCTION# ;===============================================================================
    ;
    ; Name...........: Easterformula of Oudin
    ; Description ...: Evaluates eastersunday of a given year
    ; AutoIt Version : V3.3.8.1
    ; Syntax.........: Oudin($Year)
    ; Parameters ....: $Year - Year as Integer
    ; Return values .: Success - Returns : The date od EasterSunday
    ; Author ........: ytwinky
    ;
    Local $y=1981; try also 1954: April, 18; the Gaussian formula returns different values in these years..
    Do
    $y=InputBox('EasterDate(Oudin-Version)', 'Eastersunday ' &$y &': ' & Oudin($y) &@CrLf &'Which year now:', '', '', 200, 120)
    Until $y=0

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

    Func Oudin($Y); Algorithm of Oudin modified by ytwinky, no need to say:still working ;)
    ;in my first try to port this from FreeBasic to AutoIt I used Round() instead of Int(); guess which one is right^^
    ;in my tests with FreeBasic Oudin seems to be a little bit faster than Lichtenberg..
    Local $G=$Y-19*Int($Y/19), $C=Int($Y/100), $C4=$C-Int($C/4), $E=Int((8*$C+13)/25), $H, $K, $PQ, $I, $B, $J1, $OS
    $H=19*$G+$C4-$E+15-30*Int((19*$G+$C4-$E+15)/30)
    $K=Int($H/28)
    $PQ=Int(29/($H+1))*Int((21-$G)/11)
    $I=($K*$PQ-1)*$K+$H
    $J1=$Y+Int($Y/4)+$I+2-$C4
    $OS=28+$I-($J1-7*Int($J1/7))
    If $OS<32 Then Return 'March, ' &$OS
    Return 'April, '&($OS-31)
    EndFunc ;xmas may come..

    [/autoit]

    Ich habe das Programm in Englisch geschrieben, aber es dürfte auch für weniger Geübte nicht schwer sein, eine deutsche Version davon zu erstellen..
    Viel Spaß beim Vergleichen der Ergebnisse
    Gruß
    ytwinky

  • Array optimieren

    • ytwinky
    • 27. April 2012 um 21:05

    nur ein Hinweis für Hauke Standart :rofl:
    Gruß
    ytwinky

  • Ausgabe der DOS-Box auslesen

    • ytwinky
    • 25. April 2012 um 15:18

    Rückmeldung ist prima, leider unvollständig.. ;)
    Oben habe ich 2 Umleitungen angegeben, welche funktioniert denn nun?
    .. >vpncli.prt
    oder
    .. 2>&1 vpncli.prt
    Wenn das Umleiten in eine Datei klappt, sollteste aber die Ausgabe auch ohne Umweg einlesen können,
    doch das nur so am Rande..
    Gruß
    ytwinky

  • Osterformel nach Lichtenberg

    • ytwinky
    • 25. April 2012 um 15:03
    Zitat von chip

    fragt mich nicht wozu man das brauchen kann XD


    Das ist gaaaanz wichtig für Handel und Hersteller: So läßt sich ganz genau bestimmen, wann Werbung von Weihnachten auf Ostern umgestellt werden muß..
    ..und was noch wichtiger ist: wann die Produzenten die Osterhasenformen gegen die Weihnachtsmannformen austauschen müssen..
    Außerdem läßt sich damit ausrechnen, wieviel Tage zwischen Ostern und Weihnachten liegen (oder umgekehrt, je nach Schokoladenabhängigkeitsgrad) ^^
    Denn ersthaft: alle beweglichen Feiertage hängen von Ostern ab, doch das weiß ja jeder, der Wikipedia kennt..
    (Link für die Anderen: https://autoit.de/www.gidf.de)
    ..warum Weihnachten sich dieser Formel entzieht, weiß ich auch nicht :rofl:
    Ich kann die Formel gebrauchen, um sie mit der Formel nach Gauß zu vergleichen(Geschwindigkeitstechnisch gesehen..)
    (Außerdem habe ich noch eine Formel, Algorithmus von Oudin, der auch noch in den Vergleich einfließen könnte)
    Gruß
    ytwinky

  • Ausgabe der DOS-Box auslesen

    • ytwinky
    • 22. April 2012 um 17:57

    Hi,
    schreib die Ausgabe doch einfach mal in eine Datei..
    Konsolenfenster öffnen(wie auch immer..) und folgenden Befehl eingeben:

    [autoit]

    C:\Programme\Cisco\Cisco AnyConnect VPN Client\vpncli.exe >vpncli.prt

    [/autoit]


    Wenn es dann eine .Prt-Datei gibt, lass sie dir anzeigen mit: Type vpcli.prt
    Sollte es die Datei nicht geben oder sie die Größe 0 haben haste noch ne andere Chance:
    Konsolenfenster öffnen(wie auch immer..) und folgenden Befehl eingeben:

    [autoit]

    C:\Programme\Cisco\Cisco AnyConnect VPN Client\vpncli.exe 2>&1 vpncli.prt

    [/autoit]


    Damit wird der Error-Kanal auf den normalen Ausgabekanal umgeleitet..
    Hat die Datei dann immer noch die Größe 0, haste das Problem gelöst..
    ..es geht nicht..
    Anderenfalls kannste die Datei einlesen und gut is..
    Gruß
    ytwinky

  • WMI-Problem(mit der aktuellen Beta)

    • ytwinky
    • 12. April 2012 um 23:38
    Zitat von AspirinJunkie

    Die Begründung kenne ich nicht aber die Lösung. ;)

    Na super, darauf wäre ich nie gekommen, dankeschön ;)
    Ich weiß, daß es zu Problemen kommen kann, wenn ich aus einer With-Geschichte rausspringe und dann hinterher die Funktion nochmal aufrufe,
    aber so einfach hatte ich mir die Lösung meines Problems nicht vorgestellt..
    Aber das ändert ja nix am grundsätzlichen 'Fehler'..
    Hatte ich erwähnt, daß das Script jetzt in beiden Versionen läuft? :rofl:
    Gruß
    ytwinky

  • GetLwW-alle Laufwerke mit Anschluß anzeigen..

    • ytwinky
    • 12. April 2012 um 20:21

    Sieht ja schmuck aus, vielen Dank L3viathan ^^
    Ich vermute mal, das das Programm mindestens ein optisches Laufwerk und eine Festplatte nicht richtig erkannt hat..
    naja, schaunwer mal..
    Gruß
    ytwinky

  • WMI-Problem(mit der aktuellen Beta)

    • ytwinky
    • 12. April 2012 um 20:05

    Hi,
    folgendes Script läuft unter der aktuellen Stable-Version, soweit so gut..

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstants.au3>
    #include <EditConstants.au3>
    Global $strComputer=@ComputerName, $Zeichenhoehe=14, $GUIBreite=635
    Global $i=0, $Index, $s=_GetMacs(False)
    If $CmdLine[0]>0 Then $strComputer=$cmdLine[1]
    #Region ### START Koda GUI section ### Form=D:\Sprachen\AutoIt3\Au3\kxf\GetMac.kxf
    $AdapterAnzahl=$i
    $EditHoehe=$Zeichenhoehe*$AdapterAnzahl
    $GetMac=GUICreate('GetMacsW', $GUIBreite, $EditHoehe+24, 303, 250)
    $lbTitel=GUICtrlCreateLabel('MacAdressen am ' &$strComputer, 2, 0, $GUIBreite-83, 17)
    GUICtrlSetFont(-1, 9, 800, 0, 'Arial')
    GUICtrlSetTip(-1, 'GetMacsW.au3 ©2012 by ytwinky, MD')
    $cbxIPenabled = GUICtrlCreateCheckbox('IP enabled', $GUIBreite-72, -2, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $grpMain=GUICtrlCreateGroup('', 0, 10, $GUIBreite-1, $EditHoehe+14)
    $efMac=GUICtrlCreateEdit('', 4, 20, $GUIBreite-8, $EditHoehe, BitOr($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_ReadOnly))
    GUICtrlSetFont(-1, 9, 400, 0, 'Lucida Console')
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlCreateGroup('', -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    $s=_GetMacs(True)
    GUICtrlSetData($efMac, StringLeft($s,StringLen($s)))
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cbxIPenabled
    GUICtrlSetData($efMac, _GetMacs(BitAnd(GUICtrlRead($cbxIPenabled), $GUI_Checked)))
    EndSwitch
    WEnd

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

    Func _GetMacs($Bed=True)
    Local $wbemFlagReturnImmediately=0x10, $wbemFlagForwardOnly=0x20, $wbemFlags=$wbemFlagReturnImmediately+$wbemFlagForwardOnly
    Local $Items, $Item, $s='Keine WMI-Objekte gefunden für Klasse: Win32_NetworkAdapterConfiguration'
    If $Bed Then
    $Bed=' Where IpEnabled=True'
    Else
    $Bed=''
    EndIf
    $oWMISvc=ObjGet('winmgmts:\\' &$strComputer &'\root\cimv2')
    If IsObj($oWMISvc) Then
    $Items=$oWMISvc.ExecQuery('Select Index,IPAddress,MACAddress,Caption From Win32_NetworkAdapterConfiguration' &$Bed, 'wql', $wbemFlags)
    If IsObj($Items) Then
    $s=StringFormat('%5s%16s %s ', 'Index', 'IP-Adresse', 'MAC-Adresse') &' Beschreibung'
    For $Item In $Items
    With $Item
    $Index=.Index
    If .IPAddress(0)=@IPAddress1 Then $Index='*' &$Index
    $s&=StringFormat('\r\n%5s%16s%18s', $Index, .IPAddress(0), .MACAddress) &StringMid(.Caption, StringInstr(.Caption, ']')+1)
    $i+=1
    EndWith
    Next
    EndIf
    EndIf
    Return $s
    EndFunc

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


    Da ich aber gem. Sig immer die aktuelle Beta (auch) benutze, mußte ich gerade feststellen: Da stimmt was nicht!
    Habe ich einen Denkfehler und sehe den Fehler nicht? Oder hat die Beta einen Fehler?
    Im Klartext: Die aktuelle Stable zeigt die Mac-Adressen an, die aktuelle Beta dagegen nicht..
    Gruß
    ytwinky

  • GetLwW-alle Laufwerke mit Anschluß anzeigen..

    • ytwinky
    • 12. April 2012 um 11:59

    Hi,
    ja, mein Rechner hat noch IDE-Anschlüsse aber auch schon USB 2.0..
    Da ich mehrere Partitionen habe..
    Ach ist ja auch egal..

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon ;ohne SysTray-Icon, hängende Prozesse mit TaskMan beenden
    #include <EditConstants.au3>
    #include <ListViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;<AutoItScript>
    Opt('MustDeclareVars', 1) ;0=ohne, 1=erfordert Variablen-Deklaration
    ;+----------------------------------------------------------------------------+
    ;| Header: Bestimmen der Übergabeparameter |
    ;| ( Alles Strings(!!!), bis auf ArgC ) |
    ;| FontAnzeigeCheck: |Il1 sind Alt-0124, Großes i, Kleines L, Eins |
    Const $Autor='GetLwW.au3 ©2012 by ytwinky, MD'; |
    ;| EMail: [email='PIII1kSystem-AutoIt3Forum@yahoo.de'][/email] |
    ;| AutoIt3-Version: aktuelle beta |
    ;| Editor: SciTE aktuelle Version, feste Schriftart |
    ;| Zweck : Laufwerke mit Anschlußtyp anzeigen(nur Laufwerke mit Buchstaben)|
    ;| Tab auf 2 setzen wg. Lesbarkeit |
    ;+----------------------------------------------------------------------------+
    Const $UnGerade[2]=[0xFFFFFF, 0xD2F6CC], $wbemFlagReturnImmediately=0x10, $wbemFlagForwardOnly=0x20, $wbemFlags=0x10+0x20
    Const $btnCaption[2]=['Typ-Legende', 'Keine Legende'], $IniDatei=StringLeft(@ScriptFullPath, StringLen(@ScriptFullPath)-3) &'Ini'
    Const $GUIBreite=717, $GUIHoehe=455, $GUILeft=350, $GUITop=200, $MaxUsbLw=50, $MaxLw=27
    Const $fmt=StringFormat('%4s|%4s|%3s|%7s|%8s|%4s|%12s|%15s|%-15s|%-15s|%-20s', '', '', '', '', '', '', '', '', '', '', '')
    Global $USBLw[$MaxUsbLw+1], $LwIndex[$MaxLw], $WmiSvc, $strComputer=@ComputerName, $LwZeile[$MaxLw+1], $u, $CurPos, $StartLw, $CurLw
    Local $i, $s, $t, $f, $dt[2]=['DD', 'UD'], $Items, $Item, $m, $Lw, $n, $l, $GesKapaz, $GesFrei
    Global $ShowTyp=GUICreate('Typ-Legende', $GUILeft-102, $GUIHoehe, $GUILeft-254, $GUITop), $ChkStatus=IniRead($IniDatei, 'Config', 'ShowHelp', $GUI_Checked)
    Global $LwAStatus=IniRead($IniDatei, 'Config', 'ShowLwA', $GUI_Checked), $LwBStatus=IniRead($IniDatei, 'Config', 'ShowLwB', $GUI_UnChecked)
    GUICtrlCreateGroup('', 1, -4, $GUILeft-104, $GUIHoehe+4)
    $l='DD=DisketteDrive(Diskette 3,5"/5,25")' &@CrLf
    $l&='FD=FloppyDrive(Diskette 3,5"/5,25")' &@CrLf
    $l&='HD=Festplatte(HardDisk)' &@CrLf
    $l&='ND=NetzLaufwerk(NetDrive)' &@CrLf
    $l&='OD=Optisches Laufwerk(Optical Disk, CD/DVD)' &@CrLf
    $l&='RD=RAM-Disk' &@CrLf
    $l&='UD=USB Drive(Sticks/Karten)' &@CrLf
    $l&='UFD=USB-FloppyDrive' &@CrLf
    $l&='UHD=(externe) USB-Festplatten' &@CrLf
    $l&='ULw=USB-Laufwerk(Sticks/Karten)' &@CrLf
    $l&='UOD=optisches USB-Laufwerk' &@CrLf
    $l&='nv=nicht verfügbar' &@CrLf
    $l&='Disketten und CD/DVD zählen nicht zur Summe..' &@CrLf
    $l&='..Netzlaufwerke auch nicht!' &@CrLf
    Global $efTyp=GUICtrlCreateEdit($l &'[] ist das Gauss''sche Summensymbol' &@CrLf &' (in case you didn''t know..)', 4, 4, $GUILeft-110, $GUIHoehe-7, $ES_READONLY)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    GUICtrlCreateGroup('', -99, -99, 1, 1)
    If BitAnd($ChkStatus, $GUI_Checked) Then GUISetState(@SW_SHOW)
    Global $ShowLw=GUICreate('GetLwW', $GUIBreite, $GUIHoehe, $GUILeft, $GUITop)
    Global $lbTitel=GUICtrlCreateLabel('Laufwerke von ' &$strComputer, 0, -2, 439, 24)
    GUICtrlSetFont(-1, 18, 800, 0, 'Arial')
    GUICtrlSetColor(-1, 0x000080)
    GUICtrlSetTip(-1, $Autor)
    Global $btnF5=GUICtrlCreateButton('F5', 482, 1, 27, 25)
    GUICtrlSetFont(-1, 8, 800, 0, 'MS Sans Serif')
    GUICtrlSetColor(-1, 0x008000)
    GUICtrlSetTip(-1, 'aktualisieren..')
    Global $cbxLwA=GUICtrlCreateCheckbox('A: ausblenden', 531, 4, 90, 17)
    GUICtrlSetState(-1, $LwAStatus)
    Global $cbxLwB=GUICtrlCreateCheckbox('B: ausblenden', 622, 4, 90, 17)
    GUICtrlSetState(-1, $LwBStatus)
    Global $lvLwAdr=GUICtrlCreateListView(StringFormat('%4s|%4s|%3s|%7s|%8s|%4s|%17s|%18s|%11s|%17s|%-20s', 'lfd.', 'Lw', 'DNr', 'Typ', 'FS ', 'bereit', 'Total[MB]', 'Frei[MB]', 'Frei[%]', 'belegt[MB]', 'Bezeichnung'), 0, 26, $GUIBreite-1, $GUIHoehe-53, default, $LVS_EX_GRIDLINES)
    For $i=1 To 27
    $LwZeile[$i]=GUICtrlCreateListViewItem($fmt, $lvLwAdr)
    GUICtrlSetFont(-1, 9, 400, 0, 'Lucida Console')
    Next
    Global $btnTyp=GUICtrlCreateButton($btnCaption[BitAnd($ChkStatus, $GUI_Checked)], 2, $GUIHoehe-26, 93, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, 'MS Sans Serif')
    Global $lblBusy=GUICtrlCreateLabel('*busy*', 300, $GUIHoehe-22, 80, 24)
    GUICtrlSetFont(-1, 8, 800, 0, 'MS Sans Serif')
    GUICtrlSetColor(-1, 0xE00000)
    GUICtrlSetState(-1, $GUI_Hide)
    Global $cbxLegStart=GUICtrlCreateCheckbox('Legende beim Start anzeigen', 100, $GUIHoehe-22, 190, 17)
    GUICtrlSetState(-1, $ChkStatus)
    GUICtrlSetTip(-1, 'legt im Dateiverzeichnis eine IniDatei an..' &@CrLf &'(braucht dort also Schreibrechte!)')
    GetLW()
    Global $btnQuit=GUICtrlCreateButton('Ende', $GUIBreite-77, $GUIHoehe-26, 75, 25, 0)
    GUICtrlSetFont(-1, 8, 800, 0, 'MS Sans Serif')
    GUICtrlSetState($btnTyp, $GUI_Focus)
    GUISetState(@SW_SHOW)
    $StartLw=DriveGetDrive('All')
    While True
    $CurLw=DriveGetDrive('All')
    If $CurLw[0]<>$StartLw[0] Then
    $StartLw=$CurLw
    GetLw()
    EndIf
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $btnQuit
    Exit
    Case $btnF5
    GetLW()
    Case $cbxLwA
    IniWrite($IniDatei, 'Config', 'ShowLwA', GuiCtrlRead($cbxLwA))
    GetLW()
    Case $cbxLwB
    IniWrite($IniDatei, 'Config', 'ShowLwB', GuiCtrlRead($cbxLwB))
    GetLW()
    Case $cbxLegStart
    IniWrite($IniDatei, 'Config', 'ShowHelp', GuiCtrlRead($cbxLegStart))
    Case $btnTyp
    If GUICtrlRead($btnTyp)='Keine Legende' Then
    WinSetState('Typ-Legende', '', @SW_HIDE)
    GUICtrlSetData($btnTyp, 'Typ-Legende')
    Else
    WinSetState('Typ-Legende', '', @SW_Show)
    $CurPos=WinGetPos('GetLwW', '')
    If $CurPos[0]<251 Then WinMove('GetLwW', '', 252, $CurPos[1])
    $CurPos=WinGetPos('GetLwW', '')
    WinMove('Typ-Legende', '', $CurPos[0]-252, $CurPos[1])
    GUICtrlSetState($btnTyp, $GUI_Focus)
    GUICtrlSetData($btnTyp, 'Keine Legende')
    EndIf
    EndSwitch
    Wend

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

    Func myStatus($Lw)
    Switch StringLower(DriveStatus($Lw))
    Case 'ready'
    Return 'ja'
    Case 'notready'
    Return 'nein'
    Case 'unknown'
    Return '???'
    Case 'invalid'
    Return 'atmno'
    Case Else
    Return 'wtf???'
    EndSwitch
    EndFunc

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

    Func myDriveType($Lw)
    Local $WMiSvc, $EachCD, $CDs
    If $USBLw[$LwIndex[Asc($Lw)-64]]<>'' Then Return $USBLw[$LwIndex[Asc($Lw)-64]]
    Switch StringLower(DriveGetType($Lw))
    Case 'cdrom'
    $WmiSvc=ObjGet('winmgmts:\\' &$strComputer &'\root\cimv2')
    $CDs=$WmiSvc.ExecQuery('Select PNPDeviceID From Win32_CDROMDrive Where Drive="' &$Lw &'"', 'wql', $wbemflags)
    If IsObj($CDs) Then
    For $EachCD In $CDs
    If StringInstr($EachCD.PNPDeviceID, 'USB') Then Return 'UOD'
    Next
    Else
    Msg('WMI-Ausgabe','Keine WMI-Objekte gefunden für Klasse: Win32_CDROMDrive')
    EndIf
    Return 'OD'
    Case 'fixed'
    Return 'HD'
    Case 'ramdisk'
    Return 'RD'
    Case 'network'
    Return 'ND'
    Case 'removable'
    Return $dt[$Lw>'C:']
    Case Else
    Return 'nv'
    EndSwitch
    EndFunc

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

    Func myGetFS($Lw)
    Local $FS=DriveGetFileSystem($Lw)
    If $Fs=1 Then Return 'leer/raw'
    Return $Fs
    EndFunc

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

    Func Msg($What, $Title=$Autor, $Icons=0, $ErrLevel=0)
    MsgBox($Icons, $Title, $What)
    If $ErrLevel Then Exit $ErrLevel
    EndFunc

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

    Func PSpace($Where, $Fw, $Nk)
    If $Where='' Then Return ''
    Local $s=StringFormat('%.' &$Nk &'f', $Where), $i=StringLeft($s, StringInstr($s, '.')), $Nk1=$Nk, $j
    If $Nk1>0 Then $Nk1+=1
    Do
    $s=' ' &$s
    Until StringLen($s)=$Fw
    For $j=6 To 1 Step -1
    If $i<10^$j Then $s=' ' &$s
    Next
    Return $s
    EndFunc

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

    Func GetLW()
    Local $WmiSvc=ObjGet('winmgmts:\\' &$strComputer &'\root\CIMV2')
    Local $Items=$WmiSvc.ExecQuery('Select Index,MediaType From Win32_DiskDrive Where InterfaceType="USB"', 'wql', $wbemflags)
    Local $Items, $i, $j=0, $m, $AlleLw, $f, $t, $GesFrei, $GesKapaz
    GUICtrlSetState($lblBusy, $GUI_Show)
    If IsObj($Items) Then
    For $Item In $Items
    If $Item.Index<0 Or $Item.Index>=$MaxUsbLw Then Msg('Script erneuern: Index(erlaubt):0..' &$MaxUsbLw &@Lf &'Index(aktuell):' &$Item.Index, 'Huch..', 64, 27)
    $USBLw[$Item.Index]='UD'
    $m=StringReplace($Item.MediaType, @Tab, ' ')
    $m=StringLeft($m, StringInstr($m, ' ')-1)
    If StringInstr($m, 'x') Then $USBLw[$Item.Index]='UHD'
    If StringInstr($m, 'o') Then $USBLw[$Item.Index]='ULw'
    Next
    Else
    Msg('Keine WMI-Objekte gefunden für Klasse: Win32_DiskDrive', $strComputer, 64, 27)
    EndIf
    $Items=$WMISvc.ExecQuery('Select Antecedent, Dependent From Win32_LogicalDiskToPartition', 'wql', $wbemFlags)
    If IsObj($Items) Then
    For $Item In $Items
    $i=StringMid($Item.Antecedent, StringInstr($Item.Antecedent, '=')+2)
    $i=StringMid($i, StringInstr($i, '#')+1, StringInstr($i, ',')-StringInstr($i, '#')-1)
    $m=StringMid($Item.Dependent, StringInstr($Item.Dependent, '=')+2, 1)
    $LwIndex[Asc($m)-64]=$i
    Next
    Else
    Msg('Keine WMI-Objekte gefunden für Klasse: Win32_LogicalDiskToPartition', $strComputer, 64, 27)
    EndIf
    $AlleLw=DriveGetDrive('all')
    If Not @error Then
    For $i=1 To $AlleLw[0]
    $Lw=StringUpper($AlleLw[$i])
    If $Lw='A:'And BitAnd(GUICtrlRead($cbxLwA), $GUI_CHECKED) Then ContinueLoop
    If $Lw='B:' And BitAnd(GUICtrlRead($cbxLwB), $GUI_CHECKED) Then ContinueLoop
    $j+=1
    $m=myStatus($Lw)
    $s=StringFormat('%02s|%3s|%3s|%6s|%6s|%4s|', $j, $Lw, $LwIndex[Asc(StringLeft($Lw, 1))-64], myDriveType($Lw), myGetFS($Lw), $m)
    If $m='ja' Then
    $t=DriveSpaceTotal($Lw)
    $f=DriveSpaceFree($Lw)
    If StringInstr(myDriveType($Lw), 'OD')=0 Then
    $GesKapaz+=$t
    $GesFrei+=$f
    EndIf
    $m=''
    If $t<>0 Then $m=PSpace($f/$t*100, 7, 1)
    $s&=PSpace($t, 15, 3) &'|' &PSpace($f, 15, 3) &'| ' &$m &'|' &PSpace($t-$f, 15, 1) &'|' &DriveGetLabel($Lw)
    EndIf
    GUICtrlSetData($LwZeile[$j], $fmt)
    GUICtrlSetData($LwZeile[$j], $s)
    GUICtrlSetColor($LwZeile[$j], 0x000080)
    GUICtrlSetBkColor($LwZeile[$j+1], $UnGerade[BitAnd($j, 1)])
    Next
    For $i=$j+1 To $MaxLw
    GUICtrlSetData($LwZeile[$i], $fmt)
    GUICtrlSetBkColor($LwZeile[$i], $UnGerade[0])
    Next
    $s=StringFormat('[]||||||%10s|%12s|%12s|%-12s|', PSpace($GesKapaz, 15, 3), PSpace($GesFrei, 15, 3), PSpace($GesFrei/$GesKapaz*100, 7, 1), PSpace($GesKapaz-$GesFrei, 15, 1))
    GUICtrlSetData($LwZeile[$j+1], $s)
    GUICtrlSetBkColor($LwZeile[$j+1], 0xDDDDDD)
    EndIf
    GUICtrlSetState($lblBusy, $GUI_Hide)
    EndFunc

    [/autoit]

    Mich würde nun interessieren, was das Programm unter Win7 anzeigt(Vista interessiert mich nicht..)
    Bzw. ob es überhaupt etwas anzeigt bei Rechnern, die gar keine IDE-Platten mehr haben(also SATA etc.)
    Da ich viele Anregungen zum Programm hier aus dem Forum habe, ist es für mich natürlich kein Problem, den QuälCode hier zu posten..
    ..auch als Dankeschön an die vielen (ungenannten) 'Helfer' ^^
    Da das Script bei mir unter XP SP3+ funktioniert, hat es mit Rückmeldungen keine Eile ;)
    Wenn die Admins meinen, es würde besser nach 'Scripte' passen, sollten sie es dorthin verschieben..
    Gruß
    ytwinky

    Dateien

    GetLwW.png 21,2 kB – 0 Downloads
  • Variable weiter verarbeiten aus einem Array bringt Fehlermeldung

    • ytwinky
    • 12. April 2012 um 11:17

    bau doch mal vor der MsgBox ein

    [autoit]

    If IsArray($ergebnis) Then ConsoleWrite('Obergrenze=' &UBound($ergebnis))

    [/autoit]
  • Variable weiter verarbeiten aus einem Array bringt Fehlermeldung

    • ytwinky
    • 12. April 2012 um 10:59

    Hi,
    1. Ich würde das mit einer For-Schleife machen

    [autoit]


    $ergebnis = $object.GetRows
    $d3l = FileOpen(@ScriptDir&"\temp.d3l",2)
    FileWriteLine($d3l, "idlist" & @CRLF)
    ConsoleWrite('Obergrenze vom Array=' &UBound($ergebnis))
    For $x=0 To UBound($ergebnis)-1
    ConsoleWrite('$x=' & $x)
    $temp = _ArrayToString($ergebnis[$x])
    FileWriteLine($d3l, $temp & @CRLF)
    Next
    FileClose($d3l)

    [/autoit]


    (dann kannste durch das eingebaute ConsoleWrite() auch sehen, bei welchem Index AutoIt aussteigt..)
    2. Warum haste nicht geschrieben, wie groß UBound($ergebnis) ist? ist es 2 oder 3? Gibt es noch weitere Dimensionen?
    Probier mal..
    Gruß
    ytwinky
    [Edit]
    Wenn man älter wird..
    Da sind doch wirklich Postings gekommen während ich geschrieben habe^^
    Naja, ich muß trotzdem nix zurücknehmen..
    [Edit 2]
    oder hat das Object sowas wie ne .count()-Methode, die die Zeilen-Anzahl liefert?

  • Daten einlesen via CMD

    • ytwinky
    • 3. April 2012 um 21:37

    hi,
    vllt hilft dir das ja weiter: Offene Ports mit NetStat anzeigen
    Gruß
    ytwinky

  • DNS mit netsh und Autoit setzen

    • ytwinky
    • 30. März 2012 um 18:42

    Hi,
    ich habe mir dafür folgendes Script geschrieben

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    Const $wbemFlagReturnImmediately=0x10, $wbemFlagForwardOnly=0x20, $wbemFlags=$wbemFlagReturnImmediately+$wbemFlagForwardOnly
    Global $aNetCfg[50][7]
    Global $Index=-1, $s='Computer:' &@Tab &@Computername
    Global $colItems='', $strComputer=@ComputerName, $objWMIService, $colItem, $colItems, $m, $n, $j
    $objWMISvc=ObjGet('winmgmts:\\' &$strComputer &'\root\CIMV2')
    $Items=$objWMISvc.ExecQuery('Select Index,IPAddress From Win32_NetworkAdapterConfiguration', 'wql', $wbemFlags)
    If IsObj($Items) Then
    For $Item In $Items
    $aNetCfg[$Item.Index][1]=$Item.IPAddress(0)
    If $Item.IPAddress(0)=@IPAddress1 Then $aNetCfg[$Item.Index][1] &= '*'
    Next
    EndIf
    $objWMISvc=ObjGet('winmgmts:\\' &$strComputer &'\root\CIMV2')
    $Items=$objWMISvc.ExecQuery('Select * From Win32_NetworkAdapter', 'wql', $wbemFlags)
    If IsObj($Items) Then
    For $Item In $Items
    With $Item
    $j=.index
    $aNetCfg[$j][0]=.MacAddress
    If $aNetCfg[$j][0]='' Then $aNetCfg[$j][0]=@Tab
    $aNetCfg[$j][2]=.NetConnectionId
    If $aNetCfg[$j][2]<>'' And StringInstr($aNetCfg[$j][1], '.')=0 Then $aNetCfg[$j][1]='deaktiviert'
    $aNetCfg[$j][3]=.Productname
    EndWith
    Next
    Else
    $s='Ooops, keine Objekte für Win32_NetworkAdapter..'
    EndIf
    $s &= StringFormat('\n%2s\t%-18s\t\t%s\t%-36s\t%s', 'Index', 'MAC-Adresse', 'IPAdresse', 'Verbindungsname', 'NetzAdapter')
    For $i=1 To $j
    If StringLeft($aNetCfg[$i][2], 1)>' ' Then $s &= StringFormat('\n%02i\t%-18s\t%-16s\t%-36s\t%s', $i, $aNetCfg[$i][0], $aNetCfg[$i][1], $aNetCfg[$i][2], $aNetCfg[$i][3])
    Next
    MsgBox(0, 'IP-Info, ©2012 by ytwinky, MD..', $s &@Lf &'* ist die aktive IPAdresse..')

    [/autoit]

    Es funktioniert unter XP SP3 primstens(für meine Zwecke jedenfalls..)
    ..ist vllt ein wenig großzügig dimensioniert, aber das kannste ja selber ändern..
    hth
    Gruß
    ytwinky

  • Bug in Autoit 3.3.8.1 der in 3.3.6.1

    • ytwinky
    • 9. März 2012 um 17:41

    Hi,
    Du kannst gerne folgendes Test-Script anhängen:

    [autoit]

    ;<AutoItScript>
    #NoTrayIcon ;ohne SysTray-Icon, hängende Prozesse mit TaskMan beenden
    Opt('MustDeclareVars', 1) ;0=ohne, 1=erfordert Variablen-Deklaration
    Const $Author='HexTest.au3 ©2012 by ytwinky, MD';
    Global $s='Hex(-1, 8)=' &Hex(-1, 8) &@Lf &'Hex(4294967295, 8)=' &Hex(4294967295, 8) &@Lf &'Hex(Int(2^32)-1, 8)=' &Hex(Int(2^32)-1, 8) &@Lf &'Hex(Int(255*256^3+255*256^2+255*256+255), 8)=' &Hex(Int(255*256^3+255*256^2+255*256+255), 8)
    MsgBox(0, $Author, $s &@Lf &'Hex(255*256^2+255*256+255, 6)=' &Hex(Int(255*256^2+255*256+255), 6))
    ;</AutoItScript>

    [/autoit]

    Du kannst das Script natürlich auch vorher ausführen, um zu sehen, was es macht ;)
    ..Dass bei den 'großen' Integerwerten (nun) die Int-Funktion benutzt werden MUSS, war mir noch gar nicht aufgefallen..
    (Ich muß wohl nicht erwähnen, dass 4 mal FFFFFFFF und einmal FFFFFF angezeigt wird..)
    [Edit]
    Ich hab grad nochmal probiert: in der aktuellen Beta muß bei den Doubles auch Int(..) benutzt werden..
    Gruß
    ytwinky

  • Dos mit mehreren Zeilen

    • ytwinky
    • 18. Februar 2012 um 23:20

    Hi,
    ich habe beim Diagonal-Lesen nicht erkennen können welch antiquiertes System du benutzt :rofl:
    Gib einfach mal in einer Befehlszeile(oder wie immer du die DosShell nennst) folgende Zeile ein:

    [autoit]

    Echo Antwort & Echo auf alle Fragen & Echo. & Echo 42

    [/autoit]


    Damit sollte es möglich sein OHNE (temporäre) Batch-Datei ein paar Befehle auszuführen..
    ..ob und wie du das dann in AutoIt übernimmst ist deine Sache ;)
    [Edit]
    Ist egtl. derselbe Tipp, wie der von Hakeem..
    (kommt vom Diagonal-Lesen :whistling:
    Gruß
    ytwinky

  • Binary von Bildern erstellen, aus Textdatei auslesen und in GUI packen

    • ytwinky
    • 13. Februar 2012 um 23:56

    Hi,
    kanst ja mal kucken, ob dir FileInstall() weiterhilft..
    Gruß
    ytwinky

  • Hex/Binär code abspeichern

    • ytwinky
    • 12. Februar 2012 um 12:57

    Nö, die Frage ist: Warum?
    Vllt. schauste dir die Funktion

    [autoit]

    FileInstall()

    [/autoit]

    mal an..
    Gruß
    ytwinky

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™