Hi Mars.
Schade, dass der Quellcode verloren ist.
Ich habe das Problem, dass nichts (sichtbares) passiert, wenn ich die Exe ausführe.
Kannst du das nachvollziehen?
Hi Mars.
Schade, dass der Quellcode verloren ist.
Ich habe das Problem, dass nichts (sichtbares) passiert, wenn ich die Exe ausführe.
Kannst du das nachvollziehen?
Hallo Interlink,
Man kann das anders machen. Du kannst bspw. die ganze Mail mit AutoIt-Code versenden, ohne ein weiteres Programm zu öffnen.
Du willst dir aber nur auf die Schnelle das Leben erleichtern und benutzt die klassischen Tatensimulationen "Send", wenn ich das richtig verstanden habe?
Wenn ich mit meiner Vermutung richtig liege, gibt es per "Send" tatsächlich nur Tab.
Aber du hast auch die Möglichkeit einen Mausklick in das entsprechende Feld zu machen und dann deinen Text zu schreiben. Jedoch ist das nicht wirklich zu empfehlen. Denn die Fensterposition muss dann ja immer genau die Gleiche sein..
Du hast ja selbst geschrieben: "Wenn nun das Script zu schnell eingestellt ist".. Das heißt, du weißt, dass du einen Sleep(Millisekunden) machen kannst und du nutzt das auch?
Wenn ich dein Szenario und/oder Kenntnisstand nicht treffe, beschreibe das bitte noch einmal.
Hey Leute,
ich durchsuche per FTP in einem Programm, das ich weitergebe, vom Linux-Receiver gemountete Verzeichnisse nach Filmen, Bildern und XML-Dateien.
Hierbei können die Receiver auf eingebaute Festplatten, USB-Platten und NAS-Laufwerke zugreifen, die unter Umständen erst geweckt werden müssen.
Im Grunde funktioniert das soweit. Jedoch höre ich immer mal wieder auch, dass es ewig lange dauern würde, bis alle Daten vorhanden sind.
Ich durchsuche schon nur zwei Ebenen, damit es nicht zu lange dauert. Aber ich denke, ich mache es prinzipiell wahrscheinlich schlecht. Daher möchte ich euch mal bitten, mir eure kritische Beurteilung meiner rekursiven Suche mitzuteilen.
Über eure Hinweise freue ich mich
Local $Open = _FTP_Open("MyFTP Control")
Local $Callback = _FTP_SetStatusCallback($Open, "FTPStatusCallbackHandler")
If Not ($sActiveFTP = 1) Then
Local $conn = _FTP_Connect($Open, $IP, $ftpUser, $ftpPass, 0, $ftpPort, $INTERNET_SERVICE_FTP, 0, $Callback)
Else
Local $conn = _FTP_Connect($Open, $IP, $ftpUser, $ftpPass, 1, $ftpPort, $INTERNET_SERVICE_FTP, 0, $Callback)
EndIf
If Not @error Then
; .... Hier lese ich die Konfi-Dateien des Receivers aus, um die entsprechenden Startverzeichnisse der Suche zu ermitteln.
; Hier deklariere ich erst die Variablen, die ich gleich mit Filmen, Bildern und XML-Dateien fülle. Danach kommt ein Array, das ich als Dateifilter verwende.
Local $sMovies = "", $sPics = "", $sXmls = ""
Local $aVideofilter[17][1] = [[".mkv"], [".ts"], [".avi"], [".divx"], [".wav"], [".asf"], [".aiff"], [".mpg"], [".mpeg"], [".m2p"], [".mpv"], [".vob"], [".m2ts"], [".mov"], [".m3u"], [".pls"]]
Local $aStartfolders = StringSplit($sStartfolders, @CRLF) ; $sStartfolders sind die oben ausgelesenen Verzeichnisse
If Not @error Then
For $i = 0 To 2 ; Die Suche findet in dieser Schleife statt. Damit lese ich also nur 2 Unterverzeichnisse aus.
For $j = 0 To UBound($aStartfolders) - 1
_FTP_DirSetCurrent($conn, $aStartfolders[$j])
If Not @error Then
$aFolder = _FTP_ListToArray($conn) ; Hier werden die Dateien eines Verzeichnisses eingelesen.
_ArrayDelete($aFolder, 0)
For $k = 0 To UBound($aFolder) - 1
If Not StringInStr($aFolder[$k], ".") And $aFolder[$k] <> ".timeshift" Then ; Wenn der Dateiname einen Punkt enthält (und nicht .timeshift heißt), ist es kein Verzeichnis.
_ArrayAdd($aStartfolders, $aStartfolders[$j] & "/" & $aFolder[$k]) ; Wenn es ein Verzeichnis ist, wird es dem $aStartfolders-Array angehängt, damit es im nächten Durchlauf durchsucht wird.
Else
For $l = 0 To UBound($aVideofilter) - 1
If StringInStr($aFolder[$k], $aVideofilter[$l][0], 1) Then ; Wenn die Datei eine Endung aus dem Videofilter-Array hat, wird sie als Film übernommen.
$sMovies &= $aStartfolders[$j] & "/" & $aFolder[$k] & @LF
ExitLoop
EndIf
Next
If StringInStr($aFolder[$k], ".jpg", 1) Or StringInStr($aFolder[$k], ".png", 1) Then $sPics &= $aStartfolders[$j] & "/" & $aFolder[$k] & @LF ; Diese Dateien sind Bilder
If StringInStr($aFolder[$k], ".xml", 1) Then $sXmls &= $aStartfolders[$j] & "/" & $aFolder[$k] & @LF ; Diese Dateien sind XML
EndIf
Next
EndIf
Next
Next
EndIf
; Hier folgt meine peinliche Interprogramm-Kommunikation :D
FileWrite($PathT & "ftp\allmovies.txt", $sMovies)
FileWrite($PathT & "ftp\allpics.txt", $sPics)
FileWrite($PathT & "ftp\allxml.txt", $sXmls)
IniWrite($ini, "Intern", "FTPSuche", "1")
Else
IniWrite($ini, "Intern", "FTPSuche", "0")
EndIf
Else
IniWrite($ini, "Intern", "FTPSuche", "0")
EndIf
Local $iFtpc = _FTP_Close($conn)
Local $iFtpo = _FTP_Close($Open)
Exit
Alles anzeigen
Das hat sicher schon jemand besser umgesetzt. Über solche Hinweise freue ich mich auch.
Schalte bitte mal deine Firewall aus und probiere es noch einmal.
Bei manchen Firewall-Konfigurationen sind eingehende Verbindungen gesperrt. Das kann den beschriebenen Effekt haben.
Sorry AutoMit,
Da zeigt sich aber auch deine Unerfahrenheit. Wenn du anfängst deine AutoIt Scripte zu kompilieren und weiter zu geben, werden dich die gleichen Meldungen heimsuchen.
Das ist ein ewiges AutoIt-Problem.
Du kannst die Datei ja mal bei deinem Virenprogrammhersteller melden. Dann hören die Meldungen auch auf: http://www.techsupportalert.com/content/how-re…rus-vendors.htm
Hallo UEZ,
das Update war trotz deiner Ankündigung an mir vorbeigegangen. Ich habe auf einen neuen Beitrag gewartet
Nun habe ich es geladen. Funktioniert super. (Mal wieder alle Tools in einen neuen Ordner geladen, weil es so gut aussieht )
Vielen Dank nochmal. Du machst ganz tolle Sachen!
Tatsache. Bei deinen Fenstern tritt der Effekt nicht aus/wird korrigiert.
Ich hatte das offensichtlich auch gar nicht kapiert. Sorry und danke.
Hi Xenobiologist,
GUIRegisterMsg hatte ich vorher gar nicht auf der Rechnung.
Ich habe nun folgendes ausprobiert, um zu sehen, ob ich eine Meldung erhalte.
In der Schleife habe ich mal folgende Auswertung eingetragen:
Nach dem Wecken aus dem Standby war die Child Gui verschoben. Ich hatte aber keine Gui Message, auf die ich hätte reagieren können..
War das ein adäquater Test, oder habe ich nicht verstanden, was du gemeint hast?
Hi UEZ,
ja, gerade ausprobiert. Die aktuelle Version als exe startet einwandfrei.
Tatsächlich funktioniert der Start der au3 auch, nachdem ich die Funktionen einfach gelöscht habe. Passt auch. Ich hatte ja ein Update auf 3.3.13.20 Beta gemacht. Das ist doch die aktuelle Version, oder?
Vielen Dank
Hallo UEZ,
mir ist aufgefallen, dass ich deine AutoIt Sysinternal Tools Synchronizer.au3 nicht starten kann. Ich weiß nicht, seit wann das der Fall ist (die au3 nutze ich eigentlich als Anschauungsmaterial).
Zwischenzeitlich habe ich ein Ich nutze AuoIt 3.3.12.0 und habe zwischenzeitlich ein Beta-Update auf 3.3.13.20 Beta gemacht.
Jedenfalls kann ich nur noch die Version "AutoIt Sysinternal Tools Synchronizer v0.91 build 2014-11-07 beta" starten. Bei allen anderen stürzt startet das Script nicht. Bei einigen Funkionen erscheint der Fehler "already defined".
Mache ich etwas falsch, oder haben sich Bedingungen geändert?
PS: Ähnliche Probleme habe ich in der neuen Beta auch mit Files, die ich über deinen "File to Base64 String Code Generator v1.20 Build 2015-01-20" in meine Scripte einbinde.
Hier mal die SciTE-Konsolenausgabe vom Start der jüngsten Version vom 23.04.15:
>Running AU3Check (3.3.13.20) from:C:\Program Files (x86)\AutoIt3\Beta input:D:\User\Desktop\programmieren\autoit\fertige Projekte aus Forum\AutoIt Sysinternal Tools Synchronizer v0.99.0 build 2015-04-23 beta\AutoIt Sysinternal Tools Synchronizer\_Source\Sysinternal Tools Synchronizer.au3
"D:\User\Desktop\programmieren\autoit\fertige Projekte aus Forum\AutoIt Sysinternal Tools Synchronizer v0.99.0 build 2015-04-23 beta\AutoIt Sysinternal Tools Synchronizer\_Source\Sysinternal Tools Synchronizer.au3"(2629,63) : error: _GDIPlus_FontPrivateAddFont() already defined.
Func _GDIPlus_FontPrivateAddFont($hFontCollection, $sFontFile)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"D:\User\Desktop\programmieren\autoit\fertige Projekte aus Forum\AutoIt Sysinternal Tools Synchronizer v0.99.0 build 2015-04-23 beta\AutoIt Sysinternal Tools Synchronizer\_Source\Sysinternal Tools Synchronizer.au3"(2652,75) : error: _GDIPlus_FontFamilyCreateFromCollection() already defined.
Func _GDIPlus_FontFamilyCreateFromCollection($sFontName, $hFontCollection)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"D:\User\Desktop\programmieren\autoit\fertige Projekte aus Forum\AutoIt Sysinternal Tools Synchronizer v0.99.0 build 2015-04-23 beta\AutoIt Sysinternal Tools Synchronizer\_Source\Sysinternal Tools Synchronizer.au3"(2674,61) : error: _GDIPlus_FontPrivateCollectionDispose() already defined.
Func _GDIPlus_FontPrivateCollectionDispose($hFontCollection)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"D:\User\Desktop\programmieren\autoit\fertige Projekte aus Forum\AutoIt Sysinternal Tools Synchronizer v0.99.0 build 2015-04-23 beta\AutoIt Sysinternal Tools Synchronizer\_Source\Sysinternal Tools Synchronizer.au3"(2697,65) : error: _GDIPlus_FontPrivateAddMemoryFont() already defined.
Func _GDIPlus_FontPrivateAddMemoryFont($hFontCollection, $tFont)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\User\Desktop\programmieren\autoit\fertige Projekte aus Forum\AutoIt Sysinternal Tools Synchronizer v0.99.0 build 2015-04-23 beta\AutoIt Sysinternal Tools Synchronizer\_Source\Sysinternal Tools Synchronizer.au3 - 4 error(s), 0 warning(s)
!>10:22:34 AU3Check ended. Press F4 to jump to next error.rc:2
Alles anzeigen
Hey Leute,
Vor Kurzem habe ich hier mal eine GUI gebastelt, in der ich eine Child GUI auf der GUI genutzt habe, um darin eine Liste mit eigener Scrollbar zu erstellen. Website parsen - Klappe die tausendste..
Ich fand das so gut, dass ich in meinen anderen Programmen nun auch die Listviews durch Label auf einer Child Gui ersetzt habe. Nun ist mir aber folgendes Problem aufgefallen:
Nachdem mein PC aus dem Standby erwacht, ist die Child GUI verschoben und sitzt nicht mehr an ihrer Position in der GUI.
Hier habe ich mal den leicht angepassten Code aus der Hilfe:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Example()
Func Example()
; Create a GUI with various controls.
Local $hGUI = GUICreate("Example", 400, 100)
Local $idOK = GUICtrlCreateButton("OK_GUI", 10, 20, 85, 25)
; Display the GUI.
GUISetState(@SW_SHOW, $hGUI)
Local $hChild = GUICreate("", 169, 68, 200, 20, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
Local $idOK2 = GUICtrlCreateButton("OK_Child", 10, 20, 85, 25)
; Display the child GUI.
GUISetState(@SW_SHOW)
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idOK
MsgBox(0, "", "Gui 1", 1)
Case $idOK2
MsgBox(0, "", "Gui 2", 1)
EndSwitch
WEnd
; Delete the previous GUIs and all controls.
GUIDelete($hGUI)
GUIDelete($hChild)
EndFunc ;==>Example
Alles anzeigen
So sieht das mit dem Beispielcode aus:
Testweise habe ich es mal mit einer ständigen Neupositionierung der Child GUI versucht. Das scheint zu funktionieren. Kommt mir aber ziemlich ineffizient vor:
Hier noch einmal das Beispiel mit der Änderung, dass in der Schleife (Zeile 29f) die wiederholte Positionierung stattfindet.
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
;~ Opt("GUICoordMode", 1)
Example()
Func Example()
; Create a GUI with various controls.
Local $hGUI = GUICreate("Example", 400, 100)
Local $idOK = GUICtrlCreateButton("OK_GUI", 10, 20, 85, 25)
; Display the GUI.
GUISetState(@SW_SHOW, $hGUI)
Local $hChild = GUICreate("", 169, 68, 200, 20, $WS_POPUP, $WS_EX_MDICHILD, $hGUI)
Local $idOK2 = GUICtrlCreateButton("OK_Child", 10, 20, 85, 25)
; Display the child GUI.
GUISetState(@SW_SHOWNA)
; Loop until the user exits.
While 1
; HIER: Neupositionierung
Local $aGUI_Pos = WinGetPos($hGUI)
WinMove($hChild, "", $aGUI_Pos[0] + 200, $aGUI_Pos[1] + 40)
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idOK
MsgBox(0, "", "Gui 1", 1)
Case $idOK2
MsgBox(0, "", "Gui 2", 1)
EndSwitch
WEnd
; Delete the previous GUIs and all controls.
GUIDelete($hGUI)
GUIDelete($hChild)
EndFunc ;==>Example
Alles anzeigen
Mache ich da etwas falsch? Kann man das besser lösen?
Wie geschrieben, glaube ich, dass sie dich nur mit ihren Geräten ins Internet lassen. Daher wollte ich dir von der Anschaffung einer Kabelfritzbox als Hauptrouter abraten.
Ansonsten halte ich die Fritz!Box auch für sehr sicher. Negative Berichte über andere Router habe ich häufiger gelesen. Bei Fritz!Box gab es aber glaube ich letztes Jahr auch mal eine schwere Sicherheitslücke im Zusammenhang mit ihrer DynDNS Alternative..
Eben habe ich mal nach Fritz!Box hinter Router gesucht. Da bin ich auf folgende AVM-Seite gekommen: http://avm.de/nc/service/fri…IAD-einrichten/
Das liest sich nicht so gut. Das musst du mal prüfen.
Bist du dir da sicher? Ich konnte nichts davon in den AGBs finden, die hab ich mir vorher extra durchgelesen, da ich in Zukunft beruflich dazu gezwungen bin VPN zu nutzen. Ich kenne einige Leute die zumindest erzählen, dass sie mit VPN von zu Haus arbeiten ...
Das kann schon sein.
Problematisch ist es aber von außen auf dein Heimnetz zuzugreifen. Da schalte ich gerne die Steckdosen und greife auf meine Geräte zu Hause zu usw.
Das Problem bei Unitymedia hängt damit zusammen, dass du bei ihnen keinen IPv4 Anschluss bekommst. Das bekommst du nur noch als Firmenkunde gegen Aufpreis wenn ich richtig informiert bin. Du wirst keinen Zugriff auf dein Heimnetzwerk bekommen.
Wenn stimmt, dass die Firewall und die anderen Funktionen der Fritte fehlen, du die Telefondienste usw. nicht nutzen kannst, dann solltest du vielleicht entweder ganz auf die Fritz!Box verzichten oder die Fritz!Box doch mieten.
Die Zugriffe von außen gehen dir eh verloren glaube ich. Prüf meine Aussagen aber lieber alle mal.
Sofern ich kein Verständnisproblem habe, liegt das Grundproblem ja bei Warteschleifen jeglicher Art, darin etwas zu tun - was autoit einerseits auslastet und den Bediener vor dem Schirm zum warten zwingt, und andererseits eine gediegene Info über die Wartezeit zu geben. Das kann autoIT nicht wirklich, z.B. bei runwait (soll ja ab und an vorkommen), bei Deinem move Problem dürfte es ähnlich aussehen. autoIT steckt im "Verarbeitungsprozeß" fest. Also eben die 2te exe.
Obwohl Autoit kein Multithreading beherrscht, finde ich die Aussage verwegen.
Bei den Programmen, die ich schon in AutoIt geschrieben gesehen habe, würde ich (gerade als Anfänger) erst einmal fragen, ob das stimmt, bevor ich das hier gewiss äußere.
Hey @Phil-IT,
laszia ist zufrieden. Nimm das nicht als Kritik deiner Arbeit. Deine Hilfe kommt vielleicht nicht immer so an, wie du es dir gewünscht hast. Ich hoffe aber, du hast vielleicht, etwas neues gelernt.
Andere können sich dein Script ansehen und es nutzen und lernen.
Wenn die Dateien unterschiedlich groß sind, braucht man auch keinen Hashwert mehr, um zu merken, dass sie unterschiedlich sind.
@KriZza GTASpider's Hinweis ist aber super, oder?
Hi @YaeroxXO,
Das was UnityMedia ein Modem nennt ist auch ein Router mit eingebauter Firewall (oder musst du dich wirklich bei jedem Anmelden oder Browseraufruf mit deinen Internetdaten anmelden? ). Daher musst du dir wegen der Sicherheitsfunktionen erst einmal keine größeren Gedanken machen.
Es ist übrigens auch aus anderem Grund als den Anschaffungskosten richtig an eine Fritzbox hinter dem Unitymedia-Gerät zu denken. Anders geht es nämlich glaube ich gar nicht! Wenn du ein anderes Gerät zu nutzen versuchst, werden sie dich nicht ins Internet lassen. Den Spaß hatte ich mal. Seither bleibe ich im Telefonnetz. Das ist bei mir zum Glück auch gut. Falls du doch über eine Kabelnetz-Fritz!Box nachdenken solltest, informiere dich, wie das jetzt ausschaut.
Zum faxen kann ich dir leider nichts sagen. Bei den Receivern im Kabelnetz bekommst du deine Updates nicht von AVM, sondern von den Kabelnetzbetreibern. Die Firmware in der man aus dem Webif faxen konnte, kam aber erst ewig später heraus. Da war ich schon gewechselt. Das Faxen über die Software ging aber. War mir damals aber zu umständlich einzurichten - ist aber besser geworden.
Mit einem normalen Router hinter dem Kabelmodem geht es wohl ganz gut. Schau mal hier: http://www.meintechblog.de/2012/04/neue-f…ter-kabelmodem/
Die allgemeinen Fritz!Box Funktionen kannst du intern aber sicher nutzen. VPN ist aber bei einem Unitymedia Privatnutzer sowieso tot, daher brauchst du es so extern nicht versuchen...
Gab es je gerade so ungefähr als Thema.
Gerade brauche ich das nicht. Das aber schnell parat zu haben ist toll!
(Deine UDF _GuiCtrlSetImageEx.au3 benutze ich praktisch ständig. Sehr häufig nutze ich auch deine UDF _DownloadWithProgress.au3)
Also vielen Dank für deine ganze Arbeit Oscar.
Über dem ersten Beitrag. "Thema bearbeiten"
Guten Morgen @Schmunzel57,
Ja, benutze ruhig OrganizeIncludes. Wenn sich Profis damit auch behelfen, wird es schon richtig sein.
Hintergrund für meine Antwort war aber, dass ich das Gefühl hatte, dass du als Anfänger vielleicht auch verstehen willst, wann du welche Includes brauchst (geht mir jedenfalls so)..
Wie gesagt, die Includes stehen in der Hilfe und du kannst auch sehr einfach herausfinden, welche Includes du nicht benötigst.
Wenn du einfach herausfinden willst, welche Includes du wirklich brauchst,würde es auch reichen, dass du die Includes einzeln auskommentierst und das Script startest.
Wenn es vorher fehlerfrei startete. Wenn es nach dem Auskommentieren aber nicht mehr startet, sondern du die Meldung einer undeklarierten Variable oder eines undeklarierten Befehls erhältst, dann weißt du,
A: Ich brauche das Include!
B: Die angezeigte Variable (etwa ein Stil) oder der Befehl braucht dieses Include!
Wenn das Script weiter fehlerfrei läuft, weißt du,
C: Dieses Include brauche ich nicht.
Ich habe es nun so gemacht dass ich eine separate exe erstellt habe die mir eine Progressbar anzeigt. Wollte das zwar verhindern, aber gut, kann damit leben
Hi laszia,
sorry ich verstehe deine Meldung nicht ganz. Hast du den ersten Hinweis nicht verstanden? Hast du dich einfach für die hübschen Ladebildschirme von UEZ entschieden und wusstest sie nicht in deinen Code zu integrieren, oder warum musstest du auf eine externe Exe ausweichen?
Eigentlich gibt es doch gar keinen Grund, warum du das unbedingt machen musst.
Bsp:
Local $idProgressbar = GUICtrlCreateProgress(10, 40, 200, 20, $PBS_MARQUEE)
Das ist der erste Rat von autobert2 und von mir einfach bis auf den Style aus der Hilfe kopiert..
Guten Morgen Schmunzel57,
Ich komme als relativer Anfänger bisher ohne das Tool OrganizeIncludes aus und möchte nur als Ergänzung mitteilen, woher ich die Includes habe.
Gerade als Anfänger klicke ich in SciTE einfach häufig einen Befehl an und drücke F1.
Dadurch wird die Hilfe zu dem Befehl mit einem Beispiel angezeigt.
In diesem Beispiel sehe ich dann schon das notwendige Include, wenn es nicht schon in der Beschreibung erwähnt wird (abgesehen von der obligatorischen MsgBoxConstants.au3 in den Beispielen, die ich dann doch nicht brauche).
Bei Styles stehen die notwendigen Includes in der Style Tabelle über der Gruppe Styles, die du nutzen möchtest.