Ich komm mit der DLL wirklich nicht zurecht ... habe bisher noch nie mit DLLs gearbeitet ... finde keine Einstellungen, dass es mir die Daten anständig ausgibt!
Müsste doch aber gehen!?
Beiträge von Crys
-
-
Edit: Google ist dein Freund... http://www.autoitscript.com/forum/topic/96…l-mediainfodll/
Danke, aber das habe ich sicher nie bei Google erhalten ... das habe einfach nicht gesucht, bzw. wusste nicht dass ich das suchen sollte ... Google ist nur ein Freund, wenn man genau weiß, was man sucht
Seis drum ... dankeIch habe mal mit dem dort geposteten Skript zur DLL gespielt, ich bekomme die Informationen, die ich eigentlich will .. aber nicht in der Form, in der ich diese brauche!
Ich bekomme immer nur diesen Formatierten String raus ... und daraus die Daten zu gewinnen ist schwierig ... kannst du mir helfen, so dass ich entweder direkt einen benutzerdefinierten String ala csv erhalte oder besser noch direkt ein 2-Dim Array!? -
thx, aber wie mach ich das?
Ich finde da alles außer das auslesen der Codecs!
In den Konsolenbefehlen bin ich auch nicht allzu fit ... -
Ich möchte aus verschiedenen Videocontainern den verwendeten Codec, Filmlänge, Bildhöhe und -breite auslesen!
Bei avi-Dateien klappt das meistens, dank dieses Threads: video codec für avi auslesenIch möchte aber auch bei z.B. mkv-Dateien diese Daten auslesen!
Gibt es dafür auch eine Möglichkeit? -
Danke Oscar! Genau das habe ich gesucht!
-
Ich suche verzweifelt nach einer Liste oder einer Erklärung von Wildcard Befehlen, wie man sie z.B. hier verwendet: _FileListToArray
Ich möchte konkret alle csv und txt Dateien zulassen, wie geht das?
thx -
Jaja, erst eine noch genauerer Problembeschreibung wollen, dann bekommst du diese und schon lässt du nicht mehr von dir hören
Btw. mit der excel.au3 habe ich es auch schon getestet ... geht aber nicht!
1.) Alleine das einlesen der Zellen in das AutoIt-Array braucht schon ewig .. eine Tabelle mit 500 Zeilen braucht schon geschlagene 5min! Mit Hand oder meinem Copy&Paste Befehl brauche ich dafür 10sec!
2.) Und dann ließt die leeren Zellen auch mit ein, d.h. ich muss alle leeren Zellen aussortieren, das braucht noch mal 2min zum auswerten ...
3.) Dann muss ich noch das Array in ein Semikolon getrennten String umwandeln, dass ich das in mein Programm einfügen kann ... noch mal 1min ....
Ne, das mit dem Array lass ich sein ...Neue Frage:
Wie kann ich ganz einfach bestimmen, wie viele Zeilen und Spalten ein Tabellenblatt hat, also wie viele ausgefüllt sind? -
Bei mir läuft das Script.
Mit deinen angaben kann man nicht herrausfinden wo der Fehler liegt!
Ich glaube du siehst das Problem viel zu komplex!
Es funktioniert nur die Zeilen zwischen dem Kopieren (Strg+C klicken) und dem GetClip() nicht!
Sonst funktioniert alles einwandfrei und muss auch in keinster weise optimiert werden!
Weil es so zu 99% leichter ist die Daten zu verarbeiten.
Ok, dann schreib mir bitte eine Funktion, mit der ich aus dem Array wieder ein String bekomme, in der die einzelnen Variablen des Arrays per Tab bzw. Zeilenumbruch getrennt sind und alle Zeilen, die komplett leer seid, löscht!
Ich habe dazu schlicht weg keine Lust ...Gib doch einfach mal genauere Details was du wohinkopierst.
Am besten stellste die Excel (oder ne ähnliche Beispieldatei) zur Verfügung und erklärst mal was für ein "Geheim"-programm das ist wohin du es kopierst.
Wie soll man dir helfen wenn man sogut wie nichts weiß. Es gibt n paar Tausend Möglichkeiten wieso das nicht funktioniert...
Das ist kein 'Geheimprogramm'! In meinen Skript steht "WinActivate ("EasyFit")" und so heißt auch das Programm ... ist zum ersten von Verteilungsparametern aus Messreihen ... wenn du danach suchst, kannst du sogar ne Demo herunterladen.
Hier der Link zu einer Excel Datei, aus der ich Passagen in EasyFit importieren muss!
Ich muss aus jeder solchen Excel-Datei einfach aus dem 2ten Datenblatt ab dem Titel "height Z" bis zur letzten Zahl rechts unten alles in eine EasyFit-Tabelle kopieren um dort damit weiter zu arbeiten.Aber wie gesagt, es gibt eig. nur ein Problem mit dem kopieren des Zwischenablagen Inhalts in eine Variable!
-
@ Schnitzel:
Das 'nicht' in dem Kommentar ist ein Tippfehler ... hättest du es ausprobiert wüsstest du es!Wieso sollte ich die Zellen in ein Array kopieren?
Ich sehe darin überhaupt kein Nutzen, außer das es ungemein komplizierter wird die Daten in das andere Programm zu kopieren! -
Könnte ich ... ich sehe aber keinen Sinn darin!
Ich muss ja nur eine beliebige Zahl an Zeilen kopieren, mehr muss ich mit Excel nicht machen!
Wenn ich 200 Daten übertragen habe kann ich Heim gehen ... wenn ich mich jetzt mit der excel.au3 beschäftige braucht das sicher länger ... das kann ich am WE machen ...
Es geht ja nur das kopieren nicht ... was ich (nehm ich mal sehr stark an) sowieso nicht mit der excel.au3 machen kann!
Also würde das mir sehr wahrscheinlich nicht mal zu meinen Problem beitragen ... -
Ich muss von Excel in ein anders Programm Daten kopieren. Das Programm klappt so weit gut, nur kopiert ClipGet() nichts in die Variable $text ... und ich habe keine Ahung wieso!
Ich benutzte ClipGet() weil das per Strg+C kopierte von Excel leere Zeilen enthalten kann und diese (komischer/glücklicher weise) mit ClipGet() verschwinden!
[autoit];...
[/autoit][autoit][/autoit][autoit]
Send("^c") ; Inhalt in Zw.-Abl. kopieren
sleep($sleep)
Send("!{F4}") ; Excel schließen
sleep($sleep)
Send("{SPACE}") ; Inhalt aus Zw.-Abl. soll gespeichert werden
sleep($sleep); Kopieren
[/autoit]
$text = ''
$text = ClipGet() ; Inhalt aus Zw.-Abl. in String
sleep($sleep)
If @error then
MsgBox(0, $titel, "Fehler:"&@CRLF&@error)
exit
endif
MsgBox(0, $titel, $text)
;$text = StringReplace($text, " ", "-") ; ...
ClipPut($text) ; löscht (komischer weiße) die leeren Zeilen
sleep($sleep)
If @error then
MsgBox(0, $titel, "Fehler:"&@CRLF&@error)
exit
endif
If $text = "" then
MsgBox(0, $titel, "Fehler:"&@CRLF&"Kein Text!")
exit
endif
;...Hier mal das komplette Skript:
Spoiler anzeigen
[autoit]#Include <File.au3>
[/autoit] [autoit][/autoit] [autoit]
;#include <Array.au3>
;#include <GUIConstants.au3>$sleep = 1000
[/autoit] [autoit][/autoit] [autoit]
$sleep_test = 0$dheight = @DesktopHeight ; Bildschirmhöhe
[/autoit] [autoit][/autoit] [autoit]
$dwidth = @DesktopWidth ; Bildschirmbreite
$mmove = 0 ; Mausgeschwindigkeit
$titel = "EasyFit-1-import"
$pfad = @ScriptDir; ### Benutzer Eingaben
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, $titel, "MS Excel muss geschlossen sein!"&@CRLF&"EasyFit muss offen sein!"&@CRLF&"In der geöffnetten Datei werden dann die Daten aus Excel importiert!")
$pfad = FileSelectFolder("Ordner wählen, in dem die Excel-Dateien liegen:", "", 5, $pfad)
$dateien = _FileListToArray($pfad, "*.xls", 1) ; Pfad untersuchen
If @Error=4 Then
MsgBox (0,"","Keine Dateien gefunden.")
Exit
EndIf
;_ArrayDisplay($dateien, "$FileList")$zeit = Inputbox($titel, "Wieviele Sekunden braucht Excel max. zum starten?", "10")
[/autoit] [autoit][/autoit] [autoit]
$msg = MsgBox(1, $titel, "Ab jetzt werden alle Benutzereingaben blockiert!", 10)
if $msg <> 1 then
Exit
endif
if @Compiled then
BlockInput(1)
endif; ### Befehle ausführen
[/autoit] [autoit][/autoit] [autoit]
for $n=1 to $dateien[0]
; Excel-Datei öffnen
ShellExecute('excel', '/e "'&$pfad&'\'&$dateien[$n]&'"')
sleep($zeit*1000);WinActivate ("Microsoft Excel")
[/autoit] [autoit][/autoit] [autoit]
sleep($sleep_test)
ControlClick("Microsoft Excel", "", "[CLASS:EXCEL7; INSTANCE:2]") ; Hauptfenster auswählen
sleep($sleep_test)
Send("{CTRLDOWN}") ; Strg drücken
sleep($sleep)
for $i=1 to 4 ; sicher in ganz linken Blatt sein
Send("{PGUP}")
sleep($sleep_test)
next
Send("{PGDN}") ; 2tes Blatt
sleep($sleep)
Send("{HOME}") ; Oben-Links auswählen
sleep($sleep_test)
Send("{CTRLUP}") ; Strg loslassen
sleep($sleep)
for $i=1 to 3 ; zum Titel
Send("{DOWN}")
sleep($sleep_test)
next
for $i=1 to 22 ; zu 'height Z'
Send("{RIGHT}")
sleep($sleep_test)
next
Send("{CTRLDOWN}") ; Strg drücken
sleep($sleep_test)
Send("{SHIFTDOWN}") ; Umsch. drücken
sleep($sleep_test)
Send("{DOWN}") ; nach ganz unten
sleep($sleep_test)
Send("{RIGHT}") ; nach ganz rechts
sleep($sleep_test)
Send("{SHIFTUP}") ; Umsch. loslassen
sleep($sleep_test)
Send("{CTRLUP}") ; Strg loslassen
sleep($sleep)
Send("^c") ; Inhalt in Zw.-Abl. kopieren
sleep($sleep)
Send("!{F4}") ; Excel schließen
sleep($sleep)
Send("{SPACE}") ; Inhalt aus Zw.-Abl. soll gespeichert werden
sleep($sleep); Kopieren
[/autoit] [autoit][/autoit] [autoit]
$text = ''
$text = ClipGet() ; Inhalt aus Zw.-Abl. in String
sleep($sleep)
If @error then
MsgBox(0, $titel, "Fehler:"&@CRLF&@error)
exit
endif
MsgBox(0, $titel, $text)
;$text = StringReplace($text, " ", "-") ; ...
ClipPut($text) ; löscht (komischer weiße) die leeren Zeilen
sleep($sleep)
If @error then
MsgBox(0, $titel, "Fehler:"&@CRLF&@error)
exit
endif
If $text = "" then
MsgBox(0, $titel, "Fehler:"&@CRLF&"Kein Text!")
exit
endif
;MsgBox(0, $titel, $text)
; EasyFit
WinActivate ("EasyFit")
sleep($sleep)
Send("^t") ; neue Tabelle
sleep($sleep)
Send("^v") ; Inhalt aus Zw.-Abl. kopieren
sleep($sleep); Umbennen der Tabelle
[/autoit] [autoit][/autoit] [autoit]
ControlClick("EasyFit", "", "[CLASS:TRzTreeView; INSTANCE:1]") ; TrewView auswählen
Send("{APPSKEY}") ; Rechte Maustaste
sleep($sleep)
Send("{DOWN}") ; Nachunten
Send("{DOWN}") ; Nachunten
sleep($sleep)
Send("{ENTER}") ; Auswählen
sleep($sleep)
$dateinamen = StringSplit($dateien[$n], ".")
ControlSend("Umbenennen", "", "[CLASS:TEdit; INSTANCE:1]", $dateinamen[1]) ; Dateinamen
sleep($sleep)
ControlClick("Umbenennen", "", "[CLASS:TRzButton; INSTANCE:2]") ; OK
sleep($sleep)
next; ### Abschluss
[/autoit] [autoit][/autoit] [autoit]
BlockInput(0)
MouseMove($dwidth/2, $dheight/2)
MsgBox(0, $titel, "Ende!");Ende
[/autoit]Wieso kommt von ClipGet() nichts in $text an?
-
aktuell öffne ich mit
[autoit]ShellExecute('excel', '/e "xyz.xls')
[/autoit]eine Excel-Datei, diese wird aber immer in einer neuen Instanz von Excel geöffnet?
Wie stelle ich es an, das Excel die Datei in der schon aktiven Instanz öffnet (und nicht immer eine neue öffnet), bzw. wenn keine Instanz offen ist, eine neue auf macht!?
thx
-
hm .. weiß keiner Rat?
-
Was macht der Browser denn im Hintergrund?
Was meinst du damit?
Er ist in erster Linie im Hintergrund mal offen ...Damit wir uns richtg verstehen, ich öffne einen Browser auf eine der beiden Methoden und dann ist das Fenster nur mal offen ... mehr nicht!
[autoit]_IECreate($seite, 0, 0)
[/autoit][autoit][/autoit][autoit]ODER
[/autoit][autoit][/autoit][autoit]_FFStart($seite, "default", 1, True)
[/autoit]Wenn die Seite, die ich aufgerufen habe aber auch ein PopUp öffnen will, das ich per FF oder IE unterdrückt habe, dann kommt ein Ton, der mich darauf aufmerksam macht!
Ich will aber keinen Falls direkt im FF oder IE etwas ändern! Die Audioausgaben will ich nur dann unterdrücken, wenn ich das spezielle AutoIt Skript starte!
Genauer kann ich das nicht erklären ... -
Wenn ich per IE.au3 oder FF.au3 ein Browser im Hintergrund versteckt öffne und bearbeite und man z.B. PopUps blockert hat, dann kommt jedes mal ein Ton, wenn der Browser (versteckt) ein Popup öffnen will!
Kann man die Audioausgaben der versteckten Elemente nicht irgendwie blockieren?
thx
-
Ich möche nur noch den Thread als gelöst ändern und posten, wie das scollen der GUI dank Prajoss funktiononiert hat!
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiScroll.au3>;~ Global Const $WM_MOUSEWHEEL = 0x020A
[/autoit] [autoit][/autoit] [autoit]GUIRegisterMsg($WM_SIZE, "WM_SIZE")
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL")
GUIRegisterMsg($WM_MOUSEWHEEL, "_Mausrad")Dim $idRadio2[100]
[/autoit] [autoit][/autoit] [autoit]
#Region ### START Koda GUI section ### Form=$Form1 = GUICreate("Form1", 441, 441, 508, 269)
[/autoit] [autoit][/autoit] [autoit]
$Group1 = GUICtrlCreateGroup("Group1", 10, 10, 200, 200)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Group4", 220, 220, 200, 200)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Group2", 220, 10, 200, 200)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$hGroup2 = GUICreate("",170,170,235,25,BitOR($WS_POPUP, $WS_GROUP, $WS_VSCROLL, $WS_CLIPSIBLINGS),$WS_EX_MDICHILD,$Form1)
for $i = 0 to 99
$idRadio2[$i] = GUICtrlCreateRadio("Radio " & $i, 5, $i*25, 60, 18)
Next
GUISetState(@SW_SHOW)
GUISwitch($Form1)
$Group3 = GUICtrlCreateGroup("Group3", 10, 220, 200, 200)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###Scrollbar_Create($hGroup2, $SB_VERT, $i*25)
[/autoit] [autoit][/autoit] [autoit]
Scrollbar_Step(20, $hGroup2, $SB_VERT)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit] [autoit][/autoit] [autoit]
WEndFunc _Mausrad($hWnd, $Msg, $wParam)
[/autoit] [autoit][/autoit] [autoit]
#forceref $Msg, $wParam
If $wParam == "0x00780000" Then _Bild_rauf()
If $wParam == "0xFF880000" Then _Bild_runter()
EndFunc
Func _Bild_runter()
for $i = 0 To 4 Step 1
WM_VSCROLL($hGroup2, 0x0, 0x00000001, 0) ;1 mal kurz nach oben Scrollen - selber Effekt wie auf den Pfeil klicken
Next
EndFuncFunc _Bild_rauf()
[/autoit]
for $i = 0 To 4 Step 1
WM_VSCROLL($hGroup2, 0x0, 0x00000000, 0) ;1 mal kurz nach unten Scrollen - selber Effekt wie auf den Pfeil klicken
Next
EndFuncDies funktioniert aber auch nur unter einem als x86 kompilierten oder gestarteten Skript, nicht unter x64!
-
lol
Ich hab deinen Thread 5x durchgelesen und es immer noch nicht verstanden ... dann hab ich die Seite besucht und glaube zu wissen was du meinst:
http://www.autoitscript.com/autoit3/docs/l…tCollection.htmWoher soll ich wissen, das du die _IEFormGetCollection Fkt. meinst?
"0-based index" == erstes Formular auf der Seite!
Da kannst du irgendeine Zahl eingeben und bekommst dann das jeweilige Formular auf der Seite als Rückgabewert!
Wenn du keinen Wert eingibt, bekommst du ein Array mit allen Formularen der Seite ...Von der deutschen Seite:
http://translation.autoit.de/onlinehilfe/li…tCollection.htmZitatGibt eine Auflistung von Objektvariablen zurück, die alle Formulare (HTML-Tag) in dem Dokument oder ein einzelnes Formular (über seinen Index charkterisiert) beinhaltet.
Index ist in diesen Fall nur schlecht übersetzt für Reihenfolge ... -
Erhält einen Bezug zu einem bestimmten Formelement durch einen 0-basierenden Index.
; In diesem Fall wird eine Eingabe in der Google Suchmaschine getätigt
Ich hab keine Ahnung, was du damit meinst! -
Google ist aber auch ein sehr schlechtes Beispiel!
Besonders seit die so auf JS umgestiegen sind ...Du kannst den Quelltext aber auch durchsuchen lassen!
Suche mal nach "name" und schon findest du blitzschnell heraus, das das Formular "f" heißt und das Inputfenster "q" .... -
Verdammt ...
Jetzt nachdem ich mit Prajoss zusammen herausgefunden habe, das die Scroll-Fkt. nicht mit 64bit geht, muss ich feststellen, dass hier das Problem an der selben stelle gelegen hat!
Die FF-Funktionen funktionieren nicht, wenn man das Skript als x64 ausführt oder kompiliert!
Wenn jemand weiß, wie man dies auch unter 64bit zum laufen bekommt, dann darf derjenige sich gerne bei mir melden