Ein Release würde sich lohnen :)
Hilft den Newbies :)
Hilft den Newbies :)
Nein eben nicht^^Quote:
meinste
@ScriptDir
@ScriptFullPath
@WorkingDir
@DesktopCommonDir
@DesktopDir
usw?
#include <Process.au3> ;// für _ProcessGetName
;// falls Explorer geöffnet ist wird Adresse zurückgegeben, andernfalls wird leerer Wert zurückgegeben und @error auf 1 gesetzt
Func _GetDirectory()
Local $WinHandle = WinGetHandle("") ;// ohne Parameter automatisch Handle des aktiven Fensters zurückgegeben ==> Ausgangswert für weiteres Überprüfen
Local $WinPID = WinGetProcess($WinHandle) ;// zugehörigen Prozess finden ==> Ausganswert für Prozess-Namen
Local $ProcName = _ProcessGetName($WinPID) ;//Prozess-Name (später nach explorer.exe überprüfen)
Local $WinText = WinGetText($WinHandle) ;// erste Zeile gibt Pfad an falls $ProcName==explorer.exe
Local $directory ;//Variable definieren zum späteren Speichern der Adresse
If $ProcName == "explorer.exe" Then
Local $CutFirstLine = StringSplit($WinText, @CRLF) ;// einzelne Zeilen von WinText splitten ==> Adresse steht in erster Zeile
If $CutFirstLine[0] > 0 Then ;// falls $CutFirstLine[1] existiert
$directory = StringTrimLeft($CutFirstLine[1], StringLen("Adresse: ")) ;// "Adresse: " vom String (erste Zeile) abschneiden
EndIf
MsgBox(0,"Directory",$directory) ;// erhaltene Adresse anzeigen
Else
SetError(1)
EndIf
Return $directory
EndFunc
Würde mit meinem Beispiel auch gehen , indem man die Adresse des aktiven Explorerfensters global speichert und auf Veränderung überprüft.Quote:
Also ich denke er meint wenn er vom Ordner X1 (z.B. C:\user\Desktop) auf Ordner X2 wechselt (z.B. C:\user\Desktop\Programme) und sein Programm startet, dann soll sein Programm X1 ausgeben.
Das geht nicht
If $address_new <> $address_previous Then MsgBox(0,"vorheriges Verzeichnis",$address_previous)
Genau das isses :) DankeQuote:
Hab es mir nochmal durchgelesen, und wenn ich dich richtig verstanden habe, passt das Beispiel:
Code:#include <Process.au3> ;// für _ProcessGetName ;// falls Explorer geöffnet ist wird Adresse zurückgegeben, andernfalls wird leerer Wert zurückgegeben und @error auf 1 gesetzt Func _GetDirectory() Local $WinHandle = WinGetHandle("") ;// ohne Parameter automatisch Handle des aktiven Fensters zurückgegeben ==> Ausgangswert für weiteres Überprüfen Local $WinPID = WinGetProcess($WinHandle) ;// zugehörigen Prozess finden ==> Ausganswert für Prozess-Namen Local $ProcName = _ProcessGetName($WinPID) ;//Prozess-Name (später nach explorer.exe überprüfen) Local $WinText = WinGetText($WinHandle) ;// erste Zeile gibt Pfad an falls $ProcName==explorer.exe Local $directory ;//Variable definieren zum späteren Speichern der Adresse If $ProcName == "explorer.exe" Then Local $CutFirstLine = StringSplit($WinText, @CRLF) ;// einzelne Zeilen von WinText splitten ==> Adresse steht in erster Zeile If $CutFirstLine[0] > 0 Then ;// falls $CutFirstLine[1] existiert $directory = StringTrimLeft($CutFirstLine[1], StringLen("Adresse: ")) ;// "Adresse: " vom String (erste Zeile) abschneiden EndIf MsgBox(0,"Directory",$directory) ;// erhaltene Adresse anzeigen Else SetError(1) EndIf Return $directory EndFunc
Würde mit meinem Beispiel auch gehen , indem man die Adresse des aktiven Explorerfensters global speichert und auf Veränderung überprüft.
Pseudocode:
Oder habe ich dich missverstanden?Code:If $address_new <> $address_previous Then MsgBox(0,"vorheriges Verzeichnis",$address_previous)
Ja , so ungefähr ^^Quote:
Hmm vielleicht kannst du da ja irgendwie was mit der Registry machen.
Dein Programm soll ja das selbe machen wie
Rechtsklick ->> Neu ->> Datei ??
MfG
#include <Array.au3>
#include <Process.au3>
Global $aProcess = ProcessList()
Global $apRAM[UBound($aProcess)-1][2]
For $i = 0 To UBound($aProcess)-1
$aRAM = ProcessGetStats($aProcess[$i][1])
$apRAM[1][1] = $aRAM
Next
_ArrayDisplay ($aRAM)
_ArrayDisplay ($apRAM)
#include <Array.au3>
#include <Process.au3>
Global $aProcess = ProcessList()
Global $apRAM[UBound($aProcess)-1][2]
For $i = 0 To UBound($aProcess)-1
$aRAM = ProcessGetStats($aProcess[$i][1])
$apRAM[1][1] = $aRAM[0] ;<=== [0] ergänzt
Next
_ArrayDisplay ($aRAM)
_ArrayDisplay ($apRAM)
$aRAM ist jedoch ein Array, was sich mit _ArrayDisplay ja sogar anzeigen lässt.Quote:
Subscript used with non-Array variable.:
$apRAM[1][1] = $aRAM[0]
$apRAM[1][1] = $aRAM^ ERROR
Oder mit local oder global. Dim benutze ich nie.Quote:
Arrays werden mit Dim definiert.
Sufu von epvp benutzen, Google benutzen,Quote:
Wäre jemand so nett und kann mir ein ausführliches WinHttp Tutorial schicken? Möchte einen kleinen Packet Bot schreiben für nen total unbekanntes Browsergame ;)
Danke im Vorraus
$aRam ist aber nicht immer ein Array. Du gehst alle Prozesse durch, sobald bei einem der Rückgabewert von ProcessGetStats() kein Array ist, stürzt dein Programm ab.Quote:
Hallo,
habe folgenden Code:
$aRAM wird korrekt angezeigt.PHP Code:#include <Array.au3>
#include <Process.au3>
Global $aProcess = ProcessList()
Global $apRAM[UBound($aProcess)-1][2]
For $i = 0 To UBound($aProcess)-1
$aRAM = ProcessGetStats($aProcess[$i][1])
$apRAM[1][1] = $aRAM
Next
_ArrayDisplay ($aRAM)
_ArrayDisplay ($apRAM)
In $apRAM wird jedoch logischerweise kein Wert eingetragen, da hinter $aRAM nichts steht.
Wenn ich jedoch diesen Code benutze:
bekomme ich den FehlerPHP Code:#include <Array.au3>
#include <Process.au3>
Global $aProcess = ProcessList()
Global $apRAM[UBound($aProcess)-1][2]
For $i = 0 To UBound($aProcess)-1
$aRAM = ProcessGetStats($aProcess[$i][1])
$apRAM[1][1] = $aRAM[0] ;<=== [0] ergänzt
Next
_ArrayDisplay ($aRAM)
_ArrayDisplay ($apRAM)
$aRAM ist jedoch ein Array, was sich mit _ArrayDisplay ja sogar anzeigen lässt.
Ich hoffe ihr könnt mir helfen :)
MfG ExChill
#include <Array.au3> Global $aProcess = ProcessList() Global $apRAM[$aProcess[0][0]][2] For $i = 1 To $aProcess[0][0] $apRAM[$i - 1][0] = $aProcess[$i][1] $aRAM = ProcessGetStats($aProcess[$i][1]) If IsArray($aRAM) Then $apRAM[$i - 1][1] = $aRAM[0] Else $apRAM[$i - 1][1] = 0 EndIf Next _ArrayDisplay($apRAM)