1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. AutoMit

Beiträge von AutoMit

  • Listview-Datenbank v3

    • AutoMit
    • 26. September 2017 um 19:43

    Hallo Oscar,

    das ist ein sehr interessantes Script. Vielen Dank!

    (1)

    "Und zum Anderen die "Treffersuche" (Aufruf mit gedrückter Shift-Taste), hier wird ein extra Suche-Listview angezeigt, indem alle Suchtreffer aufgelistet sind (und nur diese)."

    "Zurück zum normalen Daten-Listview kommt man, wenn man die Suche mit leerem Eingabefeld startet."

    Ich komme von der Treffersuche (nur Fundstellen) nicht mehr zurück zu der kompletten Datenbank, auch wenn ich die Suche mit dem leeren Eingabefeld starte.


    Was tun?

    (2)

    Wenn ich in der „Treffersuche“ bin, also es werden nur die Fundstellen angezeigt, und ich klicke einen Eintrag an und dann auf den Button „Eintrag bearbeiten“, dann erscheint in der Vorgabe der erste Datensatz der Treffersuche und nicht der ausgewählte Datensatz.


    Kannst Du das korrigieren? Oder bediene ich das Tool falsch?

    (3)

    Ist es gewollt, dass die vorherigen Fundstellen hervorgehoben bleiben, auch wenn ein neuer Suchbegriff in der Standardsuche eingegeben wurde?

    (4)

    Ich starte das Programm. Ich lade die Datenbank. Als erste Suche gebe ich eine Treffersuche (also mit der Tastenkombination Umschalt Enter) ein.


    Die Fundstellen werden angezeigt, ich kann jedoch keinen über den Button „Eintrag bearbeiten“ bearbeiten.


    Kann es sein, dass die Funktion „Eintrag bearbeiten“ (noch) nicht in der Treffersuche funktioniert? Gerade die Treffersuche ist es, welches dieses Programm so interessant macht, da man alle Fundstellen auf einen Blick hat.

    Viele Grüße

  • GUICtrlClock

    • AutoMit
    • 26. September 2017 um 19:15

    Hallo,

    vielen Dank für das Script.

    Wenn ich in der UDF die Zeile

    $fBlink = Not $fBlink

    deaktiviere, dann blinkt nichts mehr (= mein Ziel :-)).

    Was muss man ändern, damit man das blinken beim Programmaufruf aktivieren bzw. deaktivieren kann?

  • Datum im Dateinamen ändern - Ordnung im Chaos

    • AutoMit
    • 26. September 2017 um 18:23

    Hallo,

    viele Dateien hier sind hinsichtlich der Namenskonvention im Chaos versunken.

    Wie stellt man das am besten an, dass man zum einen die Muster findet (reguläre Suche?) und den neuen Dateinamen erstellt?

    Es gibt leider viele Schreibweisen, wie die Dateien benannt wurden. Jetzt soll Ordnung in das Chaos.

    Mit welcher Syntax würdet Ihr die Dateinamen so aufsplitten, dass man einen neuen Dateinamen aus Wort und Datum (Jahr-Monat bzw. Jahr-Monat-Tag) erstellen kann? Ich vermute, ich muss Muster mit der regulären Suche suchen, daran scheitere ich.

    Alle Dateien in ein Array einlesen und zeilenweise abarbeiten, das bekomme ich hin. Den Dateinamen zerlegen in Name und Erweiterung, auch das klappt. Und dann bin ich mit meinem Latein am Ende. Unten im Codeblock stehen einige der Dateinamen mit einem Datumsmuster, wie ich es auf der Festplatte vorgefunden habe.

    Vielleicht kennt sich hier jemand sehr gut mit der regulären Mustersuche aus bzw. es gibt ggf. noch eine alternative Möglichkeit?

    Danke und Glückwunsch zum neuen Forums-Design :)

    Code
    Beispiele -> so soll der Dateiname lauten
    
    
    Dateiname 6.17.pdf                     Dateiname 2017-06.pdf
    
    
    Dateiname 0117.txt                      Dateiname 2017-01.txt
    
    
    Dateiname 07.17.xls                    Dateiname 2017-07.xls
    
    
    Dateiname09.2017.pdf                Dateiname 2017-09.pdf
    
    (Achtung - im alten Dateinamen gibt es keine Leerzeichen zwischen Wort und Zahl)
    
    
    2.17 Dateiname.txt                      Dateiname 2017-02.txt
    
    (Achtung - in diesem Fall steht das Datum vor dem Dateinamen)
    
    
    Dateiname 06-17de.docx             Dateiname 2017-06.docx
    
    (Achtung, das nachgestellte de hinter dem Datum muss geslöscht werden
    
    
    0516 Dateiname.xls                      Dateiname 2016-05.xls
    
    (Achtung - in diesem Fall steht das Datum vor dem Dateinamen)
    Alles anzeigen
  • Lautstärke einstellen Windows - SoundSetWaveVolume - Bass udf

    • AutoMit
    • 14. Juni 2017 um 09:32

    Hallo Oscar,


    Zitat von Oscar

    Weshalb möchtest Du den Masterregler verändern?


    Mein Ziel ist es, die Master-Lautstärke mit AutoIt zwischen 0 (mute) und 100 (laut) umzuschalten, in Abhängigkeit davon, welcher Wert vorher eingestellt war (0 oder 100).
    (wie beim Fernseher mute / unmute :) ... geht nun mit Alpines Tool)


    Zitat von Oscar

    Es verändert nämlich nicht den Masterregler, sondern den Regler für die jeweilige Anwendung.

    In der Hilfe zu SoundSetWaveVolume fand ich nur die Angabe der Lautstärke, aber keine Möglichkeit, eine Anwendung, wie z.B. Chrome mit anzugeben. Wie mache ich das?
    Wie sage ich also, Lautstärke für Chrome auf 0 setzen?

  • Lautstärke einstellen Windows - SoundSetWaveVolume - Bass udf

    • AutoMit
    • 14. Juni 2017 um 08:53

    Vielen Dank alpines für den guten Tipp - ein interessantes Tool.

    grünen Harken gesetzt

    PS: Wer mag kann gerne noch was erhellendes zu SoundSetWaveVolume schreiben und wie ich es zum Leben erwecken könnte :)

  • Lautstärke einstellen Windows - SoundSetWaveVolume - Bass udf

    • AutoMit
    • 14. Juni 2017 um 07:27

    Hallo,

    mein Ziel ist es, die Master-Lautstärke mit AutoIt zwischen 0 (mute) und 100 (laut) umzuschalten, in Abhängigkeit davon, welcher Wert vorher eingestellt war (0 oder 100).
    Wie kann ich das tun? Bisher versuchte ich:

    (a)


    SoundSetWaveVolume (100)
    SoundPlay(@WindowsDir & "\media\tada.wav", 1)
    SoundSetWaveVolume (0)

    Der Befehl SoundSetWaveVolume bewirkt unter Windows 8 / 64 nichts. Im Lautstärkemixer (Realteak Digital Output) bleibt der Master-Lautstärke-Wert unverändert.

    Was tun?

    (b)

    Auch meine Versuche mit der Bass UDF brachten nichts. Wobei die Bass UDF ein Kaliber ist, was ich für obige Aufgabe wenige einsetzen möchte.

    SoundsetwaveVolume - Problem

    Ich habe folgende Dateien ins include Verzeichnis gepackt und obiges Script getestet.

    BASS.au3
    Bass.dll
    BASSconstants.au3

    auch der Austausch der Dateien aus dem 64 bit Verzeichnis brachte nichts.

    (c)

    PS: Ist die Sound.au3 standardmäßig im AutoIt-Setup enthalten? In einer älteren Installation auf einem anderen PC fand ich die, in der aktuellen Version nicht. (Am Rande gefragt.)

    Danke und einen sonnigen Tag :)

  • Bilder verschieben per Drag and Drop

    • AutoMit
    • 24. März 2017 um 13:02

    Die Frage scheint zu komplex oder zu schwer zu sein.

    Ich reduziere mein Anliegen auf einen Punkt:

    (2) Wie kann ich die Bilder per Drag / Drop von der Spalte in das Tabellenraster ziehen und wieder zurück in die Spalte?
    Ein Bild, welches per Drag / Drop verschoben wurde, verschwindet von ehemaligen Platz und erscheint auf dem neuen Platz.

    Da ich Bilder bereits anzeigen konnte, kann ich weiter tüffteln, wenn ich sie per Drag / Drop verschieben kann.

    Ein schönes und sonniges Wochenende allen und Danke :)

  • Bilder verschieben per Drag and Drop

    • AutoMit
    • 20. März 2017 um 11:49

    Hallo,

    ich möchte alle Bilder aus einem Verzeichnis in eine Seitenleiste laden (vergleiche Screenshot).

    [Blockierte Grafik: http://img5.fotos-hochladen.net/thumbnail/tabellebilderp16mx43tzg_thumb.jpg]

    Ein Einzelbild zu laden und anzuzeigen habe ich raustüffeln können ... nach über 5 Stunden ;) und Anlehnung eines Scripts von autobert (glaube ich) - harte Nuss, erst sehr spät gefunden.

    AutoIt
    #include <GDIPlus.au3>		;	für Bildanzeige
    #include "GUICtrlPic.au3"
    
    
    $idfrmMain = GUICreate("JPGs sortieren ", 924, 550, -1, -1, -1, $WS_EX_ACCEPTFILES)
    GUISetState()
    
    
    Global $Position_x = 5
    Global $Position_y = 5
    Global $counter = 0
    
    
    #comments-start
    Daraus müsste eine Schleife werden, die alle Bilder einzes Verzeichnisses lädt
    geht über
    $a_DateiListe = _FileListToArray ( $Verzeichnis_Bilder , $Filter_Bilder )
    #comments-end
    
    
    $Pfad_zum_Bild = @ScriptDir & "\k-1.jpg"
    _ShowPic($Pfad_zum_Bild )
    
    
    $Pfad_zum_Bild = @ScriptDir & "\k-2.jpg"
    _ShowPic($Pfad_zum_Bild )
    
    
    
    
    While 1
    	Sleep (10)																	; 	kurze Pause
    	$msg = GUIGetMsg()
    	Switch $msg
    		Case $GUI_EVENT_CLOSE
    			Exit
    	EndSwitch
    WEnd
    
    
    
    
    Func _ShowPic ( $Pfad_zum_Bild )
    	_GDIPlus_Startup ()		;		Initialisiert (startet) Microsoft Windows GDI+
    	Local $handle_Bild = _GDIPlus_ImageLoadFromFile($Pfad_zum_Bild)		;		Erstellt ein Bild-Objekt basierend auf einer Datei
    	Local $iX = _GDIPlus_ImageGetWidth($handle_Bild)		;		Ermittelt die Bildbreite
    	Local $iY = _GDIPlus_ImageGetHeight($handle_Bild)		;		Ermittelt die Bildhöhe
    	_GDIPlus_ImageDispose($handle_Bild)								;		Gibt das Bild-Objekt frei	(# was bedeutet das?)
    	_GDIPlus_Shutdown()														;		Gibt die durch Microsoft Windows GDI+ verwendeten Ressourcen wieder frei
    	$Position_x = ($counter * ( $iX / 2 )) + ($counter * 5) + 5 	;	bei Bildern mit halber Größe ... mit Abstand
    	$hPic = _GUICtrlPic_Create ( $Pfad_zum_Bild, $Position_x , $Position_y , $iX / 2, $iY / 2, $SS_CENTERIMAGE , Default )		;		#include "GUICtrlPic.au3"		;		Bild anzeigen
    	$counter = $counter + 1
    EndFunc   ;==>_ShowPic
    Alles anzeigen


    Per Drag and Drop sollen diese Fotos (unterschiedliche Anzahl pro Verzeichnis, daher z.B. in der rechten Seitenleisten in 2 oder 3 Spalten anzeigen.
    Die Bildschirmoberfläche kann in Desktopgröße sein (braucht viel Platz).

    4 Probleme sehe ich bei dieser Variante "Bilder zu sortieren" (sollen später in der Reihenfolge weiter bearbeitet werden).

    (1) Wie erzeuge ich die Bilder in 2 Spalten und zeige diese dann in der rechten Spalte an?
    (Gibt es eine bessere grundlegende Möglichkeit für die Bildanzeige als obiges Entwurfs-Script oder ist GDIPlus die erste Wahl?)

    (2) Wie kann ich die Bilder per Drag / Drop von der Spalte in das Tabellenraster ziehen und wieder zurück in die Spalte?
    Ein Bild, welches per Drag / Drop verschoben wurde, verschwindet von ehemaligen Platz und erscheint auf dem neuen Platz.
    Kann man das auf einer Form unterbringen, oder sollte man dazu 2 Fenster verwenden (Tabelle und rechte SeitenSpalte)?

    Das Screenshot verdeutlicht das recht gut (auch wenn die Bilder dort nur symbolisch zu sehen sind - Doubletten sind zwar auf dem Screenshot, sollen im fertigen Script natürlich nicht sein).

    (3) Wie ermittle ich, wieviele Bilder in jeder Tabellenzeile zu sehen sind und wie kann ich die Dateinamen der Bilder einer Zeile speichern?

    (4) Wie speichere ich den aktuellen Status der Sortierung, so dass dieser wieder geladen werden kann.

    Hat jemand sowas schon mal gescriptet?

    Danke :)

  • Treeview Pfad setzen

    • AutoMit
    • 19. März 2017 um 21:54
    Zitat von alpines

    TreeViews

    Das sieht gut aus - vielen Dank und ein schönes Wochenende :)

    Brauchte gar nicht in die Untiefen von _GUICtrlTreeView_ tauchen.

    Grünen Haken gesetzt.

  • Treeview Pfad setzen

    • AutoMit
    • 18. März 2017 um 15:19
    Zitat von alpines

    Kannst du nicht nach dem 1. Item im Pfad suchen und dann seine Unteritems durchgehen?

    Ich weiß leider nicht, wie. Daher meine Bitte um ein Beispiel.

  • Treeview Pfad setzen

    • AutoMit
    • 18. März 2017 um 14:58
    Zitat von alpines

    Ist es denn deine eigene GUI oder eine Fremd-GUI?

    Es ist eine Fremd-GUI, ein Programm mit einem SysTreeView321.


    Zitat von alpines

    Das $iIndex (NICHT $hItem) musst du herausfinden. Du kannst ja durch alle Einträge durchgehen und die Texte (bzw. Pfade) vergleichen.
    Hast du den übereinstimmenden Pfad, so nimmst du den Index beim Click


    Genau das ist mein Problem.

    Ich weiß nicht wie ich das machen kann. Hast Du dafür ein Beispiel?

    Ich dachte - Pfad vorhanden - als Parameter übergeben, Script geht den Pfad lang bis zum Ziel :)
    (was man sonst per Hand im Treeview anklicken würde)

  • Treeview Pfad setzen

    • AutoMit
    • 18. März 2017 um 14:35
    Zitat von alpines

    Item anklicken


    (1)

    Da ich mich in einem Treeview befinde, ist bestimmt folgender Click Befehl notwendig (richtig?):

    _GUICtrlTreeView_ClickItem($hWnd, $hItem)

    $hWnd - das habe ich (Control-ID / Handle des Controls)

    Problem - wie bekomme ich das "$hItem" (Handle des Items, welches ich anklicken will)?

    Ich weiß nur den Pfad zum Item, welches angeklickt werden soll
    (es ist ein Dateimanager, den Pfad kenne ich):
    Beispiel
    "Dieser PC|3 Lesen (F) - 20 GB (F:)|Test|Mal|an"

    Wie bekomme ich nun das Handle des Items, welches ich anklicken möchte, ohne es vorher angeklickt zu haben?

    (2)

    _GUICtrlTreeView_ClickItem($hWnd, $hItem)

    funktioniert nur, wenn das TreeView ausgeklappt ist.

    .... ich suche also einen Befehl, der ausgehend von dem Pfad
    "Dieser PC|3 Lesen (F) - 20 GB (F:)|Test|Mal|an"

    im Treeview nacheinander anklickt
    1. Dieser PC
    dann 2. 3 Lesen (F) - 20 GB (F:)
    dann 3. Test
    dann 4. Mal
    dann 5. an

    Gibt es dafür eine Funktion in der UDF für _GUICtrlTreeView_?

    Und zwar ohne, dass ich das jeweilige Handle kenne. Ich kenne namentlich nur den Pfad (die einzelnen Elemente des TreeView).

  • Treeview Pfad setzen

    • AutoMit
    • 18. März 2017 um 14:22
    Zitat von alpines

    Du willst das Item anklicken? https://www.autoitscript.com/autoit3/docs/l…w_ClickItem.htm


    Lach - ja so könnte man auch sagen. Click.

    Ich probiere es aus - ich glaube, das müsste es sein.

    Danke :)

  • Treeview Pfad setzen

    • AutoMit
    • 18. März 2017 um 14:17

    :) ich möchte im TreeView einfach die Stelle

    "Dieser PC|3 Lesen (F) - 20 GB (F:)|Test|Mal|an"

    ansteuern / selektieren / auswählen.

    Ich weiß leider nicht, mit welchem Befehl ich den untersten Zweig des Pfades selektieren kann.

    Ich habe den kompletten Pfad und möchte mich da hin hangeln.

    Das ist ein Dateipfad, da will ich nichts löschen. Nur auswählen im TreeView.

  • Treeview Pfad setzen

    • AutoMit
    • 18. März 2017 um 14:08

    Hallo,

    (a)

    wie lautet das Gegenstück zu _GUICtrlTreeView_GetTree?
    ... Ermittelt den kompletten Pfad bis hin zum gewünschten Item

    _GUICtrlTreeView_SetTree ist es nicht :)
    gesucht wird:
    "... setzt den kompletten Pfad bis hin zum gewünschten Item"

    (b)

    Mit _GUICtrlTreeView_GetTree erhalte ich z.B.

    Dieser PC|3 Lesen (F) - 20 GB (F:)|Test|Mal|an

    Wenn ich diesen Pfad setzten möchte, muss ich wahrscheinlich die gleiche Bezeichnung wählen, oder findet die Funktion (die ich noch nicht kenne) anstelle von "3 Lesen (F) - 20 GB (F:)" auch "(F:)" ... ich vermute nicht.


    Danke und ein schönes Wochenende :)

  • Text mit AutoIt in Word einfügen in unterschiedlichen Schriftarten

    • AutoMit
    • 13. März 2017 um 12:19
    Zitat von alpines

    Ich weiß ja nicht wie lange du hier bist aber ich habe hier schon ziemlich häufig Threads zu Outlook, Excel und Word gesehen.

    Ich bezog mich nur auf Word und die Forensuche :)

    _Word_DocRangeSet

    21 Fundstellen (und noch wesentlich weniger Threads) .... das ist für mich subjektiv wenig.

    Ein weiteres Indiz - niemand außer Water hat fachlich was zum Thema Word UDF hier geschrieben.

    Wenn ein Thema nur wenige Spezialisten anlockt, ist es meiner Meinung nach ein Nischenthema.

    Wie dem auch sei, letztendlich ist das subjektiv und unwichtig.

    Ich bin dankbar dafür, dass die UDF so gut funktioniert.

    Zitat von water

    Jetzt weiß ich nur nicht, ob Word mein bestes (=fehlerfreistes) UDF ist oder ob es bloss kein Mensch benutzt

    Oh - das ging unter, dass die UDF von Dir ist.

    Die Möglichkeiten mit Deiner Word-UDF sind faszinierend.

    Die Einstiegshürden waren für mich sehr hoch (Anfänger eben :) ... mittlerweile kann ich über den dauerhaften Titel schmunzeln.

    Als nächstes versuche ich mich dann mit der Excel UDF.

    Langfristiges Ziel ist es, aus Excel aus den Spalten J bis O alle Zellwerte zu kopieren für die aktuelle Woche (Datum steht in einer Spalte), diese in AutoIt aufzuarbeiten und in Word an unterschiedlichen Stellen datumsabhängig einzufügen.

    Aber das ist ein anderes Thema mit gefühlt vielen Hürden.

  • Text mit AutoIt in Word einfügen in unterschiedlichen Schriftarten

    • AutoMit
    • 13. März 2017 um 08:58

    Vielen Dank Water, grünen Haken gesetzt :)

    Jetzt geht's ans Testen.

    PS: im Forum steht relativ wenig über AutoIt und Word (im Vergleich zu anderen Themen), scheint eher ein Nischenthema zu sein?

  • Text mit AutoIt in Word einfügen in unterschiedlichen Schriftarten

    • AutoMit
    • 12. März 2017 um 19:56
    Zitat von water

    Pfeiltasten klingen nach Automatisierung des GUI


    Guten Abend Water,

    das möchte ich natürlich nicht.

    Ich komme noch nicht klar mit "_Word_DocRangeSet".

    Text einfügen am Ende:
    $oRange = _Word_DocRangeSet($oDoc, -2)
    ... das geht

    Mir erschließt sich die Syntax aus der englischen Hilfe nicht.

    _Word_DocRangeSet ( $oDoc, $vRange [, $iStartUnit = Default [, $iStartCount = Default [, $iEndUnit = Default [, $iEndCount = Default]]]] )

    Wenn ich das richtig verstehe, wird ein Bereich (Range) definiert. Und dann kann man davor oder danach was einfügen. Ich schaffen gedanklich den Bogen nicht von der Range zu dem Ziel:

    "Text 1" einfügen, ausgehend von der aktuellen Position ...

    2 Worte weiter nach links / rechts - in der aktuellen Zeile
    2 Zeilen höher / tiefer
    an den Anfang / Ende der aktuellen Zeile
    an den Anfang / Ende des aktuellen Absatzes
    2 Absätze höher / tiefer

    Wie mache ich das unter Verwendung der Word.au3?

  • Text mit AutoIt in Word einfügen in unterschiedlichen Schriftarten

    • AutoMit
    • 12. März 2017 um 16:27
    Zitat von water

    Mit _Word_DocAttach verbindet sich das Skript mit einem bereits geöffneten Dokument.

    Verwende $oRange.InsertBreak(6) (vermute ich zumindest).


    Fast geschafft :) Danke Water :)


    (1)

    Wo findet man eine Übersicht über Variablen und Tastencodes, wie $wdLineBreak, die man ohne Fensterfocus an Word als Eingbe senden kann?

    Habe in der Hilfe und der word UDF geschauft unb bin leider nicht fündig geworden.

    Also sowas wie
    Echter Zeilenumbruch
    Pfeiltasten 3x nach links
    und vergleichbares.

    (2)

    Gibt es (eventuell von Dir) ein (deutschsprachiges) gutes Tutorial für die Word.au3?

    Es ist erstaunlich, welche Möglichkeiten es gibt :)

  • Text mit AutoIt in Word einfügen in unterschiedlichen Schriftarten

    • AutoMit
    • 12. März 2017 um 14:17
    Zitat von water

    Mit _Word_DocAttach verbindet sich das Skript mit einem bereits geöffneten Dokument.


    Hallo Water,

    wo könnte der Fehler in meinem Script liegen?

    Habe es mit Word 2013 mit
    Test.doc
    Test.docx
    Test.docm
    Dateien versucht.

    Datei ist jeweils offen.

    @error: = 0
    $Word_Referenz =

    Sollte eigentlich laut Hilfe ergeben:
    a variable pointing to the document object.
    (eine Nummer?)

    AutoIt
    $Name_der_Word_Datei = "Test.doc"
    Local $oWord = _Word_Create()
    ;~ $Word_Referenz = _Word_DocAttach ($oWord,  $Name_der_Word_Datei , "FileName")
    $Word_Referenz = _Word_DocAttach ($oWord,  "Test.doc" , "FileName")
    ConsoleWrite (@ScriptLineNumber & @TAB & "@error: = " & @error & @CRLF)
    ConsoleWrite (@ScriptLineNumber & @TAB & "$Word_Referenz = " & $Word_Referenz & @CRLF)


    (2)

    Ich habe auch folgendes versucht - erfolglos:

    To access the corresponding Word application use: $oAppl = $oDoc.Application.

    $Word_Referenz = _Word_DocAttach ( $oDoc.Application , "Test.doc")

    Wie muss man dass dann schreiben?


    Danke und ein schönes Wochenende :)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™