Zumindest wars der Kommunikation förderlich.
Beiträge von BugFix
-
-
-
Wie, was ?
1. Ist das jetzt ein Fehler, das die Anschlusskennung nicht gezeigt wird oder Absicht ?2. Willst du, das der Fokus nicht auf Inputfeld Anschlußkennung liegt ?
3. Oder soll dieses Inputfeld auf ReadOnly gesetzt werden?
Fragen über Fragen
WO BLEIBT DER CODE ?
Edit:
Ich glaub, das is 'n richtig schlimmer Finger unser Aiden. Der macht was gaaaanz Geheimes. MI5, NSA ??
-
So nun bleib gaaanz ruhig und trink erst mal 'n Tee. Und dann sag mit einfachen klaren Worten, was du machen möchtest. Sry, aber ich habs nicht kapiert.
-
Hi Tam0r,
ruhig mal die Suche benutzen. :hammer:
Genau das Thema hatten wir vor ein paar Tagen - mit Lösung hier: doppelklick auf listview? -
_IsPressed( ) ist hier eigentlich nicht geeignet, da mit dieser Funktion das Drücken einer vorher bereits festgelegten Taste überprüft wird.
Wenn ich p3aNut richtig verstehe, will er abfangen welche Tasten der User selbst auswählt.p3aNut, du machst doch das Ganze sicher in einer GUI. Gib z. B. 3 Checkboxen für jeweils <STRG> <WIN> und <ALT> -Taste, dazu ein Inputfeld für Buchstaben /Ziffern und schon kann der User sich seine Hotkeys zusammenstellen.
Vergiß nicht die Fehlerbehandlung (gewählter Hotkey ist Systemkey z.B. <STRG> + <C> ). -
Auch mein Tipp
mach das ganze sauber in Autoit, dann sparst du dir das ständige switchen.
Für das, was du durchführst benötigst du nicht zwingend Batch-Dateien. Das kann Autoit auch. -
Wenn du Scite benutzt, kannst du deine eigenen Funktionen dort so einbinden, dass sie in der Autovervollständigung erscheinen.
Ich hab das so geregelt, dass ich all meine Funktionen unter "MyFunc.au3" abspeichere. Um sie im Programm verwenden zu können einfach: #include <MyFunc.au3>
Falls du viele eigene Funktionen erstellst, bläht das Include den Code unnütz auf. Da ist es dann besser nur die genutzte Funktion reinzukopieren oder hinterher mit Pees "Reinigungsprogramm" den Code zu minimieren. -
Hi DJMANU,
du mußt ja wirklich viel Zeit haben
Dein Proggi ist nicht schlecht. Doch da ich sowieso bewegungsresistent (manche sagen faul dazu) bin, habe ich mein Windoof schon so eingerichtet, dass ich jeden Punkt der Systemsteuerung mit 2 Mausklicks öffnen kann:
In der Taskleiste <Symbolleiste> <Neu> "Arbeitsplatz" . Dann hast du direkten Zugriff (auf alle Arbeitsplatzelemente).
s. Screenshot -
-
Habs grad mal getestet, wenn du Passwordstyle so setzt (oder von Anfang an definierst mit Style $ES_PASSWORD):
CodeConst $EM_SETPASSWORDCHAR = 0xCC Const $PasswordChar = Asc("*") GUICtrlSendMsg($Input_1, $EM_SETPASSWORDCHAR, $PasswordChar, -1)
dann kannst du den Inhalt des Inputfeldes auch nicht rauskopieren ( STRG+C und ClipGet() ). Da erhältst du nur Müll.
-
Oh Danke, du machst mich glücklich
-
Zitat
oder geht das, das ein feld von anfang an markiert ist
Wenn es das zuerst definierte Control in der GUI ist, hat es automatisch den Fokus beim Start.
Ist im Inputfeld Text enthalten, so ist er auch gleich komplett markiert.Edit:
Oder du setzt den Fokus bei Programmstart: -
Ja, Danke!
Den API-Viewer hatte ich auch gefunden - aber z.Zt. kann ich grad nix downloaden (mein Fuchs spinnt) daher weiß ich noch nicht was schönes drin ist .Edit:
Also den API Viewer hab ich nun. Aber wahrscheinlich bin ich zu blöd, das Teil zu bedienen.
Ich kann mir zwar Typen, Konstanten, Deklarationen für 10 verschiedene Sprachen anschauen - wie finde ich aber hier den HEX-Wert.
Geb ich im Suchfeld "EM_SETPASSWORDCHAR" findet er das nicht. (Geöffnet ist die Win32api)Also falls du meinen Horizont etwas erweitern könntest, wär ich dir dankbar.
-
Ich mach zu dem Thema jetzt mal nen separaten Thread auf.
Wir hatten ja hier schon damit begonnen.Die allg. Syntax lautet ja: GUICtrlSendMsg ( controlID, msg , wParam, lParam )
In allen Beispielen, die ich dazu gefunden habe wird die Funktion immer so verwendet:Global Const $NAME = HEX-Wert ; msg
GUICtrlSendMsg( controlID, $NAME , 1, 0 )Hier mal ein Beispiel mit: Set ReadOnly (Ein/Aus)
Code
Alles anzeigen#include <GuiConstants.au3> Global Const $R_ONLY = 0xCF GuiCreate("MyGUI", 392, 323,-1, -1) $Input_1 = GuiCtrlCreateInput("", 110, 80, 190, 50) $b_ein = GUICtrlCreateButton("Read only ein", 20, 20) $b_aus = GUICtrlCreateButton("Read only aus", 120, 20) GuiSetState() While 1 $msg = GuiGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $b_ein ; Read Only ein GUICtrlSendMsg($Input_1, $R_ONLY, 1, 0) Case $msg = $b_aus ; Read Only aus GUICtrlSendMsg($Input_1, $R_ONLY, 0, 0) EndSelect WEnd Exit
Woher bekomme ich aber den notwendigen HEX-Wert ? Gibt es dafür irgendwo eine Übersicht ?
Edit:
So, ich habe nun mal stundenlang gegoogelt und mich durch Foren und Anleitungen gelesen.
Fazit:
In anderen Sprachen (VBA, Delphi) kann ich die Message-ID bei SendMessage( ) genauso senden, wie bei Microsoft deklariert (z.B. Edit-Control-Message: "EM_SETPASSWORDCHAR"). Aber in Autoit geht das leider nicht so. Da brauch ich diesen 'blöden' HEX-Wert. :weinen: -
Eine Möglichkeit ist wahrscheinlich noch:
ZitatGUICtrlSendMsg ( controlID, msg , wParam, lParam )
Gibt den Wert zurück, der von der SendMessage Windows API zurückgegeben wurde (siehe Microsoft-Dokumentation).
In der MS-Doku habe ich dazu folgendes gefunden:
ZitatlResult = SendMessage
( // returns LRESULT in lResult
(HWND) // handle to destination
hWndControl, control
(UINT)
EM_SETPASSWORDCHAR, // message ID
(WPARAM) wParam, // = (WPARAM) () wParam;
(LPARAM) lParam // = 0; not used, must be zero
);
Wie das auf die Funktion anzuwenden ist, ist mir (noch) nicht klar. Habe GUICtrlSendMsg noch nie genutzt. Die Hilfe ist dabei auch nicht sehr nützlich.Aber vielleicht hat ja jemand damit schon experimentiert.
Edit:
Hab jetzt mal ein paar Beispiele ausprobiert. Man benötigt in jedem Fall den Hex-wert der Message. Aber nirgendwo schreibt jemand, wie man die findet
-
Die Frage von Analyzer ist natürlich berechtigt.
Grundsätzlich ist es möglich (und manchmal auch sinnvoll) den Style eines Controls dynamisch zu ändern.
Ich hab mal das englische Forum durchforstet. Die haben ebenfalls bemerkt, dass GUICtrlSetStyle() nur auf einige Contrlos angewendet werden kann.
Leider habe ich noch keine Auflistung der möglichen Controls gefunden. -
Versuchs damit:
oder
Edit: Pee mal wieder schneller
Edit #2:
Tatsächlich - es geht nicht. Habs mal bei anderen Elementen (Liste) probiert. Auch dort ist SetStyle wirkungslos.Einzige, wenn auch etwas umständliche Alternative:
CodeGUICtrlDelete($kennwort) $kennwort = GUICtrlCreateInput("", 460, 20, 100, 20, $ES_PASSWORD) ; zurück auf DefaultStyle: GUICtrlDelete($kennwort) $kennwort = GUICtrlCreateInput("", 460, 20, 100, 20)
Das funktioniert dann wenigstens. -
@DJMANU
Hi, nochmals eine Bitte:
Nicht nur den Code als Datei anhängen, sondern auch im Thread zum Anschauen hinterlegen.
Es gibt vieles, dass mich interessiert. Aber ich möchte nicht erst alles herunterladen um es mir anzuschauen. Einfacher ist es, wenn ich mir den Code im Thread ansehe und dann sagen kann: Yeah, das isses! - Das ist besser als die eigene Lösung oder so.
Also sei doch in Zukunft so nett - ja? -
Hi,
kleiner Tipp:
Poste den Code mit. Ich persönlich bin viel zu faul erst downzuloaden.