Beiträge von Bitnugger
-
-
Kann es momentan nicht überprüfen, aber ich denke, Office löscht deine Zwischenablage nicht... sondern implementiert eine eigene Zwischenablage, sobald ein Office-Fenster aktiv ist - doch wenn du ein Nicht-Office-Fenster aktivierst, ist der Inhalt dein (normalen) Zwischenablage wieder verfügbar...
Zwischenablage von Microsoft Office ausblenden oder deaktivieren
-
-
Congstar... dazu fällt mir nur eines ein... in deren AGBs steht, dass, wenn diverse Dienste momentan nicht verfügbar sind, diese für diesen Zeitraum von einem der Partner-Unternehmen zur Verfügung gestellt werden. Eines der Partner-Unternehmen gehört der Frau des Betreibers von Congstar... und in dem Fall, wenn du ihre Dienste nutzen MUSST, kostet es dich dann deutlich mehr, was aber natürlich an keiner Stelle erwähnt wird!
Deshalb: Congstar = BaFuiIgit!
-
Wie erkenne ich "API URLs"?
Gar nicht... denn die sind ja nicht genormt... aber in den meisten Fällen enthält die ULR dann eben ein \API\.
-
-
Hihi... Mistgurken... nein, in meinen Augen war bzw. ist das einfach nur Edel-Schrott, denn die verkaufen das ja auch heute noch gerne, wobei sich an der Qualität jedoch etwas geändert hat: Nun verkaufen sie auch Geräte, die schon bei Auslieferung ein Garantiefall sind!
Medion verkauft meiner Meinung nach nur PCs mit Ausschussware, die sie extrem günstig bekommen und die dann auch nur mit speziellen Einstellungen im BIOS und angepassten Treibern funktioniert. Damals der Pentium 4, den man bei Aldi kaufen konnte, der war auch von Medion - bei dem wurde das Hyperthreading für den ersten Core im BIOS deaktiviert und ebenso auch die Geschwindigkeit im BIOS gedrosselt, weil er sonst wegen zu hoher Strahlungswerte nicht in Europa verkauft werden dürfte. Das bekommt man als normaler User gar nicht mit, da man diese Einstellungen im BIOS nur mit dem Techniker-Passwort ändern/sehen kann.
Bie HP ist die Hardware in der Regel zwar deutlich besser, doch das ist am Ende auch unbedeutend, weil deren Treiber-Support unter aller Sau ist.
Sich einen Rechner zusammenstellen zu lassen, der dann auf Wunsch vor Auslieferung auf Herz und Nieren geprüft wird, hat natürlich was. Zudem kann man hier meist noch eine Zusatzversicherung abschließen und so die Garantiezeit auf 3-5 Jahre erhöhen. Doch auch bei diesen Rechnern ist späterer Ärger natürlich nicht ausgeschlossen.
Eine gute Freundin hat sich auf meinen Rat hin einen Rechner mit vorinstalliertem Windows 7 zusammenstellen lassen. Die Deppen haben das Benutzerkonto dann "Nutzer01" genannt, obwohl sie den Vornahmen ihrer Kundin wußten! Viel schlimmer aber war, dass sich ihr Rechner alle 3 Tage aufgehangen hat... sie hatte in dann 3x zurück zum Hersteller geschickt, damit er diesen Fehler beseitigt... was er aber nicht konnte. Als ich davon erfahren hatte, habe ich nicht mal 30 min gebraucht, um die Ursache dafür zu finden - es lag an der fehlerhaften Firmware der SSD, die mit verbaut wurde.
Auch meine Schwester hat sich auf meinen Rat hin einen Rechner zusammenstellen lassen... nachdem sie sich gegen meinen Rat zuvor einen Medion-PC hat schicken lassen, der dann aber schon defekt ankam... und bei ihr war es der Card-Reader, der sporadisch immer wieder für Ärger gesorgt hat.
Ein weiterer Nachteil dieser PC-Konfiguratoren ist, dass die Auswahlmöglichkeiten der Komponenten auf die Teile begrenzt ist, die der Anbieter im Sortiment hat.
Deswegen bleibe ich dabei: "Selbst ist der Mann!"
-
Ein COM-ERROR-Handler sorgt zwar dafür, dass dein Script nicht mehr abstürzt, wenn du mit Objekten hantierst, doch du solltest trotzdem vor der weiteren Verarbeitung mit If @error oder IsObj() prüfen, ob das Object erstellt werden konnte.
Hier machst du es...
hier aber nicht...
Code$Folder = $oFSO.GetFolder($sPath) _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
deshalb ist dein Script ohne COM-ERROR-Handler hier abgeschmiert , wenn $Folder kein Objekt ist!
-
So suche ich bisher vergeblich nach Angaben, wie die Funktionen der _WD_-UDF zu handhaben sind.
_WD_-UDF ... boar... da habe ich aber auf der Leitung gestanden... die WebDriver-UDF meinst du... ja, die Infos dazu sind nicht gerade erschöpfend... du weißt, dass es dafür einen Hilfe-Thread gibt?
Gibt es bei SciTE eine Möglichkeit, zwei Listings miteinander zu vergleichen? Dieses Feature vermisse ich sehr.
SciTE bietet keine direkte Möglichkeit dafür, doch du könntest aus SciTE heraus ein eigenes Script (*.au3|*.lua) starten, dass dann z.B. WinMerge mit den gewünschten Dateinamen als Parameter aufruft.
Schwierigkeiten habe ich mit der Konsole. Was muss ich tun, damit mir die Konsole nicht beim Scriptende verschwindet?
Die Ausgabe-Konsole (Output-Pannel) von SciTE kannst du mit F8 ein/ausblenden. Wenn du dein Script als CUI ausführen lässt und die Konsole der Eingabeaufforderung damit meinst, kannst du einfach auf einen Tastendruck warten... z.B. mit _IsPressed() - hilfreicher wäre, wenn du uns dazu ein Beispiel-Script zeigst.
Wie springe ich mit der Tastatur von Listing zu Listing
Mit F6 oder Strg + PGDN zum nächsten, mit Shift + F6 oder Strg + PGUP zum vorigen. Mit Strg + F1 bekommst du übrigens die Hilfe zu SciTE angezeigt.
-
Das ist die blockweise Funktion von trancexx ! Einen direkten Link dazu habe ich nicht, aber Prog@ndy hat sie in einem Beitrag gepostet.
Das dies die blockweise Funktion von trancexx ist, war mir schon klar... doch ich möchte gerne den Link für weitere Infos und um ihn als Quelle mit in meinem Script speichern... hast du aber nicht... ok, dann gib mir doch bitte den Link zu dem Beitrag von Prog@ndy... denn in Post #12 habe ich ihn nicht gesehen.
-
Ich habe im blauen Forum eine Funktion gefunden, die mir die MSDN-DataTypes in AutoIt-DataTypes umwandelt. Bsp: 'ULONGLONG' --> 'UINT64'
https://www.autoitscript.com/forum/topic/11…&comment=979380
Nun habe ich aber gemerkt dass diese Funktion schon recht betagt ist und (deshalb) womöglich einige Typen nicht korrekt "übersetzt" werden.
Würdet ihr die Liste bitte mal durchgehen und prüfen, ob sie fehlerhafte DataTypes enthält und ob noch wichtige/relevante DataTypes fehlen.
Danke!
-
Windows vergibt normal bei 32-bit Programmen nicht mehr als 2 GB Arbeitsspeicher, selbst wenn das Windows eine 64-bit Version ist.
Das ist korrekt... hier aber noch ein interessanter Link zu diesem Thema: Mehr Speicher für 32bit Programme unter 64bit Windows
-
Ich habe allerdings eine andere Variante für MD5 von trancexx gefunden, die geht auch mit UseX64=n da sie die Prüfsummen 'blockweise' ermittelt.
Wäre lieb von dir, wenn du uns mal den Link geben würdest...
-
Er moniert zwischendurch mal (nicht immer, daher bin ich da auch verwundert) die Zeilen:
Code
$read_reservierung = FileReadLine($sPath & $Files.Name, 13)
$read_important = FileReadLine($sPath & $Files.Name, 14)
$read_liefertermin = FileReadLine($sPath & $Files.Name, 15)Mit moniert meinst du dann sicher, dass dein Script dann abschmiert?! Viel hilfreicher wäre, wenn du uns die "unzensierte" Fehlermeldung nennen würdest... die dann z.B. etwa so aussehen könnte:
".\_GUICtrlTreeView_CreateDirectory.au3" (27) : ==> The requested action with this object has failed.:
$Folder = $oFSO.GetFolder($sPath)
$Folder = $oFSO^ ERROR
Denn mit "Er moniert" kann man nicht wirklich was anfangen... und wer ist übrigens "Er"?
Speziell hängt er sich am Parameter .Name auf.
$Files.Name kann nur funktionieren, wenn $Folder ein Objekt ist!
Das dein Script abstürzt, wenn es auf $Files.Name trifft, liegt mit sehr hoher Wahrscheinlichkeit also daran, dass $Folder kein Objekt ist und du keinen COM-ERROR-HANDLER installiert hast, der diesen Fehler abfängt!
Denn hättest du einen installiert, würdest du lediglich eine Fehlermeldung angezeigt bekommen und das Script würde dann aber weiterlaufen!
Wie man einen COM-ERROR-HANDLER installiert, kannst du in der AutoIt-Hilfe in dem ersten Beispiel zu ObjEvent sehen.
Eine wacklige Netzwerkverbindung kann in deinem Fall übrigens auch der Grund sein, warum dein Script ohne COM-ERROR-HANDLER abschmiert!
Du hast das Problem eigentlich schon zu 100% getroffen. Die Ansicht soll sich nur aktualisieren, wenn ein neues Ticket erstellt oder gelöscht/verschoben wurde.
Ok, nun habe ich jedoch registriert, dass dein zu überwachendes Verzeichnis "\\BER04APPMM4-1\allgemein\Mailer\" evtl. kein lokales Verzeichnis ist... _WinAPI_ShellChangeNotifyRegister funktioniert aber leider nur mit lokalen Verzeichnissen!
Jetzt gibt es zwei Möglichkeiten:
- Dein Script wird auf demselben PC/SERVER ausgeführt, auf dem sich das zu überwachende Verzeichnis befindet - dann kannst du anstelle des Netzwerkpfades bei _WinAPI_ShellChangeNotifyRegister den lokalen Pfad angeben und es würde funktionieren.
- Dein Script wird NICHT auf demselben PC/SERVER ausgeführt, auf dem sich das zu überwachende Verzeichnis befindet - dann müsste ein (kompiliertes) Script auf dem anderen PC/SERVER ausgeführt werden, dass dieses lokale Verzeichnis überwacht und wenn ein Event ausgelöst wird, eine Nachricht an dein Script sendet, z.B. via UDP/TCP.
-
Das Ganze würde auch den Geschwindigkeitsvorteil seiner Version erklären
Ihrer... trancexx ist ein/e "Zweibeiner/Frau"
Ja, so ist es... aber eben nicht für sehr große Dateien geeignet und der Geschwindigkeitsverlust beim blockweise Einlesen ist eher marginal, bringt aber den Vorteil, dass die Dateien beinahe beliebig groß sein dürfen.
-
Ich habe etwas mit den 'Highspeed-Varianten' von trancexx aus dem Link
https://www.autoitscript.com/forum/topic/95…sha1-for-files/
gespielt (exemplarisch mit MD5). Dabei ist mir folgendes aufgefallen :
Bis zu einer Dateigröße von max. 2 GB ist sie sehr schnell. Darüber hinaus muss zwingend mit #AutoIt3Wrapper_UseX64=y kompiliert werden, sonst läuft die Funktion auf einen Fehler. Mit UseX64=y geht es auch > 2 GB, liefert dann aber ein falsches Ergebnis !
Habe ich mir gestern auch noch angetan und bin auch zu diesem Ergebnis gekommen - bei > 2 GB ist es MapViewOfFile, dass mit Error 3 aussteigt. Das falsche Ergebnis bei > 2 GB konnte ich auch nicht korrigieren, indem ich evtl. falsche Typen bei den DllCall's angepasst hatte, wenn UseX64=y ist... und laut der Liste von @BugFix sind die auch alle ok, soweit ich das beurteilen kann, doch sie sind zumindest nicht identisch mit den analogen _WinAPI-Funktionen... z.B. _WinAPI_MapViewOfFile.
Ein wirklich sehr interessantes Thema... dass leider sehr viel Zeit verschlingt... die ich momentan aber nicht habe.
-
Ich habe mir mal die Liste angeschaut. Zeile 20: $SHCNE_UPDATEDIR - das wäre meines Erachtens das richtige.
Dieses Event wird allerdings nur ausgelöst, wenn sich in dem zu überwachenden Verzeichnis in einem der Unterverzeichnisse etwas geändert hat oder ein neues Unterverzeichnis erstellt wurde... und so wie ich es verstehe, interessieren dich aber nur die Ticket-Dateien in dem zu überwachendem Verzeichnis?! Doch auch wenn es so wäre, wie du vermutet hast, wüsstest du durch diesen Event aber nicht, was sich da getan hat.
Dieses Event könnte man zwar nehmen... dann müsste allerdings das übergeordnete Verzeichnis "\\BER04APPMM4-1\allgemein\" überwacht werden. Wirklich Sinn macht das aber nicht, weil du dann für alle Unterverzeichnisse in \Mailer\ ein Event bekommst.
Ich denke mal, du willst eigentlich nur wissen, ob sich in dem zu überwachendem Verzeichnis "\\BER04APPMM4-1\allgemein\Mailer\" etwas an den Dateien (Tickets) geändert hat:
- Wurde in dem zu überwachenden Verzeichnis ein neues Ticket erstellt?
- Wurde in dem zu überwachenden Verzeichnis der Inhalt eines Tickets geändert?
- Wurde in dem zu überwachenden Verzeichnis ein Ticket gelöscht?
- Wurde in dem zu überwachenden Verzeichnis ein Ticket umbenannt?
Dafür bräuchten wir dann die Events: $SHCNE_CREATE, $SHCNE_UPDATEITEM, $SHCNE_DELETE und $SHCNE_RENAMEITEM, falls sie auch umbenannt werden. Bei $SHCNE_UPDATEITEM müssten wir dann noch überprüfen, ob das Item ein Verzeichnis oder eine Datei (Ticket) war.
Wenn ich dich richtig verstehe, dann willst du bei allen Events die Funktion _GUICtrlTreeView_CreateDirectory aufrufen und das TreeView dann immer neu erstellen... das geht natürlich auch, doch das ist dann definitiv eine sehr unfeine Holzhammermethode.
Code: Holzhammer$SHCNE_CREATE --> _GUICtrlTreeView_CreateDirectory(...) $SHCNE_UPDATEITEM --> _GUICtrlTreeView_CreateDirectory(...) $SHCNE_DELETE --> _GUICtrlTreeView_CreateDirectory(...) $SHCNE_RENAMEITEM --> _GUICtrlTreeView_CreateDirectory(...)
Viel eleganter wäre, wenn du für jedes Event eine spezielle Funktion aufrufst und nur genau das machst, was nötig ist... hier mal ein Beispiel:
Code: Skalpell$SHCNE_CREATE --> _SH_Notify_TreeView_InsertItem(...) $SHCNE_UPDATEITEM --> _SH_Notify_TreeView_SetText(...) $SHCNE_DELETE --> _SH_Notify_TreeView_Delete(...) $SHCNE_RENAMEITEM --> _SH_Notify_TreeView_SetText(...)
Wie willst du es nun angehen - Holzhammer oder Skalpell?
-
Ohne zu bewerten meine Frage : Was gibt es an der Lösung von trancexx auszusetzen ?
Ehrlich gesagt, muss ich zu meiner Schande gestehen, dass ich den Link zu dieser Lösung völlig übersehen habe. Auszusetzen hätte ich daran, dass ich damit nur die Checksummen von Files ermitteln kann, wohingegen du meiner Funktion auch eine DllStruct oder einen Memory-Pointer übergeben kannst, was aber für dieselwiesel keine Rolle spielt, denn genau das will er ja - Checksummen von Files ermitteln.
Und was ist der Vorteil von CRC32 zu MD5 ? In der Version von trancexx gibt es eine MD5-Variante, die den virtuellen Speicher verwendet. Die ist bei Dateigrößen > 250 MB signifikant schneller.
Das ist natürlich ein sehr gutes Argument, um die Lösung von trancexx mal unter die Lupe zu nehmen. Vermutet hätte ich, das CRC32 in beiden Fällen deutlich schneller als MD5 ist... wie man sich doch irren kann. Den entscheidenden Vorteil von trancexx Funktionen ist, dass die Größe der Dateien nicht auf den verfügbaren Speicher begrenzt ist, wie es bei meiner Funktion der Fall ist. In meiner Funktion waren übrigens noch 2 böse Fehler drin... die ich aber schon korrigiert habe und nun kann man auch einfach einen String übergeben, für den dann eine Prüfsumme erstellt wird.
DllCall('ntdll.dll', 'none', 'RtlFillMemory', 'struct*', $tData, 'ulong_ptr', $iLength, 'byte', FileRead($vCheck))
2x Quatsch... denn bei RtlFillMemory kann $iValue max. 8 Bytes groß sein... und mit FileRead muss die Datei binär eingelesen werden. $iValue ist der Wert, mit dem der Speicher gefüllt werden soll - in diesem Fall ist das FileRead($vCheck).
Hm, mal schauen, evtl. baue ich die Funktionen von trancexx so um, dass sie auch mit DllStructs und Memory-Pointern funktionieren. Oder hast du Lust dazu, denn mir fehlt momentan die Zeit?
-
Obwohl nicht 100% identisch vom Code (vom Ergebnis aber schon), müsste das von Prog@ndy sein
Hehe... bin mal wieder erstaunt, was du so alles findest... aber wenn es eine Version von Prog@ndy und eine andere gibt, dann ist die andere sicher nicht von ihm... zumal seine für mich "sauberer" wirkt. Da aber beide quasi identisch sind, ist das nicht wirklich wichtig. Ich habe die Funktionen bei mir aber trotzdem ausgetauscht und verwende nun die von Prog@ndy.
-
Gibt es eine Funktion, mit der man eine Prüf-/Checksumme einer Datei ermitteln kann sodass ein Skript weiß das es sich um die richtige Datei handelt?
Ich mache das mit der Funktion _WinAPI_ComputeCrc32... im Anhang findest du dazu mein Script und auch eine Demo.