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

  • CMD Aurfuf haut nicht hin

    • Moombas
    • 3. Februar 2023 um 08:42

    Ganz ehrlich: Bitte nutze #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 damit kannst du shcon viele Fehler/Probleme vermeiden.

    Es gibt keine Lokal Variablen im globalen Kontext und man deklariert keine Global Variablen in einer (lokalen) Funktion. Ich selber empfehle auch nicht mitten im Code eine Variable zu deklarieren (bei dir: Zeile 34), sondern diese immer an einem Ort (Global z.B. start im Script, bei Funktionen in den ersten Zeilen der Funktion), dann muss man diese später nicht suchen und hat es auf einen Blick und eine klare Strucktur.

    AutoIt
    Opt('MustDeclareVars', 1)
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #include <GuiConstants.au3>
    #include <FileConstants.au3>
    #include <EditConstants.au3>
    #include <MsgBoxConstants.au3>
    
    ; GUI
    Global $Label, $GUI, $msg
    ; Drag&Drop
    Global $dropFile_1, $dropFile_2
    ; pfx
    Global $pfxFile, $pfxPassword, $PfxPath
    
    $GUI = GuiCreate('Drag and Drop', 530, 120, @DesktopWidth / 2 - 192, @DesktopHeight / 2 - 235, -1, $WS_EX_ACCEPTFILES + $WS_EX_TOPMOST)
    
    $Label = GUICtrlCreateLabel('Bitte ziehen Sie mit der Maus die erhaltene PFX-Datei in dieses Fenster und lassen es hier los. Danach geben Sie Ihr Passwot ein, welches Sie per Mail erhalten haben. Den Rest erledige ich für Sie.', 0, 0, 530, 120)
    GUICtrlSetBkColor($Label, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetState($Label, $GUI_DROPACCEPTED)
    
    
    GuiSetState()
    
    While 1
      $msg = GuiGetMsg()
        Select
        Case $msg = $GUI_EVENT_CLOSE
            GUIDelete()
            ExitLoop
        Case $msg = $GUI_EVENT_DROPPED
            If @GUI_DropId = $dropFile_1 Then
                GUICtrlSetData($dropFile_1, @GUI_DragFile)
            ElseIf @GUI_DropId = $dropFile_2 Then
                GUICtrlSetData($dropFile_2, @GUI_DragFile)
            Else;If @GUI_DropId = $label Then
                ;MsgBox(262144, "Drop Result", @GUI_DragFile)
    
                $PfxPath = @GUI_DragFile
                ;MsgBox(262144, 'Drop Result', $PfxPath)
                $pfxPassword = Password()
                if $pfxPassword = '' then 
                    MsgBox(0, 'Fehler', 'Der Vorgang wurde abgebrochen.')
                    ContinueLoop
                Endif
                if not MakeCert($pfxPassword, $PfxPath) then MsgBox(0, 'Fehler', 'Fehler beim einlesen des Zertifikats.')
            EndIf
      EndSelect
    WEnd
    ;~ Exit
    
    
    Func MakeCert($pass, $file)
    Local $cmd  = 'certutil -f -p ' & $pass & ' -user -importpfx "' & $file & '"'
        ConsoleWrite($cmd & @CRLF) ;nur zum Debugging per F5
        Run(@ComSpec & ' /c ' & $cmd, '', @SW_HIDE) ;Debugging: /k und @SW_SHOW ; compiled: /c und @SW_HIDE
        if @error <> 0 Then
            Consolewrite('@error: ' & @error)
            Return False
        Else
            Return True
        EndIf
    EndFunc
    
    Func Password()
    Local $Return
        While @error <> 0
            $Return = InputBox('Sicherheit', 'Geben Sie das Passwort für das Zertifikat ein.', '', ' M20')
            If $Return = '' then
                If MsgBox($MB_YESNO, 'Fehler', 'Es wurde keine Eingabe für das Passwort erkannt, soll abgebrochen werden?') = $IDYES then Return ''
            Else
                Return $Return
            Endif
        WEnd
    EndFunc
    Alles anzeigen
  • CMD Aurfuf haut nicht hin

    • Moombas
    • 2. Februar 2023 um 15:17
    Zitat von casi4712

    Dat muss man halt wissen, dass man nur ' bei Passwörten nutzen darf.

    Das habe ich so nicht gesagt.

    Ich sage nur, wenn " im String vorkommen, dann sollte man ' nutzen. Es gibt noch einen Weg über mehrere " hintereinander aber ich finde es wird dan unleserlich.

    Zudem kommt es eher vor das " im String vorkommen, als ' und somit ist man mit ' zum Einfassen auf der besseren Seite. (Meine Meinung!)

    Außerdem waren da auch noch für den Run Aufruf deine Parameter Anordnung falsch (@SW_SHOW muss in den vorletzten Parameter, der letzte Parameter ist ein opt_Flag). Siehe dazu: https://www.autoitscript.com/autoit3/docs/functions/Run.htm

  • CMD Aurfuf haut nicht hin

    • Moombas
    • 2. Februar 2023 um 14:58

    Da passt einiges nicht.

    Ich habe das mal korrigiert und das so gebaut, das wenn du es per F5 startest es dir den CMD Befehl in der Console ausgibt.

    Annahme: Der Pfad soll in " eingefasst werden.

    AutoIt
    $file = "C:\Users\user1\Desktop\59116_zert_asa-ssl_b.pfx"
    $pass = 'pass'
    $cmd  = "certutil -f -p " & $pass & ' -user -importpfx "' & $file & '"' ;Ich empfehle immer die Verwendung von ' denn dann machen eingefasste " kein Problem mehr
    ConsoleWrite($cmd & @CRLF)
    $Return = Run(@ComSpec & " /c " & $cmd, "", @SW_SHOW) ;Ich empfehle /k ansatt /c zu nutzen wenn man das Ergebnis sehen will, dann braucht man auch kein & Pause
  • Neue, aktualisierte UDF für den Windows Task Scheduler!

    • Moombas
    • 1. Februar 2023 um 11:01

    Also rufst du die Funktion mit den gleichen Variablennamen auf, die auch die Funktion verwendet?

    Davon würde ich abraten, außer die Variablen sind auch lokal und nicht global.

  • Neue, aktualisierte UDF für den Windows Task Scheduler!

    • Moombas
    • 1. Februar 2023 um 10:11

    So wie du das schreibst, list sich das seltsam (also deine Lösung).

    Kannst du mal den Aufruf der Funktion posten und das wo du das obiger geändert hast? (natürlich ohne die echten Daten für username und password)

  • Richedit Verlinken einer Datei per Drag-And-Drop

    • Moombas
    • 31. Januar 2023 um 13:18

    Ich bin weiterhin der Meinung das dein Weg, den du gehen willst, nicht wirklich Sinn ergibt aber ich werfe zusätzlich zu dem Hinweis von BugFix noch folgendes in den Raum:

    Code
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_DROPPED
                $File          = @GUI_DragFile ;Get Filename
                $DropControlID = @GUI_DropId   ;Get Control where it has dropped on
        EndSwitch
    WEnd
  • Richedit Verlinken einer Datei per Drag-And-Drop

    • Moombas
    • 31. Januar 2023 um 12:14

    Hört sich für mich nach einer 1A Geschichte an, um diese Informationen in eine Ini-Datei (1 je Projekt) zu schreiben (z.B. vom Projektleiter) und diese dann zentral im Netzwerk abzulegen.

    Das Programm des Nutzers liest diese vom Netzwerkpfad alle vorhandenen Ini's ein und bietet dann die Möglichkeit die Dateien zu öffnen.

    Idealerweise generiert es entweder eine Strucktur via Treeview/Listview/Listbox wie von BugFix vorgeschlagen oder auch ein TAB je Projekt mit den entsprechenden Informationen komplett separiert.

    Mir erscheint dein aktueller Weg zu umständlich.

  • Richedit Verlinken einer Datei per Drag-And-Drop

    • Moombas
    • 31. Januar 2023 um 11:04

    Floooooo24 : Aber wenn ich die Datei doch sowieso zu packen habe, warum öffne ich sie nicht direkt, sondern soll sie nochmal in dein Programm vorher schieben?

    Sorry, das erschließt sich mir aktuell nicht, evtl. Begriffsstutzig.

  • INI Eintragen

    • Moombas
    • 31. Januar 2023 um 11:03

    Naja, sollte kein Geheimnis sein Alina das ich wohl mit mitte 30 zum jüngeren Volk gehöre^^

    Das was du meinst: Die einen fühlen sich einfach jung, auch wenn sie schon Ü60 sind, wieder andere denke das sie mit 20 schon ein alter Hase sind :rofl:

    Und was ich meine: Vergleiche ich mich mit einem 20 Jährigen, bin ich alt. Schaue ich jedoch auf welche die Ü60 sind, bin ich noch sehr jung.

    Sprich je nachdem was man bevorzugt trifft das eine oder andere zu.

    Nun aber genug OT in deinem Thema :P

  • Richedit Verlinken einer Datei per Drag-And-Drop

    • Moombas
    • 31. Januar 2023 um 10:43

    Blöde Frage Floooooo24 : Warum machst du das nicht einfach, das die Dateien aufgelistet werden und dann per z.B. Doppelklick im Default Editor des Nutzers bearbeitet werden?

    So habe ich das bei mir gemacht. Dann kann der Nutzer selber wählen mit welchem Programm er die Datei bearbeiten möchte.

  • INI Eintragen

    • Moombas
    • 31. Januar 2023 um 10:20
    Zitat von Alina

    Danke allen.

    Sven, jung sein oder nicht, ist doch eine Frage der Einstellung. ;)

    Oder hängt davon ab mit was man als Vergleich heranzieht :P

  • _ScreenCapture_Capture (Variable werden nicht angenommen)

    • Moombas
    • 31. Januar 2023 um 09:41
    Zitat von Musashi

    Dieses Mal war ich schneller, nicht BugFix ;) (habe ich in deinem Beitrag geändert)

    Typo (von mir) : Es muss natürlich $iBottom heißen, nicht $iButton.

    Ups, und danke fürs korrigieren @Musashi ;)
    Das passiert wenn man das nebenbei macht^^

  • _ScreenCapture_Capture (Variable werden nicht angenommen)

    • Moombas
    • 31. Januar 2023 um 09:07

    Hi Silvermoon,

    verschiedene Sachen:

    1. groß/kleinschreibung macht keinen Unterschied bei den Variablen, du redefinierst also X bzw. Y

    2. Nutze , anstatt : zum Trennen der Variablen

    3. Du musst Variablen Global oder Local definieren, da du außerhalb einer Funktion bist, wäre es Global.

    4. Würde ich die Variablen immer an Funktionen übergeben und versuchen Globale Variablen nach Möglichkeit zu vermeiden (es gibt natürlich Situationen, wo es Sinn macht)

    AutoIt
    #include <ScreenCapture.au3>
    
    Example(1137, 265, 1310, 636)
    
    Func Example($iLeft, $iTop , $iRight, $iBottom)
    Local $hBmp
      ;_ScreenCapture_Capture(@MyDocumentsDir & "\GDIPlus_Image2.jpg",1137, 265, 1310,636)
      _ScreenCapture_Capture(@MyDocumentsDir & "\GDIPlus_Image2.jpg", $iLeft, $iTop , $iRight, $iBottom)
      ShellExecute(@MyDocumentsDir & "\GDIPlus_Image2.jpg")
    EndFunc   ;==>Example

    @Musashi war schneller ;) daher mal die bessere Variablennamen übernommen

  • Win 10 ist dooooof

    • Moombas
    • 30. Januar 2023 um 14:51
    Zitat von BugFix

    Ich meine mich zu erinnern, dass in älteren Windows-Versionen immer gefragt wurde, ob für das neu erkannte Gerät ein Treiber installiert werden soll und wenn ja von wo. Da kam man gar nicht in eine derartige Situation.

    Da hast du recht.

    Aber das ist ja was man heut zu tage seitens Windows versucht zu vermeiden (für erfahrene Nutzer: erwartungsgemäß klappt das nicht immer) aber gleichzeitig dieses Problem verursacht wenn es eben nicht klappt.

    Zitat von BugFix

    Du gehst in deiner Betrachtung von den 20 % Usern aus, die zumindest ein geringes Verständnis von Computern haben.

    Hier geht es aber um den allgemeinen User, der eine Hardware anstöpselt und vom OS gesagt bekommt: Alles OK, Gerät kann genutzt werden. Aber nichts geht. Dann fragt er bei Bekannten rum, die dann empfehlen: Gehe in die Hardwareverwaltung auf das Gerät und deinstalliere den Treiber und anschließend neu (evtl. vom Hersteller) installieren. Aber: Da existiert das Gerät trotz angeblicher Installation ja nicht.

    Jaein, denn die 80% denen das Verständnis fehlt, für diese wird das anstöpseln & Windows macht schon (Plug&Play) in den meisten Fällen helfen und ist dann ja genau das was man möchte.

    Das dies aber gar nicht immer klappen kann, wissen nur die anderen 20%.
    Würde man jedoch das wie früher handhaben, das nach Treibern gefragt wird, würden die 80% von vorne herein den Bekannten in Anspruch nehmen.

  • Win 10 ist dooooof

    • Moombas
    • 30. Januar 2023 um 14:43

    Wie gesagt, du verstehst (oder willst es nicht) was ich meine.

    Treiber installiert <> Treiber funktioniert.

    Und genau das: "Ein richtiges Betriebssystem - sagt sorry kein Treiber!" ist genau das was ich meine. Windows versucht auf biegen und brechen Plug&Play bereit zu stellen, eben weil viele Nutzer dies gerne hätten (da sie, und das ist kein Vorwurf, davon schlicht keine Ahnung haben; und Nein, du bist damit nicht gemeint).

    Und das verursacht dann eben solche falsche Meldungen seitens Windows und falschen Annahmen seitens Nutzer.

    ___

    Warum kann man das Beipiel nicht vergleichen?

    Es wird ein externes Gerät angesteckt, wo Windows in der Regel auch nach kurzem ackern sagt "Gerät erfolgreich installiert".

    Die oben angesprochene Problematik bleibt aber bestehen und der Nutzer muss ran.

  • Win 10 ist dooooof

    • Moombas
    • 30. Januar 2023 um 13:41
    Zitat von BugFix

    Die Möglichkeit wird ihm ja durch Windows verwehrt! Da spielt es keine Rolle, ob der Nutzer intelligent oder strunzdumm ist. Das USB-Plug-In Event wird für die angesteckte Hardware deaktiviert!

    Ich hoffe, das macht es dir jetzt verständlich.

    Jaein. Nur weil das OS mir sagt das es funktioniert, stelle ich doch beim Testlauf oder 1. Nutzungsversuch fest das dies nicht so ist und muss nachsteuern. Wie gesagt, würde man dieses Problem nicht haben, würden nicht alle Plug&Play erwarten/haben wollen (bis auf die oben genannten Ausnahmen) und Windows auf biegen und brechen versuchen dies bereit zu stellen.

    anderes Beispiel: Wenn ich ein Smartphone an den PC anschließe, sagt es mir verbunden, ggf. auch seitens Windows. Evtl. Erwartungshaltung: Direkt im Explorer aufs Dateisystem zugreifen und Dateien kopieren. Aber das funktioniert auch nicht immer. Bei meinem Gerät musst du (leider) immer erst von USB-Laden auf Dateiübertragung umstellen. Bei Äpfeln musst du (mein letzter Stand) erst Software installieren,... beschweren tut sich da keiner, warum? Die Erwartungshaltung ist anders und die User schauen nochmal auf die Meldung auf dem Smartphone und stellen um bzw. installieren die notwendige Software nach.

  • Win 10 ist dooooof

    • Moombas
    • 30. Januar 2023 um 13:35
    Zitat von Peter S. Taler

    Da kannst Du Dich noch so sehr anstrengen - der Fehler liegt bei Windows und nicht bei den Usern!

    Erst mal dazu: Ich sehe das Problem auf beiden seiten, nicht nur bei den Usern. Die einen erwarten das immer alles Plug&Play funktioniert, die andere Seite die meint das Plug&Play hin zu bekommen (und zwar möglichst immer).

    Und nach wie vor scheinst du mich nicht zu verstehen.

    Windows hat mit sicherheit einen Treiber installiert (sonst würdest du dies auch in der Geräteübersicht mit diesem tollen gelben ! im Dreieck sehen und ich gehe davon aus, das du dort zwischenzeitlich auch geschaut hast und dies nicht der Fall war).

    Ein falscher/nicht passender Treiber kann auch dazu führen das Windos gar nicht mit dem Gerät kommunizieren kann. Dann bekommst du auch keine falsch gedruckte Seite oder sonst was, sondern es passiert einfach nichts (im besten Fall eine Fehlermeldung seitens Windows).

    Auch in meine gerade mal ~25 Jahren PC-Erfahrung, sind es immer Drucker/Scanner gewesen die, sofern sie lokal angeschlossen sind, gerne zu Problemen geführt haben. Und ich kenne auch aus W7 Zeiten noch, das W7 gesagt hat "Treiber installiert", Gerät als funktionierend im Gerätemanager angezeigt und trotzdem: nichts ging. Original Druckertreiber installiert und siehe da: alles schick (und dennoch ab und an Probleme).

    Und wie gesagt es ist nur meine Meinung, das man was Drucker etc. angeht weg von Plug&Play und wieder hin zur individuellen Treiberinstallation für "externe" Geräte gehen sollte.

  • Neue, aktualisierte UDF für den Windows Task Scheduler!

    • Moombas
    • 30. Januar 2023 um 12:56

    Hallo gmmg, ich kenne die TaskScheduler selber nicht (also habe sie nicht ausprobiert) aber die Fehlermeldung sagt doch schon einiges aus:

    "Error creating XML from the passed Array"

    Sprich, die Funktion erwartet ein Array und nicht "nur" einen Dateinamen.

    Ein Blick in die Beschreibung sagt mir, dein inputtype sollte 1 sein und nicht 2:

    Zitat

    $iInputType - 1 = $vXMLInput is a file to import the XML from, 2 = $vXMLInput is a XML string or a 1D XML array

  • Win 10 ist dooooof

    • Moombas
    • 30. Januar 2023 um 12:47

    Wo ist das Problem?

    Windows (eine Software, nichts intelligentes!), kann doch der "Meinung" sein einen (bereits vorliegenden) passenden Treiber installiert zu haben (auf Grund welcher Kriterien auch immer es diesen gewählt hat und meint das er passt).

    Wenn dieser aber scheinbar doch nicht passt, obliegt es weiterhin dem (intelligenten) Nutzer, dies zu prüfen und zu korrigieren.

    Natürlich ist der Drucker hier nur ein Beispiel und das kann dir mit sämtlicher Peripherie passieren.

    Das worauf ich hinaus will ist: Würde Windoof nicht von Haus aus immer versuchen mit Default oder gesondert vorliegenden Treibern dein Gerät funktionsfähig zu machen, wäre zum Einen deine Erwartungshaltung ganz anders (du wüsstest zu 100% das du erst mal selber passende Treiber installieren musst) zum Anderen würde dieses Verhalten seitens Windows auf Grund mangel von Treibern auch gar nicht erst auftreten.

    Du beschwerst dich hierbei über ein dummes Verhalten einer (tut mir leid) dummen Software, wo viele eine viel zu hohe Erwartungshaltung haben bezüglich Plug&Play.

    Zudem besteht das Problem nicht erst seit Windows 10. Ich habe dies, insbesondere bei Druckern, auch schon mit W7 und vorher festgestellt (war fast immer ein elender K(r)ampf das vernünftig zum laufen zu bringen).

    Und das z.T. sogar unabhängig davon ob originale Treiber verwendet wurden oder nicht. Ruhe ist damit erst seit ich z.B. Drucker nur noch als Netzwerkgerät kaufe/nutze.

    Das geht natürlich bei deinem Kyo nicht, da dies nur ein D und kein DN ist.

  • Poweshellscript fenster unsichtbar einbinden

    • Moombas
    • 30. Januar 2023 um 10:38

    Das kann ja so nicht funktionieren casi4712 :

    Kleines Beispiel ohne weiter zu schauen:

    $window = Add-Type -memberDefinition @" [DllImport("user32.dll")] pub...

    Das erste " und das zweite " fassen folgendes ein: [DllImport( und das ist nicht, das was du erreichen willst.

    Ersetze die inneren " mit ' Also:

    Code
    $window = Add-Type -memberDefinition @" [DllImport('user32.dll')] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); "@ -name "Win32ShowWindowAsync" -namespace Win32Functions -passThru $window::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0) $objcsv = Import-Csv c:\user.csv -Encoding Default -delimiter ";" $objcsv | out-gridview

    Das hat zur Folge, das dein Code sich auch ändern muss:

    AutoIt
    Global $sCmdPS = _
    '$window = Add-Type -memberDefinition @"' & _
    "[DllImport('user32.dll')]" & _
    'public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);' & _
    '"@ -name "Win32ShowWindowAsync" -namespace Win32Functions -passThru' & _
    '$window::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)' & _
    '$objcsv = Import-Csv c:\user.csv -Encoding Default -delimiter ";"' & _
    '$objcsv | out-gridview'

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™