Beiträge von Kanashius
-
-
Hier findest du dazu noch was: http://www.mycsharp.de/wbb2/thread.php?postid=300871
Ist zwar java, aber kann man sich ja anpassen, insbesondere unter verwendung der bass.dll (gibts auch für autoit :))Ansosnten einfach mal bei google "radiostream metadaten auslesen" durchsehen.
-
Welcher Idiot hat sich das denn ausgedacht? Ist doch vollkommen unnötig...
-
Shortcut:
Drück einfach TAB, nachdem du die Zeilen markiert hast. Alle markierten Zeilen wird dann ein Tab vorangestellt. Mit SHIFT+TAB
übrigens wieder entfernt. Für so Kommentare wüsste ich so keins, müsste man vermutlich selbst schreiben. Halte ich aber nichtunbedingt für sinnvoll...
Bei dem andern:
EDIT: Oscar hats ja gesagt.
Ich finde es generell blöd, dass manche Funktionen die Menge an den Anfang schreiben, das ist eigentlich unnötig und sorgt eher für
Probleme. Für sowas gibt es doch UBound(). Bei Stringsplit beispielsweise hab ich mir angewöhnt immer den flag 2 zu setzen, damit er
das nicht mit speichert. Vermute mal, das kommt von anderen Sprachen, wie C,... -
Die Lösung heißt Array.
AutoIt
Alles anzeigen$arLabels=_CreateLabel() ;Hier kommst du dann mittels $arLabels[0] bis $arLabels[9] an die Controls dran. Func _CreateLabel() local $Array[10] for $i = 0 to UBound($Array)-1 step 1 $Array[$i]=GUICTRLCreateLabel("Test" & $i, 20,20*$i,200,15) GUICtrlSetBkColor(-1,0x0B610B) Next return $Array EndFunc
Ansonsten einfach mal nen Tutorial zu Arrays ansehen, gibt es von BugFix auch ein gutes, glaub ich.
-
Dafür muss man GuiRegisterMsg benutzen, diese Events haben vorrang und werden ausgeführt, bevor dein Programm weiterläuft. Darin kannst du schreiben, dass ein Vorgang abgebrochen werden soll.
Für Beispiele einfach google fragen, oder das Forum durchsuchen (hab grad nur wenig Zeit). -
Viel Glück...
Der Sinn von Admin ist ja, dass Programme das nicht einfach so bekommen. Da müsstest du die Sicherheitseinstellungen des Rechners ändern. (Mit Admin rechten.) Das wiederum ist natürlich auch nicht sicher.
Ansonsten vielleicht als Systemprozess/dienst starten.
Mit Adminrechten starten kann nur, was selbst Adminrechte hat. -
Der kram:
- #include <ButtonConstants.au3>
- #include <EditConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <StaticConstants.au3>
- #include <WindowsConstants.au3>
- #Region ### START Koda GUI section ### Form=
- Opt("GUIOnEventMode", 1)
hat in Funktionen so nichts verloren (Zeile 7 nur in Ausnahmen zum wechseln des Modus). Das solltest du an den Anfang der Datei packen und aus den beiden Funktionen, wo die Guis erstellt werden, entfernen. Nur weil Koda das mitgibt heißt es noch lange nicht, dass es dahin gehört...
Wenns schick werden soll rate ich persönlich auch von Koda ab. Wenn man die Controls selbst erstellt wird es oft ordentlicher (auch vom Code her).Dein Problem kommt auch vom Copy&Paste aus Koda. Deine 2te Gui (Anleitung) wird mit einem Event betreten. In dem Event befindet sich eine while-Schleife. Events sollten aber so schnell wie möglich verlassen werden. Wenn du die Schleife weglässt sollte es funktionieren. Events werden nacheinander abgearbeitet, deshalb muss das vorherige Event verlassen werden, bevor das nächste bearbeitet werden kann.
Im normalfall hat man im OnEventModus auch nur EINE While-Schleife die die ganze Zeit läuft.
Standartaufbau:AutoIt
Alles anzeigen#include ;... Opt();z.B. OnEventmode global $var ;Variablen deklaration (wenn nötig, gerade bei Guis im OnEventMode ; für alle Controls notwendig, die auch außerhalb der ; Gui-Funktion verwendet werden sollen. ) global $SomeControl,$GuiAnleitung ;HauptGui starten (Kann auch in eine Funktion geschrieben werden $gui=GuiCreate("blub",100,100) guisetstate(@SW_Show) ;Hauptschleife, damit das Programm an bleibt. While sleep(10) WEnd ;Funktionen Func _Anleitung() $GuiAnleitung=GuiCreate("Anleitung",200,200) $SomeControl=GuiCtrlCreateButton("msg1",10,10) GuiCtrlSetOnEvent(-1,"_switchMsg") GuiSetOnEvent(-3,"_CloseAnleitung") GuiSetState(@SW_SHOW) EndFunc Func _switchMsg() GuiCtrlSetDate($SomeControl,"close now") EndFunc Func _CloseAnleitung() GuiDelete($GuiAnleitung) EndFunc
(Kann kleinere Syntax-Fehler enthalten, bin grad auf Linux->kein AutoIt)
MfG Kanashius
-
Ist das eventuell eine andere Soundkarte?
-
ControlSend dürfte dir sonst auch helfen, oft nicht so schön wie ControlCommand, aber für den Benutzernamen würds reichen.
-
Guckst du in die Hilfe zu Send:
"+{HOME}" -
Sende doch einfach Shift+Pos1 und dann ein Del. Damit wird der Inhalt des Inputs markiert und beim Del gelöscht.
Für mich sieht es mit Send aber nicht so schön aus. Guck mal ob es nicht irgendwie mit ControlClick, ControlSend oder gar mit der _ie udf oder _ff udf geht. Diese Methoden sind deutlich weniger anfällig für Fehler, gerade bei Benutzereingaben.
(IE beispielsweise ist immer Vorinstalliert und nur sehr schwer zu deinstallieren auf Windows.) -
Und hier die Lösung, für das Script, das ich oben schon genutzt hatte. (Leider ungetestet, bin in der Uni->Linux Laptop)
AutoIt
Alles anzeigenFunc GetNumber($sText,$search,$next,$oncurrence=0);Text übergeben, Suchbegriff übergeben, Anzahl Zeilen darunter übergeben, Wievieltes auftauchen if $oncurrence<0 then MsgBox(16,"Error","Oncurrence <0") return "Error" endif $ar=StringSplit($sText,@crlf,1+2);Hier wird der String an Zelenumbrüchen aufgeteilt. ;_ArrayDisplay($ar);nur zum angucken für dich, kannst die zeile rausnehmen, ebenso wie den include oben $index=-1 for $i=0 to UBound($ar)-1 step 1;Hier guckt man mit Ubound($ar), wie viele Einträge das Array hat und geht diese alle durch (0 und ubound()-1, da der index bei 0 anfängt) if StringInStr($ar[$i],$search) then;wenn der gesuchte string in der zeile enthalten ist, wollen wir uns diese merken if $oncurrence=0 then $index=$i ExitLoop;damit wir den rest des arrays nicht mehr durchsuchen müssen, springen wir hier einfach aus der for-schleife heraus else $oncurrence-=1 endif endif next if $index=-1 then;hier gucken wir, ob der index gesetzt wurde, also der gesuchte text gefunden wurde, sonst gibts ne fehlermeldung. MsgBox(16,"Error",$search&" not found!") else ;hier prüfen wir nochmal, ob der index auch erreichbar ist, falls nach &Adresse beispielsweise kein text mehr kommt if $index+$next>UBound($ar)-1 or $index+$next<0 then MsgBox(16,"Error","Index: "&$index+$next&" not found!") else return $ar[$index+$next];ansonsten geben wir den string an dem jeweiligen index zurück. endif endif ;trat ein Fehler auf, geben wir Error zurück return "Error" EndFunc
Ist vielleicht ein bisschen mehr Quellcode, ich denke, dass du die Änderungen aber entsprechend selber hättest machen können, da es verständlicher ist.
MfG Kanashius.
-
So würd ich es machen:
AutoIt
Alles anzeigenGlobal $closeBreak=false Func _breakMsg($x,$y,$width,$height,$title,$message) $Gui=GuiCreate($title,$width,$height,$x,$y) $Label=GuiCtrlCreateLabel($message,5,5,$width-10,$height-10); GuiSetState(@SW_SHOW) While Sleep(10) $msg=GuiGetMsg() if $msg=-3 then ExitLoop endif WEnd GuiDelete($Gui) EndFunc Func _breakEvent($x,$y,$width,$height,$title,$message) $Gui=GuiCreate($title,$width,$height,$x,$y) $Label=GuiCtrlCreateLabel($message,5,5,$width-10,$height-10); GuiSetOnEvent("_exitBreak",-3) GuiSetState(@SW_SHOW) While NOT $closeBreak Sleep(10) WEnd $closeBreak=false GuiDelete($Gui) EndFunc Func _exitBreak() $closeBreak=true EndFunc
Können Syntax(/Tipp) Fehler drin sein... Bin grad auf Linux unterwegs.
Kann man dann dementsprechend noch um Buttons, Icons,... Erweitern.MfG Kanashius
-
AutoIt
Alles anzeigen#include <File.au3> local $ar[0] _fileReadToArray("datei.txt",$ar) for $i=0 to ubound($ar)-1 step 1 if $ar[$i]="" then msgbox(48,"",$i) ;bzw. $i+1, da es bei 0 losgeht else ;$ar[$i] in gui packen endif next
machs doch einfach so.
Ansonsten: FileOpen und dann damit filereadline wiederholt aufrufen. -
GUISetOnEvent($Button1, "OkButton")
ist falsch. Für Controls musst du GUICtrlSetOnEvent($Button1, "OkButton") benutzen.
(siehst du auch an den Parametern) -
BlockInput(1) vor, bzw mit 0 nach dem send dürfte helfen. wenn _ispressed() mit shift stimmt kannst du dann auch shift wieder rausnehmen (so wie jede andere taste).
Damit der Batezen nicht x mal kopiert werden muss, würd ich dir ne funktion empfehlen -
Weil chess dich hier mit RegEx erschlägt geb ich dir das mal mit Splitten, dann kannst du es auch einfacher selbst probieren^^
AutoIt
Alles anzeigen#include <array.au3>;nur für arraydisplay ;$sText = WinGetText("[active]", "") $sText="..."&@crlf&"&Versenden"&@crlf&"abc"&@crlf&"def"&@crlf&"..."&@crlf&"&Parameter"&@crlf&"ghi"&@crlf&"..."&@crlf&"&Adresse"&@crlf&"713018"&@crlf&"183422"&@crlf&"..." $sSearch = GetNumber($sText,"&Adresse",9) if $sSearch<>"Error" then;trat kein Fehler auf, kommt das ganze ins Notepad ClipPut($sSearch) run("notepad.exe") sleep(2000) send("{CTRLDOWN}v{CTRLUP}") endif Func GetNumber($sText,$search,$next);Text übergeben, Suchbegriff übergeben, Anzahl Zeilen darunter übergeben $ar=StringSplit($sText,@crlf,1+2);Hier wird der String an Zelenumbrüchen aufgeteilt. _ArrayDisplay($ar);nur zum angucken für dich, kannst die zeile rausnehmen, ebenso wie den include oben $index=-1 for $i=0 to UBound($ar)-1 step 1;Hier guckt man mit Ubound($ar), wie viele Einträge das Array hat und geht diese alle durch (0 und ubound()-1, da der index bei 0 anfängt) if StringInStr($ar[$i],$search) then;wenn der gesuchte string in der zeile enthalten ist, wollen wir uns diese merken $index=$i ExitLoop;damit wir den rest des arrays nicht mehr durchsuchen müssen, springen wir hier einfach aus der for-schleife heraus endif next if $index=-1 then;hier gucken wir, ob der index gesetzt wurde, also der gesuchte text gefunden wurde, sonst gibts ne fehlermeldung. MsgBox(16,"Error",$search&" not found!") else ;hier prüfen wir nochmal, ob der index auch erreichbar ist, falls nach &Adresse beispielsweise kein text mehr kommt if $index+$next>UBound($ar)-1 then MsgBox(16,"Error","Index: "&$index+$next&" not found!") else return $ar[$index+$next];ansonsten geben wir den string an dem jeweiligen index zurück. endif endif ;trat ein Fehler auf, geben wir Error zurück return "Error" EndFunc
Falls du was nicht verstehst, einmal ausführen und dir das Array einmal ansehen. Sonst gerne noch Fragen.
Das RegEx, was Chesstiger benutzt ist meiner Meinung nach für so eine simple Aufgabe eigentlich nicht nötig^^, aber wenn mans kann ist gutMfG Kanashius
-
So im allgemeinen: Meistens schreibt man die Funktionen nach ganz unten, da die ja überall aufgerufen werden können, ist dann etwas übersichtlicher
Demnach dann so:AutoIt
Alles anzeigen$sText = WinGetText("Mein Fenster", "") $sSearch = GetNumber($sText) ClipPut($sSearch) run("notepad.exe") sleep(2000) send("{CTRLDOWN}v{CTRLUP}") Func GetNumber($sText) Return StringRegExp($sText, "(?m)^\Q&Adresse\E\s*(.+)$", 3)[0] EndFunc
Bei dem kleinen Programm hier aber eher nicht von Bedeutung
-
Naja, es gibt keine SciTe-Datei, wenn dann ist es eine AutoIt-Datei (.au3).
Hast du diese denn Kompiliert, oder einfach umbenannt? Wenn ja, mit welchen Einstellungen hast du es kompiliert,... Ein paar mehr Infos wäre gut^^