|
You last visited: Today at 21:28
Advertisement
Tratsch rund um Autoit / Autoit Talk | kleinere Fragen
Discussion on Tratsch rund um Autoit / Autoit Talk | kleinere Fragen within the AutoIt forum part of the Coders Den category.
10/29/2012, 01:54
|
#586
|
elite*gold: 464
Join Date: Dec 2010
Posts: 3,998
Received Thanks: 3,909
|
Ein Release würde sich lohnen 
Hilft den Newbies
|
|
|
10/29/2012, 11:34
|
#587
|
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,142
|
Ehrlich gesagt würde ich Anfängern davon abraten.
Dabei entsteht bloß Code, den sie nicht verstehen. Ist ähnlich wie mit den Koda GUIs.
Um eine Sprache zu lernen, sollte man lieber alles selbst schreiben.
|
|
|
10/29/2012, 13:00
|
#588
|
elite*gold: 224
Join Date: Dec 2010
Posts: 2,766
Received Thanks: 931
|
Quote:
Originally Posted by she was 8
meinste
@ScriptDir
@ScriptFullPath
@WorkingDir
@DesktopCommonDir
@DesktopDir
usw?
|
Nein eben nicht^^
Das Programm liegt an ort x und wird ausgeführt . Ich möchte das Verzeichnis in dem ich mich befunden habe , bevor ich das Programm gestartet habe herausfinden ( das Programm wird durch ein Makro meiner Tastatur gestartet)
|
|
|
10/29/2012, 13:05
|
#589
|
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,142
|
Was genau meinst du mit Ort?
In welchem Programm du bist, also aktives Fenster?
Oder bist du immer im Windows Explorer, und willst dort den Ordner rausfinden?
|
|
|
10/29/2012, 14:01
|
#590
|
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
|
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
|
|
|
10/29/2012, 14:13
|
#591
|
elite*gold: 224
Join Date: Dec 2010
Posts: 2,766
Received Thanks: 931
|
Ok , ich erkläre wohl besser was ich vorhabe damit es hier etwas klarer wird
Ich möchte mir ein Programm schreiben , welches mir eine Datei an dem Ort erstellt , an dem ich bin ( Desktop , C:\x\x\xxxxx) . Also das programm fragt meine Tastendrücke ab und soll dann , an dem Ort ( wie oben schon , irgendein Verzeichnis etc...) an dem ich mich befinde , anhand der Tastendrücke eine Datei für mich erstellen ( ich drücke a = .au3 wird erstellt , b = .bat wird erstellt)
Das Programm lasse ich dann durch ein Makro meiner g15 (gamer-tastatur mit zusätzlichen Tasten um sie mit Makros zu belegen . Ich drücke also nur die taste um das Programm zu starten , wechsle nicht das Verzeichnis ( Das einzige Problem ist dann , dass das Programm dann sozusagen "über" dem Verzeichnis steht)) starten. So weit so gut ... Ist auch alles nicht schwer , das einzige Problem das ich habe ist , dass ich nicht weiß wie ich den genauen Ort an dem ich mich gerade befinde ( Desktop , C:\xxxxxxxx\.....) herausfinden kann ...
( Das Programm soll mir halt dort wo ich mich gerade aufhalte meine Dateien erstellen)
Hoffe das bringt ein wenig klarheit^^
|
|
|
10/29/2012, 14:23
|
#592
|
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,142
|
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
Quote:
Originally Posted by Lawliet!
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
|
Würde mit meinem Beispiel auch gehen , indem man die Adresse des aktiven Explorerfensters global speichert und auf Veränderung überprüft.
Pseudocode:
Code:
If $address_new <> $address_previous Then MsgBox(0,"vorheriges Verzeichnis",$address_previous)
Oder habe ich dich missverstanden?
|
|
|
10/29/2012, 14:29
|
#593
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Hmm vielleicht kannst du da ja irgendwie was mit der Registry machen.
Dein Programm soll ja das selbe machen wie
Rechtsklick ->> Neu ->> Datei ??
MfG
|
|
|
10/29/2012, 14:31
|
#594
|
elite*gold: 224
Join Date: Dec 2010
Posts: 2,766
Received Thanks: 931
|
Quote:
Originally Posted by -STORM-
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:
Code:
If $address_new <> $address_previous Then MsgBox(0,"vorheriges Verzeichnis",$address_previous)
Oder habe ich dich missverstanden?
|
Genau das isses  Danke
Quote:
Originally Posted by Achat
Hmm vielleicht kannst du da ja irgendwie was mit der Registry machen.
Dein Programm soll ja das selbe machen wie
Rechtsklick ->> Neu ->> Datei ??
MfG
|
Ja , so ungefähr ^^
|
|
|
10/30/2012, 23:45
|
#595
|
elite*gold: 10
Join Date: Aug 2010
Posts: 2,814
Received Thanks: 466
|
Hallo,
habe folgenden Code:
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)
$aRAM wird korrekt angezeigt.
In $apRAM wird jedoch logischerweise kein Wert eingetragen, da hinter $aRAM nichts steht.
Wenn ich jedoch diesen Code benutze:
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[0] ;<=== [0] ergänzt
Next
_ArrayDisplay ($aRAM)
_ArrayDisplay ($apRAM)
bekomme ich den Fehler
Quote:
Subscript used with non-Array variable.:
$apRAM[1][1] = $aRAM[0]
$apRAM[1][1] = $aRAM^ ERROR
|
$aRAM ist jedoch ein Array, was sich mit _ArrayDisplay ja sogar anzeigen lässt.
Ich hoffe ihr könnt mir helfen
MfG ExChill
|
|
|
10/30/2012, 23:48
|
#596
|
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,142
|
Arrays werden mit Dim definiert.
|
|
|
10/30/2012, 23:53
|
#597
|
elite*gold: 10
Join Date: Sep 2012
Posts: 1,438
Received Thanks: 933
|
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
|
|
|
10/30/2012, 23:59
|
#598
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Quote:
Originally Posted by -STORM-
Arrays werden mit Dim definiert.
|
Oder mit local oder global. Dim benutze ich nie.
Quote:
Originally Posted by Requiable
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
|
Sufu von epvp benutzen, Google benutzen,
Es gibt keine ausführlichen Tutorials, alle Tutorials zusammen sind vielleicht ausführlich.
MfG
|
|
|
10/31/2012, 00:29
|
#599
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Quote:
Originally Posted by ExChill
Hallo,
habe folgenden Code:
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)
$aRAM wird korrekt angezeigt.
In $apRAM wird jedoch logischerweise kein Wert eingetragen, da hinter $aRAM nichts steht.
Wenn ich jedoch diesen Code benutze:
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[0] ;<=== [0] ergänzt
Next
_ArrayDisplay ($aRAM)
_ArrayDisplay ($apRAM)
bekomme ich den Fehler
$aRAM ist jedoch ein Array, was sich mit _ArrayDisplay ja sogar anzeigen lässt.
Ich hoffe ihr könnt mir helfen
MfG ExChill
|
$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.
Was kann man da machen? Auf Fehler überprüfen oder prüfen, ob es sich um ein Array handelt.
Abgesehen davon beinhaltet das erste Element von $aProcess keine ProzessID, sondern die Anzahl der gefundenen Prozesse. Du musst also auch bei 1 und nicht bei 0 beginnen. UBound() wird überhaupt nicht benötigt.
Hier mal ein Beispiel:
Code:
#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)
|
|
|
10/31/2012, 03:54
|
#600
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Wie kann ich herausfinden, ob das Maus-Rad nach oben oder unten bewegt wurde?
MfG
|
|
|
Similar Threads
|
[Sammelthread]Fragen zu Autoit wie man Hacks herstellt(Autoit) + Antworten
11/16/2011 - Metin2 - 0 Replies
Hallo Liebe Community,
Ich habe diesen Thread aufgemacht weil manche leute mit Autoit nicht mehr weiterkommen wie man Hack herstellt ,ich habe mit schon ein Multihack mit Autoit herstellt das war einfach .Da viele User nicht weiterkommen werden habe ich mich entschieden ein Thread aufzumachen mit Fragen und ich den dann Antworten kann und helfen kann!
------------------------------------------------- ---------------------------
Mein Multihack:...
|
All times are GMT +1. The time now is 21:29.
|
|