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

Beiträge von veronesi

  • Windows 8 - Unpin from Start

    • veronesi
    • 28. Juli 2012 um 19:44

    Ja, ich habe bereits 80 Personen mit der Release Preview geschult.
    Sobald die endgültige Version draußen ist, gibt's eine zweite Schulung (Auffrischung)

    Die Total 2000 Arbeitsplätze sind alle mit mobilen Geräten ausgestattet.
    Es sind Field Techniker die 70% im externen Einsatz sind. Dann ist Windows 8 nicht schlecht.
    Aber eben, nicht meine Gehaltsstufe!

    misterspeed
    Diese Artikel kannte ich leider schon.
    Aber nach meinem Verständnis heißt das nur, dass dieser Befehl dies nicht kann. Aber es gibt doch bestimmt einen neuen Befehl!

    Gruss, Veronesi

  • Windows 8 - Unpin from Start

    • veronesi
    • 28. Juli 2012 um 18:00

    Hallo Zusammen!

    Diese Frage ist etwas umfangreicher, deshalb die Spoiler :)


    Vorgeschichte

    Für ein grosses Geschäft habe ich für Vista und Win7 eine automatische Softwareverteilung geschrieben.
    Es werden 137 verschiedene Softwarekomponenten / Treiber / Manuals etc. von einer SQLite Datenbank automatisch installiert und konfiguriert.
    Alles läuft einwandfrei.

    Nun will dieser Konzern die Softwareverteilung auch gelegentlich mal auf Windows 8 haben. Wir sind bereits kräftig Windows 8 am testen und konfigurieren.
    Denn sobald das neue OS rauskommt, sollen so rasch wie möglich ca. 200 Arbeitsplätze damit ausgerüstet werden.
    Sobald dies ca. 4 Monate stabil läuft, kommen weitere 1'800 Arbeitsplätze hinzu.

    Bitte nun keine Diskussion, ob das wirklich notwendig ist, oder nicht. Das hat eine Person weit über meiner Gehaltsstufe entschieden!

    Ausführliche Beschreibung meines Wunsches

    Nun zu meinem Problem
    Die Software läuft problemlos auch auf Windows 8.
    Das einzige Problem ist, dass wir automatisch Startmenüeinträge erstellen. - Für alle 137 Software!
    Natürlich alle sauber beschriftet und gebündelt in einem Unterordner!

    Niemand ist nun so verrückt und wühlt sich durch alle diese Software im Startmenü durch. Sondern es wird einfach die Windows - Taste gedrückt und dann die Produktenummer oder der Produktename eingegeben. Sofort erscheint mit der Win7 Suche die gewünschte Software. Ohne dass es ein Durcheinander gibt.

    Unter Windows 8 ersetzt ja die Metro quasi das Startmenü. Nun werden halt leider 137 neue Einträge für die Metro gemacht.
    Ich kann zwar mit

    [autoit]

    DirRemove(@ProgramsCommonDir & "\Firmenname", 1)

    [/autoit]


    Alle diese Tiles (Kacheln) auf der Metro entfernen, allerdings werden sie dann bei der Suche auch nicht mehr gefunden!
    (Unter Win8 kann man auf der Metro ja einfach drauflos Tippen und man bekommt die gewünschten Suchresultate - auch Programme!)

    Ich suche nun also eine Möglichkeit, wie ich per Befehl einen bestimmten Link von der Metro Startoberfläche unpinnen kann.
    Also wie wenn ich mit der rechten Maustaste draufklicke und "Von Start lösen" wähle! Denn dann sind sie von der Oberfläche entfernt, werden aber bei der Suche gefunden!


    Langer Rede, kurzer Sinn:
    Wie kann ich unter Windows 8 per Befehl ein bestimmtes Tile (Kachel) von der Metro Startoberfläche lösen?
    Also irgendein DLL Call oder per WMI oder irgendetwas.


    Vielen Dank für alle Inputs!
    Veronesi

    Dateien

    Screenshot (2).png 180,38 kB – 0 Downloads
  • Dezimal in Hex umwandeln

    • veronesi
    • 18. Juli 2012 um 10:33

    Hallo Zusammen,

    Entschuldigt, aber ich konnte nicht früher antworten!

    Zitat von AspirinJunkie

    Gibst du es wirklich exakt so ein wie im ersten Post oder kommt die Zahl irgendwo anders her?
    Denn CE000000 ist die Hexadezimaldarstellung der Gleitkommazahl 1688400696,0.
    64A2F338 hingegen ist die Hexadezimaldarstellung der Integer-Zahl 1688400696.

    Erst seit Version 3.3.8.0 kann Hex() auch Gleitkommadarstellungen zurückgeben.
    Das Problem was ich hier sehe ist aber das du nur eine Integerzahl übergibst und somit das korrekte Ergebnis herauskommen sollte.
    Stattdessen bekommst du aber die Gleitkommazahlendarstellung was ich hier bei mir so nicht reproduzieren kann. [...]

    Nein, die Zahl kommt wo anderst her. Vielen Dank für die Aufklärung bezüglich der Gleitkommazahl.
    Nun ist mir auch klar, warum meine Lösung mit Number funktioniert!

    Ich habe einfach intuitiv angenommen, dass die Zahl womöglich noch keine echte (integer) Zahl ist und sie deshalb mit Number (und dem entsprechenden Parameter) in eine INT Zahl verwandelt.

    Danke für die Diskusion.
    Gruss Veronesi

  • Dezimal in Hex umwandeln

    • veronesi
    • 14. Juli 2012 um 07:18

    Sorry,
    Ich habe die Antwort gefunden:
    Die "Zahl" 1688400696 ist noch keine richtige Zahl. Aber auch kein String....
    Naja, auf jeden Fall geht es mit
    Hex(Number($iNumber, 1), 8 )

    Veronesi

  • Dezimal in Hex umwandeln

    • veronesi
    • 14. Juli 2012 um 05:51

    Guten Morgen zusammen

    Anscheinend bin ich zu blöd dazu. Ich möchte eine einfache dezimale Zahl (1688400696) in Hexadezimal umwandeln.
    Die Zahl 1688400696 sollte demnach 64A2F338 ergeben.
    Aber ich bekomme immer nur CE000000!

    Was mache ich falsch?

    [autoit]

    Hex(1688400696, 8)

    [/autoit]

    Danke für Eure Hilfe!
    Veronesi

  • Dynamische Variablennamen

    • veronesi
    • 24. Juni 2012 um 14:12

    Inzwischen habe ich mir anders beholfen.
    Ich befülle mit einer Funktion ein temporäres Array.
    Am Schluss rufe ich die Funktion _SaveArray($iNumber, $aList) auf.
    In dieser wird mit einer Switch Struktur (je nach $iNumber) das temporäre Array in das richtige Array gespeichert.

    So kann ich alle meine Funktionen sehr schlank halten und habe bloss eine zusätzliche Funktion, in welcher das Temporäre Array korrekt zurückkgepeichert wird.

    @Marsi
    Danke für Deine Funktion. Ich habe sie zwar nicht getestet, sie sieht aber auch gut aus.
    Mir gefällt meine vorhin erklärte Lösung aber besser, da es (für mich) so übersichtlicher bleibt.

    Was ich eigentlich erreichen möchte (bzw. vom Chef aus muss):
    Ich muss von ca. 23 verschiedenen Programmen diverse Zustände abfragen und speichern. Auf einen Knopfdruck ( bzw. noch zu definierenden Event hin ) soll das korrekte Programm mit den gespeicherten Zuständen wieder hergestellt werden.

    Klar, ich könnte die Daten auch in einer INI-Datei zwischenspeichern. Doch manchmal soll (später) innerhalb von 250-500ms 15-20 Zustände der Programme geändert werden.
    Da ich z.T. recht viel an "Zustandsdaten" abspeichern muss, wäre das über die Ini-Datei unter Umständen zu langsam.

    Ich löse das also so wie oben beschrieben. Ich denke, das ist eine brauchbare und vor allem elegante und übersichtliche Lösung!

    Vielen Dank allen, die Mitgeholfen und mich beraten haben!
    Gruss Veronesi

  • Dynamische Variablennamen

    • veronesi
    • 24. Juni 2012 um 13:55

    Leider Fehlanzeige!
    Das Skript funktioniert so nicht.
    Hier der verwendete Code:

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <string.au3>
    #include <array.au3>

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

    Global $as_List1[101][2]

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

    _Fill_Lists(1)

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

    Func _Fill_Lists($iListNumber)
    For $i = 1 To 100
    _Execute("$as_List"&$iListNumber&"[$i][0]=""Test""")
    Next
    EndFunc

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

    _ArrayDisplay($as_List1)

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

    #region _Execute-Fuction by Shadow992 (http://www.elitepvpers.de)
    Global $error_execute = 0

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

    Func _Execute($string_execute)

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

    $string_execute = $string_execute & @CRLF
    $string_execute = StringReplace($string_execute, "@error", "$error_execute", 0, 2)
    Local $temp211_execute = ""
    Local $temp2_execute = ""
    Local $temp_execute = ""
    Local $number_execute = 0
    Local $number2_execute = 0
    Local $ifs_found_execute = 0
    Local $while_founds_execute = 0
    Local $new_comands_execute = ""
    Local $var_execute = _StringExplode($string_execute, @CRLF)
    Local $i_execute = 0
    Local $found_execute, $else_found_execute, $while_found_execute, $exit_loop = 0

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

    Dim $var2_execute[UBound($var_execute)]
    Local $ua_execute = 0
    While $ua_execute < UBound($var_execute)
    If StringLeft($var_execute[$ua_execute], 1) = " " Then
    Do
    $var_execute[$ua_execute] = StringTrimLeft($var_execute[$ua_execute], 1)
    Until StringLeft($var_execute[$ua_execute], 1) <> " "
    EndIf

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

    $var2_execute[$ua_execute] = StringStripWS($var_execute[$ua_execute], 8)
    $ua_execute += 1
    WEnd
    While $i_execute < UBound($var_execute)
    ;~ MsgBox(0, "", $var2_execute[$i_execute])
    If StringInStr($var2_execute[$i_execute], ";") <> 1 Then
    If StringInStr($var2_execute[$i_execute], "exit", 2) = 1 Then
    if (StringLen($var2_execute[$i_execute]) = 4) Then
    Exit
    ElseIf StringLen($var2_execute[$i_execute]) = 8 And StringInStr($var2_execute[$i_execute], "exitloop", 2) = 1 Then
    $exit_loop = 1
    EndIf
    ElseIf StringInStr($var2_execute[$i_execute], "if", 2) = 1 Then
    $found_execute = StringRegExp($var_execute[$i_execute], "(?i)if (.*<>.*)|(.*=.*)|(.*<.*)|(.*>.*)|(.*>=.*)|(.*<=.*)|(.*==.*)then", 3)
    ;~ _ArrayDisplay($found_execute)
    If IsArray($found_execute) Then
    $number_execute = 0
    if (StringLen($found_execute[0]) > 3) Then
    $found_execute[0] = StringReplace($found_execute[0], "then", "", 0, 0)
    $temp2_execute = Execute($found_execute[0])
    $error_execute = @error
    $number_execute = 0
    Else
    For $ia_execute = 0 To UBound($found_execute)-1
    if (StringLen($found_execute[$ia_execute]) > 3) Then
    For $aa_execute = 0 To StringInStr($found_execute[$ia_execute], "if", 0)
    $found_execute[$ia_execute] = StringTrimLeft($found_execute[$ia_execute], 1)
    Next
    $found_execute[$ia_execute] = StringReplace($found_execute[$ia_execute], "then", "", 0, 0)
    ;~ Msgbox(0,"test2",$found_execute[1])
    $temp2_execute = Execute($found_execute[$ia_execute])
    $error_execute = @error
    $number_execute = $ia_execute
    EndIf
    Next
    ;~ Msgbox(0,"test1",$found_execute[1])

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

    EndIf

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

    If $temp2_execute <> "True" Then
    $ifs_found_execute = 1
    $else_found_execute = 0
    For $a_execute = $i_execute + 1 To UBound($var2_execute) - 1
    If StringInStr($var2_execute[$a_execute], "if", 2) = 1 Then $ifs_found_execute += 1
    If StringInStr($var2_execute[$a_execute], "endif", 2) = 1 Then $ifs_found_execute -= 1
    If StringInStr($var2_execute[$a_execute], "else", 2) = 1 And $ifs_found_execute = 1 Then
    $number_execute = $a_execute
    ExitLoop
    EndIf
    If $ifs_found_execute = 0 Then
    $number_execute = $a_execute
    ExitLoop
    EndIf
    Next
    $i_execute = $number_execute
    Else
    $else_found_execute = 0
    $ifs_found_execute = 1
    For $a_execute = $i_execute + 1 To UBound($var_execute) - 1
    If StringInStr($var2_execute[$a_execute], "if", 2) = 1 Then $ifs_found_execute += 1
    If StringInStr($var2_execute[$a_execute], "endif", 2) = 1 Then $ifs_found_execute -= 1
    If StringInStr($var2_execute[$a_execute], "else", 2) = 1 And $ifs_found_execute = 1 Then
    $number2_execute = $a_execute
    $else_found_execute = 1
    EndIf
    If $ifs_found_execute = 0 Then
    $number_execute = $a_execute
    ExitLoop
    EndIf
    Next
    If $else_found_execute = 1 Then
    $new_comands_execute = ""
    For $ai_execute = $i_execute + 1 To $number2_execute - 1
    $new_comands_execute &= $var_execute[$ai_execute] & @CRLF
    Next
    _Execute($new_comands_execute)
    $i_execute = $number_execute
    EndIf
    EndIf
    Else
    Execute($var_execute[$i_execute])
    $error_execute = @error
    EndIf
    ElseIf StringInStr($var2_execute[$i_execute], "while", 2) = 1 Then
    $found_execute = StringRegExp($var_execute[$i_execute], "(?i)while (.*=.*)|(.*<.*)|(.*>.*)|(.*>=.*)|(.*<=.*)|(.*<>.*)", 3)
    If IsArray($found_execute) Then
    $number_execute = 0
    $while_found_execute = 1
    For $o_execute = 0 To UBound($found_execute) - 1
    if (StringInStr($found_execute[$o_execute], "while", 2) = 1) Then
    $number2_execute = $o_execute
    ExitLoop
    EndIf
    Next
    $temp2_execute = Execute($found_execute[$number2_execute])
    $error_execute = @error
    If $temp2_execute = "True" Then
    For $a_execute = $i_execute + 1 To UBound($var_execute) - 1
    If StringInStr($var2_execute[$a_execute], "while", 2) = 1 Then $while_found_execute += 1
    If StringInStr($var2_execute[$a_execute], "wend", 2) = 1 Then $while_found_execute -= 1
    If $while_found_execute = 0 Then
    $number_execute = $a_execute
    ExitLoop
    EndIf
    Next
    $new_comands_execute = ""
    For $u_execute = $i_execute + 1 To $number_execute - 1
    $new_comands_execute &= $var_execute[$u_execute] & @CRLF
    Next
    While $temp2_execute = "True"
    _Execute($new_comands_execute)
    $temp2_execute = Execute($found_execute[$number2_execute])
    $error_execute = @error
    If $exit_loop = 1 Then
    $exit_loop = 0
    ExitLoop
    EndIf
    WEnd
    $i_execute = $number_execute
    Else
    $while_found_execute = 1
    For $a_execute = $i_execute + 1 To UBound($var_execute) - 1
    If StringInStr($var2_execute[$a_execute], "while", 2) = 1 Then $while_found_execute += 1
    If StringInStr($var2_execute[$a_execute], "wend", 2) = 1 Then $while_found_execute -= 1
    If $while_found_execute = 0 Then
    $i_execute = $a_execute
    ExitLoop
    EndIf
    Next
    EndIf
    Else
    Execute($var_execute[$i_execute])
    $error_execute = @error
    EndIf
    ElseIf StringInStr($var2_execute[$i_execute], "for", 2) = 1 Then
    $found_execute = StringRegExp($var_execute[$i_execute], "(?i)for (\x24\w*\x20*)=(\x20*\d*\x20*)to(\x20*\d*\x20*)step(\x20*\d*\x20*)", 3)
    _ArrayDisplay($found_execute)
    If IsArray($found_execute) Then
    $number_execute = 0
    $while_found_execute = 1
    $found_execute[0] = StringTrimLeft($found_execute[0], 1)
    Assign($found_execute[0], $found_execute[1], 2)
    $temp2_execute = Execute($found_execute[$number2_execute])
    $error_execute = @error

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

    For $a_execute = $i_execute + 1 To UBound($var_execute) - 1
    If StringInStr($var2_execute[$a_execute], "for", 2) = 1 Then $while_found_execute += 1
    If StringInStr($var2_execute[$a_execute], "next", 2) = 1 Then $while_found_execute -= 1
    If $while_found_execute = 0 Then
    $number_execute = $a_execute
    ExitLoop
    EndIf
    Next
    $new_comands_execute = ""
    For $u_execute = $i_execute + 1 To $number_execute - 1
    $new_comands_execute &= $var_execute[$u_execute] & @CRLF
    Next
    Do
    _Execute($new_comands_execute)
    $error_execute = @error
    If $exit_loop = 1 Then
    $exit_loop = 0
    ExitLoop
    EndIf

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

    Assign($found_execute[0], Eval($found_execute[0]) + Execute($found_execute[3]), 2)
    Until Eval($found_execute[0]) >= Execute($found_execute[2])
    $i_execute = $number_execute
    Else
    $found_execute = StringRegExp($var_execute[$i_execute], "(?i)for (\x24\w*\x20*)=(\x20*\d*\x20*)to(\x20*\d*\x20*)", 3)
    _ArrayDisplay($found_execute)
    If IsArray($found_execute) Then
    $number_execute = 0
    $while_found_execute = 1
    $found_execute[0] = StringTrimLeft($found_execute[0], 1)
    Assign($found_execute[0], $found_execute[1], 2)
    $temp2_execute = Execute($found_execute[$number2_execute])
    $error_execute = @error

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

    For $a_execute = $i_execute + 1 To UBound($var_execute) - 1
    If StringInStr($var2_execute[$a_execute], "for", 2) = 1 Then $while_found_execute += 1
    If StringInStr($var2_execute[$a_execute], "next", 2) = 1 Then $while_found_execute -= 1
    If $while_found_execute = 0 Then
    $number_execute = $a_execute
    ExitLoop
    EndIf
    Next
    $new_comands_execute = ""
    For $u_execute = $i_execute + 1 To $number_execute - 1
    $new_comands_execute &= $var_execute[$u_execute] & @CRLF
    Next
    Do
    _Execute($new_comands_execute)
    $error_execute = @error
    If $exit_loop = 1 Then
    $exit_loop = 0
    ExitLoop
    EndIf
    Assign($found_execute[0], Eval($found_execute[0]) + 1)
    Until Eval($found_execute[0]) >= Execute($found_execute[2])
    $i_execute = $number_execute
    EndIf
    EndIf
    Else
    If StringInStr($var2_execute[$i_execute], "$") = 1 Then
    $temp_execute = StringRegExp($var2_execute[$i_execute], "(\x24\w*)=", 3)
    If IsArray($temp_execute) Then
    $var_execute[$i_execute] = StringRegExpReplace($var_execute[$i_execute], "(\x24\w*\x20*)=", "")
    $temp211_execute = Execute($var_execute[$i_execute])
    $error_execute = @error
    Assign(StringTrimLeft($temp_execute[0], 1), $temp211_execute, 2)
    Else
    $temp_execute = StringRegExp($var2_execute[$i_execute], "(\x24\w*\x2b)=", 3)
    If IsArray($temp_execute) Then
    $var_execute[$i_execute] = StringRegExpReplace($var_execute[$i_execute], "(\x24\w*\x20*\x2b)=", "")
    $temp_execute[0] = StringTrimRight(StringTrimLeft($temp_execute[0], 1), 2)
    $temp211_execute = Execute($var_execute[$i_execute]) + Eval($temp_execute[0])
    Assign($temp_execute[0], $temp211_execute, 2)
    Else
    $temp_execute = StringRegExp($var2_execute[$i_execute], "(\x24\w*\x2d)=", 3)
    If IsArray($temp_execute) Then
    $var_execute[$i_execute] = StringRegExpReplace($var_execute[$i_execute], "(\x24\w*\x20*\x2d)=", "")
    $temp_execute[0] = StringTrimRight(StringTrimLeft($temp_execute[0], 1), 1)
    $temp211_execute = Eval($temp_execute[0]) - Execute($var_execute[$i_execute])
    Assign($temp_execute[0], $temp211_execute, 2)
    Else
    $temp_execute = StringRegExp($var2_execute[$i_execute], "(\x24\w*\x26)=", 3)
    If IsArray($temp_execute) Then
    $var_execute[$i_execute] = StringRegExpReplace($var_execute[$i_execute], "(\x24\w*\x20*\x26)=", "")
    $temp_execute[0] = StringTrimRight(StringTrimLeft($temp_execute[0], 1), 1)
    $temp211_execute = Eval($temp_execute[0]) & Execute($var_execute[$i_execute])
    Assign($temp_execute[0], $temp211_execute, 2)
    Else
    $temp_execute = StringRegExp($var2_execute[$i_execute], "(\x24\w*\x2f)=", 3)
    If IsArray($temp_execute) Then
    $var_execute[$i_execute] = StringRegExpReplace($var_execute[$i_execute], "(\x24\w*\x20*\x2f)=", "")
    $temp_execute[0] = StringTrimRight(StringTrimLeft($temp_execute[0], 1), 1)
    $temp211_execute = Eval($temp_execute[0]) / Execute($var_execute[$i_execute])
    Assign($temp_execute[0], $temp211_execute, 2)
    Else
    $temp_execute = StringRegExp($var2_execute[$i_execute], "(\x24\w*\x2a)=", 3)
    If IsArray($temp_execute) Then
    $var_execute[$i_execute] = StringRegExpReplace($var_execute[$i_execute], "(\x24\w*\x20*\x2a)=", "")
    $temp_execute[0] = StringTrimRight(StringTrimLeft($temp_execute[0], 1), 1)
    $temp211_execute = Eval($temp_execute[0]) * Execute($var_execute[$i_execute])
    Assign($temp_execute[0], $temp211_execute, 2)
    Else
    $temp_execute = StringRegExp($var2_execute[$i_execute], "(\x24\w*\x5e)=", 3)
    If IsArray($temp_execute) Then
    $var_execute[$i_execute] = StringRegExpReplace($var_execute[$i_execute], "(\x24\w*\x20*\x5e)=", "")
    $temp_execute[0] = StringTrimRight(StringTrimLeft($temp_execute[0], 1), 1)
    $temp211_execute = Eval($temp_execute[0]) ^ Execute($var_execute[$i_execute])
    Assign($temp_execute[0], $temp211_execute, 2)
    Else
    Execute($var_execute[$i_execute])
    $error_execute = @error
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf
    Else
    Execute($var_execute[$i_execute])
    $error_execute = @error
    EndIf
    EndIf
    EndIf
    $i_execute += 1

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

    WEnd
    EndFunc ;==>_Execute
    #endregion _Execute-Fuction by Shadow992 (http://www.elitepvpers.de)

    [/autoit]
  • Dynamische Variablennamen

    • veronesi
    • 24. Juni 2012 um 12:19

    Alcros
    Geht auch nicht, habe ich vorher schon probiert gehabt, wollte ich noch schreiben...
    Ist etwas verzwickt!.

  • Dynamische Variablennamen

    • veronesi
    • 24. Juni 2012 um 12:05

    Alcros
    Genau!!

    Übrigens: Dein Beispiel mit Execute geht auch nicht.....

  • Dynamische Variablennamen

    • veronesi
    • 24. Juni 2012 um 12:04

    Andy
    Leider nein.

    Denn beim Aufruf $a1=_test(1) ist ein Fehler drin.

    Der Parameter sollte eine Variable sein.
    Also $a{$iNummer} = _test($iNummer)

  • Dynamische Variablennamen

    • veronesi
    • 24. Juni 2012 um 11:57

    Andy
    Ich meinte es etwas anders:

    [autoit]

    #include"array.au3"

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

    dim $a1[3]=[1,1,1]
    dim $a2[3]=[2,2,2]

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

    _test(1)
    _arraydisplay($a1)
    _test(2)
    _arraydisplay($a2)

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

    func _test($n)
    $e=eval("a"&$n)
    $e[0]="11"
    $e[1]="22"
    Assign("a" & $n, $e)
    endfunc

    [/autoit]

    Das scheint zwar zu funktionieren, aber das Array wird nur "teilweise" überschrieben.
    Das heisst, in der Funktion _test werden nur die Indizes 0 und 1 geschrieben. Trotzdem ist der Index 2 danach noch vorhanden.
    Den möchte ich auch weg haben.
    Einfach das Array komplett mit dem Inhalt von $e ersetzen.

    Gruss, Veronesi

  • Dynamische Variablennamen

    • veronesi
    • 24. Juni 2012 um 11:42

    Ja, Assign funktioniert nicht so recht mit arrays......
    Leider

    Mit ByRef klappt das zwar schon, aber ich habe in meinem Programm schlussendlich 23 verschiedene Arrays. Da wird es etwas unübersichtlich, weil ich dann ja auch 23 Hilfsfunktionen brauche, welche jeweils das korrekte Array übergeben.....

    Eval und Assign wären genau das, was sich brauche. Aber ich hab's noch nicht hingekriegt, dass ich mit Assign das komplette Array überschreiben kann!

    Edit:
    Und in der Hilfe steht noch schön, dass es kein Array sein kann. Mist!

  • Dynamische Variablennamen

    • veronesi
    • 24. Juni 2012 um 11:26

    Hoi Andy

    Vielen Dank!
    Ich hatte mich gar nicht mehr an diesen Befehl erinnert!
    Läuft super!

    Dankeschön!
    Veronesi

  • Dynamische Variablennamen

    • veronesi
    • 24. Juni 2012 um 11:13

    Hallo zusammen

    Ich habe leider keinen besseren Titel gefunden :(

    Ich habe zwei verschiedene Arrays. Einmal $as_List1 und einmal $as_List2.
    Diese Arrays werden in einer Funktion befüllt. Nun möchte ich für beide Arrays die gleiche Funktion verwenden und per Parameter übergeben, welches Array befüllt werden soll.

    Also

    [autoit]


    Func _Fill_Lists($iListNumber)
    For $i = 1 To 100
    $as_List {$iListNumber} [$i][0] = "Test"
    Next
    EndFunc ;==>_Fill_Lists

    [/autoit]

    Die richtige Funktion ist natürlich einiges umfangreicher. Aber wie kann ich dafür sorgen, dass ich mit einer Funktion und einem Übergabeparameter das richtige Array befüllen kann?
    Klar, ich könnte eine Hilfsfunktion machen, in welcher ich das korrekte Array übergebe (mit ByRef).
    Aber gibt es eine einfachere und elegantere Lösung?

    Gruss
    Veronesi

  • Verknüpfung erstellen mit rechter Maustaste und Script

    • veronesi
    • 22. Juni 2012 um 12:27

    Doch!
    Das Array wird automatisch von AutoIt erstellt.
    In $CmdLine[0] ist die Anzahl der Parameter.
    In $CmdLine[1] - $CmdLine[n] sind die Parameter.

    Schau mal in der Hilfe nach.

    Veronesi

    Edit:
    Aus der Hilfe:

    Zitat

    Command Line Parameters
    The special array $CmdLine is initialized with the command line parameters passed in to your AutoIt script. Note the scriptname is not classed as a parameter; get this information with @ScriptName instead. A parameter that contains spaces must be surrounded by "double quotes". Compiled scripts accept command line parameters in the same way.

    $CmdLine[0] is number of parameters
    $CmdLine[1] is param 1 (after the script name)
    $CmdLine[2] is param 2 etc
    ...
    $CmdLine[$CmdLine[0]] is one way to get the last parameter...


    So if your script is run like this:

    AutoIt3.exe myscript.au3 param1 "this is another param"

    $CmdLine[0] equals... 2

    $CmdLine[1] equals... param1

    $CmdLine[2] equals... this is another param

    @ScriptName equals... myscript.au3


    In addition to $CmdLine there is a variable called $CmdLineRaw that contains the entire command line unsplit, so for the above example:

    $CmdLineRaw equals... myscript.au3 param1 "this is another param"


    If the script was compiled it would have been run like this:

    myscript.exe param1 "this is another param"

    $CmdLineRaw equals... param1 "this is another param"

    Note that $CmdLineRaw just return the parameters.


    Note : only 63 parameters can be return by $CmdLine[...], but $CmdLineRaw will always returns the entire command line.

    Alles anzeigen
  • Verknüpfung erstellen mit rechter Maustaste und Script

    • veronesi
    • 22. Juni 2012 um 07:53

    Also der Code dazu wäre folgender:

    [autoit]

    #NoTrayIcon
    #RequireAdmin
    If $CMDLine[0] <> 1 Then Exit
    FileCreateShortcut($CMDLine[1], @DesktopCommonDir & "\" & StringTrimLeft($CMDLine[1], StringInStr($CMDLine[1], "\", 0, -1)) & ".lnk")
    Exit

    [/autoit]

    Das #RequireAdmin braucht es nur, weil man sonst (Win7) nicht in den @DesktopCommonDir Pfad schreiben kann!
    Du kannst das Programm natürlich noch beliebig ausschmücken.

    Dannach als EXE Kompillieren und nach C:\Users\%Username%\AppData\Roaming\Microsoft\Windows\SendTo kopieren.

    Nun machst Du nur auf die gewünschte Datei einen rechtsklick und wählst Senden An... => Schon wird der Shortcut erstellt!

    Gruss, Veronesi

  • Excel mit Acrobat PdfMaker Office COM Addin

    • veronesi
    • 21. Juni 2012 um 14:41

    Ich pushe das mal wieder!
    Niemand eine Idee?

  • User Eingabe auf Remote-Maschine

    • veronesi
    • 14. Juni 2012 um 16:00

    Schön! Freut mich!

  • User Eingabe auf Remote-Maschine

    • veronesi
    • 14. Juni 2012 um 15:46

    Doch, bei mir gehen UNC Pfade!
    Allerdings müssen beiden Benutzer (der Admin unter welchem der Task angelegt wird und der Benutzer unter welchem es ausgeführt wird) Zugriff auf diesen UNC Pfad haben.

  • User Eingabe auf Remote-Maschine

    • veronesi
    • 14. Juni 2012 um 14:02

    Musst Du testen. Der Admin muss auch Rechte haben, einen Task auf einem fremden PC zu erstellen. (Kann per GPO deaktiviert werden!)

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™