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

Beiträge von Maximus1

  • Stringbetween ist leer

    • Maximus1
    • 15. Mai 2013 um 14:21

    vielen dank euch beiden. :)

  • Stringbetween ist leer

    • Maximus1
    • 15. Mai 2013 um 12:29
    Zitat von x0r

    Hi,

    wie sieht der Inhalt deiner *.acl-Datei aus?

    Gruß
    x0r

    Code
    c03.adsummos.net
    e35fbf.t.axf8.net
    ma156-r.analytics.edgesuite.net ##[AkamaiPlayerAnalytics]
    kona.kontera.com ##[DynamiContext AdLinks][MVPS.Criteria]

    so, nur mit einigen hundert adressen.

  • Stringbetween ist leer

    • Maximus1
    • 15. Mai 2013 um 09:30

    ich will aus heier hosts datei eine squid kompatible liste machen.
    file einlesen geht und zeilen lesen geht auch.

    wenn ich nun aber das sehen will was zwischen ## und ] steht, wird mir nur 0 für nicht vorhanden und nichts für das ist doch irgendwas angezeigt.
    wo ist mein fehler?

    [autoit]


    #include <Array.au3>
    #include <File.au3>
    #include <String.au3>

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

    Local $avArray[1]
    Local $stringleft = '##'
    Local $stringright = ']'

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

    Local $file = FileOpenDialog ( "", @HomeDrive, "acl datei(*.acl)" , 1)

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

    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")

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

    Else
    $zeilen = _FileCountLines($file)
    MsgBox(0, "Zeilen", $zeilen)
    For $i = 1 To $zeilen
    $zeile = FileReadLine($file,$i)
    MsgBox(0,"zeile",$zeile)
    $string = _StringBetween($zeile, $stringleft, $stringright)
    MsgBox(0,"string",$string)
    Local $stringclean = StringReplace($zeile, $string, "")

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

    If $stringclean <> 0 Then
    _ArrayAdd($avArray,$stringclean)
    EndIf

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

    Next

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

    EndIf

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

    _ArrayDisplay($avArray)
    FileClose($file)
    MsgBox(0, "", "tschuess")

    [/autoit]
  • Softwareverteilung Hephaistos [RELEASE]

    • Maximus1
    • 3. Dezember 2012 um 18:59

    hallo und danke das du etwas in sachen softwareverteilung machst.

    ich habe hier allerdings ein paar probleme mit deinem tool.


    1. client.exe :
    beim compilieren wird alles was mit _GetIntersection zu tun hat bemängelt. ich habe keine au3 datei dafür.

    C
    D:\soft deployment\client.au3(24,10) : ERROR: can't open include file <_GetIntersection.au3>.
    #include <_GetIntersection.au3>
    ~~~~~~~~~^
    D:\soft deployment\client.au3(199,60) : ERROR: _GetIntersection(): undefined function.
    $ret = _GetIntersection($programme, $localprogramme, 0, ' ')
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    D:\soft deployment\client.au3 - 2 error(s), 0 warning(s)

    2. client.exe zeile 30 :

    [autoit]

    $freigabe = "ProgrammeAutoit$"

    [/autoit]


    bleibt das so oder muss ich das mit irgendwas austauschen?

    3. Die grafische oberfläche :
    trotz eines programms das ich testweise hinzugefügt habe, taucht es nicht auf.
    wenn ich auf wake up klicke beendet sich das script mit folgendem fehler

    Code
    D:\soft deployment\verteiltool.au3 (438) : ==> Variable used without being declared.:
    _Rechnerwakeup($typ, $RechnerTreeView_selected)
    _Rechnerwakeup(^ ERROR

    jemand eine idee?

  • Excel row in array (problemmit variable)

    • Maximus1
    • 8. Mai 2012 um 08:20

    die lösung kann ja so einfach sein :(
    ich frage mich warum ich sowas immer übersehe.


    ich danke dir für deinen tip. :)

  • Excel row in array (problemmit variable)

    • Maximus1
    • 7. Mai 2012 um 22:34

    dies ist der teil er ärger macht.
    in der drittletzten zeile geht der ärger los. wenn ich $sspalte nutze bekomme ich die fehlermelung

    Code
    C:\Program Files\AutoIt3\Include\Excel.au3 (694) : ==> The requested action with this object has failed.:
    Return $oExcel.Activesheet.Cells($sRangeOrRow, $iColumn).Value
    Return $oExcel.Activesheet.Cells($sRangeOrRow, $iColumn)^ ERROR


    wenn ich jedoch eine zahl eingebe ist alles ok. ich kann jedoch keine zahl eingeben, da sich das format der excel tabelle scheinbar jeden tag nach laune des erstelles ändert.


    ideen?


    [autoit]

    $aArray = _ExcelReadSheetToArray($oExcel, 2) ; Benutzt die vorgegebenen Parameter
    #region --- CodeWizard generated code Start ---
    ;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical, Modality=Task Modal, Miscellaneous=Top-most attribute
    MsgBox(270352, "Welche Spalte (Namen)?", "Schau im nächsten Fenster wo die Namen stehen und Merke dir die Spalte (Senkrecht)")
    #endregion --- CodeWizard generated code Start ---
    _ArrayDisplay($aArray, "Welche Spalte?")
    $namenspalte = InputBox("Welche Spalte?", "In welcher Spalte Standen die namen?")

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

    $menge = UBound($aArray)
    MsgBox(0, "reihen", $menge)
    For $i = 0 To $menge - 1
    GUICtrlSetData($uInput[$i] - 1, $aArray[$i][$namenspalte])
    Next
    Dim $test[30]
    #region --- CodeWizard generated code Start ---
    ;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical, Modality=Task Modal, Miscellaneous=Top-most attribute
    MsgBox(270352, "Welche Spalte?", "Schau im nächsten Fenster wo die Softwarepakete stehen und Merke dir die Spalte (Senkrecht)")
    #endregion --- CodeWizard generated code Start ---
    _ArrayDisplay($aArray, "Welche Spalte? (Software)")
    $sspalte = InputBox("Welche Spalte?", "In welcher Spalte Standen die Softwarepakete?")
    MsgBox(0, "", "-" & $sspalte & "-")
    For $j = 1 To $menge - 1;Loop
    $sCellValue = _ExcelReadCell($oExcel, $j, $sspalte)
    $softarray[$j] = $sCellValue
    Next

    [/autoit]
  • multidimensionales array in bestehende inputboxen einfügen

    • Maximus1
    • 6. Mai 2012 um 13:31

    hallo leute,
    ich habe mich doch noch dran gesetzt und die boxen per for next schleife erstellen lassen.
    daraufhin ist mein script von knapp unter 700 zeilen auf gerade mal 250 zeilen geschrumpft.

    es war doch nicht so viel arbeit wie gedacht und mein projekt ist nun auch fertig und wartet auf den produktiveinsatz die nächste woche.
    die daten in arrays, das dann sortieren und per arrayunique und arraysort aufräumen ging recht schnell.
    ebenso das einfügen lasen dieser bereinigten daten in die checkboxen.

    vielen dank für den doch massiven denkanstoss :)

  • multidimensionales array in bestehende inputboxen einfügen

    • Maximus1
    • 5. Mai 2012 um 23:22

    das ist alles gut zu wissen und ich bin dir sehr dankbar für den code, jedoch ist das projekt schon weit vortgeschritten und ein umbauen würde viel zeit kosten.
    in folgenden projekten wird der code auf jeden fall einfliessen.

    daher nochmals zurück zur ursprünglichen fragestellung.
    wie kann ich die bestehenden inputboxen aus dem array befüllen?

  • multidimensionales array in bestehende inputboxen einfügen

    • Maximus1
    • 5. Mai 2012 um 23:00

    danke erstmal für deine hilfe.
    es sind insgesammt 90 inputboxen die gefüllt werden sollen/können, die sich aufteilen in 30 user und ihren dazugehörigen nummern (asset). es gibt zudem ca 30 softwarepakete.
    die daten bekomme ich aus einer excel tabelle, welche bis zu 30 user nebst ihrer asset nummer und einem feld "software" besteht.... zumindest ist das was ich daraus brauche.
    die software ist von user zu user unterschiedlich.

    ich fragte mich schon wie man da ganze boxen erstellen übersichtlicher und kompakter halten kann, die antwort darauf habe ich somit ganz nebenher bekommen. :)

    das ganze soll schlussendlich dazu dienen altiris schneller mit daten füttern zu können.


    edit: wie kann ich die inputboxen denn ansprechen, wenn ich die so anlege?

  • multidimensionales array in bestehende inputboxen einfügen

    • Maximus1
    • 5. Mai 2012 um 22:19

    ich will ein excel sheet in bestehende inputboxen einfügen.
    das hier habe ich:

    [autoit]

    Func _excelimport()
    $sFilePath1 = FileOpenDialog("Bitte Excel datei auswählen", @ScriptDir, "Text files (*.xlsx)") ; Diese Datei sollte bereits existieren
    $oExcel = _ExcelBookOpen($sFilePath1, 0)

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

    If @error = 1 Then
    MsgBox(0, "Fehler!", "Das Excel-Objekt konnte nicht erstellt werden")
    Exit
    ElseIf @error = 2 Then
    MsgBox(0, "Fehler!", "Die Datei existiert nicht!")
    Exit
    EndIf
    $aArray = _ExcelReadSheetToArray($oExcel) ; Benutzt die vorgegebenen Parameter
    _ArrayDisplay($aArray, "Das Array benutzt die vorgegebenen Parameter")
    _ExcelBookClose($oExcel) ; Zum Abschluss verlassen wir das Programm
    $menge = UBound($aArray)
    For $i = 2 To $menge - 1
    GUICtrlSetData($Input1, $aArray[$i][6])
    Next

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

    EndFunc ;==>_excelimport

    [/autoit]

    wie kann ich in der for.... next schleife so lange die nächste inputbox nutzen lassen bis die spalte des arrays abgearbeitet ist?
    im anschluss wird das gleiche nochmal mit einer anderen spalte in andere boxen gemacht. da kommt aber stringsplit noch dazu, da ich dort trennzeichen habe. dazu aber vielleicht später.

  • gerechter verteilen generator

    • Maximus1
    • 24. April 2012 um 15:15

    update

    - wenn weder teilnehmer noch artikel angegeben waren und man den button drückte stürzte das tool ab...... behoben
    - screenshots werden nur noch vom tool selbst erstellt und nicht mehr vom ganzen bildschirm.
    - fehlermeldungen in der GUI was fehlt erstellt.
    - kleines cleanup

  • gerechter verteilen generator

    • Maximus1
    • 24. April 2012 um 12:10

    ja die GUI ist mit koda entstanden.
    daher auch form 1 und die überflüssigen includes.

    die box variablen sind noch aus einer frühen version über geblieben.

    ich würde mal sagen, das teil ist quick und dirty. :-S

  • gerechter verteilen generator

    • Maximus1
    • 24. April 2012 um 02:55

    ich habe einen generator gebaut, welcher aus bis zu 5 teilnehmern wählt und den dann mit dem zu verteilenden teil verknüpft ausgibt.
    ich finde es für verschenkaktionen in foren ganz nützlich.


    vorgehensweise:

    - bis zu 5 leute eingeben und markieren wer dran teilnehmen soll
    - was man verteilen will eingeben und jeweiligen radio button klicken
    - den großen button klicken
    - freuen


    das tool lässt sich mehrfach bedienen ohne neugestartet werden zu müssen
    es wird nach jedem klick auf den button ein screenshot erstellt


    exe und source ist im zip file

    Dateien

    das tool klein.jpg 87,75 kB – 0 Downloads AMD Duron 800 .jpg 94,72 kB – 0 Downloads generator mit gui.au3 6,17 kB – 306 Downloads random generator.zip 420,95 kB – 317 Downloads
  • sounddevice switcher für vista und win7

    • Maximus1
    • 22. März 2012 um 01:58

    es gab ein kleines update


    UPDATE:
    22.03.2012
    - Update durchgeführt und die maximale Anzahl auf 4 Geräte erhöht

  • sounddevice switcher für vista und win7

    • Maximus1
    • 1. Februar 2012 um 15:08

    das lässt sich ja auch beliebig erweitern. einfach für mehr devices

    [autoit]

    If $devs > XXXX Then $head = TrayCreateItem($devnamen[XXX])

    [/autoit]

    auswechseln.

    das gleiche muss dann aber auch in der while schleife passieren.
    desweiteren sollten die variablen für die geräte angepasst werden.

    [autoit]

    If $devs >XXX Then
    Select
    Case $msg = $head
    Run("SetDefaultAudioDevice.exe" & " " & $reg[XXX] & " " & "communications", "", @SW_HIDE)
    Run("SetDefaultAudioDevice.exe" & " " & $reg[XXX] & " " & "multimedia", "", @SW_HIDE)
    If $blase = 1 Then TrayTip("Sounddevice", "" & $devnamen[XXX], 5, 1)
    TrayItemSetState($hdmi, $TRAY_ENABLE)
    TrayItemSetState($real, $TRAY_ENABLE)
    TrayItemSetState($head, $TRAY_DISABLE)
    Sleep(3000)
    EndSelect
    EndIf

    [/autoit]


    zusätzlich noch was tolles einfallen lassen um die trayitems den dis- oder enablen.

    @ andi: ne ich glaube ich schlage mich erst mit der api oder anderem rum, wenn ich wirklich nicht mehr hinterrücks weiter komme. ich verbringe so schon mehr zeit mit googlen und testing als mit dem wirklichen schreiben.

    ich habe in der zwischenzeit die finger doch nicht ganz davon lassen können und per

    [autoit]


    FileInstall("SDAD.exe", @TempDir & "\")
    .
    .
    .
    .
    .
    Run(@TempDir & "\SDAD.exe" & " " & $reg[0] & " " & "communications", "", @SW_HIDE)
    Run(@TempDir & "\SDAD.exe" & " " & $reg[0] & " " & "multimedia", "", @SW_HIDE)

    [/autoit]


    sowie res add files im compiler alles zusammengepackt.

  • alle Registrywerte unterhalb eines schlüssels lesen?

    • Maximus1
    • 1. Februar 2012 um 08:49

    ich habe es gelöst und das anlegen der items und die case auswahl ist noch das einfachste gewesen.

    das script liegt fertig im scripte forum.
    https://autoit.de/index.php?page=Thread&postID=245711#post245711

  • sounddevice switcher für vista und win7

    • Maximus1
    • 1. Februar 2012 um 08:46

    seit windows vista ist das handling mit den unterschiedlichen soundkarten etwas umständlich geraten.
    mich persönlich nervt das so ziemlich und ich suchte nach einer möglichkeit das mit weniger mausklicks zu bewerkstelligen.
    ich glaube ich habe es geschafft.

    mein script plaziert ein icon im tray und lässt diverse vorhandene sounddevices auswählen.
    leider ist das setzen der werte in der registry für mich nicht ganz so einfach zu verstehen, da an den wichtigen stellen mit hex werten gearbeitet wird.
    daher habe ich mich entschieden auf ein weiteres tool zurück zu greifen, was die werte setzt.
    es wird im archiv mitgeliefert


    Features:
    Auslesen der Namen der Sounddevices
    es werden dynamisch items für 2 bis 3 4 soundkarten gesetzt. (beliebig erweiterbar)
    ca 4 mb speicherverbrauch
    0% prozessorlast
    schnell im umschalten
    eine tolle blase die zeigt was gerade an ist ;)
    option zum deaktivieren der blase.
    das aktive gerät ist ausgegraut (leider erst nach dem ersten setzen)


    wünsche an euch:
    bugreports
    tips zur verbesserung geben
    im gesamten mithelfen das tool noch besser zu machen.


    hier nun das prachtstück:

    Spoiler anzeigen
    [autoit]

    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=1320412398_emblem-sound.ico
    #AutoIt3Wrapper_Outfile=soundchanger mit tray 1.0.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_Res_Fileversion=1.0
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #AutoIt3Wrapper_Run_Tidy=y
    #AutoIt3Wrapper_Run_Obfuscator=y
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Constants.au3>
    #include <Array.au3>
    Opt("TrayMenuMode", 3)

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

    Local $reg[1]
    Local $devnamen[1]
    Local $blase = 1

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

    If @CPUArch = "X64" Then ; wenn x64 dann nimm den 64er regschlüssel
    Global $key = "HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render"
    Else
    Global $key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render"
    EndIf

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

    For $i = 1 To 20 ; bis zu 20 geräteschlüssel werden ausgelesen
    Local $var = RegEnumKey($key, $i)
    If @error <> 0 Then ExitLoop
    $devices = RegRead($key & "\" & $var, "DeviceState") ; status des gerätes (nutzbar?!?)
    If $devices = 1 Then ; wenn nutzbar dann steht da eine 1, also nimm das mit auf
    $devname = RegRead($key & "\" & $var & "\" & "Properties", "{b3f8fa53-0004-438e-9003-51a46e139bfc},6") ; name des gerätes
    _ArrayAdd($reg, $var) ; regschlüssel
    _ArrayAdd($devnamen, $devname) ; gerätenamen
    EndIf
    Next
    _ArrayDelete($devnamen, 0)
    _ArrayDelete($reg, 0)

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

    $devs = UBound($devnamen)
    $hdmi = TrayCreateItem($devnamen[0])
    $real = TrayCreateItem($devnamen[1])
    If $devs > 2 Then $head = TrayCreateItem($devnamen[2])
    TrayCreateItem("")
    $noblase = TrayCreateItem("Kein Traytip")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Beenden")

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

    TraySetState()
    TraySetClick(1)

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

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = $hdmi
    Run("SetDefaultAudioDevice.exe" & " " & $reg[0] & " " & "communications", "", @SW_HIDE)
    Run("SetDefaultAudioDevice.exe" & " " & $reg[0] & " " & "multimedia", "", @SW_HIDE)
    If $blase = 1 Then TrayTip("Sounddevice", "" & $devnamen[0], 5, 1)
    TrayItemSetState($hdmi, $TRAY_DISABLE)
    TrayItemSetState($real, $TRAY_ENABLE)
    TrayItemSetState($head, $TRAY_ENABLE)
    Sleep(3000)
    Case $msg = $real
    Run("SetDefaultAudioDevice.exe" & " " & $reg[1] & " " & "communications", "", @SW_HIDE)
    Run("SetDefaultAudioDevice.exe" & " " & $reg[1] & " " & "multimedia", "", @SW_HIDE)
    If $blase = 1 Then TrayTip("Sounddevice", "" & $devnamen[1], 5, 1)
    TrayItemSetState($hdmi, $TRAY_ENABLE)
    TrayItemSetState($real, $TRAY_DISABLE)
    TrayItemSetState($head, $TRAY_ENABLE)
    Sleep(3000)
    EndSelect
    If $devs > 2 Then
    Select
    Case $msg = $head
    Run("SetDefaultAudioDevice.exe" & " " & $reg[2] & " " & "communications", "", @SW_HIDE)
    Run("SetDefaultAudioDevice.exe" & " " & $reg[2] & " " & "multimedia", "", @SW_HIDE)
    If $blase = 1 Then TrayTip("Sounddevice", "" & $devnamen[2], 5, 1)
    TrayItemSetState($hdmi, $TRAY_ENABLE)
    TrayItemSetState($real, $TRAY_ENABLE)
    TrayItemSetState($head, $TRAY_DISABLE)
    Sleep(3000)
    EndSelect
    EndIf
    Select
    Case $msg = $noblase
    If $blase = 1 Then
    $blase = 0
    Else
    $blase = 1
    TrayTip("", "Traytips werden wieder angezeigt", 5, 1)
    EndIf
    Case $msg = $exititem
    ExitLoop
    EndSelect
    WEnd

    [/autoit]

    Ich hoffe es ist für euch genauso nützlich wie für mich.


    Gruß

    Maximus1


    UPDATE:
    22.03.2012
    - Update durchgeführt und die maximale Anzahl auf 4 Geräte erhöht


    Die neue und zukünftige versionen könnt ihr auf meiner seite laden.
    maxtools... fast alle meine tools

    Dateien

    Soundchange.zip 344,9 kB – 371 Downloads
  • Ein Problem mit Array. Ich kannst nicht lösen

    • Maximus1
    • 31. Januar 2012 um 00:55

    wenn ein server daten auf verdacht schickt, weil da ja evtl. noch jemand sein könnte ist das nicht effizient.
    mach es lieber so das der server immer innerhalb von sagen wir mal 10 sekunden ein paket vom client erwartet.
    wenn das nicht kommt....... tschüss client.
    du ersparst dir damit evtl. sogar jede menge code.

    aus einer funktion geht man doch mit return beim abbruch raus, oder irre ich mich da?

  • alle Registrywerte unterhalb eines schlüssels lesen?

    • Maximus1
    • 30. Januar 2012 um 22:18

    ich habe mir erstmal so beholfen, da ich mit WMI nicht wirklich was anfangen kann.
    zur ausführung des scripts braucht ihr noch das tool hier
    http://zornsoftware.talsit.info/free-downloads?did=14
    das stellt anhand der GUID das jeweilig gewollte ein.
    ich wollte das zwar selber machen, aber warum das rad neu erfinden, wenn MS sich mit der API sowieso so geheimnsvoll anstellt
    http://social.microsoft.com/Forums/en/Offt…e9-2af63fd4a13e


    Spoiler anzeigen
    [autoit]


    #Include <Constants.au3>
    #include <Array.au3>
    Opt("TrayMenuMode",3)

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

    Local $reg[1]
    Local $devnamen[1]
    Local $blase = 1

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

    If @CPUArch = "X64" Then ; wenn x64 dann nimm den 64er regschlüssel
    Global $key = "HKEY_LOCAL_MACHINE64\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render"
    Else
    Global $key = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render"
    EndIf

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

    For $i = 1 To 20
    Local $var = RegEnumKey($key, $i)
    If @error <> 0 Then ExitLoop
    $devices = RegRead($key&"\"&$var, "DeviceState") ; status des gerätes (nutzbar?!?)
    if $devices = 1 Then ; wenn nutzbar dann steht da eine 1, also nimm das mit auf
    $devname = RegRead($key&"\"&$var&"\"&"Properties", "{b3f8fa53-0004-438e-9003-51a46e139bfc},6") ; name des gerätes
    _ArrayAdd($reg,$var) ; regschlüssel
    _ArrayAdd($devnamen,$devname) ; gerätenamen
    EndIf
    Next
    _ArrayDelete($devnamen,0)
    _ArrayDelete($reg,0)

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

    ;~ $menge = _ArraySize( $reg ) ; einträge im array
    ;~ for $j = 1 to $menge
    ;~ TrayCreateItem($devnamen[$j])
    ;~ Next

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

    $hdmi = TrayCreateItem($devnamen[0])
    $real = TrayCreateItem($devnamen[1])
    $head = TrayCreateItem($devnamen[2])
    TrayCreateItem("")
    $noblase = TrayCreateItem("Kein Traytip")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Beenden")

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

    TraySetState()
    TraySetClick(1)

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

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = $hdmi
    Run("SetDefaultAudioDevice.exe"&" "&$reg[0]&" "& "communications","",@SW_HIDE )
    Run("SetDefaultAudioDevice.exe"&" "&$reg[0]&" "& "multimedia","",@SW_HIDE )
    If $blase = 1 Then TrayTip("Sounddevice", ""&$devnamen[0], 5, 1)
    TrayItemSetState ($hdmi,$TRAY_DISABLE)
    TrayItemSetState ($real,$TRAY_ENABLE)
    TrayItemSetState ($head,$TRAY_ENABLE)
    Sleep(3000)
    Case $msg = $real
    Run("SetDefaultAudioDevice.exe"&" "&$reg[1]&" "& "communications","",@SW_HIDE )
    Run("SetDefaultAudioDevice.exe"&" "&$reg[1]&" "& "multimedia","",@SW_HIDE )
    If $blase = 1 Then TrayTip("Sounddevice", ""&$devnamen[1], 5, 1)
    TrayItemSetState ($hdmi,$TRAY_ENABLE)
    TrayItemSetState ($real,$TRAY_DISABLE)
    TrayItemSetState ($head,$TRAY_ENABLE)
    Sleep(3000)
    Case $msg = $head
    Run("SetDefaultAudioDevice.exe"&" "&$reg[2]&" "& "communications","",@SW_HIDE )
    Run("SetDefaultAudioDevice.exe"&" "&$reg[2]&" "& "multimedia","",@SW_HIDE )
    If $blase = 1 Then TrayTip("Sounddevice", ""&$devnamen[2], 5, 1)
    TrayItemSetState ($hdmi,$TRAY_ENABLE)
    TrayItemSetState ($real,$TRAY_ENABLE)
    TrayItemSetState ($head,$TRAY_DISABLE)
    Sleep(3000)
    Case $msg = $noblase
    If $blase = 1 Then
    $blase = 0
    Else
    $blase = 1
    TrayTip("", "Traytips werden wieder angezeigt", 5, 1)
    EndIf
    Case $msg = $exititem
    ExitLoop
    EndSelect
    WEnd

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

    ;~ Func _ArraySize( $reg )
    ;~ SetError( 0 )
    ;~ $index = 0
    ;~ Do
    ;~ $pop = _ArrayPop( $reg )
    ;~ $index = $index + 1
    ;~ Until @error = 1
    ;~ Return $index - 1
    ;~ EndFunc

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

    wie man im code sehen kann, soll hier noch nicht ende sein. ich würde gern für jedes gefundene gerät automatisch einen trayeintrag mit den richtigen infos erstellen lassen.
    wenn man mehr oder ewniger als meine 3 sounddevices hat kann es zu problemen kommen. das möchte ich damit dann beheben.

    würde mich freuen, wenn jemand einen heissen tip für mich hat wo ich mal schauen sollte.

  • alle Registrywerte unterhalb eines schlüssels lesen?

    • Maximus1
    • 30. Januar 2012 um 17:11

    ich möchte ein tool schreiben, das mir

    1. die sounddevices aus der registry liest
    2. deren status ausliest (standard oder nicht)


    ich weiss wo die registyschlüssel sind:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render

    dort verstecken sie sich in den langen zahlen Kolonen
    ich habe auch herausgefunden das :
    "DeviceState" 1 besagt das dieses gerät sichtbar und nicht deaktiviert ist.
    Role:0 Role:1 Role:2 den die art der verwendung angibt .

    im darunterliegenden schlüssel ist der wert von "{a45c254e-df1c-4efd-8020-67d146a850e0},2" der name des gerätes.

    nun will ich meinen soundchanger dahingehend umbaue, das er

    1. die sounddevices aus der registry liest
    2. deren status ausliest (standard oder nicht)
    3. die devices im tray anzeigen
    4. im tray den eintrag disabled der eh schon an ist
    5. den regeintrag schreibt wie er sein soll.


    problem dabei ist, das die zahlenkolonen bei allen unterschiedlich sind und ich nun einen weg brauche dennoch die richtigen geräte zu finden.
    das auslesen der einzelnen werte nach den zahlenkolonen ist simpel
    im tray den disablen ist dann auch simpel
    den regeintrag schreiben dann auch.

    bleibt also nur die frage wie ich den ganzen bereich auslese
    das aussieben anhand von "DeviceState" ist dann schon wieder einfach.


    hier mein bisheriges script (dem einen oder anderen mag es in teilen bekannt vorkommen)

    Spoiler anzeigen
    [autoit]

    #Include <Constants.au3>
    Opt("TrayMenuMode",3)

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

    $hdmi = TrayCreateItem("HDMI")
    $real = TrayCreateItem("Soundkarte")
    $head = TrayCreateItem("Headset")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Beenden")

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

    TraySetState()
    TraySetClick(1)

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

    While 1
    $msg = TrayGetMsg()
    Select
    Case $msg = $hdmi
    Run("control mmsys.cpl,@0,0")
    ;~ ;warten bis das Fenster geöffnet wurde
    WinWaitActive("Sound")
    $a="HDMI ist nun an"
    Send("{DOWN 1}")
    ; Zur Schaltfläche "Als Standard"
    Send("{TAB 2}")
    Send("{ENTER}")
    Send("{ENTER}")
    TrayTip("Sounddevice", ""&$a, 5, 1)
    TrayItemSetState ($hdmi,$TRAY_DISABLE)
    TrayItemSetState ($real,$TRAY_ENABLE)
    TrayItemSetState ($head,$TRAY_ENABLE)
    Sleep(3000)
    Case $msg = $real
    Run("control mmsys.cpl,@0,0")
    ;~ ;warten bis das Fenster geöffnet wurde
    WinWaitActive("Sound")
    $a="Soundkarte ist nun an"
    Send("{DOWN 2}")
    ; Zur Schaltfläche "Als Standard"
    Send("{TAB 2}")
    Send("{ENTER}")
    Send("{ENTER}")
    TrayTip("Sounddevice", ""&$a, 5, 1)
    TrayItemSetState ($hdmi,$TRAY_ENABLE)
    TrayItemSetState ($real,$TRAY_DISABLE)
    TrayItemSetState ($head,$TRAY_ENABLE)
    Sleep(3000)
    Case $msg = $head
    Run("control mmsys.cpl,@0,0")
    ;~ ;warten bis das Fenster geöffnet wurde
    WinWaitActive("Sound")
    $a="Headset ist nun an"
    Send("{DOWN 3}")
    ; Zur Schaltfläche "Als Standard"
    Send("{TAB 2}")
    Send("{ENTER}")
    Send("{ENTER}")
    TrayTip("Sounddevice", ""&$a, 5, 1)
    TrayItemSetState ($hdmi,$TRAY_ENABLE)
    TrayItemSetState ($real,$TRAY_ENABLE)
    TrayItemSetState ($head,$TRAY_DISABLE)
    Sleep(3000)
    Case $msg = $exititem
    ExitLoop
    EndSelect
    WEnd

    [/autoit]


    ideen bitte zu mir :)

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™