Hallo an alle,
das sind ja richtig viele gute Vorschläge zu meinem Problem.
Deshalb DANKE DAFÜR
Jetz habe ich erst einmal einiges zum ausprobieren.
MfG:
BigRox
Hallo an alle,
das sind ja richtig viele gute Vorschläge zu meinem Problem.
Deshalb DANKE DAFÜR
Jetz habe ich erst einmal einiges zum ausprobieren.
MfG:
BigRox
Hallo,
ich möchte ein GUI mit einem Input- und einem Button-Control zur Eingabe eines Passwort erstellen.
Das Passwort gib ich ins Input-Control ein und jedes eingegebene Zeichen soll da nur als ein Punkt angezeigt werden.
Alles kein Problem, $ES_PASSWORD als Style angeben und schon funktioniert das.
Nun möchte ich aber auch noch erreichen, dass in dem Input-Control das Passwort im Klartext angezeigt wird, wenn ich auf den Button klicke.
Also, den Style vom Input-Control ändern, dass Passwort wider ins Control schreiben und das sollte eigentlich auch funktionieren, tut es aber nicht, es bleibt bei den angezeigten Punkten.
Irgendetwas mache ich da wohl falsch.
Hier mal mein Testscript:
Am schönste wäre es natürlich, wenn das Passwort wieder als Punkte angezeigt wird, wenn man den Button wieder "loslässt".
Aber das müsst man auch noch mit dem ButtonUp-Ereignis o.ä. irgendwie hinbekommen.
MfG:
BigRox
Hallo an alle die mir geantwortet haben,
es gibt eine ScriptOmatic Umsetzung für WMI.
siehe hier: https://www.autoitscript.com/forum/files/fi…script-o-matic/
Wenn du das Script compilierst, dann startet das ganze wohl etwas schneller.
Einfach beim Start etwas Geduld, bis alle Klassen geladen wurden.
Vielen Dank für den Tipp, genau so etwas habe ich gesucht.
Die engl. Beschreibung hilft besser.
Bei mir (Windows 11 23H2) funktioniert:
- Im Eingabefeld: "Optionales Feature" eingeben.
- Die angezeigte Liste enthält auch "Optionales Feature hinzufügen" > auswählen
- Der erste Punkt ist "Optionales Feature hinzufügen"
- Rechts "Features anzeigen" auswählen, "WMIC" selektieren und mit "Weiter" installieren.
Wenn ich es so mache, so finde ich es auch.
PS: Microsoft entfernt eigentlich nie irgendetwas vollkommen. In der Regel werden nur Verweise und Verknüpfung entfernt. Siehe die „alte“DOS-Box oder Windows Explorer. Daher kann man davon ausgehen, dass bis auf Witeres jegliche jemals eingeführte Funktion noch viele Jahre funktionieren wird. Das ist das Leid eines „offen“ Betriebssystems.
Ich glaube, es ist besser sofort auf WMI-COM-Objekte umzusteigen und sich nicht darauf zu verlassen, dass Microsoft auch ab 24H2 nur Verknüpfungen entfernt.
Da Microsoft dieses Programm anscheinend als Sicherheitsrisiko eingestuft hat und von Microsoft hat es schon öfters auch mahl etwas gänzlich unerwartetes gegeben.
Die Datei befindet sich übrigens noch im Windows\System32\webm-Ordner.
Hallo Water,
entweder habe ich was auf den Augen oder in der Windows-Version 24H2 gibt es nichts zum aktivieren.
Auch finde ich nirgends einen Button "Optionale Features" zum draufklicken.
Um zu dem Fenster zu gelangen muss ich "Optionale Features" im Suchfeld eingeben und in der Liste mit den Features gibt es kein WIMC mehr.
Irgendwo habe ich aber gelesen, dass WIMC noch auf dem Rechner ist und man zum aufrufen nur den ganzen Pfad dahin angeben muss.
Aber wo ist die Datei und wie lange das noch so funktioniert, das stand nirgends.
Ich vermute mal, dass Microsoft diese Datei irgendwann ganz entfernt.
MfG:
BigRox
Hallo AspirinJunkie,
vielen Dank für deine Hilfe.
Dein Script funktioniert einwandfrei.
Nur einige Fragen habe ich da noch:
Wie komme ich an die Informationen zum WMI-COM-Objekt?
Ich meine in Visual BASIC gab es dazu eine Hilfe (wenn man einen Punkt hinter ein Objekt geschrieben hat, erschien da ein Fenster mit weiteren Informationen zu dem Objekt), gibt es dies eventuell auch für AutoIt?
MfG:
BigRox
Hallo zusammen,
ich bin seit einigen Tagen auf Windows 11 24H2 umgestiegen und da funktionieren alle Befehle mit WMIC nicht mehr, da Microsoft
WMIC endgültig in "Rente" geschickt hat.
Als Ersatz wird immer auf die PowerShell verwiesen.
Nur habe ich noch nicht gefunden, wie dieser Ersatz aussieht.
Es geht um diese Zeile in AutoIt:
; Das Konto BigRox so einrichten, dass sein Passwort nie abläuft (die Option im entsprechenden Dialogfeld wird markiert).
RunWait(@ComSpec & " /c " & "WMIC USERACCOUNT WHERE Name='" & $_sUserName & "' SET PasswordExpires=FALSE", "", @SW_HIDE)
Und wie kann man den PowerShell-Befehl dann einfach in ein AutoIt-Script einbauen?
Gibt es dafür eventuell eine Art PowerShellUDF?
Oder muss man dafür immer ein .ps1-Script schreiben und dieses Script dann in AutoIt aufrufen?
MfG:
BigRox
Hallo,
vielen Dank an alle die sich an diesem Thema beteiligt haben.
MfG:
BigRox
Hallo,
SPI_SETMOUS E(das E vergessen?!) SONAR
Im Post habe ich das E wirklich nur vergessen, kann ja schon mal vorkommen.
Weil du eine Zeichenkette übergeben hast, erforderlich ist aber UINT.
Da habe ich wohl irgendwie den Durchblick verloren, wie war das noch mit den Bäumen und dem Wald...
Was PVOID angeht , das ist anscheinend nur eine Art Platzhalter für den zu übergebenden Dateityp.
Anscheinend komme ich so langsam dahinter, wie das mit dem DLLCall geht.
MfG:
BigRox
Hallo Funkey,
jetzt hatte ich gedacht, dass ich das mit dem DllCall etwas durchschaut hätte.
Aber "Irrtum sprach der Igel..."
Warum kann ich den SPI_SETMOUSSONAR nicht verwenden, sondern muss die Konstante von AutoIt (oder 0x101D) verwenden?
Und warum muss ich bei einem PVOID-Datentyp UINT-angeben?
MfG:
BigRox
Hallo,
ich habe mir mal einige DLLCalls angeschaut und diese mit den Angaben in der Windows API Referenz verglichen.
Dabei habe ich zuerst mal festgestellt, optionale Parameter gibt es dabei anscheinend nicht, man muss immer alle Parameter angeben. Und die Dateitypen müssen stimmen.
Dann habe ich mal diesen DLLCall ausprobiert um damit die Maussonar-Option einzuschalten.
DllCall("user32.dll", "bool", "SystemParametersInfoA", "uint", "SPI_SETMOUSESONAR", "uint", True, "ptr", Null, "uint", 0)
Nur irgendetwas ist daran noch falsch, es tut sich nämlich gar nichts.
Anscheinen habe ich das mit den Dateitypen doch noch nicht so ganz durchschaut und brauch noch etwas mehr Hilfe dabei.
MfG:
BigRox
Hallo,
ich versuche seit etwa einer Woche, das mit den DLLCalls rauszubekommen.
Leider bisher ohne Erfolg.
Ich versuch z.B. bei diesem DLLCall rauszubekommen, wo ich die Parameter dazu her bekomme.
DllCall("user32.dll", "int", "SystemParametersInfo", "int", $SPI_SETSNAPTODEFBUTTON, "BOOL", False, "int", 0, "int", 0)
Das Tutorial von BugFix kenne ich, aber irgendwie klappt es dennoch nicht.
Da steht u.a. dass er die notwendigen Informationen aus der Windows API Referenz nimmt, nur da finde ich noch nicht einmal die Parameter des obigen Befehls.
Eigentlich müssten die ja auch in der Referenz zu finden sein, da der Befehl funktioniert.
Anscheinend muss man aber da schon genau wissen, wo die gesuchten Informationen stehen, um sie auch zu finden.
Irgendwie erinnert mich die Referenz an den Spruch:
"Jetzt wo ich weiß wie das Gerät funktioniert, verstehe ich auch die Bedienungsanleitung."
Auch der Dependency Walker spuckt bei mir nur massenweise Daten und vor allem Fehlermeldungen aus.
Angeblich kann er die Datei, die er gerade geöffnet hat plötzlich nicht mehr finden.
Gibt es da nicht auch noch andere Infoquellen?
Den nur mit Dependency Walker und API Referenz ist das ganz schon ein etwas sehr schwieriges Unterfangen.
MfG:
BigRox
Hallo,
Danke an alle Beteiligten
MfG
BigRox
Moombas ,
die Leerzeichen vor dem GUI-Titel, sind zwar nicht unbedingt nötig, aber es wäre schon interessant zu erfahren, warum es früher ging und heute nicht mehr.
Und eine Lösung für dieses Problem wäre auch interessant.
Ich vermute nämlich das dieses Problem auch an einer anderen Stelle auftreten könnte und dann hätte man auch direkt eine Lösung dafür.
MfG:
BigRox
Die Frage warum du unbedingt N Leerzeichen vor deinen eigentlichen Titel setzen willst (musst) bleibt noch offen?
Das mache ich um den GUI-Titel nicht ganz linksbündig zu positionieren.
Irgendwie finde ich das dies dann schöner aussieht.
MfG:
BigRox
Hallo,
ich habe da ein Problem mit den Leerzeichen vor einem GUI-Titel.
Zum einfacheren Testen, habe ich mir ein kleines Script geschrieben.
Opt("MustDeclareVars", 1)
Global $hGUI, $sTitel = "Test Test Test"
$hGUI = GUICreate(" " & $sTitel, 500, 200, -1, -1)
GUISetState(@SW_SHOW)
Sleep(5000)
Exit
Alles anzeigen
Das Problem ist, ab den Windows 11 Versionen vor etwa 23H2 wird der GUI-Titel mit den Leerzeichen davor angezeigt, aber ab etwa 23H2 werden die Leerzeichen nicht mehr angezeigt.
Ersetze ich die Leerzeichen durch andere Zeichen, so werden diese Zeichen auch richtig angezeigt.
Um auszuschließen das ich irgendetwas falsch eingestellt habe, habe ich mir mal einen USB-Stick mit Windows 11 (die neuste Version) erstellt und diese Version und AutoIt (auch ohne irgendetwas zu ändern) installiert.
Auch damit werden keine Leerzeichen mehr angezeigt.
Mit dem Befehl _StringRepeat(" ", 10) geht es auch nicht.
Da hat wohl Microsoft irgendetwas geändert und damit GUICreate() negativ beeinflusst, da den Titel mit Leerzeichen versetzen jetzt auch nicht mehr geht.
Nur wie kann man das wieder korrigieren?
MfG:
BigRox
Hallo,
vielen Dank an alle die zu diesem Thema etwas geschrieben haben.
Ich habe es jetzt mit den Befehlen SplashText(On) und SplashText(Off) gelöst und es funktioniert bestens.
MfG:
BigRox
Hallo SOLVE-SMART,
das endgültige Script soll eine Wörtersuche werden.
Dazu wird zuerst ein GUI mit einem Edit-Control und einem Button zum Starten der Suche angezeigt. Nachdem man den Suchbegriff in das Edit-Control eingegeben hat, klickt man auf den Suche starten-Button. Da die Suche einige Zeit dauern kann, erscheint während dem Suchvorgang ein Wartehinweis der über dem Edit-Control angezeigt werden soll. Wenn die Suche abgeschlossen ist, soll diese Wartehinweis wieder ausgeblendet werden und das Ergebnis der Suche im Edit-Control erscheinen.
Das mit der Suche klappt auch einwandfrei, nur die Linien im Wartehinweis stören mich.
Daher habe ich alles was man nicht unbedingt braucht aus dem Script, was ich hier gepostet habe, entfernt, damit das Problem besser sichtbar wird.
Entweder gibt es da eine spezielle Einstellung oder es handelt sich um einen generellen Fehler von AutoIt.
Der Wartehinweis hat nämlich nur diese störenden Linien wenn er über einem Edit-Control erscheinen soll und das einzige was anscheinend hilft ist das Edit-Control vorm Anzeigen des Wartehinweis ausblenden und erst wenn der Wartehinweis ausgeblendet ist wieder einblenden.
Mich würde aber schon interessieren woher dieses Problem eigentlich kommt.
Übrigens:
Wie hast du das mit der Code-Anzeige hier im Forum geschafft, das ging bei mir nämlich einfach nicht.
Oder zeigt die Vorschau etwas anderes an?
MfG:
BigRox
Edit: da waren wohl einige schneller beim schreiben wie ich.
Hallo,
ich habe da ein Problem mit einem Edit-Control.
Ich habe eine GUI mit einem Edit-Control und einem Label, das zuerst versteckt ist und erst nach einem Klick auf einen Button angezeigt wird.
Dieses Label erscheint dann über dem Edit-Control. Das ganz funktioniert auch soweit, nur erscheinen in dem Label immer zwei horizontale Linien, die genau dem oberen und unteren Rand des Edit-Controls entsprechen. Gelegentlich erscheinen nach dem Klick auf den Button keine Linien im Label, aber spätestens wenn man mit dem Cursor über das Label fährt, sind die Linien wieder da.
Einzig hilft das das verstecken des Edit-Controls, denn nur dann sind auch diese Linien weg.
Ich habe hier mal ein kleines Script angefügt um das Problem nachvollziehen zu können.
#include-once
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
Opt("MustDeclareVars", 1)
Global $idBtn_Anzeigen, $idEdiText, $hGUI_Hauptfenster, $GUI_Msg, $idLbl_Wartehinweis
; Das Fenster des GUI erstellen.
$hGUI_Hauptfenster = GUICreate("TEST TEST TEST", 830, 185, -1, -1)
GUISetBkColor(0x3680FF)
; Das Textfenster (Edit-Control) erstellen.
$idEdiText = GUICtrlCreateEdit("", 30, 30, 768, 40, BitOR($ES_CENTER, $ES_MULTILINE))
$idBtn_Anzeigen = GUICtrlCreateButton("Label anzeigen.", 250, 128, 310, 40, BitOR($SS_CENTER, $BS_PUSHLIKE))
GUICtrlSetFont(-1, 12, 400, 0, "Tahoma")
GUICtrlSetBkColor(-1, 0x00FF00)
; Das Label mit dem Wartehinweis erstellen.
$idLbl_Wartehinweis = GUICtrlCreateLabel("", 214, 23, 372, 89)
GUICtrlSetBkColor(-1, 0x707070)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState(@SW_SHOW, $hGUI_Hauptfenster)
While 1
$GUI_Msg = GUIGetMsg()
Switch $GUI_Msg
Case $GUI_EVENT_CLOSE ; Symbol <Fenster schließen>
GUIDelete($hGUI_Hauptfenster)
ExitLoop
Case $idBtn_Anzeigen ; Button <Label anzeigen.>
; Das Label für den Wartehinweis anzeigen.
GUICtrlSetState($idLbl_Wartehinweis, $GUI_SHOW)
;GUICtrlSetState($idEdiText, $GUI_HIDE)
EndSwitch
WEnd
Exit
Alles anzeigen
Hoffentlich kann man mit dem Anhang auch etwas anfangen, den mit diesem Forum scheint wohl etwas nicht so ganz zu stimmen,denn jedesmahl wenn ich ein Code einfügen will, sind alle Einrückungen weg.
MfG:
BigRox
Hallo Mars und Andy,
Danke für den Tipp
Ich dachte gar nicht, dass es so einfach geht, aber manchmal hat man eben einfach eine Denkblockade.
MfG:
BigRox
Hallo,
ich habe eine Variable mit einem Farbwert im RGB-Format z.b.
$xFarbe = 0x1A49BC
Diese Farbe möchte ich in GDI+ verwenden.
Die Befehle von GDI+ benötigen jedoch das ARGB-Format.
Der Alpha Anteil währe bei mir immer FF, also keine Transparenz.
Ich müsste meine Variable um diesen Alpha-Anteil ergänzen, sodass ich nachher
0xFF1A49BC als ARGB-Wert für GDI+ erhalte.
Wie kann ich also meine Variable für GDI+ verwenden?
MfG:
BigRox