Ja, einfach ALT und den >acceskey< mit ControlSend() ans Fenster schicken ...
Gruß
Ja, einfach ALT und den >acceskey< mit ControlSend() ans Fenster schicken ...
Gruß
Hast Du das Programm bei dir installiert ?
Falls ja, dann sieh doch mal in der Registry nach mit welchem Befehl der Doppelklick auf eine *.tur geöffnet wird ...
HKEY_CLASSES_ROOT\.tur
Dort findest Du einen Eintrag (Perceived Type) was für eine Dateityp es ist, z.B. CAD File oder so etwas.
Dann suchst Du nach
HKEY_CLASSES_ROOT\CAD File\shell\open
und solltest dann den Befehl zum öffnen einer *.tur Datei finden. ![]()
Gruß
Na dann eben so ... ![]()
;
#include <IE.au3>
Opt("WinTitleMatchMode", 2)
$title = "FreeMail von WEB.DE - Windows Internet Explorer"
$hWndIE = WinGetHandle($title)
MsgBox(266304, Default, 'Fensterhandle: ' & $hWndIE)
WinActivate($hWndIE)
Sleep(1000)
$oIE = _IEAttach ($hWndIE, "HWND")
ControlSend($hWndIE, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "!w")
;
<td class="a"><input class="a" type="submit"
name="rv_do_fwdmsg"
value="Weiterleiten" accesskey="w" /></td>
Gruß
Mit anderen Worten 'a.exe' ist dein Script ???
Wenn ja, dann musst Du natürlich eine Parameterabfrage einbauen und diese dann handlen ... ![]()
Gruß
Naja, Du könntest dir schon ein Template-Script fertig machen, dann brauchst Du es nur anpassen.
Und die paar Zeilen wirst Du schon hinkriegen, habe auch so mit AutoIt angefangen ... ![]()
Gruß
Bevor Du die Registry anderer Leute hackst, probiere es doch einmal so:
[autoit]$file = @MyDocumentsDir & '\xyz.tur'
Run($Dir & '\a.exe "' & $file & '"')
Wenn dein Script nur einmalig oder selten auf fremden Rechnern läuft, dann ist es nicht ratsam in die Registry zu schreiben.
Gruß
Greenhorn
@Crazy-A: Wenn du auf die 1Liveseite gehst,bemerkst du,dass man mit einem Enter nichtmals Ansatzweise zum Ziel kommst !
Außerdem sollte es am liebsten kein eigenes Skript sein,sondern ein Knopf in einem großes Skript.
Und wenn man dann "öffentlich" den Internet Explorer öffnet und die Maus bewegt,trifft das mitncihten den Geschmack des Benutzers.
Aber danke für den Versuch,geh doch mal auf die Website !
Was für eine Antwort hast Du denn auf die Frage erwartet ???
Mit der Ie.au3,also dann in einem Pixel die Seite darstellen?
Gruß
Greenhorn
Hi,
im Grunde ist es schon genau richtig was Du machst ...
Gegen deine Tippfaulheit habe ich leider keine Medizin, aber Du kannst dir hier ein paar Beispiele ansehen:
http://www.windows-unattended.de/forum/index.php?s=1d68d7f57b632798c37da49c167be562&showforum=67
http://www.autoit.de/index.php?page=Board&boardID=15
Gruß
Greenhorn
Habe mal den Pfad korrigiert ...
[autoit]#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$frm = GUICreate("test", 800, 600)
$n = GUICtrlCreatePic(@Systemdir & "\oobe\images\wpaback.jpg", 0, 0, 800, 600, $GUI_DISABLE)
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Gruß
Greenhorn
Hmm, habe die IE.au3 noch nie genutzt, aber laut Bsp. vllt so:
[autoit]Opt("WinTitleMatchMode", 2)
$title = "FreeMail von WEB.DE"
WinActivate($title)
Sleep(1000)
$oIE = _IEAttach ($title, "WindowTitle")
$oSubmit = _IEGetObjByName ($oIE, "rv_do_fwdmsg")
_IEAction ($oSubmit, "click")
_IELoadWait ($oIE)
Gruß
Greenhorn
Ich habe auch einen Dual Core und habe diesbezüglich keine Probleme.
Haben die Prozesse/Fenstertitel den gleichen Namen (z.B. setup.exe) ?
Kannst Du ein Beispiel posten ?
So lässt sich nicht viel dazu sagen ...
Gruß
Greenhorn
Meine kaputte Bandscheibe braucht 'ne kleine Pause, mein Bester.
Bin in ca. 3o Min. zurück und wie gesagt, behalte die Prozessorlast im Auge ![]()
Gruß
Es kommt doch eine Rückgabe, aber anscheinend enthält der Pfad keine Dateien nach denen Du suchst ...
Sehe gerade Du benutzt anscheinend noch die alte AutoIt v3.2.10.0, magst nicht upgraden, oder ... ?
Gruß
#include <File.au3>
_FileWriteFromArray($File, $a_Array)
oder
$file = FileOpen('C:\Text.txt', 2)
For $i = 1 To $aTxtFiles[0]
FileWriteLine($file, $aTxtFiles[$i]
Next
FileClose($file)
EDIT:
Nein, es hängt sich nicht auf sondern dauert dann halt seine Zeit ![]()
Und achte bitte auf die Prozessorlast ...
Gruß
Hierbei nicht ???
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]; WINDOWS = test; system32 = teste ...
$sPath = 'C:\WINDOWS\system32'
$aTxtFiles = _GetFileList($sPath,'*.dll')
[/autoit] [autoit][/autoit] [autoit]_ArrayDisplay($aTxtFiles)
Exit
;********************************************************************************
; AutoIt Version: 3.0
; Language: English
; Platform: Win9x/NT/XP
; Author: jos van der Zande
;
; Find files in directory and subdirectories and return it in an Array, all coded in Autoit3
;
; _GetFileList($DIR, $FILEMASK, 1) ; _GetFileList($DIR, $FILEMASK [, Flag]) Flag GetFile(Default) = 0 , GetDirOnly = 1
;********************************************************************************
;Recursive search for filemask
;********************************************************************************
Func _GetFileList($T_DIR,$T_MASK,$DIR_ONLY=0)
Dim $N_DIRNAMES[200000] ; max number of directories that can be scanned
Local $N_DIRCOUNT = 0
Local $N_FILE
Local $N_SEARCH
Local $N_TFILE
Local $N_OFILE
Local $T_FILENAMES
Local $T_FILECOUNT
Local $T_DIRCOUNT = 1
Local $FILEMASK
; check Filemask \ for empty File-Array by GetDirOnly
If $FILEMASK = "n" Then $FILEMASK = "*.no"
; remove the end \ If specified
If StringRight($T_DIR,1) = "\" Then $T_DIR = StringTrimRight($T_DIR,1)
$N_DIRNAMES[$T_DIRCOUNT] = $T_DIR
; Exit if base dir doesn't exists
If Not FileExists($T_DIR) Then Return 0
; keep on looping until all directories are scanned
While $T_DIRCOUNT > $N_DIRCOUNT
$N_DIRCOUNT = $N_DIRCOUNT + 1
; find all subdirs in this directory and save them in a array
$N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\*.*")
While 1
$N_FILE = FileFindNextFile($N_SEARCH)
If @error Then ExitLoop
; skip these references
If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
$N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
; if Directory than add to the list of directories to be processed
If StringInStr(FileGetAttrib( $N_TFILE ),"D") > 0 Then
$T_DIRCOUNT = $T_DIRCOUNT + 1
$N_DIRNAMES[$T_DIRCOUNT] = $N_TFILE
EndIf
Wend
FileClose($N_SEARCH) ; find all Files that mtach the MASK
$N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\" & $T_MASK )
If $N_SEARCH = -1 Then ContinueLoop
While 1
$N_FILE = FileFindNextFile($N_SEARCH)
If @error Then ExitLoop
; skip these references
If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
$N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
; if Directory than add to the list of directories to be processed
If StringInStr(FileGetAttrib( $N_TFILE ),"D") = 0 Then
$T_FILENAMES = $T_FILENAMES & $N_TFILE & @CR
$T_FILECOUNT = $T_FILECOUNT + 1
;MsgBox(0,'filecount ' & $T_FILECOUNT ,$N_TFILE)
EndIf
Wend
FileClose($N_SEARCH)
Wend
If $DIR_ONLY = 0 Then
$T_FILENAMES = StringTrimRight($T_FILENAMES,1)
$N_OFILE = StringSplit($T_FILENAMES,@CR)
Return( $N_OFILE )
Else
ReDim $N_DIRNAMES[$N_DIRCOUNT+1]
$N_DIRNAMES[0] = $N_DIRCOUNT
Return $N_DIRNAMES
EndIf
EndFunc ;==>_GetFileList
EDIT:
Sorry, zuviel mitkopiert ..., vllt 'n büschen früh/spät für mich ![]()
Du kannst die Funktion natürlich auch in dein Script kopieren soviel ist es ja nicht ![]()
Zum prüfen:
#include <Array.au3>
_ArrayDisplay($array)
EDIT:
Hast Du schon einen Prototypen für dein Script, dann poste es doch bitte mal ?!
Gruß
Dann ist es besser direkt mit FileFindFirstFile und FileFindNextFile zu arbeiten ..., irgendwo hatte ich da glaube ich 'ne UDF, mom ...
[autoit]; WINDOWS = test; system32 = teste ...
$sPath = 'C:\WINDOWS\system32'
$aTxtFiles = _GetFileList($sPath,'*.dll')
[/autoit][autoit][/autoit][autoit][/autoit];********************************************************************************
; AutoIt Version: 3.0
; Language: English
; Platform: Win9x/NT/XP
; Author: jos van der Zande
;
; Find files in directory and subdirectories and return it in an Array, all coded in Autoit3
;
; _GetFileList($DIR, $FILEMASK, 1) ; _GetFileList($DIR, $FILEMASK [, Flag]) Flag GetFile(Default) = 0 , GetDirOnly = 1
;********************************************************************************
;Recursive search for filemask
;********************************************************************************
Func _GetFileList($T_DIR,$T_MASK,$DIR_ONLY=0)
Dim $N_DIRNAMES[200000] ; max number of directories that can be scanned
Local $N_DIRCOUNT = 0
Local $N_FILE
Local $N_SEARCH
Local $N_TFILE
Local $N_OFILE
Local $T_FILENAMES
Local $T_FILECOUNT
Local $T_DIRCOUNT = 1
Local $FILEMASK
; check Filemask \ for empty File-Array by GetDirOnly
If $FILEMASK = "n" Then $FILEMASK = "*.no"
; remove the end \ If specified
If StringRight($T_DIR,1) = "\" Then $T_DIR = StringTrimRight($T_DIR,1)
$N_DIRNAMES[$T_DIRCOUNT] = $T_DIR
; Exit if base dir doesn't exists
If Not FileExists($T_DIR) Then Return 0
; keep on looping until all directories are scanned
While $T_DIRCOUNT > $N_DIRCOUNT
$N_DIRCOUNT = $N_DIRCOUNT + 1
; find all subdirs in this directory and save them in a array
$N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\*.*")
While 1
$N_FILE = FileFindNextFile($N_SEARCH)
If @error Then ExitLoop
; skip these references
If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
$N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
; if Directory than add to the list of directories to be processed
If StringInStr(FileGetAttrib( $N_TFILE ),"D") > 0 Then
$T_DIRCOUNT = $T_DIRCOUNT + 1
$N_DIRNAMES[$T_DIRCOUNT] = $N_TFILE
EndIf
Wend
FileClose($N_SEARCH) ; find all Files that mtach the MASK
$N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\" & $T_MASK )
If $N_SEARCH = -1 Then ContinueLoop
While 1
$N_FILE = FileFindNextFile($N_SEARCH)
If @error Then ExitLoop
; skip these references
If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
$N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
; if Directory than add to the list of directories to be processed
If StringInStr(FileGetAttrib( $N_TFILE ),"D") = 0 Then
$T_FILENAMES = $T_FILENAMES & $N_TFILE & @CR
$T_FILECOUNT = $T_FILECOUNT + 1
;MsgBox(0,'filecount ' & $T_FILECOUNT ,$N_TFILE)
EndIf
Wend
FileClose($N_SEARCH)
Wend
If $DIR_ONLY = 0 Then
$T_FILENAMES = StringTrimRight($T_FILENAMES,1)
$N_OFILE = StringSplit($T_FILENAMES,@CR)
Return( $N_OFILE )
Else
ReDim $N_DIRNAMES[$N_DIRCOUNT+1]
$N_DIRNAMES[0] = $N_DIRCOUNT
Return $N_DIRNAMES
EndIf
EndFunc ;==>_GetFileList
Gruß
In den UDFs unter File Management ... ![]()
#include <File.au3>
[/autoit][autoit][/autoit][autoit]; WINDOWS = test; system32 = teste ...
$sPath = 'C:\WINDOWS\system32'
$aFiles = _FileListToArray($sPath, '*.txt', 1) ; 1 = nur Dateien
; rest code ...
Gruß
Wechseln die Namen der Ordner 'test' und 'teste' oder sind die Ordnernamen konstant ... ?
Hast Du dir schon _FileListToArray angesehen ?
Gruß
Greenhorn
Ich soll für jemanden das Programm schreiben, ich weiß selbst nicht genau was er damit anfangen möchte.
Soweit ich weiß sind aber die keystrokes die AutoIt benutzt unterschiedlich gegenüber der manuellen Eingabe und
die Bildschirmtastatur soll diese wohl exakt simulieren (Soweit ich weiß soll AutoIt keybd_event benutzen welches
wohl veraltert bzw nicht umfangreich genug ist.
Umfangreich hin, veraltet her ..., wenn es funktioniert ist es doch schei*egal !?
keybd_event wird aus kompatibilitätsgründen zu Win98 usw. benutzt.
Gruß
Greenhorn
p.s. Wenn Du für andere Scripte schreibst, dann solltest Du dich lieber informieren wozu es dienen soll, falls es nicht aus dem Quellcode hervorgeht.