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

Beiträge von Moombas

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 10. Juni 2022 um 10:09

    Deine angesprochene Zeile existiert nicht in deinem bereitgestellten Code!

    Dort gibt es nur 1 Zeile wo diese Variable vorkommt (local ist hier auch richtig, wenn diese nur innerhalb der Funktion gebraucht wird): local $IPLabel = $objAdapter.IPAddress(0)

    Wegen der fehlenden includes: die GUIBkImage wurde ja auskommentiert, die services.au3 habe ich zwar vorliegen aber GuiCtrlSetOnHover_UDF nicht.

    Aber selbst wenn diese vorliegen würden, kann man hier nicht helfen, solange nicht wirklich alle relevanten Informationen bereit stehen.

    Daher kann man hierbei nur in die :Glaskugel: schauen und raten: setze ein Global bzw Local vor (da ich nicht weiß im welchen Kontext die Variable genutzt wird, kann ich es nicht sagen) $IPLAbel = GUICreateLabel(_ActiveIP(), 10, 60, 980, 20). Und sofern es Global ist, musst du deinen Variablennamen bearbeiten, denn wie oben zu sehen gibt es diese bereits in einem Lokalen Kontext hast, was zu Problemen führen kann/wird.

  • Ich muss lernen NEIN zu sagen.

    • Moombas
    • 10. Juni 2022 um 08:32
    Zitat von Alina

    Danke für eure bisherrigen Meinungen.

    Ich werde mich bemühen mehr an mich zu denken.

    Klingt zwar blöd aber manchmal muss man ein wenig egoistisch sein.

    Kenne das aus dem Bekanntenkreis und Familie insbesondere aus den Pflegeberufen, wo dann sehr oft angerufen wird wegen Einspringen etc.. Das geht dann ganz schnell in den Burnout, wenn man da nicht nein sagen kann. Und lass dir da ggf. von der Familie helfen (dir da Feuer unterm Hintern machen, wenn du wiedermal Ja gesagt hast), das hilft!

  • Ip Aktualsierung funktionieert nicht

    • Moombas
    • 9. Juni 2022 um 15:59
    Zitat von casi4712

    er sag bei mir immer die Variable sei nicht definiert

    Welche Variable?

    Und btw. Local $sIPLabel = "IP (aktiv): " ist falsch, das muss Global sein.

    Und bitte arbeite etwas an deiner Formatierung (Einrückung etc.).

  • Parameterübergabe via cmdline - Text in Variable wird in einzelne Parameter aufgeteilt

    • Moombas
    • 8. Juni 2022 um 10:36

    Du übergibst es also nun als einen ganzen Parameter und nicht mehr als einzelne.

    Anstatt dem strQuote, hättest du auch mit '"' arbeiten können.

  • Ich muss lernen NEIN zu sagen.

    • Moombas
    • 7. Juni 2022 um 09:37

    Ja, es ist nicht immer einfach gerade so etwas zu ändern aber du solltest es in diesem Fall definitiv tun.

    Und das wirklich zu deinem Besten! Anfangs wird es dir schwer fallen und dich erst mal "mehr Belasten".

    Aber sobald du das verinnerlicht hast, wirst du merken, wie gut dir die dadurch entstehenden "Auszeiten" tun werden.

    Ich meine es wird bestimmt mal einen echten Notfall geben aber man muss sich bei so etwas immer die Frage stellen: "Kann das bis zum nchsten regulären Arbeitstag warten oder muss das jetzt gemacht werden?" Wobei das "Muss" bedeutet, enorme Verdienstausfälle für den AG etc. und nicht "vorrübergehend umständlicheres arbeiten" und natürlich über die Verbindlichkeiten im Arbeitsvertrag.

    Aber mir z.B. ist generell das Wochenende heilig, sollte aber etwas wirklich unaufschiebbares an mich herangetragen werden ist das in ORdnung, da es hier zum Glück sehr selten passiert.

  • Internet-Kommunikation - Nervige PopUp-Fenster

    • Moombas
    • 3. Juni 2022 um 12:47

    Oder

    Zitat von PSblnkd

    Moombas

    XP deshalb, weil:

    1. XP das stabilste und noch einigermaßen "durchsichtige" BS ist,

    2. viele meiner Software nicht unter den moderneren Windows-Versionen läuft und

    3. ich keinen Bock darauf habe, mich andauernd mit irgendwelchen "Features" rumzuärgern, die sich MS so einfallen läßt, um seine Kunden bei "Laune zu halten".


    Neuerdings kommt noch ein weiteres Problem hinzu. Von meinem eMail-Provider bekam ich die Mitteilung, daß ich mit meinem eMail-Programm "Outlook-Express" demnächst keinen Zugriff mehr haben werde, weil dieses die neuen Verschlüsselungs-Technologien TLS 1.2 nicht unterstützt.

    Man muß sich also andauernd um solche "Belanglosigkeiten" kümmern, als mit der eigentlichen Arbeit beschäftigt zu sein.

    Alles anzeigen

    Zu: 1. Naja wo hast du stabilitäts Probleme? Mein PC läuft seit dem ersten Aufsetzen auf W10 (und vorher auf W7) stabil ohne jegliche Abstürze.

    Zu: 2. Ich weiß ja nicht was du Einsetzt und wofür, aber das wäre für mich hier der einzige sinnige Grund auf XP zu bleiben

    Zu: 3. Naja das meiste lässt sich schnell und einfach abschalten. Sowas wie ClassicShell hilft enorm, aber wenn das OS dadurch Sicherheitstechnisch auf dem neuesten Stand ist, sollte man das in Kauf nehmen. Muss aber jeder selber wissen (sich aber dann dem Mehraufwand für workarounds etc. bewusst sein).

    Zum Rest: Was exakt das Problem des veralteten OS/veralteter Software ist. Und diese "Belanglosigkeiten" sind Sicherheitsaspekte. Wenn du nicht mit asbach uralter Gurkensoftware rumeierst, hättest du dieses Problem garnicht erst und müsstest dich nicht damit beschäftigen, sondernkönntest einfach Arbeiten.

    Tipp: Ggf. macht es Sinn mit zwei Systemen zu arbeiten. Eins für deine alte Software und eins fürs Surfen/Mailen (das wäre auch per VM möglich).

  • Parameterübergabe via cmdline - Text in Variable wird in einzelne Parameter aufgeteilt

    • Moombas
    • 3. Juni 2022 um 08:30

    Blöde Frage: Wäre es nicht einfacher, deinen zu Übergebenen Text (alle 4 Zeilen) als zusammenhängenden einzeiler als einzigen Parameter zu übergeben und in dem Programm das dann aufzudröseln (wenn dies nicht auch schon in der VBA benötigt wird)? Also: deinprogramm.exe "deinTextkomplett in Anführungsstrichen"

    Ansonsten lass am besten Sonderzeichen in den Bezeichnern weg (!) also:

    AutoIt
    ;Möglichkeit 1 (Einzelparameterübergabe):
    ;Übergabe:   /PCName "HP-Z2LeihstellungCPU" /CPU "Intel Core i7-12700K" /RAM "2 x 16GB" /Drive "MTFDKBA1T0TFH-1BC1AABHA 1TB" /GPU "NVIDIA T400 2GB; Intel UHD Graphics 770" /WWAN "0" /WIFI "0" /TOUCH "0" /SN "CZC"
    
    ;Aufbau in AutoIt wäre so, müsstest du dann für VBA umschreiben:
    $Parameter = '/PCName "' & $PCName & '" /CPU " & $CPU & '" /RAM "' & $RAM & '" /Drive "' & $Drive & '" /GPU"' & $GPU & '" /WWAN "' & $WWAN & '" /WIFI " & $WIFI & '" /TOUCH "' & $Touch & '" /SN "' & $SN & '"'
    AutoIt
    ;Möglichkeit 2 (Komplettübergabe):
    ;Übergabe:   "HP-Z2Leihstellung CPU: Intel Core i7-12700KRAM: 2 x 16GB Drive: MTFDKBA1T0TFH-1BC1AABHA 1TB GPU: NVIDIA T400 2GB; Intel UHD Graphics 770 WWAN: 0 WIFI: 0 Touch: 0 S/N: CZC"
    
    ;Aufbau in AutoIt wäre so, müsstest du dann für VBA umschreiben:
    $Parameter = "HP-Z2Leihstellung CPU: Intel Core i7-12700KRAM: 2 x 16GB Drive: MTFDKBA1T0TFH-1BC1AABHA 1TB GPU: NVIDIA T400 2GB; Intel UHD Graphics 770 WWAN: 0 WIFI: 0 Touch: 0 S/N: CZC"
    
    Und diesen String musst du dann in AutoIt bearbeiten und ins Array packen oder was du sonst damit vor hast.
  • Internet-Kommunikation - Nervige PopUp-Fenster

    • Moombas
    • 2. Juni 2022 um 10:43

    Naja, ich würde das Alles mal ausschließen BugFix , da es hier ums "surfen im Internet" geht. Ansonsten sind mir diese "Umstände" bekannt ;)

    Und gerade beim surfen erleben wir aktuell immer wieder das teilweise eine aktuelle Browserversion benötigt wird, damit gewisse Webseiten funktionieren (hat jetzt nichts mit den cookies zu tun). Aber mit einer aktuellen Version sind entsprechende Add-Ins möglich, die Cookies und deren Banner etc. blockieren können (selbst nicht getestet, da nicht benötigt).

  • Internet-Kommunikation - Nervige PopUp-Fenster

    • Moombas
    • 2. Juni 2022 um 10:24

    Ggf. wäre die Frage auch: Warum immer noch XP?

  • Kommentare aus der Dateiliste auslesen

    • Moombas
    • 1. Juni 2022 um 14:12

    Also doch die Kommentare von der Datei.

    Ich habe dazu mal eine Funktion gefunden, als ich die Chrome-Version des Installers auslesen wollte und diese leider nur im Kommentar steht:

    AutoIt
    if @OSLang = 0407 then ;Deutsch
        $comment = "Kommentare"
    Else                   ;Englisch
        $comment = "comments"
    Endif
    $Version = _FileGetProperty('GoogleChromeStandaloneEnterprise.msi', $comment)
    
    ;===============================================================================
    ; Function Name.....: _FileGetProperty
    ; Description.......: Returns a property or all properties for a file.
    ; Version...........: 1.0.2
    ; Change Date.......: 05-16-2012
    ; AutoIt Version....: 3.2.12.1+
    ; Parameter(s)......: $FGP_Path - String containing the file path to return the property from.
    ;                     $FGP_PROPERTY - [optional] String containing the name of the property to return. (default = "")
    ;                     $iPropertyCount - [optional] The number of properties to search through for $FGP_PROPERTY, or the number of items
    ;                                       returned in the array if $FGP_PROPERTY is blank. (default = 300)
    ; Requirements(s)...: None
    ; Return Value(s)...: Success: Returns a string containing the property value.
    ;                     If $FGP_PROPERTY is blank, a two-dimensional array is returned:
    ;                         $av_array[0][0] = Number of properties.
    ;                         $av_array[1][0] = 1st property name.
    ;                         $as_array[1][1] = 1st property value.
    ;                         $av_array[n][0] = nth property name.
    ;                         $as_array[n][1] = nth property value.
    ;                     Failure: Returns an empty string and sets @error to:
    ;                       1 = The folder $FGP_Path does not exist.
    ;                       2 = The property $FGP_PROPERTY does not exist or the array could not be created.
    ;                       3 = Unable to create the "Shell.Application" object $objShell.
    ; Author(s).........: - Simucal <Simucal@gmail.com>
    ;                     - Modified by: Sean Hart <autoit@hartmail.ca>
    ;                     - Modified by: teh_hahn <sPiTsHiT@gmx.de>
    ;                     - Modified by: BrewManNH
    ; URL...............: http://www.autoitscript.com/forum/topic/34732-udf-getfileproperty/page__view__findpost__p__557571
    ; Note(s)...........: Modified the script that teh_hahn posted at the above link to include the properties that
    ;                     Vista and Win 7 include that Windows XP doesn't. Also removed the ReDims for the $av_ret array and
    ;                     replaced it with a single ReDim after it has found all the properties, this should speed things up.
    ;                     I further updated the code so there's a single point of return except for any errors encountered.
    ;                     $iPropertyCount is now a function parameter instead of being hardcoded in the function itself.
    ;===============================================================================
    Func _FileGetProperty($FGP_Path, $FGP_PROPERTY = "", $iPropertyCount = 500)
        If $FGP_PROPERTY = Default Then $FGP_PROPERTY = ""
        $FGP_Path = StringRegExpReplace($FGP_Path, '["'']', "") ; strip the quotes, if any from the incoming string
        If Not FileExists($FGP_Path) Then Return SetError(1, 0, "") ; path not found
        Local Const $objShell = ObjCreate("Shell.Application")
        If @error Then Return SetError(3, 0, "")
        Local Const $FGP_File = StringTrimLeft($FGP_Path, StringInStr($FGP_Path, "\", 0, -1))
        Local Const $FGP_Dir = StringTrimRight($FGP_Path, StringLen($FGP_File) + 1)
        Local Const $objFolder = $objShell.NameSpace($FGP_Dir)
        Local Const $objFolderItem = $objFolder.Parsename($FGP_File)
        Local $Return = "", $iError = 0
        If $FGP_PROPERTY Then
            For $I = 0 To $iPropertyCount
                If $objFolder.GetDetailsOf($objFolder.Items, $I) = $FGP_PROPERTY Then
                    $Return = $objFolder.GetDetailsOf($objFolderItem, $I)
                EndIf
            Next
            If $Return = "" Then
                $iError = 2
            EndIf
        Else
            Local $av_ret[$iPropertyCount + 1][2] = [[0]]
            For $I = 1 To $iPropertyCount
                If $objFolder.GetDetailsOf($objFolder.Items, $I) Then
                    $av_ret[$I][0] = $objFolder.GetDetailsOf($objFolder.Items, $I - 1)
                    $av_ret[$I][1] = $objFolder.GetDetailsOf($objFolderItem, $I - 1)
    ;~              $av_ret[0][0] += 1
                    $av_ret[0][0] = $I
                EndIf
            Next
            ReDim $av_ret[$av_ret[0][0] + 1][2]
            If Not $av_ret[1][0] Then
                $iError = 2
                $av_ret = $Return
            Else
                $Return = $av_ret
            EndIf
        EndIf
        Return SetError($iError, 0, $Return)
    EndFunc   ;==>_FileGetProperty
    Alles anzeigen
  • Kommentare aus der Dateiliste auslesen

    • Moombas
    • 1. Juni 2022 um 10:09

    Du willst das, was in der Vorschau angezeigt wird auslesen, nicht das was in den "Kommentaren" der Datei steht, richtig?

  • Excel UDF

    • Moombas
    • 16. Mai 2022 um 12:40

    Ich bin mir nicht sicher ob Excel mit "Links" auch die Links zu den Datenbanken einbezieht.

    Wenn ja versuch mal das hier:

    AutoIt
    Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, $bReadOnly, $bVisible, $sPassword, 0)

    Die 0 am Ende verhindert das Updaten der Links und somit sollte die Datei als "nicht bearbeitet" stehen bleiben und somit auch nicht zum Speichern auffordern..

  • Excel UDF

    • Moombas
    • 16. Mai 2022 um 11:57

    Ok, ich habe ggf. die Lösung für dein Problem, erklären kann ich es nicht direkt:

    Vor dem Schließen des Excelblatts, ein "Enter" oder "ESC" senden:

    AutoIt
    ; Create application object
    Local $bVisible  = False
    Local $oExcel    = _Excel_Open($bVisible)
    Local $bReadOnly = True
    Local $var       = 1
    Local $sPassword = "IrgendeinPasswort"
    Local $R         = "D" & $var & ":" & "E" & $var
    Local $sWorkbook = @ScriptDir & "\Subfiles\SkillDB.xlsm"
    Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, $bReadOnly, $bVisible, $sPassword)
    Local $aResult   = _Excel_RangeRead($oWorkbook)
    Send("{Enter}") ; oder ESC
    ;~ _Excel_BookClose($oWorkbook, False) ;nicht speichern - überflüssig durch nachfolgenden Befehl
    _Excel_Close($oExcel, False, True)  ;Änderungen nicht speichern, ForceClose
    
    For $i = 0 To UBound($aResult, 1) - 1
       If $aResult[$i][0] = @UserName Then
         Global $xName = StringSplit($aResult[$i][1], ",")
         Global $varLogin = $aResult[$i][0]
         Global $varName = $aResult[$i][1]
         Global $varSchicht = $aResult[$i][2]
       EndIf
    Next
    Alles anzeigen

    Warum: Durch irgendwelche Makros ist das Sheet im "Bearbeitungsmodus" und wird daher nicht geschlossen (soweit bei mir im Test). Durch das Senden von Enter wird der Bearbeitungsmodus abgeschlossen (oder durch ESC abgebrochen) und ermöglicht das schließen.

    Aber wie gesagt ich bekomme niemals die Nachfrage zum Speichern der Änderungen.

  • Excel UDF

    • Moombas
    • 16. Mai 2022 um 11:43

    Hmm, das akzeptiere ich jetzt mal :P

    Also ein Test bei mir war erfolgreich (habe jedoch "nur" eine normale xlsx als xlsm gespeichert und dann getestet), teste das ganze mal mit einer anderen Datei.

    Ich gehe davon aus das die in der Datei hinterlegten Makros diese verändern.

    Sollte dich dies nicht stören dann solltest du folgenden Befehl vor dem schließen mit einbauen: _Excel_BookSave()

    Aber eigentlich sind alle Hebel gesetzt es nicht zu speichern und trotzdem zu schließen...bei mir klappt das im manuellen Test (nach dem öffnen warte ich 5sekunden im Program in der ich die Datei bearbeite).

    Versuch sonst auch ma: _Excel_Open($bVisible, True, True, False)

    Damit schaltetst du interaktiv aus, ich habe beim probieren festgestellt, das er das Workbook nicht schließt wenn ich es manuell geändert habe.

  • Excel UDF

    • Moombas
    • 16. Mai 2022 um 11:30

    Hmm, müsste man sich noch einmal anschauen.

    Mich macht aber nun stutzig, das du in deinem Screenshot einen Teil des Dateinamens unkenntlich machst.

    Zusätzlich assoziiert der Name "SkillDB" das du hier Spielautomation versuchst, was laut Forenregeln verboten ist. Bitte daher um Erklärung bevor ich weiter helfe.

  • Excel UDF

    • Moombas
    • 16. Mai 2022 um 09:28

    Tipp1: Auch wenn es wohl nur ein Workbook-Passwort ist, solltest du es hier nicht mit veröffentlichen.

    Tipp2: Die Fehlermeldung sagt doch schon alles. Bevor du die Datei schließt solltest du eine der folgenden Funktionen nutzen:

    Denn aktuell änderst du nur etwas, ohne den Speicherbefehl auszuführen. Dann ist klar das du solch eine Fehlermeldung bekommst.

    Sorry, hab nicht gesehen, das du nur die Daten einlesen willst. Dann würde ich an deiner Stelle folgendes probieren:

    AutoIt
    ; Create application object
    Local $bVisible  = False
    Local $oExcel    = _Excel_Open($bVisible)
    Local $bReadOnly = True
    Local $var       = 1
    Local $sPassword = "IrgendeinPasswort"
    Local $R         = "D" & $var & ":" & "E" & $var
    Local $sWorkbook = @ScriptDir & "\Subfiles\SkillDB.xlsm"
    Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook, $bReadOnly, $bVisible, $sPassword)
    Local $aResult   = _Excel_RangeRead($oWorkbook)
    _Excel_BookClose($oWorkbook, False) ;nicht speichern
    _Excel_Close($oExcel, False, True)  ;Änderungen nicht speichern, ForceClose
    
    For $i = 0 To UBound($aResult, 1) - 1
       If $aResult[$i][0] = @UserName Then
         Global $xName = StringSplit($aResult[$i][1], ",")
         Global $varLogin = $aResult[$i][0]
         Global $varName = $aResult[$i][1]
         Global $varSchicht = $aResult[$i][2]
       EndIf
    Next
    Alles anzeigen

    Tipp 3: Ich hoffe, dass dies alles in einer Funktion steht, ansonsten sind alle deine Variablen Global, auch wenn du sie als Local definiert hast!

  • ListBoxen auslesen

    • Moombas
    • 13. Mai 2022 um 15:27

    Da du hier ein externes Programm ansteuerst ist die Aussage: Gar nichts.

    Das externe Programm wird die Daten auch erst laden, sobald der entsprechende Focus gesetzt wurde. Sprich du musst eben diesen simulieren um an diese Daten zu kommen.

  • Kaspersky-Status abfragen

    • Moombas
    • 13. Mai 2022 um 10:03

    Wäre es nicht Sinnvoller diese Funktion eher zu verbieten/abzuschalten?

    Wenn das Antiviren Programm vernünftig arbeitet und eingerichtet ist, ist diese Funktion überflüssig.

  • au3-2-exe

    • Moombas
    • 12. Mai 2022 um 14:38

    Wie gesagt, mein Beispiel aus #7 funktioniert.

    Bedeutet, das du wenn du den Inhalt von $test dynamisch aus einer externen Datei ziehen würdest, es mit diesem Skript kompiliert werden würde (und schlimmsten falls auch ausgeführt wird).

    Aber wenn wir ehrlich sind: Wenn du soweit kommst, das jemand per extern Zugriff auf das Dateisystem/CMD hast (und somit solche Meachaniken nutzen könnte), hast du so oder so schon verloren.

  • Robocopy

    • Moombas
    • 12. Mai 2022 um 11:47

    Den Benutzer würdest du "Zwangsabmelden" wenn du den entsprechenden Dienst vor dem kopieren stoppst (und danach wieder startest), wenn ich mich nicht irre.

    Aber das ist natürlich nicht unbedingt das, was man machen sollte.

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™