Ein Name ist keine PID. Prozesse können den gleichen Namen haben, die PID gibt es nur EINMAL und sie ist die Nummer des Prozesses. Beim start des Programms kannst du sie speichern (RUN("?.exe"))
oder du kannst ProcessList nutzen, um die Prozesse mit namen und id zu listen.
Beiträge von Kanashius
-
-
Ich seh da auf die schnelle 2 Möglichkeiten.
1. Variablen. Genau für sowas sind sie nützlich. Die setzt die Variable überall ein und musst sie dann nurnoch oben einmal ändern
2. Suchen & ersetzen. Da kannst du z.B. MouseClick (1234,341,1) suchen und mit MouseClick (12345,341,1) ersetzen (kannst auch auf alle ersetzen klicken, oder auf einmal, dann wird nur das aktuelle ersetzt und er springt zum nächsten) -
Ich schreib dir ne PN
Edit: Hab grad mal geguckt. Das Tool, das du benutzt ist kostenpflichtig->ich habs nicht. Da es keine Kommandozeile gibt (zumindest steht davon nichts in der Hilfe,...) wird das recht schwer.
-> du müsstest genaue infos geben, was wann genutzt wird, und welche ids, klassen,... das programm hat. (Mit AutoItInfo recht schnell möglich), sofern das Tool standartcontrols nutzt. -
Lottich:
letztendlich hat Andy einfach die Dateiendung DLL genommen... Es ist keine Bibliothek, sondern täuscht nur vor, eine zu sein.
Die zufälligen Bytes verstärken den eindrück noch. Wer rechnet denn auch damit, dass da die Infos nur mittendrin irgendwo stehen -
Vermutlich öffnest du irgendwo Infos, löscht diese aber nicht richtig. Daher der Zuwachs an speicher.
Ohne Glaskugel oder Quellcode kann man dir da leider nicht helfen. -
Wenn du infos auf einer Seite siehst sind diese IMMER in HTML. Php und Javascript bearbeiten nur das Html der Seite.
Das einzige, was du eventuell machen müsstest wäre ein _ieAction mit "javascript:funktion(param);" oder so. vermutlich nichtmal das, da das ganze über Form geregelt ist (Xhtml) -
Eventuell irgendwelche Whitespaces?
-
Im _MemIni_iniWrite() die for-variable in der zweiten schleife auf $l oder so ändern
Inder _MemIni_write hab ich nur nen fehler gefunden, wenn der Wert neu in die Kategorie muss. Dort könntest du, falls der Fehler mit der Änderung immernoch vorhanden ist mal debuggen
Mit meinem Funktionierts...Spoiler anzeigen
AutoIt
Alles anzeigenFunc _MemIni_iniWrite(ByRef $array,$cat,$key,$value) $index=_ArraySearch($array,$cat) if $index<>-1 then $array2=$array[$index][1] $index=_ArraySearch($array2,$key) if $index<>-1 then $array2[$index][1]=$value else ReDim $array2[UBound($array2)+1][2] $array2[UBound($array2)-1][0]=$key $array2[UBound($array2)-1][1]=$value endif $array[$index][1]=$array2 else ReDim $array[UBound($array)+1][2] $array[UBound($array)-1][0]=$cat local $array2[1][2] $array2[UBound($array2)-1][0]=$key $array2[UBound($array2)-1][1]=$value $array[UBound($array)-1][1]=$array2 endif EndFunc
Werds auch oben ändern.
-
Also bei mir funktionieren die Funktionen alle...
Eventuell stimmt da was nicht, schreib mir doch mal bitte ein beispiel (auch per PN, falls die sachen verschlüsselt sein müssten ;)), wie es bei dir nicht funktioniert. -
[General]
key1=value1
[other]
key2=value2-> bei dir ergibt _IniRead("s.o.","General", "key2",-1)
ergibt bei dir, wenn ich mich nicht irre value2, obwohl er nicht in der Kategorie vorhanden ist -
@Xorinator: Das mit den Tabs wird von der Seite hier leider zerstört... Was die Leerzeichen zwischen zahlen, etc. angeht: Ich mag die nicht. Ist nicht mein Style. Kannst ja bei dir Tidy nutzen, ich vermeide es leiber
-
Hab mal ne kleine Funktionssammlung mit Beispiel geschrieben. Die kannst du benutzen.
Es darf nur kein = vorkommen (außer bei der key->schlüssel zuweisung) und es darf kein schlüssel mit "[" beginnen und dessen value auf "]" enden.
(Könnte man aber bestimmt auch noch ausbügeln ;))AutoIt
Alles anzeigen#include <String.au3> #include <array.au3> $IniArray=_MemIni_readIni("[General]"&@crlf&"MainGui_X=-1"&@crlf&"MainGui_Y=0"&@crlf&"MainGui_Width=1920"&@crlf&"MainGui_Height=1090") _ArrayDisplay(_MemIni_getAllChilds($IniArray,"General")) msgbox(48,"",_MemIni_getKey($IniArray,"General","MainGui_Y")) _MemIni_iniWrite($IniArray,"General","MainGui_X","1920") _ArrayDisplay(_MemIni_getAllChilds($IniArray,"General")) msgbox(48,"",_MemIni_getKey($IniArray,"General","MainGui_X")) msgbox(48,"",_MemIni_getStringData($IniArray)) Func _MemIni_readIni($data) local $ar,$IniArray[0][2],$ar2 $ar=StringSplit($data,@crlf,1+2) for $i=0 to UBound($ar)-1 step 1 if $ar[$i]<>"" then if StringInStr($ar[$i],"[")=1 and StringInStr($ar[$i],"]",0,-1)=StringLen($ar[$i]) then ReDim $IniArray[UBound($IniArray)+1][2] $IniArray[UBound($IniArray)-1][0]=_StringBetween($ar[$i],"[","]")[0] else if $IniArray[UBound($IniArray)-1][1]<>"" then $IniArray[UBound($IniArray)-1][1]&="|#-#|" EndIf $IniArray[UBound($IniArray)-1][1]&=$ar[$i] endif endif next for $i=0 to UBound($IniArray)-1 step 1 $IniArray[$i][1]=StringSplit($IniArray[$i][1],"|#-#|",1+2) $ar=$IniArray[$i][1] local $ar3[UBound($ar)][2] for $l=0 to UBound($ar)-1 step 1 $ar2=StringSplit($ar[$l],"=",1+2) $ar3[$l][0]=$ar2[0] $ar3[$l][1]=$ar2[1] Next $IniArray[$i][1]=$ar3 Next return $IniArray EndFunc Func _MemIni_getAllChilds($array,$cat) $index=_ArraySearch($array,$cat) if $index<>-1 then return $array[$index][1] endif SetError(-1,0,-1) EndFunc Func _MemIni_getKey($array,$cat,$key) $index=_ArraySearch($array,$cat) if $index<>-1 then $array=$array[$index][1] $index=_ArraySearch($array,$key) if $index<>-1 then return $array[$index][1] endif endif SetError(-1,0,-1) EndFunc Func _MemIni_iniWrite(ByRef $array,$cat,$key,$value) $index=_ArraySearch($array,$cat) if $index<>-1 then $array2=$array[$index][1] $index=_ArraySearch($array2,$key) if $index<>-1 then $array2[$index][1]=$value else ReDim $array2[UBound($array2)+1][2] $array2[UBound($array2)-1][0]=$key $array2[UBound($array2)-1][1]=$value endif $array[$index][1]=$array2 else ReDim $array[UBound($array)+1][2] $array[UBound($array)-1][0]=$cat local $array2[1][2] $array2[UBound($array2)-1][0]=$key $array2[UBound($array2)-1][1]=$value $array[UBound($array)-1][1]=$array2 endif EndFunc Func _MemIni_getStringData($array) $string="" for $i=0 to UBound($array)-1 step 1 $string&="["&$array[$i][0]&"]"&@crlf $ar=$array[$i][1] for $l=0 to UBound($ar)-1 step 1 $string&=$ar[$l][0]&"=" $string&=$ar[$l][1]&@crlf next next return $string EndFunc
-
An sich richtig, nur ein kleiner Denkfehler. Wenn _isPressed losgelassen wird soll die maus losgelassen werden, nicht, solange gedrückt wird
[autoit]
So wäre es richtig:;...
[/autoit]
If _IsPressed("51", $hDLL) Then
; Wait until key is released.
MouseMove (1400,450, 0 )
Mousedown ("left")
While _IsPressed("51", $hDLL)
Sleep(10)
WEnd
MouseUp ("left")
ConsoleWrite("_IsPressed - Shift Key was released." & @CRLF)
;... -
Sieh dir mal _isPressed an... dürfte besser funktionieren als HotkeySet.
-
Naja... ob du jeden schleifendurchlauf _arraydelete nutzt, oder ob du einmal nach der schleife sortierst und dann redim nutzt macht eigentlich nen ziemlich großen unterschied^^.
Aber nen Index macht natürlich auch sinn -
Einmal das Consolewrite rausnehmen, aber vor allem:
Kein _ArrayDelete. Stattdessen einfach nen Wert wie -1 eintragen, der nie erreicht werden kann. Beim ArrayDelete wird im Hintergrund jedesmal ein neues Array erzeugt, mit den alten Daten beschrieben, und wieder zurückgegeben. Das dauert.
Wenn du -1 eingetragen hast: einfach nach der Größe sortieren und dann mit ReDim alle restlichen "abschneiden". Dabei wird dann nur 1x das Array neu erzeugt. Musst dann nur ne ausnahmeregel für -1 einbauen. -
1. Bitte in zukunft um deinen Quelltext ein [.autoit][./autoit] schreiben (ohne den Punkt), dann ist es schöner zu lesen
[autoit]
2. Du hast Funktionen definiert... Da sie nirgendwo aufgerufen werden sind sie im Prinzip nichts. Das Programm läuft einfach darüberhinweg. Damit dein Programm weiterläuft brauchst du eine Hauptschleife, die dafür sorgt, dass sich das Programm nicht beendet. Diese schreibt man normal vor den Beginn der Funktionen. Die sollte so aussehen:
[/autoit]
while sleep(10)
WEnd
Das Sleep(10) wartet 10 ms, das dient nur dazu, die CPU-Last zu verringern.
MouseMove und MouseClick, etc. gehört auch eher zum "unschönen" gebrauch. Damit die Mausdrücke nur an ein bestimmtes Fenster gehen wird normal ControlClick genutzt.
Desweiteren ist MouseClick ebenfalls eine Funktion. Funktionen bestehen immer aus dem Namen und den beiden Klammern. Gegebenenfalls auch aus Parametern. Dein MouseClick sollte also nicht funktionieren.
Einfach irgendwo "down" hinzuschreiben ist auch so nicht richtig. wenn du einen Kommentar schreiben willst solltest du das mit ; oder mehrzeilig zwischen #cs und #ce schreiben. -
Ganz wichtig: F1 in SciTe (Wenn du SciTe4AutoIt nutzt und die Datei gespeichert hast). Dann wird die AutoIt Hilfe angezeigt. Dort findest du zu (fast) jedem Befehl hilfe. Wenn du einen Befehl in SciTe anklickst und F1 drückst wird auch automatisch die Hilfe zu dem Befehl angezeigt. (Sonst einfach im Installationsordner die Hilfedatei "AutoIt.chm" öffnen.)
-
Also, bei machen Positionen erkennt man, dass du dich mal rasieren solltest, aber sonst ein toller Effekt
-
Herzlich Willkommen. Ich hoffe du wirst so begeistert von AutoIt sein, dass es nicht nur bei diesem einen Projekt bleibt
Kannst mich auch gerne anschreiben, falls du nicht weiter kommstSchön, dass du unsere Community bereichern willst
MfG Kanashius.