Hi,
wenn man die Mails nicht unbedingt vom Server lesen muss, kann man auch auf die Archive des lokalen Mail-Clients zugreifen bzw. "direkt" den Client anzapfen.
Und die die Daten in ein anderes Programm eintragen...hey, das ist AutoIt, gibts dafür etwas besseres/einfacheres?
Beiträge von Andy
-
-
Ilse,
ich zitiere dich mal, um es dir deutlich zu machen, worum es uns geht!Zitat von ThreadtitelInputbox nach Eintrag weiter
Zitat von erste Zeile nach: Halloich möchte einen Inputbox Code
Zitat von zwei Zeilen weiterIm Prinzip 2 oder mehrere Inputboxen.
Zitat von noch ne Zeile weiterWie kann ich bei den Inputboxen einbauen,
-bla
-blub
In deinem Startpost gehts nur um eins! INPUTBOXEN!
Nur geht´s mit Sicherheit garnicht um Inputboxen, sondern um irgendwelche Eingaben/Antworten für ein Quiz (zeitabhängig). Vermute ich mal...
Problem erkannt?
Völlig falscher Threadtitel mit völlig irreführendem Inhalt!
Auch die 2 Sekunden geben nicht mal ansatzweise etwas her, denn soll diese Zeit ab Erscheinen deiner "Inputbox" ablaufen, oder soll die Eingabe nachdem 2 Sekunden lang kein weiterer Text eingegeben wurde, "Automatisch OK gedrückt" werden? ( was übrigens programmiertechnisch gesehen der größte Humbug ist, denn es wird lediglich eine Funktion beendet....auf OK drückt hier niemand!)
Nach 3 1/2 Jahren hier im Forum sollte man nach über 1000 geschriebenen Postings in der Lage sein, ein Problem so formulieren zu können, dass die Helfer auch ohne zig Nachfragen erkennen können, um was es überhaupt geht!
Oder man ignoriert solche Threads in Zukunft....wundert dich das? -
Hi,
Zitat von BugFixund hast bis heute ausser der Bedienung von Koda nix gelernt!
Um mal in diese Kerbe zu schlagen ist schon die Frage
Zitat von ilseaber wie gesagt, es soll automatisch weitergehen, sobald ein Eintrag erfolgt ist!
reichlich Überflüssig, denn wer in der Hilfe zur InputBox() nachliest, findet den Parameter "timeout" den man ohne weiteres auf 2 Sekunden einstellen kann.
.
Wobei jedem, der jemals eine GUI erstellt/benutzt hat unklar ist, wieso das nächste Eingabefeld nicht einfach per Enter/Tab angewählt wird.... -
Das gepostete Script läuft nicht, da die Forensoftware die Backslashes "frisst"!
s.EDIT in Post #5 -
Hi,
jaja, mach uns nur die Nase lang mit deinem Equipment
ZitatAber eins muß ich noch Fragen, ich weiß das der OCL-Kernel zur Laufzeit Kompiliert wird, wird dieser jetzt Zentral 'verwaltet' oder bekommt jede 'Recheneinheit' seinen eigenen Kernel zugewiesen - oder sogar individuell kompilierte Kernel???
Der genau gleiche Kernel wird von ALLEN an der Berechnung beteiligten Workunits GLEICHZEITIG ausgeführt!
Daher muss man, wenn man fortgeschritten genug ist ^^, zusehen, dass möglichst viele Workunits "load" haben!ZitatDeswegen hatte ich auch gefragt ob CPU & GPU in OCL auch gemeinsam Arbeiten können (ALL), aber ist es auch möglich mehrere OCL-Kernel gleichzeitig laufen zu lassen?
ja, man kann auf jedem der Devices unabhängig voneinander gleichzeitig verschiedene Kernel laufen lassen, oder aber auch OpenCL anweisen, einen Kernel auf alle Devices zu verteilen.
In den Beispieldateien vom SDK sind viele Anwendungen, ich habe aber versucht, mit einer handvoll gewrapperten AutoIt-Funktionen auszukommen. Ehrlich gesagt frage ich mich was einen C(++)-Programmierer dazu bringt, sein Hirn soweit abzuschalten, jedes Mal hunderte Zeilen fast identischen Code reinzukloppen. Aber scheinbar werden die Programmierer für die SDK-Beispiele nach Zeilen bezahlt^^
Da du Interesse hast und AutoIt sich imho sehr gut eignet, OpenCL-Funktionen zu wrappern, würde ich mich jedenfalls freuen, wenn du Ideen beisteuern könntest. Dann könnte man ggf. auch mal über eine UDF nachdenken^^
-
Hi,
Zitat von minxSeit neustem sind bei mir zwei Radeons im Crossfire verbaut. Die Performance mit OpenCL skaliert sich wunderbar
BS, OpenCL-Version, Hardware?
Techmix,
mit einem "gut parallelisierbaren Algorithmus" gabe ich natürlich den Algorithmus an sich gemeint. LZW ist schlecht zu parallelisieren, trotzdem kann man, wie du es gemacht hast, das "Problem" einfach in Teile zerschneiden und dieses dieser Teile dann mit dem "nicht gut parallelisierbaren Algorithmus" berechnen und danach zusammenfügen. Da würde natürlich auch per OpenCL funktionieren!ZitatGibt es eigentlich unterschiede zwischen den CPU und der GraKa innerhalb der Berechnungen? Ich meine jetzt ob z.B die CPU Stringopperationen grundsätzlich schneller als die GPU ausführt. Weil eine GPU ist ja eigenlich eher für Mathematische Opperationen gebaut...
Die GPU liegt bei den Float-Berechnungen vorne, die CPU bei "großen" Datenmengen im Speicher (Cache haut dann massiv rein, wenn intelligent eingesetzt, siehe Array of Structures / Structures of Arrays) und viel Speichergeschiebe.
Die GPU legt dann massiv zu, wenn die 16KB (für jedes Workitem innerhalb der Workgroup) als lokaler, von allen Workitems benutzbarer Speicherbereich, verwendet werden kann.
Dieses "tuning" ist teilweise hardwareabhängig, und wenn clever gemacht, geht die Performance nahe an die theoretischen Möglichkeiten!
Etwas, das "Multi/Hyper-usw.-Threading" durch den Overhead des BS und dessen dazwischengefunke niemals hinbekommen. Da skaliert der Overhead nämlich doppelt und dreifach^^Techmix,
wenn du also die Daten von deinem Kompressionsalgorithmus in 16KB große "Häppchen" zerlegst, diese in den lokalen Speicher der Workgroups packst und dann dort noch Teilaufgaben auf die einzelnen Workitems verteilen kannst, hast du gute Chancen, auf einer mittelmäßigen GPU auch eine "fette" CPU zu schlagen! -
Hi,
ZitatAber zu dem Source, ich hatte damit einige Experimente gemacht und bei der Verwendung von '_CL_GetDevice()' ist es irritierend das die Angabe 'ALL' die nächst erreichbare Hardware darstellt - und eben nicht die gesammte Hardware.
Ab OpebCL 1.2 sollte es möglich sein, die komplette Hardware (GPU und CPU) gleichzeitig an einem Kernel rechnen zu lassen. Ich hänge mich da mal dran...
ZitatUnd wie verhällt sich OpenCL bei einem SLI-System? Werden überhaupt beide Karten angesprochen, oder nur eine davon??
Gute Frage ^^, sollte sich bei Khronos im Forum klären lassen.
ZitatWenn ich mir den Mandelbrotflug in OpenCL (über Gfx) anschaue - und anschliessend den Flug in AU3... Das ist so ein gewaltiger Unterschied! Wow!!
Aber ich habe grad mal vielleicht 20% der Kernel (und dessen Befehle) verstanden... Das soll doch C sein - oder nicht?!? (Ahhhh, sind doch SDK-Befhele...) Da muss man sich wirklich einlesen...Den Kernel für den Mandelbrotflug habe ich einfach mal kopiert, um zu zeigen, dass auch ohne Änderung des Kernels ein AutoIt-Script problemlos davon profitieren kann.
In der Devices64 verwende ich einen eigenen Mandelbrot-Kernel, der besteht nur aus einigen Zeilen
ZitatSo wie ich das sehe sollte es doch auch möglich sein den 7zip Algorythmus nach OpenCL zu portieren, dieser Funktioniert eh schon mit Multi-Threading. In OpenCL könnte das doch auch von der GraKa erledigt werden, oder??
Es lassen sich alle gut parallelisierbaren Algorithmen durch OpenCL beschleunigen. Leider trifft das für die Mehrzahl der Packer nicht zu
Deren Algorithmen sind eben nicht gut parallelisierbar...ZitatMir fiel grade auf das die GraKa von Blume (Geforce 9800 GTX+) einen Speed von 621 hat, meine GTX 460 AMP (toppt eine GTX 470) bekommt nur einen Speed von knapp 300 Punken... Meine Karte ist doch deutlich Leistungsfähiger, ist der Punktevorsprung tatsächlich NUR durch die 'Compute Units' begründet (seine hat 16, meine nur 7)?!?
Ja, so sieht es aus. Nvidia sieht generell bei OpenCL gegenüber AMD-GPU´s nicht gut aus, das wird umso schlimmer, je weniger Compute-Units verwendet werden.
Aber Nvidia holt auf^^
Apple pusht zzt. OpenCL, kein Wunder, die wollen ja auch ihre Mac-Pro´s mit den teuren Grakas verkaufen... -
Interessant, denn Scriptomatic sammelt ja die nur die aus der Windows-eigenen Datenbank möglichen Classes für den Namespace.
Vista....ggf. kann das mal ein anderer Vista-User verifizieren?ZitatKann man da was falsch machen (weis doofe Frage, ich schaff aber so manches)?
Nein, ich glaube nicht, dass man da etwas falsch machen kann...so wie deine Fehlermeldung aussieht, wird schon die Anfrage an die Datenbank verhindert.
Ggf. ein Rechte-Problem? Hast du es mal als Administrator versucht?//EDIT poste mal bitte die beiden Scripte, einmal das vom Orginal erstellte, und das mit dem Filter erstellte
-
Zitat
"C:\Users\viso\Desktop\ISN AutoIt Studio\Projects\
Ich benutze Scite ohne Fehlermeldung....Win7/64 und XP/32
So wie du das schreibst, tritt der Fehler nur beim von mir geposteten Script auf, und nicht bei dem im Link geposteten Orginalcode? -
Hi,
so?Spoiler anzeigen
[autoit]#include <String.au3>
[/autoit] [autoit][/autoit] [autoit]
$line='<tr><td class="value"><strong>PassMark Rating</strong></td><td class="maxvalue">683.8</td></tr>'$value=_stringbetween($line,'<td class="maxvalue">','</td></tr>')
[/autoit] [autoit][/autoit] [autoit]msgbox (0,0,$value[0])
[/autoit]
[autoit]
Du musst nicht mal die Zeile finden, nimm einfach$line=fileread("test.htm")
[/autoit] -
Wie kommst du darauf, dass das eine Fehlermeldung ist?
-
Hi,
Ich mache das sonst nicht, aber hier der von mir modifizierte Code von Scriptomatic. Ich habe einen Filter eingebaut, welcher innerhalb der WMI-Class nach dem eingegebenen Begriff filtert.
Will ich nur die Netzwerk-Classes, gebe ich in der Inputbox net ein, und in der Auswahl erscheinen nur Classes, welche diesen Begriff im Namen haben.
Beim Start braucht Scriptomatic etwas Zeit, um sämtliche registrierten Classes zu laden.Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_outfile=scriptomatic.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; AutoIt ScriptOMatic
; -------------------
;
; AutoIt's counterpart of Microsoft's Scriptomatic
;
; Author: SvenP
; Date/version: 2005-04-17
; See also: http://www.microsoft.com/technet/script…s/scripto2.mspx
; Requires: AutoIt beta version 3.1.1.8 or higher (COM support!!)
;
; GUI generated by AutoBuilder 0.5 Prototype;************************
[/autoit] [autoit][/autoit] [autoit]
;* Global State Variables
;************************
$g_strCurrentNamespace = "\root\CIMV2"
$g_iCurrentNamespaceIndex = 0
$g_strWMISource = "localhost"
$g_strOutputFormat = "Dialog"
Global $objClassDictionary
;************************
;* Main GUI
;************************GuiCreate("AutoIt Scriptomatic Tool", 684, 561,(@DesktopWidth-684)/2, (@DesktopHeight-561)/2 , $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
[/autoit] [autoit][/autoit] [autoit]$GUI_AST_MainGroup = GuiCtrlCreateGroup("", 10, 10,660,530)
[/autoit] [autoit][/autoit] [autoit]
$GUI_WMI_NamespaceLabel = GuiCtrlCreateLabel("WMI Namespace", 20, 30,150, 20)
$GUI_WMI_Namespace = GuiCtrlCreateCombo("WMI_Namespaces", 20, 50,280, 80)
$GUI_WMI_ClassLabel = GuiCtrlCreateLabel("WMI Class", 320, 30,80, 20)
$GUI_WMI_Classes = GuiCtrlCreateCombo("WMI_Classes", 320, 50,340, 80)
$GUI_WMI_Filter = GUICtrlCreateButton("Filter",450,25,70,20)$GUI_AST_ButtonGroup = GuiCtrlCreateGroup("", 10, 80,660, 50)
[/autoit] [autoit][/autoit] [autoit]
$GUI_AST_Run = GuiCtrlCreateButton("Run", 20,100, 50, 20)
$GUI_AST_CIMv2 = GuiCtrlCreateButton("CIMv2", 80,100, 50, 20)
$GUI_AST_WMISource = GuiCtrlCreateButton("WMISource", 140,100, 70, 20)
$GUI_AST_Open = GuiCtrlCreateButton("Open", 220,100, 60, 20)
$GUI_AST_Save = GuiCtrlCreateButton("Save", 290,100, 60, 20)
$GUI_AST_Quit = GuiCtrlCreateButton("Quit", 360,100, 60, 20)
$GUI_AST_OptionGroup = GuiCtrlCreateGroup("Output", 430, 80,240, 50)
$GUI_AST_RadioDialog = GuiCtrlCreateRadio("Dialog", 440,100, 50, 20)
$GUI_AST_RadioText = GuiCtrlCreateRadio("Text", 510,100, 50, 20)
$GUI_AST_RadioHTML = GuiCtrlCreateRadio("HTML", 570,100, 50, 20)
$GUI_AST_ScriptCode = GuiCtrlCreateEdit("One moment...", 20,140,640,390)GuiSetState()
[/autoit] [autoit][/autoit] [autoit]; Initial GUI Settings
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($GUI_AST_RUN, $GUI_DISABLE)
GUICtrlSetState($GUI_AST_SAVE, $GUI_DISABLE)
GUICtrlSetState($GUI_AST_RadioDialog,$GUI_CHECKED)GUICtrlSetState($GUI_WMI_Filter, $GUI_DISABLE)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Fill the WMI_Namespaces Combobox
[/autoit] [autoit][/autoit] [autoit]
LoadWMINamespaces(); Fill the WMI_Classes Combobox
[/autoit] [autoit][/autoit] [autoit]
HandleNamespaceChange()
GUICtrlSetState($GUI_WMI_Filter, $GUI_ENABLE)While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $GUI_AST_QUIT
ExitLoop
Case $msg = $GUI_WMI_Filter
filter()
Case $msg = $GUI_WMI_Namespace
HandleNameSpaceChange()
Case $msg = $GUI_WMI_Classes
ComposeCode()
Case $msg = $GUI_AST_Run
RunScript()
Case $msg = $GUI_AST_Save
SaveScript()
Case $msg = $GUI_AST_Open
OpenScript()
Case $msg = $GUI_AST_CIMv2
SetNamespaceToCIMV2()
Case $msg = $GUI_AST_WMISource
SetWMIRepository()
Case $msg = $GUI_AST_RadioDialog or _
$msg = $GUI_AST_RadioText or _
$msg = $GUI_AST_RadioHTML
HandleOutputChange()
EndSelect
WEndGUIDelete()
[/autoit] [autoit][/autoit] [autoit]Exit
[/autoit] [autoit][/autoit] [autoit];********************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* LoadWMINamespaces
;********************************************************************
Func LoadWMINamespaces()
$strCsvListOfNamespaces = ""
$strNameSpacesCombo=""$strWaitNamespaces="Please wait, Loading WMI Namespaces"
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($GUI_WMI_Namespace,$strWaitNamespaces,$strWaitNamespaces)EnumNameSpaces("root", $strCsvListOfNamespaces)
[/autoit] [autoit][/autoit] [autoit]$arrNamespaces = StringSplit($strCsvListOfNamespaces, ",")
[/autoit] [autoit][/autoit] [autoit]For $strNamespace in $arrNamespaces
[/autoit] [autoit][/autoit] [autoit]
$strNameSpacesCombo = $strNameSpacesCombo & "|" & $strNamespace
NextGUICtrlSetData($GUI_WMI_Namespace,$strNameSpacesCombo,"ROOT\CIMV2")
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit];********************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* EnumNamespaces
;********************************************************************
Func EnumNamespaces($strNamespace, ByRef $tmpCsvListOfNamespaces)If $tmpCsvListOfNamespaces = "" Then
[/autoit] [autoit][/autoit] [autoit]
$tmpCsvListOfNamespaces = $strNamespace
Else
$tmpCsvListOfNamespaces = $tmpCsvListOfNamespaces & "," & $strNamespace
EndIf$strComputer = $g_strWMISource
[/autoit] [autoit][/autoit] [autoit]
$objWMIService = ObjGet("winmgmts:" & $g_strWMISource & "" & $strNameSpace)If not @error Then
[/autoit] [autoit][/autoit] [autoit]$colNameSpaces = $objWMIService.InstancesOf("__NAMESPACE")
[/autoit] [autoit][/autoit] [autoit]For $objNameSpace In $colNameSpaces
[/autoit] [autoit][/autoit] [autoit]
EnumNamespaces($strNameSpace & "" & $objNameSpace.Name, $tmpCsvListOfNamespaces)
Next
Else
$tmpCsvListOfNamespaces=""
EndIfEndFunc
[/autoit] [autoit][/autoit] [autoit];********************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* HandleNamespaceChange
;********************************************************************
Func HandleNamespaceChange();'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; Clear the WMI classes pulldown location.
;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
$strSelectedNamespace = GUICtrlRead ( $GUI_WMI_Namespace ); Disable the namespace combobox until class load has been completed
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($GUI_WMI_Namespace, $GUI_DISABLE)$strWMIWaitMsg = "Please wait, trying to load WMI Classes in namespace " & $strSelectedNamespace
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($GUI_WMI_Classes, $strWMIWaitMsg, $strWMIWaitMsg)
GUICtrlSetData($GUI_AST_ScriptCode,"One moment...","")LoadWMIClasses()
[/autoit] [autoit][/autoit] [autoit]
$g_strCurrentNamespace = "" & $strSelectedNamespace;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; Clear the code textarea and disable run and save.
;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
GUICtrlSetData($GUI_AST_ScriptCode,"","")GUICtrlSetState($GUI_WMI_Namespace, $GUI_ENABLE)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($GUI_AST_RUN, $GUI_DISABLE)
GUICtrlSetState($GUI_AST_SAVE, $GUI_DISABLE)EndFunc
[/autoit] [autoit][/autoit] [autoit];********************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* LoadWMIClasses
;*
;* Fetch all the classes in the currently selected namespace, and
;* populate the keys of a dictionary object with the names of all
;* dynamic (non-association) classes. Then we transfer the keys to
;* an array, sort the array, and finally use the sorted array to
;* populate the WMI classes pulldown.
;********************************************************************
Func LoadWMIClasses()Const $SORT_KEYS = 1
[/autoit] [autoit][/autoit] [autoit]
Const $SORT_ITEMS = 2$objClassDictionary = ObjCreate("Scripting.Dictionary")
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $objClassDictionary = ' & $objClassDictionary & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
$objQualifierDictionary = ObjCreate("Scripting.Dictionary")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $objQualifierDictionary = ' & $objQualifierDictionary & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console$strComputer = "."
[/autoit] [autoit][/autoit] [autoit]
$objWMIService = ObjGet("winmgmts:" & $strComputer & $g_strCurrentNamespace)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $objWMIService = ' & $objWMIService & @crlf & '>Error code: ' & @error & @crlf) ;### Debug ConsoleIf not @error Then
[/autoit] [autoit][/autoit] [autoit]For $objClass in $objWMIService.SubclassesOf()
[/autoit] [autoit][/autoit] [autoit]For $objQualifier In $objClass.Qualifiers_() ; Dummy (), because it ends with an underscore !
[/autoit] [autoit][/autoit] [autoit]
$objQualifierDictionary.Add(StringLower($objQualifier.Name), "")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : StringLower($objQualifier.Name) = ' & StringLower($objQualifier.Name) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
NextIf $objQualifierDictionary.Exists("dynamic") Then
[/autoit] [autoit][/autoit] [autoit];$TempVar = $objClass.Path_.Class
[/autoit] [autoit][/autoit] [autoit]
;$objClassDictionary.Add($TempVar, "") ; Can't use object in arguments ?!!$objClassDictionary.Add($objClass.Path_.Class, "")
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]$objQualifierDictionary.RemoveAll
[/autoit] [autoit][/autoit] [autoit]Next
[/autoit] [autoit][/autoit] [autoit]$objQualifierDictionary = ""
[/autoit] [autoit][/autoit] [autoit];'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; If the current namespace contains dynamic classes...
;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If $objClassDictionary.Count Then;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; Sort the dictionary.
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
SortDictionary($objClassDictionary, $SORT_KEYS);''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; Populate the WMI classes pulldown with the sorted dictionary.
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''$strClassesCombo="|Select a WMI class"
[/autoit] [autoit][/autoit] [autoit]For $strWMIClass in $objClassDictionary ; method .Keys is not an object ??
[/autoit] [autoit][/autoit] [autoit]$strClassesCombo = $strClassesCombo & "|" & $strWMIClass
[/autoit] [autoit][/autoit] [autoit]Next
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetData($GUI_WMI_Classes,$strClassesCombo,"Select a WMI class")
[/autoit] [autoit][/autoit] [autoit]EndIf
[/autoit] [autoit][/autoit] [autoit]
EndIfIf @error Or $objClassDictionary.Count = 0 Then
[/autoit] [autoit][/autoit] [autoit]
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
; And if the current namespace doesn't contain dynamic classes.
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
GUICtrlSetData($GUI_WMI_Classes,"|No dynamic classes found in current namespace.|Select a different namespace","")EndIf
[/autoit] [autoit][/autoit] [autoit];$objClassDictionary = ""
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit];********************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* SortDictionary
;*
;* Shell sort based on:
;* http://support.microsoft.com/support/kb/articles/q246/0/67.asp
;********************************************************************
Func SortDictionary(ByRef $objDict, $intSort)Const $dictKey = 1
[/autoit] [autoit][/autoit] [autoit]
Const $dictItem = 2Dim $strDict[1][3]
[/autoit] [autoit][/autoit] [autoit]$intCount = $objDict.Count
[/autoit] [autoit][/autoit] [autoit]If $intCount > 1 Then
[/autoit] [autoit][/autoit] [autoit]ReDim $strDict[$intCount][3]
[/autoit] [autoit][/autoit] [autoit]$i = 0
[/autoit] [autoit][/autoit] [autoit]
For $objKey In $objDict$strDict[$i][$dictKey] = String($objKey)
[/autoit] [autoit][/autoit] [autoit]
$strDict[$i][$dictItem] = String($objDict($objKey))$i = $i + 1
[/autoit] [autoit][/autoit] [autoit]
Next;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; Perform a shell sort of the 2D string array
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For $i = 0 To ($intCount - 2)
For $j = $i To ($intCount - 1)
If $strDict[$i][$intSort] > $strDict[$j][$intSort] Then
$strKey = $strDict[$i][$dictKey]
$strItem = $strDict[$i][$dictItem]
$strDict[$i][$dictKey] = $strDict[$j][$dictKey]
$strDict[$i][$dictItem] = $strDict[$j][$dictItem]
$strDict[$j][$dictKey] = $strKey
$strDict[$j][$dictItem] = $strItem
EndIf
Next
Next;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; Erase the contents of the dictionary object
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
$objDict.RemoveAll;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; Repopulate the dictionary with the sorted information
;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For $i = 0 To ($intCount - 1)
$objDict.Add($strDict[$i][$dictKey], $strDict[$i][$dictItem])
NextEndIf
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit];********************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* ComposeCode
;********************************************************************
Func ComposeCode()$objClass=""
[/autoit] [autoit][/autoit] [autoit]$strSelectedClass = GUICtrlRead ( $GUI_WMI_Classes )
[/autoit] [autoit][/autoit] [autoit]
; Check if a valid class has been selected
If stringinstr($strSelectedClass,"Select a WMI class")=0 Then$bHasDates = false ; Flag: output has date fields
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$strHeaderStart=Chr(34)
$strRowStart=Chr(34)
$strColumnSeparator=": "
$strRowEnd=" & @CRLF"$strComputerCommand = "$strComputer = " & Chr(34) & $g_strWMISource & Chr(34)
[/autoit] [autoit][/autoit] [autoit]$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!" & @COMPUTERNAME & $g_strCurrentNamespace)
[/autoit] [autoit][/autoit] [autoit]
$objClass = $objWMIService.Get($strSelectedClass)If IsObj($objClass) Then
[/autoit] [autoit][/autoit] [autoit]$strScriptCode = ""
[/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & "; Generated by AutoIt Scriptomatic" & @CRLF & @CRLF
$strScriptCode = $strScriptCode & "$wbemFlagReturnImmediately = 0x10" & @CRLF
$strScriptCode = $strScriptCode & "$wbemFlagForwardOnly = 0x20" & @CRLF
$strScriptCode = $strScriptCode & '$colItems = ""' & @CRLF
$strScriptCode = $strScriptCode & $strComputerCommand & @CRLF & @CRLF
$strScriptCode = $strScriptCode & '$Output=""' & @CRLFIf $g_strOutputFormat = "HTML" then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & "$Output = $Output & '<html><head><title>Scriptomatic HTML Output</title></head><body> " & _
"<style>table {font-size: 10pt; font-family: arial;} th {background-color: buttonface; font-decoration: bold;} " & _
"</style><table BORDER=" & Chr(34) & "1" & Chr(34) & "><tr><th>Property</th><th>Value</th></tr>'" & @CRLF
$strRowStart = Chr(34) & "<tr><td>"
$strHeaderStart = "'<tr bgcolor=" & Chr(34) & "yellow" & Chr(34) & "><td>' & " & Chr(34)
$strColumnSeparator = "</td><td> "
$strRowEnd = " & " & Chr(34) & "</td></tr>" & Chr(34) & " & @CRLF"
EndIf$strScriptCode = $strScriptCode & "$Output = $Output & " & $strHeaderStart & "Computer" & $strColumnSeparator & Chr(34) & " & $strComputer " & $strRowEnd & @CRLF
[/autoit] [autoit][/autoit] [autoit]If $g_strOutputFormat = "Dialog" then
[/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & "$Output = $Output & " & Chr(34) & "==========================================" & Chr(34) & $strRowEnd & @CRLF
EndIf$strScriptCode = $strScriptCode & "$objWMIService = ObjGet(" & Chr(34) & "winmgmts:" & Chr(34) & " & $strComputer & " & Chr(34) & $g_strCurrentNamespace & Chr(34) & ")" & @CRLF
[/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & "$colItems = $objWMIService.ExecQuery(" & Chr(34) & "SELECT * FROM " & $strSelectedClass & Chr(34) & ", " & Chr(34) & "WQL" & Chr(34) & ", _" & @CRLF
$strScriptCode = $strScriptCode & " $wbemFlagReturnImmediately + $wbemFlagForwardOnly)" & @CRLF & @CRLF
$strScriptCode = $strScriptCode & "If IsObj($colItems) then" & @CRLF
$strScriptCode = $strScriptCode & " For $objItem In $colItems" & @CRLFFor $objProperty in $objClass.Properties_() ; Must use (), because method ends with an underscore
[/autoit] [autoit][/autoit] [autoit]If $objProperty.IsArray = True Then
[/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & " $str" & $objProperty.Name & " = $objItem." & $objProperty.Name & "(0)" & @CRLF
$strScriptCode = $strScriptCode & " $Output = $Output & " & $strRowStart & $objProperty.Name & $strColumnSeparator & Chr(34) & " & $str" & $objProperty.Name & $strRowEnd & @CRLF
ElseIf $objProperty.CIMTYPE = 101 Then
$bHasDates = True
$strScriptCode = $strScriptCode & " $Output = $Output & " & $strRowStart & $objProperty.Name & $strColumnSeparator & Chr(34) & " & WMIDateStringToDate($objItem." & $objProperty.Name & ")" & $strRowEnd & @CRLF
Else
$strScriptCode = $strScriptCode & " $Output = $Output & " & $strRowStart & $objProperty.Name & $strColumnSeparator & Chr(34) & " & $objItem." & $objProperty.Name & $strRowEnd & @CRLF
EndIf
NextIf $g_strOutputFormat = "Dialog" then
[/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & ' if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop' & @CRLF
$strScriptCode = $strScriptCode & ' $Output=""' & @CRLF
Endif
$strScriptCode = $strScriptCode & " Next" & @CRLFif $g_strOutputFormat = "Text" then
[/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & ' ConsoleWrite($Output)' & @CRLF
$strScriptCode = $strScriptCode & ' FileWrite(@TempDir & "\' & $strSelectedClass & '.TXT", $Output )' & @CRLF
$strScriptCode = $strScriptCode & ' Run(@Comspec & " /c start " & @TempDir & "\' & $strSelectedClass & '.TXT" )' & @CRLF
Elseif $g_strOutputFormat = "HTML" then
$strScriptCode = $strScriptCode & ' FileWrite(@TempDir & "\' & $strSelectedClass & '.HTML", $Output )' & @CRLF
$strScriptCode = $strScriptCode & ' Run(@Comspec & " /c start " & @TempDir & "\' & $strSelectedClass & '.HTML" )' & @CRLF
Endif$strScriptCode = $strScriptCode & "Else" & @CRLF
[/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & ' Msgbox(0,"WMI Output","No WMI Objects Found for class: " & ' & Chr(34) & $strSelectedClass & Chr(34) & ' )' & @CRLF$strScriptCode = $strScriptCode & "Endif" & @CRLF
[/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & @CRLF & @CRLFIf $bHasDates Then
[/autoit] [autoit][/autoit] [autoit]
$strScriptCode = $strScriptCode & "Func WMIDateStringToDate($dtmDate)" & @CRLF
$strScriptCode = $strScriptCode & @CRLF
$strScriptCode = $strScriptCode & Chr(9) & "Return (StringMid($dtmDate, 5, 2) & ""/"" & _" & @CRLF
$strScriptCode = $strScriptCode & Chr(9) & "StringMid($dtmDate, 7, 2) & ""/"" & StringLeft($dtmDate, 4) _" & @CRLF
$strScriptCode = $strScriptCode & Chr(9) & "& "" "" & StringMid($dtmDate, 9, 2) & "":"" & StringMid($dtmDate, 11, 2) & "":"" & StringMid($dtmDate,13, 2))" & @CRLF
$strScriptCode = $strScriptCode & "EndFunc"
EndIf
Else
$strScriptCode = "Error: No Class properties found for " & $g_strCurrentNamespace & "" & $strSelectedClass
EndIfGUICtrlSetData($GUI_AST_ScriptCode,$strScriptCode)
[/autoit] [autoit][/autoit] [autoit];'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; Once the code is successfully composed and put into the
; textarea, ensure that the run and save buttons are enabled.
;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
GUICtrlSetState($GUI_AST_RUN, $GUI_ENABLE)
GUICtrlSetState($GUI_AST_SAVE, $GUI_ENABLE)Else
[/autoit] [autoit][/autoit] [autoit]
; Disable Run and Save buttons, because no valid code has been generated
GUICtrlSetState($GUI_AST_RUN, $GUI_DISABLE)
GUICtrlSetState($GUI_AST_SAVE, $GUI_DISABLE)
EndIfEndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];********************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* RunScript
;********************************************************************
Func RunScript();'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit]
; Create a temporary script file named "temp_script.au3".
;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''$strTmpName = @TempDir & "\temp_script.au3"
[/autoit] [autoit][/autoit] [autoit]if FileExists($strTmpName) then FileDelete($strTmpName)
[/autoit] [autoit][/autoit] [autoit]FileWrite($strTmpName,GUICtrlRead($GUI_AST_Scriptcode))
[/autoit] [autoit][/autoit] [autoit];'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; Start constructing the command line that will run the script...
;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
$strCmdLine = "c:\programme\autoit3\autoit3.exe" & " " & $strTmpNameRunWait($strCmdLine)
[/autoit] [autoit][/autoit] [autoit]FileDelete($strTmpName)
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];********************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* SaveScript
;********************************************************************
Func SaveScript()$strTmpName=FileSaveDialog("Save Script",@DesktopDir,"AutoIt3 Scripts (*.au3)",16, GUICtrlRead ( $GUI_WMI_Classes ))
[/autoit] [autoit][/autoit] [autoit]if not @error and $strTmpName <> "" then
[/autoit] [autoit][/autoit] [autoit]
if StringRight($strTmpName,4) <> ".AU3" then $strTmpName=$strTmpName & ".AU3"
if FileExists($strTmpName) then FileDelete($strTmpName)
FileWrite($strTmpName,GUICtrlRead($GUI_AST_Scriptcode))
EndIfEndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];********************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* OpenScript
;********************************************************************Func OpenScript()
[/autoit] [autoit][/autoit] [autoit]$strTmpName=FileOpenDialog("Open Script",@DesktopDir,"AutoIt3 Scripts (*.au3)")
[/autoit] [autoit][/autoit] [autoit]If not @error and $strTmpName <> "" then
[/autoit] [autoit][/autoit] [autoit]
If FileExists($strTmpName) then
GUICtrlSetData($GUI_AST_ScriptCode,FileRead($strTmpName,FileGetSize($strTmpName)))
EndIf
EndIfEndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];****************************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* SetNamespaceToCIMV2
;****************************************************************************
Func SetNamespaceToCIMV2()
If StringUpper(GUICtrlRead($GUI_WMI_Namespace)) <> "ROOT\CIMV2" Then
GUICtrlSetData($GUI_WMI_Namespace,"ROOT\CIMV2","ROOT\CIMV2")
HandleNamespaceChange()
EndIf
EndFunc;****************************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* SetWMIRepository
;****************************************************************************
Func SetWMIRepository()$strWMISourceName = InputBox("Set WMI Repository Source", _
[/autoit] [autoit][/autoit] [autoit]
"Please enter the computer whose WMI repository you want to read from: ", _
$g_strWMISource)
If $strWMISourceName <> "" Then$g_strWMISource = StringStripWS($strWMISourceName,1+2)
[/autoit] [autoit][/autoit] [autoit]
;target_computers.Value = $g_strWMISource
LoadWMINamespaces()
Endif
EndFunc;****************************************************************************
[/autoit] [autoit][/autoit] [autoit]
;* HandleOutputChange
;****************************************************************************
Func HandleOutputChange()$ChosenFormat = $g_strOutputFormat
[/autoit] [autoit][/autoit] [autoit]
if GUICtrlRead($GUI_AST_RadioDialog)=$GUI_CHECKED then $ChosenFormat="Dialog"
if GUICtrlRead($GUI_AST_RadioText)=$GUI_CHECKED then $ChosenFormat="Text"
if GUICtrlRead($GUI_AST_RadioHTML)=$GUI_CHECKED then $ChosenFormat="HTML"
if $ChosenFormat <> $g_strOutputFormat Then
$g_strOutputFormat = $ChosenFormat
ComposeCode()
EndIf
EndFuncFunc Filter()
[/autoit]
$filter =InputBox("Class Filter","Filter","","",200,150)
if @error then
msgbox(0,"Error in Function Filter","Filter Error or no Filter selected",2)
else
$strClassesCombo="|Select a WMI class filtered with "&$filter
For $strWMIClass in $objClassDictionary ; method .Keys is not an object ??
if $filter="" or stringinstr($strWMIClass,$filter) then
$strClassesCombo = $strClassesCombo & "|" & $strWMIClass
EndIf
Next
endif
if $filter="" then
GUICtrlSetData($GUI_WMI_Classes,$strClassesCombo,"Select a WMI class")
Else
GUICtrlSetData($GUI_WMI_Classes,$strClassesCombo,"Select a WMI class filtered with "&$filter)
endif
endfunc//EDIT
Durch die Forensoftware werden in den Scripten Backslashes "gefressen". Diese gehören zu -
Hi,
eben per AutoIt Scriptomatic folgendes Script erstellen lassenSpoiler anzeigen
[autoit]; Generated by AutoIt Scriptomatic
[/autoit] [autoit][/autoit] [autoit]$wbemFlagReturnImmediately = 0x10
[/autoit] [autoit][/autoit] [autoit]
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"$Output=""
[/autoit] [autoit][/autoit] [autoit]
$Output = $Output & "Computer: " & $strComputer & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\" & $strComputer & "")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)If IsObj($colItems) then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
For $objItem In $colItems
$Output = $Output & "BytesReceivedPersec: " & $objItem.BytesReceivedPersec & @CRLF
$Output = $Output & "BytesSentPersec: " & $objItem.BytesSentPersec & @CRLF
$Output = $Output & "BytesTotalPersec: " & $objItem.BytesTotalPersec & @CRLF
$Output = $Output & "Caption: " & $objItem.Caption & @CRLF
$Output = $Output & "CurrentBandwidth: " & $objItem.CurrentBandwidth & @CRLF
$Output = $Output & "Description: " & $objItem.Description & @CRLF
$Output = $Output & "Frequency_Object: " & $objItem.Frequency_Object & @CRLF
$Output = $Output & "Frequency_PerfTime: " & $objItem.Frequency_PerfTime & @CRLF
$Output = $Output & "Frequency_Sys100NS: " & $objItem.Frequency_Sys100NS & @CRLF
$Output = $Output & "Name: " & $objItem.Name & @CRLF
$Output = $Output & "OffloadedConnections: " & $objItem.OffloadedConnections & @CRLF
$Output = $Output & "OutputQueueLength: " & $objItem.OutputQueueLength & @CRLF
$Output = $Output & "PacketsOutboundDiscarded: " & $objItem.PacketsOutboundDiscarded & @CRLF
$Output = $Output & "PacketsOutboundErrors: " & $objItem.PacketsOutboundErrors & @CRLF
$Output = $Output & "PacketsPersec: " & $objItem.PacketsPersec & @CRLF
$Output = $Output & "PacketsReceivedDiscarded: " & $objItem.PacketsReceivedDiscarded & @CRLF
$Output = $Output & "PacketsReceivedErrors: " & $objItem.PacketsReceivedErrors & @CRLF
$Output = $Output & "PacketsReceivedNonUnicastPersec: " & $objItem.PacketsReceivedNonUnicastPersec & @CRLF
$Output = $Output & "PacketsReceivedPersec: " & $objItem.PacketsReceivedPersec & @CRLF
$Output = $Output & "PacketsReceivedUnicastPersec: " & $objItem.PacketsReceivedUnicastPersec & @CRLF
$Output = $Output & "PacketsReceivedUnknown: " & $objItem.PacketsReceivedUnknown & @CRLF
$Output = $Output & "PacketsSentNonUnicastPersec: " & $objItem.PacketsSentNonUnicastPersec & @CRLF
$Output = $Output & "PacketsSentPersec: " & $objItem.PacketsSentPersec & @CRLF
$Output = $Output & "PacketsSentUnicastPersec: " & $objItem.PacketsSentUnicastPersec & @CRLF
$Output = $Output & "Timestamp_Object: " & $objItem.Timestamp_Object & @CRLF
$Output = $Output & "Timestamp_PerfTime: " & $objItem.Timestamp_PerfTime & @CRLF
$Output = $Output & "Timestamp_Sys100NS: " & $objItem.Timestamp_Sys100NS & @CRLF
if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
$Output=""
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_PerfRawData_Tcpip_NetworkInterface" )
Endiffunktioniert bei mir Win7/64 einwandfrei
-
Hi,
man sollte an filegetsize() den gesamten Pfad übergeben und nicht nur den Dateinamen.Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <File.au3>$pfad = "c:\windows\system32"
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$a = _GetFilesFolder_Rekursiv($pfad, '*', 0)
;_ArrayDisplay($a)Local $a2[Ubound($a)][2] = [[$a[0], '']]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $a[0]
$a2[$i][0] = $a[$i]
$iSize = FileGetSize($a[$i])/1028
If @error Then ConsoleWrite("Fehler bei Datei: " & $a[$i] & @LF)
$a2[$i][1] = Round($iSize) & " kB"
Next
$a = ''
_ArrayDisplay($a2);==================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
; Description: Rekursive Auflistung von Dateien und/oder Ordnern
; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
; optional: $iRetType 0 gibt Array, 1 gibt String zurück
; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
; 0 -@CRLF (Standard) 1 -@CR 2 -@LF 3 -';' 4 -'|'
; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;==================================================================================================
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
Switch $sDelim
Case '1'
$sDelim = @CR
Case '2'
$sDelim = @LF
Case '3'
$sDelim = ';'
Case '4'
$sDelim = '|'
Case Else
$sDelim = @CRLF
EndSwitch
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFuncFunc _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
[/autoit]
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc -
Hi,
man kann dein Problem im von dir dargestellten Kontext sehr schlecht verstehen, daher zeige bitte dein komplettes bisheriges Script! -
Glücklichen Herzwunsch und alles Gute!!!
-
Zitat
Aha, also 1ms für ein Wort
yepp, und wenn es 3wps oder 8000wps oder 3.1415E1337wps wären, würde es an der Aussage bzw. deren Inhalt etwas ändern?

Da Lesen, wie BugFix bereits ausgeführt hat, sehr individuell ausgeprägt ist, würde mich immens interessieren, wann die ebook-Reader von Spritz/Spreeder-Apps für Smartphones abgelöst werden. Wenn fest steht, dass Texte mittels Spritz/Spreeder-ähnlicher Applikationen schneller ERFASST werden, dann ist im Endeffekt JEDE Textansammlung als Spritz/Spreeder-Anwendung möglich. Ein herkömmlicher ebook-Reader also obsolet!
Was den Kreis zu BugFixens Zeitung im Zug schliesst.
Das arme Schwein, welches zzt. die Zeitung LANGSAM liest, sucht später nun anhand konzentrierter Stichwörter bestimmte Artikel aus einer "komprimierten Liste" aus....mal angenommen, er würde wirklich schneller lesen (können), anhand welcher Information würde er die für ihn relevanten Artikel nach seinem Gusto sortieren? Artikellänge? Bild dabei? Größe der Überschrift (
) ?
Oder könnte man jetzt sagen, der Leser könnte auch den für ihn völlig uninteressanten Inhalt ALLER Artikel in einer Zeitung lesen, da er nun in der Lage ist, schneller zu lesen?
Zuende gesponnen, wieviel Zeit könnte man beim Lesen einer Zeitung sparen, wenn der unwichtige Kram erst garnicht geschrieben würde?
Und wieso werden dann im Gegenzug mit SMS/FB/Whatssapp usw., welche nur im Promillebereich "wichtige" Informationen verbreiten, Milliarden verdient?Wurden also Spritz/Spreeder-Anwendungen entwickelt, damit man die Zeit, die man mit dem Verbreiten von SMS/FB/blablub vertan hat, wieder "reinholen" kann?

-
Hi,
so "ganz genau" weiss ich nicht worauf du hinaus willst, aber zuZitateigentlich versuche ich durchzuschauen wie man von Font bis bit-array komme
habe ich etwas für dich^^
Die dort von mir gepostete "Anzeige" einer Digitaluhr nutzt exzessiv den Minimalismus Font/Bitarray. Der angehängte Text beschreibt den WEG vom Font zum Bitarray und wieder zurück...
Wie gesagt, das ist exzessiver Minimalismus unter Anwendung programmiertechnischer Tricks und Kniffe!
Aber die Methode an sich ist gängig... -
Zitat
und schnell verschlingt man ganze Artikel ohne den Verlust von Infos
ZitatDas Wichtige ist in so einem Fall der Inhalt, und den erfasse ich bei 600 (oder 1000) wpm natürlich schneller als bei 200
wzbw
Zitatdie Anwendung iReadFast geladen. Sie arbeitet eher wie Spreeder als wie Spritz, passt aber das Timing der Wörter individuell an
made my day
...eine Anwendung die MIR als User vorgibt, in welcher Geschwindigkeit ich etwas zu kapieren habe oder aber auch nicht?ZitatWenn so ein Kuddelmuddel über den Bildschirm gejagt wird, dann gute Nacht.... Da muss man sich das Ganze dreimal angucken, bis man es verstanden hat, und letztendlich wärst du wohl schneller, wenn du die Nachricht normal gelesen hättest.
Reingefallen!
SMS war und ist, genau wie sämtliche andere der Kurznachricht-Apps bzw. Anwendungen, die LANGSAMSTE Form der Kommunikation überhaupt.
Ein schon in der Anlage völlig langsamne Art der Kommunikation um 0.2% zu beschleunigen, ist genau so, wie eine absolut gesehen langsame Implementation eines Algorithmus in einem Programm auf einem schnelleren Prozessor auszuführen...
Murks wird auch nicht besser, wenn er schneller ausgeführt wird
Das was meine Tochter in Highspeed per SMS mit ihren Freundinnen in einer Stunde simst, erledigen meine Frau und ich per Gespräch in nicht mal 5 Minuten.Stell dir einfach mal vor, du zockst in einem MMORPG/Shooter und willst dort irgendwelchen Progamern erzählen, es wäre besser und auch schneller, den Chat anstatt das TS/Ventrilo/Skype zu nutzen, da man in der Lage ist, 1000wps LESEN zu können!
Ich könnte mir allerdings eine Anwendung wie bspw. für Google Glass vorstellen, die auf "Knopfdruck" KURZE Informationen zu im Blickfeld befindlichen Objekten per Spritz/Spreed-Technik einblendet/ggf. in die eigene Sprache übersetzt. Das wäre sicherlich cool, besonders im Hinblick auf Personen

-
Hi,
schau dir mal die Verfahren zur Optimierung, bspw. Zuschnittoptimierung von Stangen oder Platten an. Also n verschiedene Längen/Flächen, die möglichst ohne (oder minimalem) Rest aus vorhandenen Stangen/Platten herausgeschnitten werden sollen.
Da wird nicht mit n-dimensionalen Array´s gearbeitet, das würde den Speicher komplett sprengen
Viel eher werden Sortierverfahren genutzt. Man nimmt die größten Teilstücke und fügt sie so lange aneinander, bis das vorgegebene Limit erreicht (dann Ende) oder überschritten wird. Dann geht man einen Schritt zurück und nimmt das nächste kleinere Teilstück uswusf, bis entweder die genaue Länge/Fläche (bei dir die Summe) erreicht ist, oder (bei einer Zuschnittoptimierung) das Reststück möglichst klein ist.
Bei einer Zuschnittoptimierung wäre hier Schluss, da das "Optimum" erreicht wurde.
In deinem Fall beendet man den Algorithmus aber nicht, sondern lässt ihn so lange weiterlaufen, bis die Summe ausschliesslich von den kleinsten "Teilstücken" erreicht wurde. Das ist die letzte aller möglichen Lösungen und das Abbruchkriterium wurde erreicht.