Du hast ja überhaupt kein Return in einer von diesen Funktionen. Also bei welcher Funktion liegt dein Problem?
Gruss Shadowigor
Du hast ja überhaupt kein Return in einer von diesen Funktionen. Also bei welcher Funktion liegt dein Problem?
Gruss Shadowigor
Zu Nr. 4: Die Bewegung von 1 ist sicher grösser als jene von 2. Die Kraft ist meiner Meinung nach gleich gross. Da bin ich mir aber nicht ganz sicher.
Zu Nr. 1: Wenn ich das richtig sehe wirfst du dort z.B. einen Stein in ein Rohr und willst wissen wo er hinfliegt oder? Dann würde er gerade hinausfliegen (Der Pfeil in der mitte). (Siehe Zentripetalkraft)
Gruss Shadowigor
z.B. so
While 1
If Not ProcessExists($PID) Then
MsgBox(0, "ende", "ende")
Exit
EndIf
If WinActive("[CLASS:TFrmDBValidatePassword]", "") Then
Send("{ESC}")
Send("{ESC}")
MsgBox(0, "jjjj", "jjjj")
EndIf
WEnd
Gruss Shadowigor
Ich denke es wird schwierig einem Prozess eindeutig ein Fenster zuzuordnen, denn 1. Besitzt nicht jeder Prozess ein Fenster und 2. Kann ein Prozess auch mehr als ein Fenster besitzen.
EDIT: hellboy3 Er will ja von der PID zum Fenstertitel, nicht umgekehrt
Gruss Shadowigor
Also
1. Run ist nur für .exe Dateien und führt diese aus. ShellExecute ist für alle Dateien und schaut erst nach mit welchem Programm es die Datei öffnen soll. Ich empfele immer ShellExecute zu verwenden.
2. Wenn du die Prozess ID willst musst du aber Run benutzen, da dir diese Funktion die Prozess ID zurückgibt, anders als ShellExecute.
3. Eine API ist im Grunde genommen nicht anderes als Funktionen welche dir ein System zur verfügung stellt. Bei der Windows-API z.B. sind das alle Funktionen welche du benutzen kannst um mit dem Betriebssystem zu interagieren. (Und das sind eigentlich so gut wie alle Funktionen, denn ohne Betriebssystem läuft ja nichts)
Ich hoffe das war verständlich genug.
Gruss Shadowigor
Ich verstehe deine Frage nicht ganz. "name: " ist ja immer klein geschrieben. Er achtet nur bei deinem Such-String auf die Gross-/Kleinschreibung, nicht bei dem dazwischen.
Gruss Shadowigor
Funktioniert meine UDF nicht? Würde mich erstaunen, bis jetzt hats noch immer geklappt.
Hab ich auch schon mal geschrieben Hier
#include <Array.au3>
#include <File.au3>
#cs
===========================================================================================================================================
_GetFiles
---------
Version: 1.0
[/autoit] [autoit][/autoit] [autoit]Autor: Shadowigor
[/autoit] [autoit][/autoit] [autoit]Funktion: Gibt die Dateistruktur eines Pfades an (mit Filter)
[/autoit] [autoit][/autoit] [autoit]Parameter: $sPathFull Der zu durchsuchende Pfad (z.B C:\Users\Benutzer\*.* oder C:\Users\Benutzer\*.jpg)
$fFlag 0 > Wird in Files.txt geschrieben
1 > Gibt es als Array zurück
2 > Gibt es als String zurück
Bemerkung: Setzt @error und gibt "Nothing Found!" zurück (bzw. schreibt es in die Datei) wenn nichts gefunden wurde
Gezielte Dateisuche wird noch nicht unterstützt.
===========================================================================================================================================
#ce
Func _GetFiles($sPathFull, $fFlag = 0)
[/autoit] [autoit][/autoit] [autoit]Local $aSubdirTmp[1], $aSubdir[1], $iLengh, $sPath, $sFile, $aFileList[1], $i, $sFileList, $sSubPath, $aFiles[1]
[/autoit] [autoit][/autoit] [autoit]$iLengh = StringInStr($sPathFull, "\", 0, -1)
$sPath = StringLeft($sPathFull, $iLengh)
$sFile = StringTrimLeft($sPathFull, $iLengh + 1)
$iLengh = StringLen($sFile)
If Not FileExists($sPath) Then
If $fFlag = 0 Then
$hFileWrite = FileOpen(@ScriptDir & "\Files.txt", 2)
FileWrite($hFileWrite, "Nothing Found!")
FileClose($hFileWrite)
Return SetError(1)
EndIf
SetError(1)
Return "Nothing Found!"
EndIf
$aFileList = _FileListToArray($sPath)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $aFileList[0]
If StringInStr(FileGetAttrib($sPath & $aFileList[$i]), "D") <> 0 Then
_ArrayAdd($aSubdirTmp, $sPath & $aFileList[$i])
_ArrayAdd($aFiles, $sPath & $aFileList[$i])
ElseIf ($sFile = ".*") Or (StringRight($aFileList[$i], $iLengh) = $sFile) Then
_ArrayAdd($aFiles, $sPath & $aFileList[$i])
EndIf
Next
While UBound($aSubdirTmp) > 1
$sSubPath = $aSubdirTmp[UBound($aSubdirTmp) - 1]
$aFileList = _FileListToArray(_ArrayPop($aSubdirTmp))
If IsArray($aFileList) Then
For $i = 1 To $aFileList[0]
If StringInStr(FileGetAttrib($sSubPath & "\" & $aFileList[$i]), "D") <> 0 Then
_ArrayInsert($aSubdirTmp, 1, $sSubPath & "\" & $aFileList[$i])
If $sFile = ".*" Then _ArrayInsert($aFiles, 1, $sSubPath & "\" & $aFileList[$i])
ElseIf ($sFile = ".*") Or (StringRight($aFileList[$i], $iLengh) = $sFile) Then
_ArrayInsert($aFiles, 1, $sSubPath & "\" & $aFileList[$i])
EndIf
Next
EndIf
WEnd
If $fFlag = 1 Then Return $aFiles
$sFileList = _ArrayToString($aFiles, @CRLF)
If $fFlag = 2 Then Return $sFileList
$hFileWrite = FileOpen(@ScriptDir & "\Files.txt", 2)
FileWrite($hFileWrite, $sFileList)
FileClose($hFileWrite)
EndFunc ;==>_GetFiles
[/autoit]Gruss Shadowigor
_ArrayAdd ist nur für einzelne Werte. Du nimmst dafür wohl am besten _ArrayConcatenate.
Gruss Shadowigor
Ich kann jetzt so nicht direkt sagen an was dass es liegt, aber versuch doch mal bei FileOpen den kompletten Pfad anzugeben. Sonst sollte es nach mir gehen.
Gruss Shadowigor
Zur ersten Frage:
Zitat aus der Hilfe:
Zitat"Wenn eine 3 Zeichen lange Endung verwendet wird, passt jede mit diesen 3 Zeichen beginnende Endung, z.B. passt "test.log_1" bei "*.log". (in der Dokumentation von Microsoft auch nicht beschrieben)."
Daran lässt sich wohl nichts ändern.
Zur zweiten Frage:
Wenn du das so machst, prüft er ob das Resultat von FileFindNextFile gleich ist wie $file. Er führt nicht eine Zuweisung durch. Deshalb ist es nicht möglich innerhalb von z.B. While Schleifen oder If Abfragen Zuweisungen durchzuführen.
Gruss Shadowigor
Es gibt nicht für jeden Buchstaben einen Code. Es gibt nur für jede Taste auf deiner Tastatur einen Code. Und du hast ja wohl keine separate "?"-Taste.
Gruss Shadowigor
Ahh jetzt weis ich was du meinst. Da wirds aber schwierig. Du musst wohl mit ControlClick etc. arbeiten oder sonst weis gerade keinen Weg. Soviel ich weis werden solche 'Controls' wie du sie beschreibst von AutoIt nicht unterstützt.
AspirinJunkie
Ich war mir ja auch nicht sicher aber anscheinend funktioniert es ja jetzt so. Das ist ja die Hauptsache.
@Death
Ja der verdacht ist gross. Aber mann muss ja nicht immer gleich das Schlimmste annehmen.
In den hier gezeigten Codeausschnitten wird ja nichts verbotenes gemacht. Er zeigt ja nur etwas an und es ist ja nur verboten etwas zu beeinflussen.
Ein Fenster als Control? Mit welchem Befehl hast du den das erstellt? Hab ich jetzt noch nie gesehen.
Also erstmal noch zu dem warum es mit meiner Variante funktioniert:
Du hast in deinem Pfad ein Leerzeichen. Windows teilt deinen Pfad bei jedem Leerzeichen auf (wie bei StringSplit). Der erste daraus resultierende String ist dann der Programmpfad und die anderen sind die Parameter (die, welche man in $CmdLine findet). Also denkt Windows bei deinem Beispiel, dass @ScriptDir & "\Siedler" dein Programmpfad ist. Diese exe existiert aber natürlich nicht. Das ganze kann umgangen werden wenn du den Pfad mit Anführungszeichen umgibst.
So und nun zu deinem Problem:
Du musst bei IniRead den kompletten Pfad beim Dateinamen eingeben. Dann sollte es gehen.
Gruss Shadowigor
Das liegt wahrscheinlich am Leerzeichen im Pfad. Versuchs mal mit dem:
[autoit]Run('"' & @ScriptDir & '\Siedler Online\Nebenprogramme\Anzeige.exe"')
[/autoit]
Gruss Shadowigor
FileMove Du solltest dir vielleicht mal die Hilfe anschauen. Da lernt man sehr viel