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

  • PC als Gegner

    • ytwinky
    • 27. Februar 2006 um 23:04

    Da haste dir aber ganz schön was vorgenommen.
    Voraussetzung für die Programmierung eines Computergegners ist, daß du die KOMPLETTE
    Spielstrategie von 4gewinnt verstanden hast und das dann in ein Programm umsetzt.
    Hast du mal nach "4gewinnt Strategie" gegoogelt?
    http://de.wikipedia.org/wiki/Vier_gewi…sung_des_Spiels
    Das scheint mir ein guter Ansatz zu sein.
    Ich fürchte aber, um die angeführte Spielstrategie verstehen zu können,
    mußt du zumindest in Englisch gut drauf sein..
    Als Zwei-Personenspiel ist dein Spiel ganz witzig, aber ich sitze meist allein vor dem Rechner.
    Leider gelingt es mir nicht immer meine geplanten Züge vor mir selbst zu verheimlichen :D
    Ich glaube, daß das, was dir bis jetzt gut gelungen ist,
    erst der Anfang eines sehr langen Weges ist..
    ..aber wie schon ein wichtiger Mann mal gesagt hat:
    Auch der längste Weg beginnt mit dem ersten Schritt!
    Nur zu, mach ihn
    Gruß
    ytwinky

    [Edit]
    Mehr gute Info zu 4gewinnt findest du bestimmt hier:
    http://www.lbremer.de/mustrum.html
    Ich hab' gerade das Spiel ausprobiert(und prompt verloren)

  • TIPS für die richtige AUTOIT Arbeitsumgebung!

    • ytwinky
    • 27. Februar 2006 um 20:34

    Wer weniger gut in Englisch ist und neu bei AutoIt, findet hier:
    http://autoit.aufwaerts.de/thread.php?threadid=15&sid=
    eigentlich auch erstmal das, was er braucht.
    Oder was fehlt dir dort?
    Gruß
    ytwinky

  • Scriptomatic.au3

    • ytwinky
    • 26. Februar 2006 um 19:44

    Es ist wie mit allen Informationen: Es bleibt dir selbst überlassen,
    welche du benutzen möchtest..
    Als ich sah, das eine Funktion gibt, um zu ermitteln, welche Partitionen
    auf welcher Platte sind, habe ich mir das Skript gleichmal vorgenommen..

    Spoiler anzeigen
    Code
    ; Erstellt von AutoIt Scriptomatic
    $wbemFlagReturnImmediately=0x10
    $wbemFlagForwardOnly=0x20
    $colItems=""
    $strComputer="localhost"
    $Output=""
    $Output&="Computer: " &$strComputer  & @CRLF
    $Output&="==========================================" & @CRLF
    $objWMIService=ObjGet("winmgmts:\\" &$strComputer &"\root\CIMV2")
    $colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk", "WQL", _
                                              $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
       For $objItem In $colItems
          $Output&="Laufwerk: " &$objItem.Name & @CRLF
       Next
    Else
       Msgbox(0, "WMI-Ausgabe","Keine WMI-Objekte gefunden für Klasse: " & "Win32_PerfFormattedData_PerfDisk_PhysicalDisk")
    Endif
    Msgbox(1, "Welche Partitionen sind auf welcher Festplatte", StringMid($Output, 1, StringInstr($Output, "_")-12))
    Alles anzeigen

    So kannst du mit allen Funktionen verfahren.
    Such dir die Information, die du haben möchtest und schneide den Rest weg.
    (Scriptomatic nimmt's dir gewiß nicht übel..)
    Gruß
    ytwinky

  • Scriptomatic.au3

    • ytwinky
    • 26. Februar 2006 um 14:44
    Zitat

    Original von Gun-Food
    Hab mal die eingedeutschte Version in die Filebase geladen, um das Testen für die anderen zu ermöglichen.
    Hier nochmal der Link: Scriptomatic

    Gut Idee, kann ich auch in die Filebase Uploaden?
    Gruß
    ytwinky

  • Scriptomatic.au3

    • ytwinky
    • 24. Februar 2006 um 20:16

    Ich hatte ja eben auch Schwierigkeiten an die Datei
    heranzukommen, aber jetzt hat es geklappt..
    ..Ich verstehe das auch nicht
    [Edit]
    Hier noch mal 'n Waschzettel:
    -Scriptomatic aufrufen
    -warten, bis das Textfeld leer ist
    -WMI-Klasse auswählen(z.B. Win32_CDROMDrive)
    (Jetzt erscheint im Textfeld das Skript)
    -Ausführen anklicken oder Speichern(im Sammelordner für Beispielskripts)
    -Je nach gewähltem Ausgabe-Modus erscheint das Ergebnis(bei Ausführen)
    als Dialog
    als Text-Datei(in der jeweils vorhandenen NotePad-Ausführung)
    als Html-Datei im jeweiligen Browser
    (natürlich nur, wenn WMI installiert ist und erlaubt ist etc.)
    Mehr gibt es dazu eigentlich nicht zu sagen.
    Wer mehr wissen möchte: Einfach ausprobieren, es kann nix kaputtgehen..
    Eine komplette Abhandlung über die WMI zu schreiben, wäre mir echt zu heftig.
    Deshalb verweise ich auf Google: Suchbegriff 'WMI "Windows Management Instrumentation" '.
    (Suche auf Deutsch ca 32.100 Einträge)

    ScriptomaticGer.au3 wurde bis jetzt schon 16x runtergeladen(na gut, 'n paar sind von mir)
    ..es geht also..

    Gruß
    ytwinky

  • Mappen

    • ytwinky
    • 24. Februar 2006 um 20:00
    Zitat

    Original von muh_kuh
    und wenn ich statt $laufwerk = C
    $laufwerk = M nehme
    ich glaube das probelm ist das C$


    Das '$'-Zeichen kennzeichnet eine versteckte Freigabe, die,
    bei mir jedenfalls, automatisch vergeben wird.
    Da gehört dann c$ zu c und d$ zu d..und wie du schon vermutet hast gehört zu m: m$
    Wenn du c$ an m: zuweisen möchtest und c$ bereits für c:
    vergeben wurde, ist es kein Wunder, wenn's nicht geht..
    Gruß
    ytwinky

  • Scriptomatic.au3

    • ytwinky
    • 24. Februar 2006 um 19:38
    Zitat

    Original von wolkenloser
    also, bei mir bleibt das Fenster leer....

    ein anderes gefundenes Script hingegen was die CPU last anzeigt funktioniert...

    Bringt mal Beispiele wenn Ihr habt....

    Verstehe ich nicht, bei mir läufts, bei Gun-Food läufts auch und im amerikanischen Forum wird laufend Bezug darauf genommen.
    Ich kann das ganze Forum mit den erzeugten Skripts sprengen, wenn du meine Telefonrechnung übernimmst,
    aber das hat gar keinen Sinn, denn wenn Scriptomatic nicht läuft, wie sollen dann die damit erzeugten Skripts laufen?
    Ich gehe mal davon aus, daß du Scriptomatic gedownloadet hast..
    Gruß
    ytwinky

  • Mappen

    • ytwinky
    • 24. Februar 2006 um 12:46

    Wo ist das Problem?

    Code
    ;<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 $Autor="Mappen.au3 ©2006 by ytwinky, MD";                               |
    ;|    AutoIt3-Version: 3.1.1.110(beta)                                        |
    ;|    Editor: SciTE 1.67, feste Schriftart                                    |
    ;|    Zweck : Schablone für den Anfang, nach Bedarf anpassen                  |
    ;|    Tab auf 2 setzen wg. Lesbarkeit                                         |
    ;+----------------------------------------------------------------------------+
    Dim $mapp, $ErrMsg, $laufwerk="C:", $zahler=0, $PC[2], $s
    $PC[0]="localhost"
    $PC[1]="AndererPC"
    $s="1 = Undefiniert / anderer Fehler" &@Cr
    $s&="2 = Zugriff auf die Remote-Freigabe abgelehnt" &@Cr
    $s&="3 = Das Lw ist bereits zugewiesen" &@Cr
    $s&="4 = Falscher Lw-Name" &@Cr
    $s&="5 = Falsche Remote-Freigabe" &@Cr
    $s&="6 = Falsches Kennwort" &@Cr
    $ErrMsg=StringSplit($s, @Cr)
    
    
    $mapp = DriveMapAdd($laufwerk, "\"& $PC[$zahler] &"\c$" , 0)
    
    
    $s="DriveMappAdd=" &$mapp
    If @Error<>0 Then $s&=@LF &"Fehler=" &@Error &@LF &$ErrMsg[@Error]
    MsgBox(64, "DriveMapAdd", $Autor &@LF &$s)
    
    
    Exit @Error
    ;Unterprogramme
    
    
    ;</AutoItScript>
    Alles anzeigen


    Läuft bei mir astrein, wenn man mal davon absieht, daß Laufwerk C: schon zugewiesen ist..
    Gruß
    ytwinky

  • Scriptomatic.au3

    • ytwinky
    • 23. Februar 2006 um 22:37

    Wenn du dir das Scriptomatic.au3-Skript herunterlädst findest du in dessen Header wahrscheinlich eine ähnliche Quelle,
    wie die, die du angegeben hast ;)
    Praktische Beispiele mit Autoscript brauche ich nicht zu liefern, denn alle Beispiel-Skripts,
    die du erwartest, erstellt das Skript!
    (Je nachdem, was du gerade benötigst..)
    Aber deine Frage nach einem praktischen Beispiel trift mich nicht unvorbereitet: :P

    Spoiler anzeigen
    Code
    ; Erstellt von AutoIt Scriptomatic
    $wbemFlagReturnImmediately=0x10
    $wbemFlagForwardOnly=0x20
    $colItems=""
    $strComputer="localhost"
    $Output=""
    $Output&="Computer: " &$strComputer  & @CRLF
    $Output&="==========================================" & @CRLF
    $objWMIService=ObjGet("winmgmts:\\\" &$strComputer &"\root\CIMV2")
    ;stehen hinter winmgmts: 3 '\', muß eins manuell entfernt werden, die Forensoftware kann es noch nicht anders..
    $colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _
                                              $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
       For $objItem In $colItems
          $Output&="BootDevice: " &$objItem.BootDevice & @CRLF
          $Output&="BuildNumber: " &$objItem.BuildNumber & @CRLF
          $Output&="BuildType: " &$objItem.BuildType & @CRLF
          $Output&="Caption: " &$objItem.Caption & @CRLF
          $Output&="CodeSet: " &$objItem.CodeSet & @CRLF
          $Output&="CountryCode: " &$objItem.CountryCode & @CRLF
          $Output&="CreationClassName: " &$objItem.CreationClassName & @CRLF
          $Output&="CSCreationClassName: " &$objItem.CSCreationClassName & @CRLF
          $Output&="CSDVersion: " &$objItem.CSDVersion & @CRLF
          $Output&="CSName: " &$objItem.CSName & @CRLF
          $Output&="CurrentTimeZone: " &$objItem.CurrentTimeZone & @CRLF
          $Output&="DataExecutionPrevention_32BitApplications: " &$objItem.DataExecutionPrevention_32BitApplications & @CRLF
          $Output&="DataExecutionPrevention_Available: " &$objItem.DataExecutionPrevention_Available & @CRLF
          $Output&="DataExecutionPrevention_Drivers: " &$objItem.DataExecutionPrevention_Drivers & @CRLF
          $Output&="DataExecutionPrevention_SupportPolicy: " &$objItem.DataExecutionPrevention_SupportPolicy & @CRLF
          $Output&="Debug: " &$objItem.Debug & @CRLF
          $Output&="Description: " &$objItem.Description & @CRLF
          $Output&="Distributed: " &$objItem.Distributed & @CRLF
          $Output&="EncryptionLevel: " &$objItem.EncryptionLevel & @CRLF
          $Output&="ForegroundApplicationBoost: " &$objItem.ForegroundApplicationBoost & @CRLF
          $Output&="FreePhysicalMemory: " &$objItem.FreePhysicalMemory & @CRLF
          $Output&="FreeSpaceInPagingFiles: " &$objItem.FreeSpaceInPagingFiles & @CRLF
          $Output&="FreeVirtualMemory: " &$objItem.FreeVirtualMemory & @CRLF
          $Output&="InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
          $Output&="LargeSystemCache: " &$objItem.LargeSystemCache & @CRLF
          $Output&="LastBootUpTime: " & WMIDateStringToDate($objItem.LastBootUpTime) & @CRLF
          $Output&="LocalDateTime: " & WMIDateStringToDate($objItem.LocalDateTime) & @CRLF
          $Output&="Locale: " &$objItem.Locale & @CRLF
          $Output&="Manufacturer: " &$objItem.Manufacturer & @CRLF
          $Output&="MaxNumberOfProcesses: " &$objItem.MaxNumberOfProcesses & @CRLF
          $Output&="MaxProcessMemorySize: " &$objItem.MaxProcessMemorySize & @CRLF
          $Output&="Name: " &$objItem.Name & @CRLF
          $Output&="NumberOfLicensedUsers: " &$objItem.NumberOfLicensedUsers & @CRLF
          $Output&="NumberOfProcesses: " &$objItem.NumberOfProcesses & @CRLF
          $Output&="NumberOfUsers: " &$objItem.NumberOfUsers & @CRLF
          $Output&="Organization: " &$objItem.Organization & @CRLF
          $Output&="OSLanguage: " &$objItem.OSLanguage & @CRLF
          $Output&="OSProductSuite: " &$objItem.OSProductSuite & @CRLF
          $Output&="OSType: " &$objItem.OSType & @CRLF
          $Output&="OtherTypeDescription: " &$objItem.OtherTypeDescription & @CRLF
          $Output&="PlusProductID: " &$objItem.PlusProductID & @CRLF
          $Output&="PlusVersionNumber: " &$objItem.PlusVersionNumber & @CRLF
          $Output&="Primary: " &$objItem.Primary & @CRLF
          $Output&="ProductType: " &$objItem.ProductType & @CRLF
          $Output&="QuantumLength: " &$objItem.QuantumLength & @CRLF
          $Output&="QuantumType: " &$objItem.QuantumType & @CRLF
          $Output&="RegisteredUser: " &$objItem.RegisteredUser & @CRLF
          $Output&="SerialNumber: " &$objItem.SerialNumber & @CRLF
          $Output&="ServicePackMajorVersion: " &$objItem.ServicePackMajorVersion & @CRLF
          $Output&="ServicePackMinorVersion: " &$objItem.ServicePackMinorVersion & @CRLF
          $Output&="SizeStoredInPagingFiles: " &$objItem.SizeStoredInPagingFiles & @CRLF
          $Output&="Status: " &$objItem.Status & @CRLF
          $Output&="SuiteMask: " &$objItem.SuiteMask & @CRLF
          $Output&="SystemDevice: " &$objItem.SystemDevice & @CRLF
          $Output&="SystemDirectory: " &$objItem.SystemDirectory & @CRLF
          $Output&="SystemDrive: " &$objItem.SystemDrive & @CRLF
          $Output&="TotalSwapSpaceSize: " &$objItem.TotalSwapSpaceSize & @CRLF
          $Output&="TotalVirtualMemorySize: " &$objItem.TotalVirtualMemorySize & @CRLF
          $Output&="TotalVisibleMemorySize: " &$objItem.TotalVisibleMemorySize & @CRLF
          $Output&="Version: " &$objItem.Version & @CRLF
          $Output&="WindowsDirectory: " &$objItem.WindowsDirectory & @CRLF
          If Msgbox(1, "WMI-Ausgabe", $Output)=2 then ExitLoop
          $Output=""
       Next
    Else
       Msgbox(0, "WMI-Ausgabe","Keine WMI-Objekte gefunden für Klasse: " & "Win32_OperatingSystem")
    Endif
    
    
    Func WMIDateStringToDate($dtmDate)
      Return (StringMid($dtmDate, 5, 2) &"/" &StringMid($dtmDate, 7, 2) &"/" &StringLeft($dtmDate, 4) & " " &StringMid($dtmDate, 9, 2) &":" &StringMid($dtmDate, 11, 2) &":" &StringMid($dtmDate,13, 2))
    EndFunc
    Alles anzeigen


    Erstellt mit einer Vorabversion:
    Download ScriptomaticGer.au3
    Das mit der Übersetzung betrifft natürlich nur Scriptomatic.au3, die damit erstellten Skripts benutzen das, was in Windows benutzt wird. Ich denke mal, du nimmst es mir nicht übel, wenn ich das komplette Windows nicht übersetze.. :rofl:
    Zum Erstellen dieses Skripts kannst du dies hier kopieren oder Scriptomatic aufrufen, warten bis es fertig ist mit Laden und dann:
    wählst du 'Win32_OperatingSystem' und klickst auf 'Ausführen'
    Vorher kannst du noch das Ausgabeformat einstellen, aber Dialog scheint mir das Beste zu sein, Html funktioniert noch nicht immer
    Aber es ist ja auch nur eine Vorabversion..
    Gruß
    ytwinky

  • Win Umgebungsvariable

    • ytwinky
    • 23. Februar 2006 um 18:28

    Du weißt aber schon, daß es einen Unterschied gibt zwischen
    Programmumgebung und Profil des gerade angemeldeten Benutzers? ;) Sry, der mußte sein..
    Windows läßt sich nicht mit ein paar Set-Befehlen die komplette Benutzerverwaltung durcheinander bringen,
    aber das hast du ja schon erlebt..
    Hast du mein Posting 'User nach Wahl einloggen' gelesen?
    Da habe ich so etwas beschrieben..
    Gruß
    ytwinky

  • Scriptomatic.au3

    • ytwinky
    • 23. Februar 2006 um 18:21

    Das, was du an Englisch brauchst, um die Bedienung zu verstehen, sind Vokabeln wie 'Run', 'Save' etc.
    Du kannst die KOMPLETTEN WMI-Infos abfragen.
    Scriptomatic ist 'nur' ein Anzeige-Script, genaueres findest du bei M$, denn von der Firma ist Scriptomatic.Hta ursprünglich. Selbst wenn es dir keine neuen Informationen liefert, kannst du doch sehen, wie ein derart komplexes Thema, wie WMI elegant mit AutoIt gelöst werden kann.
    Schaus dir einfach mal an, es verstellt NIX und nimmt auch keinen unerwünschten Kontakt zu irgendwelchen Servern auf. Wenn du dein Vokabelheft verbummelt hast oder LEO dir nicht antwortet, mußt du warten, bis ich eine Übersetzung fertig habe. Die Schwierigkeit dabei ist nicht das Englische. Es soll doch dann auch gleich genauso professionell aussehen. Vllt. schaffe ich das am Wochenende und poste es dann hier im Thread..
    Gruß
    ytwinky

  • Parameter per Kontextmenü übergeben

    • ytwinky
    • 23. Februar 2006 um 18:05

    David G.Wolski hat das Script pcwKontex.Vbs geschrieben, mit dem Parameter an
    Exe-Dateien per Kontext-Menü übergeben werden können. Geht das auch mit AutoIt?
    Jetzt ja, denn es gibt nun Kontext.au3!
    Beim ersten Aufruf ohne Parameter installiert sich das Skript im Kontext-Menü
    von .au3-Dateien, ein zweiter Aufruf ohne Parameter deinstalliert das Skript wieder..
    Ich habe das Skript so aufgebaut, daß beliebige Erweiterungen benutzt werden
    können, sofern ihnen eine ausführbare Anwendung zugeordnet ist. Der Aufruf geschieht
    über

    Code
    %ComSpec% /C Start.., @SW_HIDE

    Das mag für Exe- und Com-Dateien umständlich erscheinen, macht das Skript aber universell..
    Btw:
    Bastler erkennen schnell, daß lediglich die Variable $Erw einen anderen Wert zu
    erhalten braucht, um das Kontextmenü anderer Dateien zu erweitern.
    So, genug der Vorrede, hier ist der

    Spoiler anzeigen
    Code
    ;<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 $Autor="Kontext.au3 ©2006 by ytwinky, MD";                              |
    ;|    EMail: [EMAIL]PIII1kSystem-AutoIt3Forum@yahoo.de[/EMAIL]                               |
    ;|    AutoIt3-Version: 3.1.1.110(beta)                                        |
    ;|    Editor: SciTE 1.67, feste Schriftart                                    |
    ;|    Zweck : KontextmenüEintrag für $Erw setzen                              |
    ;|    Tab auf 2 setzen wg. Lesbarkeit                                         |
    ;+----------------------------------------------------------------------------+
    Const $Erw="au3", $aiQM=Chr(34)
    Dim $Datei, $s
    If $CmdLine[0]=0 Then ;Keine Parameter? Dann (de-) installiert sich das Script selbst
    	Dim $HKCR="HKCR", $ErwKey, $SubKey="\Shell" &$Erw &"Kontext"
    	If _KeyExists($HKCR &"." &$Erw) Then
    		$ErwKey=RegRead($HKCR &"." &$Erw, "")
    	Else
    		MsgBox(16, $Autor, "Ooops, "&$Erw &"-Dateien sind gar nicht registriert..")
    		Exit 27
    	EndIf
    	If _KeyExists($HKCR &$ErwKey &$SubKey) Then ; dann soll deinstalliert werden..
    		RegDelete($HKCR &$ErwKey &$SubKey &"Command")
    		RegDelete($HKCR &$ErwKey &$SubKey)
    		$s="KontextMenü-Eintrag wurde erfolgreich deinstalliert"
    	Else ; dann soll installiert werden..
    		RegWrite($HKCR &$ErwKey &$SubKey, "", "REG_SZ", $Erw &"-Parameter")
    		RegWrite($HKCR &$ErwKey &$SubKey &"Command", "", "REG_SZ", @AutoItExe &" " &$aiQM &@ScriptFullPath &$aiQM &" " &$aiQM &"%L" &$aiQM)
    		$s="Kontext.au3 wurde erfolgreich installiert." &@Cr &"Im Kontextmenü jeder " &$Erw &"-Datei können jetzt Parameter über den Menüpunkt "
    		$s&=$aiQM &"Mit Parameter" &$aiQM &" für die " &$Erw &"-Datei angeben werden"
    	EndIf
    	MsgBox(64, $Autor, $s)
    	Exit
    EndIf
    
    
    $Datei=$CmdLine[1]
    $s=Inputbox($Datei &" mit Parametern aufrufen:", $Autor)
    If $s<>"" Then Run("Cmd  /c Start " &$Datei &" " &$s, "", @SW_HIDE )
    Exit 0
    
    
    ;Unterprogramme
    ;Diese Funktion überprüft die Registry nach vorhandenen Schlüsseln. Wird von der De/Installationsroutine benötigt.
    
    
    Func _KeyExists($RegKey)
      RegRead($RegKey, "")
      Return @Error=0
    EndFunc
    ;</AutoItScript>
    Alles anzeigen

    Happy Kontexting
    ytwinky

  • Win Umgebungsvariable

    • ytwinky
    • 23. Februar 2006 um 13:21

    Du solltest vllt mal sagen, WIE du die Variablen änderst..
    Einfach nur in einem Dos-Fenster

    Code
    Set User=XYZ

    eingeben z.B., bringt garnix..
    Gruß
    ytwinky

  • Scriptomatic.au3

    • ytwinky
    • 23. Februar 2006 um 13:16

    Für alle, die sich um Windows-Interna kümmern müssen/wollen,
    hat SvenP DAS Tool geschrieben. Es ist eine Übertragung
    des M$-Scriptomatic-Tools, läuft prima und ist hier zu finden:
    http://www.autoitscript.com/forum/index.php?showtopic=10534&hl=scriptomatic
    Damit sind System-Fragen kein Thema mehr, denn das Tool
    kann die erzeugten Skripts auch speichern ;)
    Happy Scriptomating(of course with AutoIt..)
    ytwinky

  • Registry Management als Normaluser

    • ytwinky
    • 20. Februar 2006 um 17:29

    Wie ich hier bereits gesagt habe, kannst du ein VBScript zum Bearbeiten der Registry ausführen. Wenn du dem Befehl vorher Admin-Rechte gibst, sollte es auch möglich sein, Admin-Werte in der Registry zu ändern..
    Ich erspare es uns, den Weg über Reg.Exe/RegEdit.Exe zu beschreiben..
    ..und wenn ich VBScripte ausführen kann, kann ich analog auch AutoIt-Skripts ausführen
    Gruß
    ytwinky

  • Passwort per AutoIt Script aendern

    • ytwinky
    • 20. Februar 2006 um 15:59

    Du kannst AutoIt von VBScript aus nutzen, aber dann mußt du alle VBScripts umschreiben..
    Die Syntax, um ein VBScript auszuführen, ist

    Code
    Run(@SystemDir &"\WScript.Exe C:\Wsh\Ar.Vbs")

    ..vorausgesetzt, bei dir in C:\Wsh\ gibt es ein VBScript namens Ar.Vbs..
    ..und WScript.Exe befindet sich in @SystemDir..
    ..und WScript.Exe darf ausgeführt werden..
    ..und was sonst noch alles so daneben gehen kann..
    Aber o.a. Code läuft unter XP SP2+
    Gruß
    ytwinky

  • User nach Wahl einloggen

    • ytwinky
    • 14. Februar 2006 um 11:22

    Ich habe mein System so eingerichtet, daß nur der beschränkte User surfen darf ;)
    Es ist mir jedoch zu blöde, eine Klick-Orgie zu starten, um dorthin zu wechseln.
    (Ich verwende nämlich die klassische Oberfläche..)
    ..aber dafür habe ich ja AutoIt3!
    Das Skript muß den neuen User in den AutoLogOn eintragen und die Firewall starten.
    Eine Abbruchmöglichkeit soll vorhanden sein und das Script darf nur für Admins
    ausführbar sein. Eine Dreingabe ist, daß der neue Username und sein Kennwort per
    Kommandozeile übergeben werden können.
    (Wer nicht weiß, wo die Werte in der Registry stehen, oder wer sich nicht traut,
    in der der Registry 'rumzuschreiben, möge diese Variante benutzen)
    Es ist nicht nur Spielerei, denn ich habe auch ausprobiert, wie ich Services mit
    dem ShellApp-Objekt starten kann und das war's, was ich eigentlich wollte..
    Hier nun das Ergebnis( @jonk: Diesmal ohne fileanchor und rar, purer Text..)

    Spoiler anzeigen
    Code
    ;<AutoItScript>
    ;+----------------------------------------------------------------------------+
    ;|    Header: Bestimmen der Übergabeparameter                                 |
    ;|    ( Alles Strings(!!!), bis auf ArgC )                                    |
    ;|    FontAnzeigeCheck: |Il1 sind Alt-0124, Großes i, Kleines L, Eins         |
    Const $Author="LogInUser.au3 ©2006 by ytwinky, MD";       |                           
    ;|     AutoIt3 v 3.1.1.107                                           |
    ;|    EMail: [EMAIL]PIII1kSystem-AutoIt3Forum@yahoo.de[/EMAIL]                                |
    ;|    (Tastenkombination: keine)                                              |
    ;|                                                                            |
    ;|    Zweck : Schablone für den Anfang, nach Bedarf anpassen                  |
    ;|    Tab auf 2 setzen wg. Lesbarkeit                                         |
    Opt("MustDeclareVars", 1)  ;0=no, 1=require pre-declare                       |
    ;+----------------------------------------------------------------------------+
    
    
    If Not IsAdmin() Then
      MsgBox(16+0x1000, "**U**", "Sorry, ohne AdminRechte geht hier gar nichts..")
      Exit 27
    EndIf
    
    
    Const $RegKey="HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon"
    Const $Usr="DefaultUserName", $Kw="DefaultPassword"
    Const $MeineFireWall="spf" ;Hier den SERVICENAMEN der FireWall eintragen
    Dim $RegUsr, $RegKw, $MBYes=6, $ShellApp
    If $CmdLine[0]=0 Then
      $RegUsr=RegRead($RegKey &"Always", $Usr &"Neu")
      $RegKw=RegRead($RegKey &"Always", $Kw &"Neu")
    Else
      $RegUsr=$CmdLine[1]
      $RegKw=$CmdLine[2]
    EndIf
    If MsgBox(36, @UserName &" abmelden..", "Nächster Benutzer wird " &$RegUsr)<>$MBYes Then Exit 27
    $ShellApp=ObjCreate("shell.application") ;Get/Make a ShellApplicationObject
    If Not $ShellApp.IsServiceRunning($MeineFireWall) Then
      $MBYes=$ShellApp.ServiceStart($MeineFireWall, True)
      If $MBYes=0 Then MsgBox(4096,"Ooops, " &$MeineFireWall, " nicht gestartet..")
    EndIf
    RegWrite($RegKey, $Usr, "REG_SZ", $RegUsr)
    RegWrite($RegKey, $Kw, "REG_SZ", $RegKw)
    ShutDown(0) ; so, jetzt noch abmelden --> zum neuen User..
    Exit 0
    
    
    ;</AutoItScript>
    Alles anzeigen

    Möge dieses Skript auch Anderen nutzen..
    Gruß
    ytwinky

  • info zu pc

    • ytwinky
    • 12. Februar 2006 um 11:13

    Mag sein, ich habe das mit meiner neuen Version 3.1.1.107 noch nicht probiert..
    Die ProzessorRevision wird so ausgegeben, wie Echo sie anzeigt..
    GetMac mußte ich ändern, wg. Versionsproblemen..
    da ich zum Lesen der Echo-Ausgabe aber sowieso ReadAll() schreiben mußte, habe ich es gleich für GetMac auch genommen,
    kann sein, daß die Mid-Anweisung lauten müßte ..Mid(... -2), muß ich aber noch probieren
    Gruß
    ytwinky

  • info zu pc

    • ytwinky
    • 11. Februar 2006 um 16:35

    So, jetzt läuft SysInfo auch bei mir..
    Gut, daß ich mich auf meinem System wenigstens soweit auskenne, daß
    ich SysInfo dahingehend ändern konnte, daß auch bei mir alles richtig
    angezeigt wird.
    Bei mir(mglw. auch bei Anderen) ist KByte=2^10=1024!
    Und hier nun meine Version:

    C
    #include <array.au3>
    #include <process.au3>
    #include <GUIConstants.au3>
    Const $DateiName=@TempDir &"\SysInfo.Prt"
    Dim $KB=1024 ;denn 2^10=1024 und nicht 1028 :rofl:
    $a = 0
    $Form1 = GUICreate("Info zum PC - By GtaSpider(Max)&ytwinky", 368, 420, 192, 125)
    $akt = GUICtrlCreateButton("Aktualisieren", 8, 8, 73, 25)
    $Edit1 = GUICtrlCreateEdit("", 8, 40, 350, 370, $ES_AUTOVSCROLL+$WS_VSCROLL, $WS_EX_CLIENTEDGE)
    GUICtrlSetData(-1,StringReplace(_Version(),@LF,@CRLF))
    $speed = GUICtrlCreateButton("SpeicherAngaben", 88, 8, 99, 25)
    GUISetState(@SW_SHOW)
    While 1
    	$msg = GuiGetMsg()
    	Select
    		Case $msg = $GUI_EVENT_CLOSE
    			ExitLoop
    		Case $msg = $akt
    			$a = 0
    			GUICtrlSetData($Edit1,"")
    			GUICtrlSetData($Edit1,StringReplace(_Version(), @LF, @CRLF))
    		Case $msg = $speed
    			$mem = MemGetStats()
    			$mem = "Gesamtes physikalisches RAM: " & Round($mem[1]/$KB) & @CRLF &"Verfügbares physikalisches RAM: " & Round($mem[2]/$KB) & @CRLF &"Größe vom Pagefile: "& Round($mem[3]/$KB) & @CRLF &"Verfügbar im Pagefile: " & Round($mem[4]/$KB) & @CRLF &"Gesamter virtueller Speicher: " & Round($mem[5]/$KB) & @CRLF &"Verfügbarer virtueller Speicher: " & Round($mem[6]/$KB)  & @CR &"Alle Angaben in MB!"
    			MsgBox(0,"Speicherangaben von " & @ComputerName &":",$mem)
    	EndSelect
    WEnd
    Exit
    
    
    Func _Version()
    	Dim $cpugen, $cpuat, $cpuraw, $cpu, $mem, $memfreeun, $memtotalun, $memfree, $memtotal, $vide, $vidcard, $monito, $monitor, $soun, $soundcard, $mous, $mouse
    ;Infos zur CPU auslesen:
    	$cpugen = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "Identifier")
    	$cpuat = " @ " & RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "~MHz") & "MHz"
    	$cpuraw = $cpugen & $cpuat
    	$cpu = StringStripWS($cpuraw, 1)
    ;Infos zum Arbeitsspeicher:
    	$mem = MemGetStats()
    	$memfreeun = Round(($mem[2] / $KB))
    	$memtotalun = ($mem[1] / $KB)
    	$memfree = Round($memfreeun, 0) & " MB"
    	$memtotal = Round($memtotalun, 0) & " MB"
    ;CurrentControlSet auslesen:
    	Global $crtset
    	$crtset = RegEnumKey("HKEY_LOCAL_MACHINE\SYSTEM", 2)
    ;Grafikkarte auslesen:
    	$vide = "HKEY_LOCAL_MACHINE\SYSTEM" & $crtset & "\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0000"
    	$vidcard = RegRead($vide, "driverdesc")
    ;Monitor auslesen:
    	$monito = "HKEY_LOCAL_MACHINE\SYSTEM" & $crtset & "\Control\Class\{4D36E96E-E325-11CE-BFC1-08002BE10318}\0002"
    	$monitor = RegRead($monito, "driverdesc")
    ;Soundkarte auslesen:
    	$string = _zounds("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}")
    	Dim $subkeystring
    	$subkeystring = _subkey($string)
    	$subarray = StringSplit($subkeystring, "|")
    	$soun = "HKEY_LOCAL_MACHINE\SYSTEM" & $crtset & "\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}" & $subarray[1]
    	$soundcardone = "Soundkarte: " & RegRead($soun, "driverdesc")
    	$sountwo = "HKEY_LOCAL_MACHINE\SYSTEM" & $crtset & "\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}" & $subarray[2]
    	$soundcardtwo = "Soundkarte: " & RegRead($sountwo, "driverdesc")
    	If $soundcardone = $soundcardtwo Then
    		$soundcard = $soundcardone
    	EndIf
    	If $soundcardtwo <> $soundcardone And RegRead($sountwo, "driverdesc") <> "" Then
    		$soundcard = $soundcardone & @CRLF & $soundcardtwo
    	EndIf
    	If $soundcardtwo <> $soundcardone And RegRead($sountwo, "driverdesc") = "" Then
    		$soundcard = $soundcardone
    	EndIf
    ;Mouse auslesen:
    	$mous = "HKEY_LOCAL_MACHINE\SYSTEM" & $crtset & "\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}\0000"
    	$mouse = RegRead($mous, "driverdesc")
    	$winkey = DecodeProductKey(RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DigitalProductID"))
    	$winid= RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductId")
    	Return "Hardware:" & @LF & "CPU: " & $cpu & @LF & "Prozessor Revision: " &_GetRevison() &@LF & "Arbeitsspeicher gesamt: " & $memtotal & "  frei: " & $memfree & @LF&"Grafikkarte: " & $vidcard & @LF & "Monitor: " & $monitor & @LF & "Auflösung: " & @DesktopWidth & " x " & @DesktopHeight & " x " & @DesktopDepth & @LF & $soundcard & @LF & "Mouse: " & $mouse & @LF & " " & @LF & "Aktuelles Beriebssystem:" & @LF & "Windows-Version: " & _OSVersion() & " " & @OSBuild & " " & @OSServicePack & @LF & "Windows-Typ: " & _OSTyp() & @LF & "Windows Seriennummer: " & $winkey & @LF & "Windows Produkt-ID: " & $winid & @LF &  "Sprache: " & _Language() & @LF & " " & @LF & "Systeminformationen:" & @LF & "Computer-Name: " & @ComputerName & @LF & "Aktueller Benutzer: " & @UserName & @LF & " " & @LF & "Netzwerkinformationen:" & @LF & "IP-Adresse 1: " & @IPAddress1 & @LF & "IP-Adresse 2: " & @IPAddress2 & @LF & "IP-Adresse 3: " & @IPAddress3 & @LF & "IP-Adresse 4: " & @IPAddress4 & @LF & "MAC-Adresse: " &_GetMACFromIP(@IPAddress1)
    EndFunc   ;==>_Version
    
    
    Func _Language()
    	Select
    		Case StringInStr("0413,0813", @OSLang)
    			Return "Isländisch"
    		Case StringInStr("0409,0809,0c09,1009,1409,1809,1c09,2009,2409,2809,2c09,3009,3409", @OSLang)
    			Return "Englisch"
    		Case StringInStr("040c,080c,0c0c,100c,140c,180c", @OSLang)
    			Return "Französisch"
    		Case StringInStr("0407,0807,0c07,1007,1407", @OSLang)
    			Return "Deutsch"
    		Case StringInStr("0410,0810", @OSLang)
    			Return "Italienisch"
    		Case StringInStr("0414,0814", @OSLang)
    			Return "Norwegisch"
    		Case StringInStr("0415", @OSLang)
    			Return "Polnisch"
    		Case StringInStr("0416,0816", @OSLang)
    			Return "Portugisisch"
    		Case StringInStr(" 040a,080a,0c0a,100a,140a,180a,1c0a,200a,240a,280a,2c0a,300a,340a,380a,3c0a,400a,440a,480a,4c0a,500a", @OSLang)
    			Return "Spanisch"
    		Case StringInStr("041d,081d", @OSLang)
    			Return "Schwedisch"
    		Case Else
    			Return "Ander Sprache" ;Aussengeländer andere Baustelle nixsprechengud deutsch
    	EndSelect
    EndFunc   ;==>_Language
    
    
    
    
    Func _OSVersion()
    	Dim $W="Windows "
    	Select
    		Case @OSVersion == "WIN_2003"
    			Return $W &"2003"
    		Case @OSVersion == "WIN_XP"
    			Return $W &"XP"
    		Case @OSVersion == "WIN_2000"
    			Return $W &"2000"
    		Case @OSVersion == "WIN_NT4"
    			Return $W &"NT 4"
    		Case @OSVersion == "WIN_ME"
    			Return $W &"ME"
    		Case @OSVersion == "WIN_98"
    			Return $W &"98"
    		Case @OSVersion == "WIN_95"
    			Return $W &"95"
    		Case Else
    			Return $W &" für Waschmaschinen"
    	EndSelect
    EndFunc   ;==>_OSVersion
    
    
    Func _OSTyp()
    	Select
    		Case @OSTYPE == "WIN32_NT"
    			Return "Windows NT32"
    		Case @OSTYPE == "WIN32_WINDOWS"
    			Return "Windows 32"
    	EndSelect
    EndFunc   ;==>_OSTyp
    
    
    
    
    Func _zounds($soundcardkey)
    	Global $string
    	$i = 1
    	While 1
    		$key = RegEnumKey($soundcardkey, $i)
    		If @Error = -1 Then ExitLoop
    		$reg = RegRead($soundcardkey & "" & $key, "SetupPreferredAudioDevicesCount")
    		If $reg = "0" Then
    			$reg = "0"
    		EndIf
    		If $reg = "" Then
    			$reg = "-1"
    		EndIf
    		$string = $string & $reg & " | "
    		SetError(1)
    		$i = $i + 1
    	WEnd
    	Return $string
    EndFunc   ;==>_zounds
    
    
    Func _subkey($str)
    	$array = StringSplit($str, "|")
    	_ArrayDelete($array, 0)
    	$arrayoriginal = $array
    	$maxinda = _ArrayMaxIndex($arrayoriginal, 1)
    	$maxa = $arrayoriginal[$maxinda]
    	_ArrayDelete($array, $maxinda)
    	$arrayafter = $array
    	$maxindb = _ArrayMaxIndex($arrayafter, 1)
    	$maxb = $arrayafter[$maxindb]
    
    
    	If $maxinda = 0 And $maxa = -1 Then
    		$subkeyone = "0000"
    		$subkeytwo = "0000"
    		Return $subkeyone & "|" & $subkeytwo
    	EndIf
    
    
    	If $maxindb = 0 And $maxb = -1 Then
    		If $maxinda < 10 Then
    			$subkeyone = "000" & $maxinda
    			$subkeytwo = $subkeyone
    		EndIf
    		If $maxinda > 9 Then
    			$subkeyone = "00" & $maxinda
    			$subkeytwo = $subkeyone
    		EndIf
    		Return $subkeyone & "|" & $subkeytwo
    	EndIf
    	If $maxinda < 10 And $maxindb < 9 And $maxinda < $maxindb Then
    		$subkeyone = "000" & $maxinda
    		$subkeytwo = "000" & ($maxindb + 1)
    	EndIf
    	If $maxinda < 10 And $maxindb < 10 And $maxinda > $maxindb Then
    		$subkeyone = "000" & $maxinda
    		$subkeytwo = "000" & $maxindb
    	EndIf
    	If $maxinda > 9 And $maxindb > 9 And $maxinda > $maxindb Then
    		$subkeyone = "00" & $maxinda
    		$subkeytwo = "00" & $maxindb
    	EndIf
    	If $maxinda > 9 And $maxindb > 8 And $maxinda < $maxindb Then
    		$subkeyone = "00" & $maxinda
    		$subkeytwo = "00" & ($maxindb + 1)
    	EndIf
    	If $maxinda > 9 And $maxindb < 10 And $maxinda > $maxindb Then
    		$subkeyone = "00" & $maxinda
    		$subkeytwo = "000" & $maxindb
    	EndIf
    	If $maxinda < 10 And $maxindb > 9 And $maxinda < $maxindb Then
    		$subkeyone = "000" & $maxinda
    		$subkeytwo = "00" & ($maxindb + 1)
    	EndIf
    	Return $subkeyone & "|" & $subkeytwo
    EndFunc   ;==>_subkey
    
    
    Func DecodeProductKey($BinaryDPID)
    	Local $bKey[15], $sKey[29], $Digits[24], $Value = 0, $hi = 0, $n = 0, $i = 0, $dlen = 29, $slen = 15, $Result
    	$Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789", "")
    	$BinaryDPID = StringMid($BinaryDPID, 105, 30)
    	For $i = 1 To 29 Step 2
    		$bKey[Int($i / 2) ] = Dec(StringMid($BinaryDPID, $i, 2))
    	Next
    	For $i = $dlen - 1 To 0 Step - 1
    		If Mod(($i + 1), 6) = 0 Then
    			$sKey[$i] = "-"
    		Else
    			$hi = 0
    			For $n = $slen - 1 To 0 Step - 1
    				$Value = BitOR(BitShift($hi, -8), $bKey[$n])
    				$bKey[$n] = Int($Value / 24)
    				$hi = Mod($Value, 24)
    			Next
    			$sKey[$i] = $Digits[$hi + 1]
    		EndIf
    	Next
    	For $i = 0 To 28
    		$Result = $Result & $sKey[$i]
    	Next
    	Return $Result
    EndFunc   ;==>DecodeProductKey
    
    
    
    
    Func _GetMACFromIP ($sIP)
    	;By ytwinky
    	$run=_RunDos(@ComSpec &" /c nbtstat -a " &$sIP &" | Find ""="" >" &$DateiName)
    	$s=_ReadAll($DateiName)
    	FileDelete($DateiName)
     	Return StringMid($s, StringInstr($s, "=")+1)
    EndFunc
    
    
    Func _GetRevison()
    ;2006 By ytwinky
    	$run=_RunDos( @ComSpec & " /c echo %PROCESSOR_REVISION% >" &$DateiName)
    	$run=_ReadAll($DateiName)
    	FileDelete($DateiName)
    	Return StringMid($run, 1, StringLen($run)-1)
    EndFunc
    
    
    Func _ReadAll($DateiName)
    ;2006 By ytwinky
    	Local $ForReading=0, $Size, $DateiHnd, $Warte=3000
    	If FileExists($DateiName) Then
    		$DateiHnd=FileOpen($DateiName, $ForReading)
    		If $DateiHnd<0 Then
    			MsgBox(4096, "Ooops:", "Datei " &$DateiName &" läßt sich nicht öffnen..", $Warte)
    			Exit 1
    		Else
    			$Size=FileGetSize($DateiName)
    			If $Size>0 Then ;da is was drin..
    				$Size=FileRead($DateiHnd, $Size)
    				FileClose($DateiHnd)
    				Return $Size
    			Else ;da is nix drin
    				MsgBox(4096, "Ooops:", "Datei " &$DateiName &" ist leer..", $Warte)
    				Exit 1
    			EndIf
    		EndIf
    	Else
    		MsgBox(4096, "Ooops:", "Datei " &$DateiName &" nicht gefunden..", $Warte)
    		Exit 1
    	EndIf
    EndFunc
    Alles anzeigen


    Vllt. hilfts ja dem Einen oder Anderen..
    Gruß
    ytwinky

  • IsAdmin()

    • ytwinky
    • 9. Februar 2006 um 18:49

    :rofl:
    Habe ich vllt. vergessen einen Smiley zu setzen? ;)
    Ich habe es jedenfalls verkraftet und an der Tatsache, daß ich den Quellcode gepostet habe, kannste auch erkennen:
    Da ist nix Geheimnisvolles dabei..
    ..aber wie gesagt, es ist mein 1. AutoIt-Script ;)
    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™