Beiträge von BigRox
-
-
Hallo BugFix,
ich habe dein LUA-Script einmal ausprobiert.
Leider ohne Erfolg.
Das Script habe ich ins ins LUA-Verzeichnis kopiert ("C:\Programme\AutoIt3\SciTE\LUA\VarGetTipp.lua")
In der Datei "ScoiTEUser.properties" habe ich folgendes eingetragen:Spoiler anzeigen
command.37.*.au3=dofile $(SciteDefaultHome)/Lua/VarGetTipp.lua
command.mode.37.*.au3=subsystem:lua,savebefore:no
command.shortcut.37.*.au3=Ctrl+Alt+V
Variable.Tipp.Region.*.au3=1 (1=in Region, 0=mit Tag)
Variable.Tipp.CallTip.*.au3=1 (1=als CallTip, 0=Ausgabe in Konsole)Zum Testen verwende ich dieses (zugegeben sehr einfache) Script:
[autoit]
[/autoit][autoit][/autoit][autoit]
; -----------------------------------------------------------------------------------------------------------------------------
; Script Funktion: Testdatei für AutoIt-Scripte Version: 3.3.8.1, Script Autor: BigRox
; -----------------------------------------------------------------------------------------------------------------------------#region - Variablen-Tipp
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
; $Variable1 Das ist der Tipp für diese Variable (1)
; $Variable2 Das ist der Tipp für diese Variable (2)
; $Variable3 Das ist der Tipp für diese Variable (3)
#endregion$Variable1
[/autoit]
Aber wenn ich den Cursor auf die Variable setze und den Hotkey betätige, geschieht nichts.Ich habe auch einmal das LUA-Script von "InsertFunctionHeader.lua" von Raupi ausprobiert und das funktioniert einwandfrei bei mir.
Also funktioniert das mit den LUA-Scripten anscheinend.
Aber irgendetwas habe ich dann doch wohl bei deinem Script falsch gemacht.MfG:
BigRox -
lwl2011Bochum !
Ich nehme dafür VB6, da es dafür viele Beschreibungen der dlls usw. gibt.
Delphi soll sogar noch schneller sein (dafür gibt es auch einiges an Bechreibungen usw.).
Aber die dlls müsste eigentlich auch mit AutoIt gehen.Für den Parallelport nehme ich die "inpout32.dll"
und für die Serielle-Schnittstelle die "ELEXS.dll"Google mal danach, ich schätze, da findest du einiges.
MfG:
BigRox -
Hallo AsperinJunkie !
Danke für deine Hilfe
Deine Tipps haben mir sehr geholfen.
MfG:
BigRox -
Hallo AsperinJunkie !
Zum erklären warum ich die FileFind…-Funktionen überhaupt ausprobiert habe.Ich habe mir ein Installationsscript für das Programm „Defraggler“ geschrieben.
Das Script funktioniert auch gut, nur wenn sich die Programmversion von Defraggler ändert muss ich auch das Script entsprechend ändern, da der Namen der exe-Datei auch die Versionsnummer enthält (die 207 im Namen).Nun probiere ich schon seit einiger Zeit diese „etwas unschöne“ Sache durch den Einsatz eines regulären Ausdrucks im „Run“-Befehl zu ändern.
(So ähnlich wie bei dem Fenstertitel mit „RegExpTitel()“).
Da mir dies aber bis heute nicht gelungen ist, habe ich es einmal mit den FindFile…-Funktionen ausprobiert.
(Mit Hilfe von Wildcards ( Run($Pfad_Install_Programm & "\ dfsetup*.exe“...) ) geht das anscheinend auch nicht).
Ich muss ja nach einem Dateinamen mit Wildcard suchen (dfsetup*.exe) und dann von der Funktion den richtigen Dateinamen (dfsetup207.exe) zurückgegeben bekommen um diesen dann im Run-Befehl zu verwenden.Mit den FindFile…-Funktionen funktioniert das auch ganz gut, nur wenn da gar keine Setupdatei in dem Ordner ist, müsste eigentlich eine Fehlermeldung erscheinen wenn man @error abfragt. In diesem Fall muss man aber den Rückgabewert auf den Wert -1 testen.
Hier einmal ein erster Script-Entwurf:
Spoiler anzeigen
; Einigen Variablen Werte zuweisen.
$Install_Pfad = @ProgramFilesDir & "\Sonstige\Defraggler"
$Pfad_Install_Programm = @HomeDrive & "\Defraggler\Programm"$Such_Handle = FileFindFirstFile($Pfad_Install_Programm & "\dfsetup*.exe")
If @error Or $Such_Handle = -1 Then
MsgBox(262192, "! ! ! F E H L E R ! ! !", 'Beim ausführen der "FindFileFirst()"-Funktion ist ein Fehler aufgetreten !')
EndIf$Datei = FileFindNextFile($Such_Handle)
FileClose($Such_Handle); Das Installationsprogramm von "Defraggler", mit Silent Schalter, aufrufen.
Run($Pfad_Install_Programm & "\" & $Datei & " /D=" & $Install_Pfad); Funktion zum warten auf das erste Fenster aufrufen.
$Fenster_Text = "Deutsch" ; Der Text gilt auch für das folgende Fenster 1.; massenweise Befehle bis Exit
Das Script sieht zwar noch ziemlich chaotisch aus aber es funktioniert schon mal.
Aber es funktioniert nur mit der Zeile:
"If @error Or $Such_Handle = -1 Then"
richtig.
Nur mit "If @error Then" funktioniert es nicht wenn der Ordner keine dem Suchmuster entsprechenden Dateien enthält (aber existiert).MfG:
BigRox -
Hallo AsperinJunkie !
Zuerst in meinem ersten Post habe ich den Funktionsnamen versehentlich falsch geschrieben, es musste natürlich "FileFindFirstFile" heißen.Ich habe das Problem eben nochmal mit diesen beiden Scripts ausprobiert.
Den benötigten Ordner habe ich vorher manuell angelegt.
Dieses Script funktioniert richtig.Spoiler anzeigen
$search = FileFindFirstFile("C:\Test\*.*")
; Prüfen, ob die Suche erfolgreich war
If @error Then
MsgBox(0, "Fehler", "Es wurden keine Dateien/Verzeichnisse gefunden, die zu dem Suchmuster passen")
Exit
EndIf
; weitere unwichtige Befehle...
; Handle für Suche schliessen
FileClose($search)Und diese Version funktioniert nicht:
Spoiler anzeigen
$search = FileFindFirstFile("C:\Test\dfsetup207.exe")
; Prüfen, ob die Suche erfolgreich war
If @error Then
MsgBox(0, "Fehler", "Es wurden keine Dateien/Verzeichnisse gefunden, die zu dem Suchmuster passen")
Exit
EndIf
; weitere unwichtige Befehle...
; Handle für Suche schliessen
FileClose($search)Der Unterschied ist, bei der zweiten Version habe ich keine Wildcards angegeben sondern einen Dateinamen (dfsetup207.exe) der aber nicht im Ordner (C:\Test) existiert.
Somit müsste dann auch die Fehlermeldung erscheinen, da ja dann auch keine Datei dem Suchmuster entspricht.
(wenn man sogar eine andere Datei in den Ordner kopiert, die nicht dem Suchmuster entspricht, erscheint auch keine Fehlermeldung (die Fehlermeldung erscheint anscheinend nur bei dem "*.*"-Suchmuster)).
Tut es aber nicht, dann gibt die Funktion nur -1 zurück, obwohl der Ordner ganz sicher auch existiert.
Da ist die Hilfe aber wohl nicht sehr hilfreich (verwendete Hilfeversion die aktuelle Onlinehilfe).MfG:
BigRox -
Hallo !
Ich habe ein kleines Problem mit der "FindFileFirst()"-Funktion.In der Hilfe dazu steht ja u.a.:
RückgabewertFehler: Gibt -1 zurück, wenn ein Fehler aufgetreten ist. Wenn der Ordner leer ist, wird @error auf 1 gesetzt.
Stimmt das eigentlich ?
Wenn der angegebene Ordner leer ist gibt diese Funktion immer nur -1 zurück, aber @error wird nie gesetzt.Da scheint wohl irgendetwas nicht so ganz zu stimmen.
Bevor ich da aber etwas in der Hilfe ändere wollte ich aber lieber mal nachfragen ob andere auch dieses Problem haben.MfG:
BigRoxP.S. Als Code zum testen verwende ich das Beispiel aus der deutschen Hilfe, nur schreibe ich darin anstelle von "If $search = -1 Then" "If @error Then"
-
Hallo zusammen,
komisch bei mir funktioniert der Link absolut problemlos.
(BS: Windows XP Pro. 32 Bit, Browser: Opera 10.50)
MfG:
BigRox -
Aktiv bedeutet das das Fenster den Fokus hat.
Das stimmt leider aber nicht immer.
Z.B beim Setup zu MSDN-Library gibt es ein Fenster in dem man seinen Namen und die Organisation eintragen muss.
Nach dem Klick auf OK erscheint ein weiteres Fenster zum bestätigen der Angaben. Dieses Fenster hat den Status 47(101111), ist also aktiv .
Jedoch bleibt das erste Fenster (wo man seine Namen usw. eintragen muss) im Hintergrund sichtbar und dieses Fenster hat den Status 43(101011), es ist also auch noch aktiv, obwohl es keinen Fokus mehr hat.
Den Unterschied macht da nur das "freigegeben" Bit 4
Anscheinend bedeutet da "freigegeben" das dieses Fenster den Fokus hat (was bedeutet dann aber "aktiv") ?Oder legt MS mal wieder die Regeln etwas anders aus ?
MfG:
BigRox -
Hallo,
ich habe da einige kleine Fragen zu dem "WinGetState"-Befehl und seinen Rückgabewerten.Wenn ich den Status eines Fensters mit dem Befehl abfrage, gibt der mir ja folgende Werte zum auswerten zurück.
1 = Fenster existiert.
2 = Fenster ist sichtbar.
4 = Fenster ist freigegeben.
8 = Fenster ist aktiv.
16 = Fenster ist minimiert.
32 = Fenster ist maximiert.Die Bedeutung der Werte 1, 2, 16 und 32 ist mir klar, nur worin besteht eigentlich der Unterschied zwischen 4 und 8 ?
Ein Fenster, in dem man etwas eingeben kann, müsste doch freigegeben und aktiv sein ?
Anscheinend kann ein Fenster aber freigegeben und trotzdem inaktiv sein.Den Status eines Fensters kann ich doch z.B mit:
[autoit]For $_Cntr = 0 To 20
[/autoit]
Sleep(1000)
If Not BitAND(WinGetState($_Wnd_Title, $_Wnd_Text), And Not BitAND(WinGetState($_Wnd_Title, $_Wnd_Text), 4) Then
ExitLoop
EndIf
Nextabfragen.
[autoit]
Diese Programmzeilen müsste doch eigentlich zum gleichen Ergebnis führen:For $_Cntr = 0 To 20
[/autoit]
Sleep(1000)
If Not BitAND(WinGetState($_Wnd_Title, $_Wnd_Text), 12) Then
ExitLoop
EndIf
NextOder sehe ich da etwas total falsch, da die beiden Versionen zu unterschiedlichen Ergebnissen führen.
(im zweiten Fall wird die Schleife anscheinend schneller durchlaufen, so als wenn der "Sleep(1000)"-Befehl einfach ignoriert würde. Der Schleifenzähler "$_Cntr" erreicht den Wert 20 in nur etwa fünf Sekunden).MfG:
BigRox -
Hallo Alina,
meinst du etwa die Bastelanleitung in der letzten Chip (3/2011 Seite 126, 127) ?Da ging es nämlich auch um den Umbau eines handelsüblichen Dämerungsschalter damit der eine Steckdose schaltet wenn an einer FritzBox eine LED angeht.
MfG:
BigRox -
Hallo Andy,
ich habe mit deinen Tipps mal etwas experimentiert.Ergebnis: Mein Proxi-Server hat die Probleme verursacht Der hat das Script dieser Seite irgendwie als gefährlich eingestuft und es daher einfach blockiert.
Jetzt sehe ich auch die beiden Buttons, die Alina meinte.Jetzt ist diese Seite als vertrauenswürdig eingestuft und der Proxi funkt mir nicht mehr dazwischen.
An Opera (Version 11.01.1190) habe ich jedoch nichts ändern müssen.Jetzt sieht das Fenster bei mir plötzlich so aus.
autoit.de/wcf/attachment/12580/Danke für die Tipps
Hurra, jetzt klappt auch die Vorschau.So, jetzt wird als nächstes das Script von Sprenger120 getestet.
MfG:
BigRoxedit:
Hallo Sprenger120,
dein Tipp funktioniert einwandfrei.
Danke für den TippMfG:
BigRox -
Hallo,
hier nun auch das Script mit Variable usw.
Vielleicht wird da ja die Frage usw. etwas klarer.Wieso sieht man in der Vorschau eigentlich nie, wenn man eine Datei eingefügt hat ?
Irgendwie stimmt da wohl etwas nicht. Smliys einfügen, geht nicht, will man eine Datei zum einfügen auswählen erscheinen überall nur Kreuze...Wie fügt man eigentlich diesen Spoiler ein, dafür gibt es bei mir nirgends einen Button o.ä. ?
Liegt das eventuell am Browser "Opera 11.01" ?MfG.
BigRoxedit vom 11.2.2011 um 19:08:
Ich habe einmal ein Foto von dem Eingabefenster, was ich sehe, angefügt.
Ich sehe da nirgends irgendwelche Buttons zum einfügen von Scripten o.ä. -
Hallo,
ich habe da mal wieder eine kleine Frage.Ich will überprüfen, ob au meinem Rechner der Opera-Browser schon installiert wurde.
Dafür durchsuche ich den, mit einer Schleife und einer If...Then Abfrage, die Registry nach dem Uninstall Schlüssel von Opera.Hier der Code:
; Abfragen ob das Programm (Opera) schon installiert wurde.
For $LV = 1 To 300
If RegEnumKey("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", $LV) =
"Opera 11.01.1190" Then
MsgBox(262192, $Fenster_Titel_0, " Das Programm wurde schon installiert !")
Exit
EndIf
NextDies hat aber einen kleinen Hacken, wenn sich die Version von Opera ändert, so muss auch die If...Then Abfrage entsprechend angepasst werden.
Würde ich dann weiterhin nach "Opera 11.01.1190" suchen, so würde dieser Wert bestimmt nie gefunden.Daher wäre es gut, wenn man als Vergleichswert ein Art Wildcard verwenden könnte.
Also z.B. If RegEnumKey(.....) = " Opera 11" & "*" Then, dadurch würden alle Werte die mit Opera beginnen gefunden und der Rest des Wertes (die genaue Versionsnummer) wäre dann egal.Geht so etwas in AutoIt überhaupt ?
MfG:
BigRox -
Hallo Molaynox,
danke für den Tipp.AutoIt hat mitlerweile so viele Funktionen, da verliert man ab und zu einfach den Überblick.
Da braucht man eben einen kleinen Hinweis und schon geht es weiter.MfG:
BigRox -
Hallo,
ich habe da ein kleines Problem mit dem Windows-Taschenrechner.
Ich benütze oft ein Programm, bei dem ich verschiedene Berechnungen mit dem Taschenrechner ausführen muss.
Also Starte ich zuerst ein kleines Script, dass zuerst den Taschenrechner aufruft, diesen dann minimieren soll und zuletzt das andere Programm startet.
Das funktioniert auch, bis auf das minimieren des Taschenrechners, das macht Probleme.Zum aufrufen und minimieren des Taschenrechners benütze ich folgende Programmzeilen:
Opt("MouseCoordMode", 0)
Run(@SystemDir & "\Calc.exe") ; Taschenrechner aufrufen
ProcessWait("calc.exe") ; warten bis der Prozess des Taschenrechners existiert
MouseClick("LEFT", 205, 11, 1, 0) ; klick auf den Minimieren-Button des TaschenrechnersDas minimieren geht anscheinend nur mit "MouseClick()".
Den Rechner mit: "Run(@SystemDir & "\Calc.exe", "", @SW_MINIMIZE)" minimiert starten, geht nicht.
Nur erscheint da öfters das Startmenü oder der Taschenrechner wird nicht minimiert.Gibt es da eventuell noch eine andere Möglichkeit, den Taschenrechner zuverlässig zu minimieren ?
MfG:
BigRox -
Hallo progandy,
dass könnte natürlich auch sein.
Aber warum wird dann die Nummer wird überall als GUID bezeichnet.Aber vielleicht machen die das, um einige so richtig zu verwirren, oder die kennen selber den Unterschied nicht so richtig und nehmen es daher mit den Bezeichnungen nicht so genau.
MfG:
BigRox -
Hallo,
Danke für die Tipps.
Das Programm (Subsembly) verwendet dann wohl wirklich eine abgeänderte Art von GUID's.
(das Programm verwendet die GUID um die Sicherungsdatei eindeutig der Wallet-Datei zuzuordnen).
Mann kann da z.B. die Netzwerkskarte des Rechners austauschen, aber dies hat keinen Einfluss auf die GUID. Auch das Datum usw.der Wallet-Datei, spielt anscheinend keine Rolle.
Am naheliegendensten wäre, dass da, bei dem Programm, nur der Dateinamen den Unterschied ausmacht.
Naja, da hilft wohl nur ausprobieren, das muss doch irgendwie herauszufinden sein.MfG:
BigRox -
Hallo stayawayknight und autoBert,
genau dies habe ich gemeint.Nur wovon ist diese GUID eigentlich abhängig ?
Oder erwachtet man einfach, dass so eine große Zahl doch einfach eindeutig und unverwechselbar sein müsste ?MfG:
BigRox -
Hallo,
ich habe da mal eine Frage zu GUID's und AutoIt.Wenn ich mir mit AutoIt, mit der Funktion "_WinAPI_CreateGUID()", eine GUID erzeuge, brauche ich da ja keine Parameter o.ä mitzugeben.
Diese Funktion würde die GUID also absolut zufällig erzeugen.Ist so eine GUID nicht irgendwie eindeutig einem Programm o.ä. zugeordnet ?
Ich habe da ein Programm (Subsembly Banking), dass akzeptiert nur eine GUID die in Abhängigkeit zu einem Dateinamen erstellt wurde. Da kann ich ja nichts mit dieser AutoIt--Funktion anfangen.
Oder ist das eine etwas abgeänderte Form einer GUID ?MfG
BigRox