═══ 1. SendYes! Ъberblick ═══ SendYes! V2.0 Sind Sie jemals diese Meldungsdialoge leid gewesen, die Sie nicht unterdrБcken kФnnen ? Gehen Ihnen auch die Sicherheitsabfragen auf die Nerven, die beim Schlieсen jeder Textsitzung erscheinen ? Benutzen Sie nun SendYes!, um auf Standard-Meldungsdialoge automatisch zu reagieren. Wes Santee, Author von SendYes! V1.00: "Ich schrieb SendYes!, weil ich es haсte, beim Systemabschluс immer den Ja-Knopf zu drБcken, um jede einzelne Textsitzung zu schlieсen, die noch offen war." SendYes! ist ein kleines Programm, welches auf das Erscheinen von Meldungsdialogen wartet und prБft, ob einer erscheint, dessen Meldungstext mit einem der Meldungstexte Бbereinstimmt, die in SendYes! definiert sind. Wenn dies der Fall ist, wird eine benutzerdefinierte Aktion auf einen vom Benutzer ausgewДhlten Druckknopf ausgefБhrt. MФgliche Aktionen sind: DrБcken des Knopfes, den Druckknopf als Standardknopf setzen oder den Druckknopf zu deaktivieren. Die Definition eines Meldungstextes zusammen mit einer Aktion wird als Aktionsprofil in SendYes! gespeichert. Es kФnnen beliebig viele Aktionsprofile angelegt werden. Vorherige Versionen von SendYes! dienten dazu, ausschlieсlich Meldungsdialoge zum Schlieсen von Textsitzungen zu unterdrБcken. Dies wurde dadurch erreicht, indem eine PM Meldung an den Ja-Druckknopf gesendet wurde, daс er gedrБckt wird, daher bekam das Programm seinen Namen. Diese Funktion als eine Untermenge der aktuellen FunktionalitДt wird durch vordefinierte Aktionsprofile unterstБtzt. Wenn diese Aktionsprofile aktiviert werden, schlieсt SendYes! wie in den vorherigen Versionen die Meldungsdialoge zum Schlieсen von Textsitzungen automatisch. ═══ 2. Voraussetzungen ═══ SendYes! wurde unter OS/2 V2.11 und OS/2 Warp 3.0 getestet, ob es Meldungsdialoge erkennen und automatisch bearbeiten kann. Dazu werden einige Ressource-IDs verwendet, die den Meldungstext und das Symbol im Standard-Meldungsdialog betreffen. Wenn diese Ressource-IDs sich in zukБnftigen OS/2 Versionen Дndern sollten, wird SendYes! nicht mehr funktionieren und muс an die neue Version angepasst werden. Allerdings sind diese IDs bisher immer gleich geblieben ... Auсerdem liest SendYes! den Meldungstext fБr einige vordefinierte Aktionsprofile aus PM Ressource-DLLs. Wenn diese IDs sich Дndern, werden die vordefinierten Aktionsprofile nicht lДnger die richtigen Meldungstexte enthalten und nicht mehr funktionieren. Allerdings kФnnen neue Aktionsprofile selbst erstellt werden, die anstelle der vordefinierten Aktionsprofile die betroffenen Meldungsdialoge automatisch schlieсen. FБr weitere Informationen Бber vordefinierten Aktionsprofile und wie man testen kann, ob sie funktionieren, siehe auch vordefinierte Aktionsprofile ═══ 3. Das SendYes! Paket ═══ Das SendYes! Paket enthДlt die folgenden Dateien: readme.cmd zeigt den "SendYes! Ъberblick" deser INF Datei install.cmd ruft das Installationsprogramm auf sendyes.exe die GUI Programmdatei sndyshk.bin die Hook Programmdatei sndysdll.dll die Hook DLL sndyseng.dll englische Resourcenbibliothek sndyseng.hlp englische Hilfedatei sndyseng.inf englisches Online Buch sndysger.dll deutsche Resourcenbibliothek sndysger.hlp deutsche Hilfedatei sndysger.inf deutsches Online Buch nlssrc.zip zip Datei, die die Quelldateien fБr den National Language Support enthДlt install\install.cmd Installationsprogramm fБr die SendYes! WPS Programmobjekte install\remove.cmd Deinstallationsprogramm fБr die IDH_IDPNL_USAGE_WPSOBJ. install\sndyseng.msg englische Installations-Meldungsdatei install\sndysger.msg deutsche Installations-Meldungsdatei install\*.ico Icons, die vom Installations- und Deinstallationsprogramm verwendet werden Anmerkung:  Die Dateien fБr die UnterstБtzung von Sprachen, die nicht von SendYes! benutzt werden sollen, kФnnen gelФscht werden. ═══ 4. Copyright & Co. ═══ Copyright generelle Lizenz Shareware Lizenz GewДhrleistungsausschluс ═══ 4.1. Copyright ═══ SendYes! Copyright (C) Christian Langanke 1996 Sie kФnnen Ihre Anmerkungen/VorschlДge via internet e-mail an den Author senden. Richten Sie Ihr e-mail an cla@oerag.de ═══ 4.2. generelle Lizenz ═══ SendYes! ist freie Software (freeware) fБr nichtkommerziellen Gebrauch und shareware fБr den Gebrauch in kommerziell genutzten Umgebungen. Sie kФnnen SENDYES frei verwenden, solange  SENDYES in einer nicht kommerziellen Umgebung eigesetzt wird Sie dБrfen SendYes! beliebig weitergeben, solange  SendYes! oder Teile davon nicht als Teil eines anderen Programmes verkauft werden  bis auf die Kosten fБr Ъbertragungsmedien keine GebБhren fБr das Programm erhoben werden  das komplette Paket unverДndert weitergegeben wird  Sie mir Бber e-mail mitteilen, ob und warum Sie das Prgramm mФgen (oder auch nicht) und/oder mit VorschlДgen zur weiteren Verbesserungen Ich wБrde besonders gerne von Ihnen hФren, wenn Sie mir dabei helfen wollen, Ihre Sprache durch SendYes! unterstБtzen zu kФnnen, so dies noch nicht geschieht. Siehe auch National Language Support ═══ 4.3. Shareware Lizenz ═══ Sie dБrfen SendYes! in einer kommerziell genutzten Umgebung nur dann verwenden, wenn Sie zusДtzlich zu den Bestimmungen der generellen Lizenz folgende Bedingungen befolgen:  Wenn Sie SendYes! Бber eine Probezeit von 30 Tagen hinaus weiterverwenden, registrieren Sie es und zahlen eine RegistrierungsgebБhr von 10 DM fБr - jede Kopie des SendYes! Pakets, das Sie gleichzeitig auf einem einzelnen PC verwenden - jeden Benutzer, der geichzeitig via Netzwerk auf ein installiertes SendYes! Paket Zugreifen kann. Sie sind dafБr verantwortlich, daс nur die Anzahl der Benutzer gleichzeitig auf ein installiertes SendYes! Paket Zugriff haben, fБr die Sie registriert haben. Oder mit anderen Worten, Sie mБssen fБr jeden Benutzer registrieren, der gleichzeitig auf ein installiertes SendYes! Paket zugreifen kann.  Wenn Sie SendYes! nach der Probezeit von 30 Tagen nicht registrieren, lФschen Sie alle installierten Kopien von SendYes!. Die Registrierung gilt fБr alle Versionen von SendYes! bis inclusive V2.99. Kontaktieren Sie den Autor fБr Mengenrabatte und Firmenlizenzen. ═══ 4.4. GewДhrleistungsausschluс ═══ Weil dieses Programm frei (freeware) ist, wird weder eine ausdrБckliche noch eine implizite Garantie gegeben. Ich bin nicht verantwortlich fБr irgend einen Schaden, der einem Anwender direkt oder indirekt durch SendYes! entsteht. Die gesamte Software wird ausgeliefert, wie sie ist (supplied AS IS). Sie dБrfen das SendYes! Paket nur auf eigenes Risiko benutzen. SendYes! darf nicht in Staaten verwendet werden, die den Auschluс der oben aufgefБhrten Garantien verbieten. ═══ 5. Installation ═══ Dateien kopieren Installationsprogramm Deinstallationsprogramm ═══ 5.1. Dateien kopieren ═══ Wenn Sie das SendYes! Paket als ZIP Datei erhalten haben, erstellen Sie ein Verzeichnis fБr die Dateien des SendYes! Pakets auf Ihrer Festplatte und extrahieren Sie alle Dateien aus der ZIP-Datei dort hinein. Stellen Sie dabei sicher, daс die in der ZIP-Datei gespeicherte Verzeichnisstruktur beibehalten wird ! ═══ 5.2. Installationsprogramm ═══ FБhren Sie folgende Schritte aus, um einen SendYes! Ordner mit voreigestellten Programmobjekten zu erstellen: 1. Фffnen Sie ein OS/2 Fenster 2. wechseln Sie in das Verzeichnis, in dem sich die Dateien des SendYes! Pakets befinden 3. wechseln Sie in das Unterverzeichnis INSTALL 4. fБhren Sie den Befehl install aus Im Installationsprogramm kФnnen Sie die Sprache auswДhlen, die vom Programm verwendet werden soll. Das Installationsprogramm erstellt den SendYes! Ordner mit verschiedenen SendYes! WPS Programmobjekten. Anmerkung:  Wenn Sie die Dateien des SendYes! Paketes z.B. auf eine andere Festplatte verschieben wollen, so verschieben Sie das SendYes! Verzeichnis an die neue Position und fБhren Sie erneut das Installationsprogramm aus, um die SendYes! WPS Programmobjekte entsprechend neu einzustellen. ═══ 5.3. Deinstallationsprogramm ═══ Um alle SendYes! WPS Programmobjekte zu deinstallieren,  starten Sie das Symbol SendYes! WPS Deinstallationsprogramm  oder fБhren Sie folgende Schritte aus: 1. Фffnen Sie ein OS/2 Fenster 2. wechseln Sie in das Verzeichnis, in dem sich die Dateien des SendYes! Pakets befinden 3. wechseln Sie in das Unterverzeichnis INSTALL 4. fБhren Sie den Befehl remove aus. Anmerkung:  Das SendYes! WPS Deinstallationsprogramm entfernt keine Dateien von Ihrer Festplatte. Um SendYes! komplett zu deinstallieren, mБssen Sie auсerdem die Dateien des SendYes! Pakets selbst entfernen. ═══ 6. Benutzung ═══ Aktionsprofile vordefinierte Aktionsprofile SendYes! GUI SendYes! WPS Programmobjekte Kommandozeilenparameter ═══ 6.1. Aktionsprofile ═══ Die graphische Benutzerschnittstelle von SendYes! erlaubt dem Benutzer, Aktionsprofile zu erstellen, zu kopieren, zu editieren und zu lФschen. Aktionsprofile bestehen aus:  dem Meldungstext des Meldungsdialogs, der bearbeitet werden soll.  dem Druckknopf, auf den eine Aktion ausgefБhrt werden soll. Alle fБr einen Standardmeldungsdialog vorgesehenen DrucknФpfe kФnnen ausgewДhlt werden und es liegt in der Verantwortung des Benutzers, einen Druckknopf anzugeben, der tatsДchlich in dem Meldungsdialog verwendet wird, welcher automatisch bearbeitet werden soll.  der Aktion, die ausgefБhrt werden soll. MФgliche Aktionen sind: - den Druckknopf zu drБcken - den Druckknopf als Standardknopf und zusДtzlich den Fokus auf den Druckknopf zu setzen Anmerkung: Diese Aktion wird nur beim erstmaligen Erscheinen des Meldungsdialogs ausgefБhrt.. - den Druckknopf zu deaktivieren Anmerkung: - Der Meldungstext eines Aktionsprofiles muс sich von denen aller anderen Aktionsprofile unterscheiden, also eindeutig sein, sodaс fБr jeden mФglichen Meldungsdialog nur ein Aktionsprofil existiert. - Der Meldungstext von vordefinierten Aktionsprofilen kann nicht editiert werden. Trotzdem kФnnen der zu bearbeitende Druckknopf und die auf ihn auszufБhrende Aktion geДndert werden. - Die Aktion, die Sie auswДhlen, wird jedesmal ausgefБhrt, wenn der Meldungsdialog den Eingabefokus erhДlt (auсer wenn der Druckknopf als Standard-Druckknopf gesetzt wird, dies wird nur einmal durchgefБhrt). Daher ist es nicht sehr sinnvoll, ein Aktionsprofil zu definieren, welches den Druckknopf fБr die Hilfefunktion drБckt, auch wenn das mФglich ist. Wenn Sie ein solches Aktionsprofil benutzen, wird es jedesmal die Hilfefunktion aktivieren, wenn Sie auf den Meldungsdialog klicken, da er dadurch den Eingabefokus erhДlt und die definierte Aktion ausgelФst wird. Schlieсen Sie in einem solchen Fall zuerst den Meldungsdialog und dann das Hilfe-Fenster. ═══ 6.2. vordefinierte Aktionsprofile ═══ Vordefinierte Aktionsprofile unterscheiden sich von benutzerdefinierten Profilen wie folgt:  sie werden automatisch durch SendYes! erstellt und angezeigt, wenn es das erste Mal gestartet wird.  sie kФnnen nicht gelФscht werden  ihr Meldungstext wird aus PM Resource-DLLs gelesen und kann nicht verДndert werden. Trotzdem kФnnen der zu bearbeitende Druckknopf und die auf ihn auszufБhrende Aktion fБr vordefinierte Aktionsprofile geДndert werden. Da die Meldungstexte fБr diese vordefinierten Aktionsprofile aus PM Resource-DLLs gelesen werden, werden sie unter allen OS/2 WARP Versionen funktionieren, gleichgБltig, welche sprachenspezifische Version Sie verwenden. Auсderdem werden sie nicht in der INI Datei gespeichert, welche von SendYes! erstellt wird, um die Aktionsprofile zu sichern. Dadurch kann diese Datei zwischen Benutzern von OS/2 Versionen verschiedener Sprachen ausgetauscht werden. Der Zweck dieser vordefinierten Aktionsprofile ist vor allem, die FunktionalitДt von vorherigen Versionen von SendYes! zu unterstБtzen, ohne daс der Benutzer zuerst die Aktionsprofile dafБr selbst erstellen muс. Damit der Benutzer zwischen vordefinierten und selbstdefinierten Aktionsprofilen unterscheiden kann, wird jedes der vordefinierten Aktionsprofile mit einer vorangestellten Kennzeichnung angezeigt. In der aktuellen Version stellt SendYes! die folgenden vordefinierten Aktionsprofile zur VerfБgung, um Meldungsdialoge fБr Sicherheitsabfragen bearbeiten zu kФnnen:  zum Schlieсen von OS/2 Fenster Textsitzungen. Wenn dieses Aktionsprofil aktiv ist, werden auсderdem die Meldungsdialoge fБr Sicherheitsabfragen fБr DOS Fenster und Vollbildschirm-Textsitzungen bearbeitet. Dieses Aktionsprofil trДgt die Kennzeichnung OS/2 Fenster schlieсen  zum Schlieсen von OS/2 Vollbildschirm-Textsitzungen. Dieses Aktionsprofil trДgt die Kennzeichnung OS/2 Vollbild. schlieсen  zum Systemabschluс Dieses Aktionsprofil trДgt die Kennzeichnung Systemabschluс Um zu prБfen, ob die vordefinierten Aktionsprofile von SendYes! auch unter Ihrem OS/2 die DOS und OS/2 Fenster und Vollbildschirm-Textsitzungen ohne Sicherheitsabfragen schlieсen, siehe auch Wie kann ich vordefinierte Aktionsprofile testen ? Wenn alle Textsitzungen ohne Sicherheitsabfrage geschlossen werden, funktioniert alles einwandfrei. Wenn nicht, schicken Sie mir bitte ein e-mail und berichten es mir ... FБr die Zwischenzeit kФnnen Sie ein Aktionsprofil selbst definieren, welches die Textsitzungen auch auf IHREM System ohne Sicherheitsabfrage schlieсt. ═══ 6.3. SendYes! GUI ═══ Die SendYes! GUI besteht aus einen Notizbuch, das fast wie ein Einstellungsnotizbuch eines WPS-Objektes verwendet werden kann. Dieses Notizbuch erscheint, wenn Sie SendYes! ohne jeden Parameter starten oder das Symbol SendYes! ausfБhren. Anmerkung: Es kann jeweils nur eine Instanz der SendYes! GUI aktiv sein. Das Notizbuch enthДlt zwei Seiten und ein gemeinsamer Dialog wird fБr das Anlegen, Kopieren und Editieren von Aktionsprofilen vwerwendet:  Sitzungs-Seite  Aktions-Seite  Neu / Editieren / Kopieren Dialog ═══ 6.3.1. Sitzungs-Seite ═══ Auf dieser Seite kФnnen Sie  die SendYes! Hook Programmdatei starten und damit die SendYes! FunktionalitДt aktivieren. Benutzen Sie das Markierungsfeld SendYes! aktivieren, um SendYes! zu aktivieren oder zu deaktivieren.  definieren, ob die SendYes! Hook Programmdatei durch einen separaten Prozess oder durch den PMSHELL-Prozess geladen wird. Anmerkung: In der aktuellen Version wird die SendYes! Hook Programmdatei immer durch einen separaten Prozess geladen. Daher kann diese Einstellung nicht verДndert werden.  definieren, ob die SendYes! Hook Programmdatei beim Deaktivieren aus dem Hauptspeicher entfernt werden soll oder nicht. Anmerkung: In der aktuellen Version wird die SendYes! Hook Programmdatei beim Deaktivieren immer aus dem Hauptspeicher entfernt. Daher kann diese Einstellung nicht verДndert werden. ═══ 6.3.2. Aktions-Seite ═══ Auf dieser Seite kФnnen Sie Aktionsprofile definieren und selbst- und vordefinierte Aktionsprofile aktivieren und deaktivieren. Alle Profile werden in zwei Listen gehalten:  Die mit Definierte Aktionsprofile gekennzeichnete Liste enthДlt Aktionsprofile, die nicht aktiv sind. Profile, die sich in dieser Liste befinden, kФnnen aktiviert, editiert, kopiert oder gelФscht und neue Aktionsprofile kФnnen erstellt werden. Anmerkung: Vordefinierte Aktionsprofile kФnnen nicht gelФscht und ihr Meldungstext kann nicht editiert werden  Die mit Aktive Aktionsprofile gekennzeichnete Liste enthДlt die Aktionsprofile, welche aktiv sind. Wenn die SendYes! Hook Programmdatei auf der Sitzungs-Seite aktiviert wurde, werden die Aktionsprofile ausgefБhrt, wenn die entsprechenden Meldungsdialoge erscheinen. Profile, die sich in dieser Liste befinden, kФnnen lediglich editiert, gelФscht und deaktiviert werden. Das Erstellen von neuen Aktionsprofilen und das Kopieren von bestehenden Aktionsprofilen ist nur in der mit Definierte Aktionsprofile gekennzeichneten Liste mФglich. Auсerdem kФnnen die vordefinierten Aktionsprofile fБr das Schlieсen von Textsizungen (und nur diese) getestet werden: SendYes! erstellt dafБr die entsprechenden Textsitzungen, welche dann einfach Бber die Fensterliste geschlossen werden kФnnen. Anmerkung: Vordefinierte Aktionsprofile kФnnen nicht gelФscht und ihr Meldungstext kann nicht editiert werden Obwohl Sie Aktionsprofile entweder Бber die Maus oder per Tastatur manipulieren kФnnen, ist die Benutzung der Maus wesentlich einfacher. Die erweiterten Listen, welche die FunktionalitДt der Direct Manipulation ListBox (DMLB) und der MultiColumn ListBox (MCLB) enthalten, erlauben die folgende Verwendung der Maus:  verwenden Sie die rechte Maustaste in den Listen, um ein KontextmenБ aufzurufen, welches die oben beschriebenen Aktionen ermФglicht.  als eine Alternative fБr einige der in den KontextmenБs angebotenen Aktionen verwenden Sie Ziehen&Ъbergeben (Drag&Drop): - zwischen den beiden Listen, um Aktionsprofile zu aktivieren oder zu deaktivieren - in der mit Definierte Aktionsprofile gekennzeichneten Liste, um ein bestehendes Aktionsprofil zu kopieren FБr weitere Informationen, wie Aktionsprofile manipuliert werden kФnnen, siehe auch Wie kann ich ... ? SendYes! stellt drei vordefinierte Aktionsprofile zur VerfБgung, welche dazu dienen, einige Standard-Meldungsdialoge zu bearbeiten. Sie kФnnen einige dieser Profile testen, um zu prБfen, ob sie einwandfrei funktionieren. Siehe dazu auch: vordefinierte Aktionsprofile Wie kann ich vordefinierte Aktionsprofile testen ? ═══ 6.3.3. Neu / Editieren / Kopieren Dialog ═══ In diesem Dialog kФnnen Sie neue Aktionsprofile erstellen oder bestehende Aktionsprofile kopieren oder editieren. ═══ 6.4. SendYes! WPS Programmobjekte ═══ Das SendYes! WPS Installationsprogramm erstellt die folgenden Objekte:  einen SendYes! Ordner auf der ArbeitsoberflДche, der die folgenden Programmreferenzobjekte enthДlt: - SendYes! initialisieren - SendYes! - SendYes! V2.0 Hilfe - SendYes! WPS Installationsprogramm - SendYes! WPS Deinstallationsprogramm  eine Referenz von SendYes! initialisieren, die in den Systemstart-Ordner gestellt wird, sodaс SendYes! bei jedem Neustart von OS/2 initialisiert wird. FБr weitere Informationen Бber die Initialisierung von SendYes! beim Systemstart siehe auch Wie kann ich SendYes! initialisieren ?  eine Referenz des Ordners Sytemstart, die in den SendYes! Ordner gestellt wird, sodaс Sie einfach auf den Systemstart-Ordner zugreifen kФnnen, um gegebenenfalls die Referenz von SendYes! initialisieren lФschen oder wieder in den Systemstart-Ordner stellen zu kФnnen.  eine Referenz von SendYes!, welche in den Ordner Systemkonfiguration gestellt wird. ═══ 6.4.1. SendYes! initialisieren ═══ Dieses Symbol lДdt die SendYes! Hook Programmdatei, wenn die aktuellen Einstellungen besagen, daс SendYes! aktiv ist. Eine Referenz dieses Symbols wird durch das Installationsprogramm in den Ordner Sytemstart gestellt, sodaс SendYes! bei jedem Neustart von OS/2 initialisiert wird. Anmerkung:  Wenn die Umgebungsvariable RESTARTOBJECTS in der CONFIG.SYS auf den Wert NO gesetzt wird, werden Objekte im Ordner Sytemstart nicht automatisch beim Systemstart ausgefБhrt. Dann muс SendYes! Бber einen Aufruf in der STARTUP.CMD oder per Hand initialisiert werden. FБr weitere Informationen Бber die Initialisierung von SendYes! beim Systemstart siehe auch Wie kann ich SendYes! initialisieren ?  Sie kФnnen die SendYes! Hook Programmdatei auch Бber die SendYes! GUI laden, indem Sie die folgenden Schritte durchfБhren: 1. Фffnen Sie die SendYes! GUI 2. wДhlen Sie die Sitzungs-Seite 3. markieren Sie das mit SendYes! aktivieren gekennzeichnete Markierungsfeld 4. das Statusfeld Бber den DruckknФpfen zeigt den neuen Status von SendYes! an, wenn die SendYes! Hook Programmdatei geladen werden konnte.  Es wird kein Informationsmeldungsdialog angezeigt. Nur im Fehlerfall wird ein Fehlermeldungsdialog angezeigt.  Dieses Symbol entspricht der AusfБhrung des Befehls [start] SENDYES /INITIALIZE auf der Kommandozeile im SendYes! Verzeichnis. ═══ 6.4.2. SendYes! ═══ Dieses Symbol startet die SendYes! GUI, in der die aktuellen Einstellungen des Programmes verДndert werden kФnnen. Anmerkung:  Dieses Symbol entspricht der AusfБhrung des Befehls [start] SENDYES auf der Kommandozeile im SendYes! Verzeichnis. ═══ 6.4.3. SendYes! V2.0 Hilfe ═══ Dieses Symbol zeigt diese Hilfedatei an. Anmerkung:  Dieses Symbol entspricht der AusfБhrung des Befehls README auf der Kommandozeile im SendYes! Verzeichnis. Dieser Befehl zeigt die INF Datei fБr die aktuell ausgewДhlte Sprache an.  Sie kФnnen ebenso eine sprachenspezifische INF Datei direkt anzeigen lassen, indem Sie den Befehl README ??? or [start] view sndys??? auf der Kommandozeile im SendYes! Verzeichnis ausfБhren, wobei ??? die englische AbkБrzung der gewБnschten Sprache ist. FБr weitere Informationen Бber verfБgbare INF Dateien siehe auch Das SendYes! Paket ═══ 6.4.4. SendYes! WPS Installationsprogramm ═══ Dieses Symbol fБhrt das Installationsprogramm fБr die SendYes! WPS Programmobjekte aus. Innerhalb dieses Programms kФnnen Sie auсerdem die von SendYes! zu verwendende Sprache auswДhlen und die SendYes! WPS Programmobjekte erneut erstellen bzw. aktualisieren, damit die neu ausgewДhlte Sprache fБr die Objekttitel verwendet wird. ═══ 6.4.5. SendYes! WPS Deinstallationsprogramm ═══ Dieses Symbol fБhrt das Deinstallationsprogramm fБr die SendYes! WPS Programmobjekte aus. Mit diesem Programm kФnnen Sie die SendYes! WPS Programmobjekte entfernen. Anmerkung:  Das SendYes! WPS Deinstallationsprogramm entfernt keine Dateien von Ihrer Festplatte. Um SendYes! komplett zu deinstallieren, mБssen Sie auсerdem die Dateien des SendYes! Pakets selbst entfernen. ═══ 6.5. Kommandozeilenparameter ═══ Die folgenden Parameter kФnnen zur Steuerung von SendYes! von der kommandozeile verwendet werden: /INITIALIZE /LOAD /STATUS /UNLOAD /BATCH /ACTIVATE /QUIET /DEACTIVATE /? Algemeines zu Schalterparametern:  die Parameternamen kФnnen wahlweise groс und klein geschrieben werden.  Anstelle eines SchrДgstriches kФnnen Sie auch das Minuszeichen verwenden - das heiсt, daс z.B. die Parameter /load und -load gleichwertig sind.  es reicht aus, nur den ersten Buchstaben des Schalternamens anzugeben - das heiсt, daс .z.B. die Parameter /b und /batch (oder -b und -batch) ebenfalls gleichwertig sind. ═══ 6.5.1. /INITIALIZE ═══ Dieser Parameter dient dazu, um SendYes! beim Systemstart zu initialisieren. Wenn die aktuellen Einstellungen von SendYes! besagen, daс die Hook Programmdatei aktiv ist, so verhДlt sich SendYes! so, als wДre der Parameter /LOAD angegeben worden. Anmerkung:  Es wird kein Informationsmeldungsdialog angezeigt. Nur im Fehlerfall wird ein Fehlermeldungsdialog angezeigt. ═══ 6.5.2. /LOAD ═══ Dieser Parameter lДdt die SendYes! Hook Programmdatei, falls sie nicht bereits geladen ist. Wenn die Hook Programmdatei erfolgreich geladen werden kann, so ist die SendYes! FunktionalitДt verfБgbar und Meldungsdialoge, welche aktivierten Aktionsprofilen entsprechen, werden automatisch bearbeitet. Anmerkung:  Wenn die Hook Programmdatei erfolgreich geladen werden kann, wird ein Informations-Meldungsdialog angezeigt.  Wenn die Hook Programmdatei bereits geladen ist oder nicht geladen werden kann, wird ein Fehlermeldungsdialog angezeigt.  Jeweils der Informations- und der Fehlermeldungsdialog kФnnen durch den Parameter /BATCH unterdrБckt werden. Anstelle dessen wird dann ein Informations- bzw. ein Fehlerton generiert. Weiterhin kann auch der Informations- bzw. Fehlerton durch den Parameter /QUIET unterdrБckt werden. ═══ 6.5.3. /UNLOAD ═══ Dieser Parameter entfernt die SendYes! Hook Programmdatei wieder, wenn sie aktiv ist. Wenn die Hook Programmdatei entfernt wird, ist die SendYes! FunktionalitДt nicht lДnger verfБgbar und Meldungsdialoge werden nicht lДnger automatisch bearbeitet. Anmerkung:  Wenn die Hook Programmdatei erfolgreich entfernt werden kann, wird ein Informations-Meldungsdialog angezeigt.  Wenn die Hook Programmdatei nicht geladen ist oder nicht entfernt werden kann, wird ein Fehlermeldungsdialog angezeigt.  Jeweils der Informations- und der Fehlermeldungsdialog kФnnen durch den Parameter /BATCH unterdrБckt werden. Anstelle dessen wird dann ein Informations- bzw. ein Fehlerton generiert. Weiterhin kann auch der Informations- bzw. Fehlerton durch den Parameter /QUIET unterdrБckt werden. ═══ 6.5.4. /ACTIVATE ═══ Dieser Parameter funktioniert genauso wie /LOAD. Er ist lediglich als ein GegenstБck zu /DEACTIVATE implementiert worden. ═══ 6.5.5. /DEACTIVATE ═══ In der aktuellen Version von SendYes! funktioniert dieser Parameter genauso wie /UNLOAD. Das wird sich Дndern, wenn SendYes! das Deaktivieren der Hook Programmdatei ohne Entfernen aus dem Hauptspeicher unterstБtzt. Dann wird /DEACTIVATE fБr dieses Deaktivieren verwendet werden. ═══ 6.5.6. /STATUS ═══ Dieser Parameter ermittelt, ob die SendYes! Hook Programmdatei aktiv ist oder nicht. Ein Status-Meldungsdialog wird angezeigt und der folgende ERRORLEVEL zurБckgegeben: 1 SendYes! ist aktiv 0 SendYes! ist nicht aktiv Anmerkung:  Wenn /STATUS angegeben wird, werden alle anderen Parameter auсer /? ignoriert.  Der Status-Meldungsdialog kann durch den Parameter /BATCH unterdrБckt werden. Im Gegensatz zur Verwendung von /BATCH mit anderen Parametern wird hier kein Informations- oder Fehlerton generiert. ═══ 6.5.7. /BATCH ═══ Dieser Parameter underdrБckt Meldungsdialoge, wenn die Parameter /LOAD, /UNLOAD, /ACTIVATE, /DEACTIVATE oder /STATUS verarbeitet werden. Anstelle der Anzeige eines Meldungsdialogs wird ein Informations- oder Fehlerton generiert. Dieser Ton kann ebenfalls unterdrБckt werden, wenn auсderdem /QUIET angegeben wird. Wenn /BATCH zusammen mit /STATUS angegeben wird, wird generell kein Ton erzeugt. ═══ 6.5.8. /QUIET ═══ Dieser Parameter unterdrБckt Informations- oder FehlertФne, wenn der Parameter /BATCH verwendet wird. ═══ 6.5.9. /? ═══ Dieser Parameter zeigt eine kurze Hilfe Бber die Parameter an. Wenn /? angegeben wird, werden alle anderen Parameter ignoriert. Anstelle von /? kann auch /HELP verwendet werden. ═══ 7. Wie kann ich ... ? ═══ ... SendYes! laden ? ... SendYes! entfernen ? ... SendYes! aktivieren ? ... SendYes! deaktivieren ? ... den SendYes! Status ermitteln ? ... SENDYES.EXE in Batchdateien verwenden ? ... SendYes! initialisieren ? ... die SendYes! GUI starten ? ... ein Aktionsprofil selektieren ? ... Aktionsprofile erstellen ? ... ein Aktionsprofil kopieren ? ... Aktionsprofile aktivieren ? ... Aktionsprofile deaktivieren ? ... Aktionsprofile editieren ? ... vordefinierte Aktionsprofile testen ? ... die verwendete Sprache Дndern ? ... SendYes! deinstallieren ? ═══ 7.1. Wie kann ich SendYes! laden ? ═══ Um die SendYes! Hook Programmdatei zu laden  fБhren Sie in der SendYes! GUI die folgenden Schritte durch: 1. Фffnen Sie die SendYes! GUI 2. wДhlen Sie die Sitzungs-Seite 3. markieren Sie das mit SendYes! aktivieren gekennzeichnete Markierungsfeld 4. das Statusfeld Бber den DruckknФpfen zeigt den neuen Status von SendYes! an, wenn die SendYes! Hook Programmdatei geladen werden konnte.  oder fБhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! Verzeichnis aus: [start] SENDYES /LOAD [/BATCH] [/QUIET] ═══ 7.2. Wie kann ich SendYes! entfernen ? ═══ Um die SendYes! Hook Programmdatei zu entfernen  fБhren Sie in der SendYes! GUI die folgenden Schritte durch: 1. Фffnen Sie die SendYes! GUI 2. wДhlen Sie die Sitzungs-Seite 3. entfernen Sie die Markierung von dem mit SendYes! aktivieren gekennzeichneten Markierungsfeld 4. das Statusfeld Бber den DruckknФpfen zeigt den neuen Status von SendYes! an, wenn die SendYes! Hook Programmdatei entfernt werden konnte.  oder fБhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! Verzeichnis aus: [start] SENDYES /UNLOAD [/BATCH] [/QUIET] ═══ 7.3. Wie kann ich SendYes! aktivieren ? ═══ In der aktuellen Version von SendYes! entspricht das Aktivieren der SendYes! Hook Programmdatei dem Laden dieser Programmdatei. Um die SendYes! Hook Programmdatei zu aktivieren,  fБhren Sie in der SendYes! GUI die folgenden Schritte durch: 1. Фffnen Sie die SendYes! GUI 2. wДhlen Sie die Sitzungs-Seite 3. markieren Sie das mit SendYes! aktivieren gekennzeichnete Markierungsfeld 4. das Statusfeld Бber den DruckknФpfen zeigt den neuen Status von SendYes! an, wenn die SendYes! Hook Programmdatei geladen werden konnte.  oder fБhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! Verzeichnis aus: [start] SENDYES /ACTIVATE [/BATCH] [/QUIET] ═══ 7.4. Wie kann ich SendYes! deaktivieren ? ═══ In der aktuellen Version von SendYes! entspricht das Deaktivieren der SendYes! Hook Programmdatei dem Entfernen dieser Programmdatei aus dem Hauptspeicher. Um die SendYes! Hook Programmdatei zu deaktivieren,  fБhren Sie in der SendYes! GUI die folgenden Schritte durch: 1. Фffnen Sie die SendYes! GUI 2. wДhlen Sie die Sitzungs-Seite 3. entfernen Sie die Markierung von dem mit SendYes! aktivieren gekennzeichneten Markierungsfeld 4. das Statusfeld Бber den DruckknФpfen zeigt den neuen Status von SendYes! an, wenn die SendYes! Hook Programmdatei entfernt werden konnte.  oder fБhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! Verzeichnis aus: [start] SENDYES /DEACTIVATE [/BATCH] [/QUIET] ═══ 7.5. Wie kann ich den SendYes! Status ermitteln ? ═══ Um den Status der SendYes! Hook Programmdatei zu ermitteln  fБhren Sie in der SendYes! GUI die folgenden Schritte durch: 1. Фffnen Sie die SendYes! GUI 2. wДhlen Sie die Sitzungs-Seite 3. das Statusfeld Бber den DruckknФpfen zeigt den Status von SendYes!  oder fБhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! Verzeichnis aus: [start] SENDYES /STATUS [/BATCH] ═══ 7.6. Wie kann ich SENDYES.EXE in Batchdateien verwenden ? ═══ Wenn Sie SENDYES.EXE in Batchdateien verwenden wollen, kФnnen Sie dazu den Parameter /BATCH verwenden. Damit werden alle Informations- und Fehlermeldungsdialoge unterdrБckt. Das Ergebnis kann in normalen Batchdateien immer Бber die OS/2 ERRORLEVEL Variable und in REXX Batchdateien immer Бber die Variable rc ermittelt werden: Mit Ausnahme der Status-Abfrage wird die ERRORLEVEL Variable bei erfolgreicher AusfБhrung immer auf Null gesetzt. Andernfalls wird ein OS/2 Fehlercode zurБckgegeben. Anmerkung:  Wenn der Parameter/BATCH verwendet wird, um Informations- und Fehlermeldungsdialoge zu unterdrБcken, werden stattdessen Informations- und FehlertФne generiert, um dem Benutzer den Erfolg der ProgrammausfБhrung anzuzeigen. Um diese TФne ebenfalls zu unterdrБcken, kann auсerdem der Parameter /QUIET verwendet werden. ═══ 7.7. Wie kann ich SendYes! initialisieren ? ═══ Das SendYes! Installationsprogramm stellt eine Referenz von SendYes! initialisieren in den Ordner Systemstart, sodaс SendYes! bei jedem Neustart von OS/2 initialisiert wird. Dies funktioniert jedoch nur, wenn die Umgebungsvariable RESTARTOBJECTS in der CONFIG.SYS auf einen Wert gesetzt wird, der die WPS dazu veranlaсt, bei jedem Neustart alle Objekte auszufБhren, die sich im Ordner Systemstart befinden. Diese Umgebungsvariable kan in der CONFIG.SYS auf folgende Werte gesetzt werden: Alle Programme, die beim letzen Systemabschluс aktiv waren, werden beim Systemstart automatisch neu gestartet. Auch alle Objekte, die sich im Ordner Systemstart befinden, werden beim Systemstart geФffnet. SendYes! kann dadurch Бber die Referenz von SendYes! initialisieren im Ordner Systemstart initialisiert werden. STARTUPFOLDERSONLY Programme, die beim letzen Systemabschluс aktiv waren, werden beim Systemstart nicht automatisch neugestartet. Dennoch werden alle Objekte, die sich im Ordner Systemstart befinden, beim Systemstart geФffnet. (Ъbrigens kФnnen tatsДchlich mehrere Systemstartordner existieren, wenngleich OS/2 nur einen anlegt). SendYes! kann dadurch Бber die Referenz von SendYes! initialisieren im Ordner Systemstart initialisiert werden. NO Keinerlei Programme werden durch die WPS automatisch gestartet. SendYes! kann auf diese Weise NICHT durch die Referenz von SendYes! initialisieren im Ordner System Start initialisiert werden. FБgen Sie stattdessen den folgenden Befehl in die STARTUP.CMD ein [start] d:\pfad\SENDYES /INITIALIZE wobei d:\pfad der voll qualifizierte Pfadname des SendYes! Verzeichnisses ist, oder fБhren Sie SendYes! initialisieren per Hand aus. ═══ 7.8. Wie kann ich die SendYes! GUI starten ? ═══ Um die SendYes! GUI zu starten, fБhren Sie das Symbol SendYes! aus oder oder fБhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! Verzeichnis aus: [start] SENDYES ═══ 7.9. Wie kann ich ein Aktionsprofil selektieren ? ═══ Um ein Aktionsprofil auszuwДhlen, fБhren Sie folgende Schritte durch:  Фffnen Sie die SendYes! GUI. Siehe auch Wie kann ich die SendYes! GUI starten ?  WДhlen Sie die Aktions-Seite aus.  Um ein Aktionsprofil mit der Tastatur auszuwДhlen, betДtigen Sie die TAB Taste solange, bis die Liste, die das gewБnschte Profil enthДlt, den Eingabefokus erhДlt. WДhlen Sie dann das gewБnschte Profil mit den Pfeiltasten aus. Sie kФnnen das KontextmenБ fБr das Profil durch DrБcken der Eingabetaste aktivieren. Dies trifft auch zu, wenn die betreffende Liste leer ist. Sobald die Liste den Eingabefokus erhalten hat, wird durch das DrБcken der Eingabetaste das KontextmenБ aktiviert.  Um ein Aktionsprofil mit der Maus zu selektieren, klicken Sie einfach darauf. Das KontextmenБ fБr dieses Profil kann durch Anklicken mit der rechten Maustaste aktiviert werden. Dies trifft auch zu, wenn die betreffende Liste leer ist. Ein Klick mit der rechten Maustaste auf die Liste aktiviert ebenfalls das KontextmenБ. ═══ 7.10. Wie kann ich Aktionsprofile erstellen ? ═══ Um ein Aktionsprofil zu erstellen, fБhren Sie auf der Aktions-Seite folgende Schritte durch:  Aktivieren Sie das KontextmenБ der Liste Definierte Aktionsprofile. Siehe auch Wie kann ich ein Aktionsprofil selektieren ?  WДhlen Sie den MenБeintrag Neu... aus  SendYes! zeigt einen Dialog an, in dem die Einstellungen fБr das neue Profil eingetragen werden kФnnen. Siehe auch Aktionsprofile Neu / Editieren / Kopieren Dialog ═══ 7.11. Wie kann ich ein Aktionsprofil kopieren ? ═══ Um ein existierendes Aktionsprofil zu kopieren, fБhren Sie auf der Aktions-Seite folgende Schritte durch:  WДhlen Sie in der mit Definierte Aktionsprofile gekennzeichneten Liste das gewБnschte Profil aus. Um ein Aktionsprofil zu kopieren, welches gerade aktiv ist und sich daher in der mit Aktive Aktionsprofile gekennzeichneten Liste befindet, so muс dieses zeitweilig deaktiviert werden, sodaс es kopiert werden kann. Siehe auch Wie kann ich ein Aktionsprofil selektieren ? Wie kann ich Aktionsprofile deaktivieren ?  WДhlen Sie den MenБeintrag Kopieren... aus  SendYes! zeigt einen Dialog an, in dem die Einstellungen fБr das neue Profil eingetragen werden kФnnen. Es muс zumindest der Meldungstext geДndert werden, da dieser unter allen Aktionsprofilen eindeutig sein muс. Siehe auch Aktionsprofile Neu / Editieren / Kopieren Dialog ═══ 7.12. Wie kann ich Aktionsprofile aktivieren ? ═══ Um ein Aktionsprofil zu aktivieren, fБhren Sie auf der Aktions-Seite folgende Schritte durch:  Wenn Sie dies per Tastatur durchfБhren wollen: - WДhlen Sie in der mit Definierte Aktionsprofile gekennzeichneten Liste das gewБnschte Profil aus und aktivieren Sie das KontextmenБ. Siehe auch Wie kann ich ein Aktionsprofil selektieren ? - WДhlen Sie den MenБeintrag Aktivieren aus Wenn Sie dies mit der Maus durchfБhren wollen: - Ziehen Sie das gewБnschte Profil von der mit Definierte Aktionsprofile gekennzeichneten Liste in die mit Aktive Aktionsprofile gekennzeichnete Liste. ═══ 7.13. Wie kann ich Aktionsprofile deaktivieren ? ═══ Um ein Aktionsprofil zu deaktivieren, fБhren Sie auf der Aktions-Seite folgende Schritte durch:  Wenn Sie dies per Tastatur durchfБhren wollen: - WДhlen Sie in der mit Aktive Aktionsprofile gekennzeichneten Liste das gewБnschte Profil aus und aktivieren Sie das KontextmenБ. Siehe auch Wie kann ich ein Aktionsprofil selektieren ? - WДhlen Sie den MenБeintrag Deaktivieren aus Wenn Sie dies mit der Maus durchfБhren wollen: - Ziehen Sie das gewБnschte Profil von der mit Aktive Aktionsprofile gekennzeichneten Liste in die mit Definierte Aktionsprofile gekennzeichnete Liste. ═══ 7.14. Wie kann ich Aktionsprofile editieren ? ═══ Um ein Aktionsprofil zu editieren, fБhren Sie auf der Aktions-Seite folgende Schritte durch:  WДhlen Sie das gewБnschte Aktionsprofil aus, welches editiert werden soll und aktivieren Sie das KontextmenБ. Sowohl deaktivierte als auch aktivierte Aktionsprofile kФnnen editiert werden. Siehe auch Wie kann ich ein Aktionsprofil selektieren ?  WДhlen Sie den MenБeintrag Editieren... aus  SendYes! zeigt einen Dialog an, in dem die Einstellungen fБr das Profil verДndert werden kФnnen. ═══ 7.15. Wie kann ich vordefinierte Aktionsprofile testen ? ═══ Um die vordefinierten Aktionsprofile fБr das Schlieсen von Textsitzungen zu testen, kann SendYes! die entsprechenden Textsitzungen automatisch erstellen, sodaс der Test wesentlich vereinfacht wird. Wenn die Sitzungen erstellt sind, kФnnen Sie diese Бber die Fensterliste schlieсen. Die Sicherheitsabfragen sollten dann nicht mehr erscheinen. NatБrlich funktionieren diese Profile auch mit jeder anderen Textsitzung. Um SendYes! die Textsitzungen fБr Sie erstellen zu lassen, fБhren Sie auf der Aktions-Seite folgende Schritte durch:  Falls dies noch nicht geschehen ist, aktivieren Sie eines oder besser beide vordefinierten Aktionsprofile fБr das Schlieсen von Textsitzungen. Sie sind mit - OS/2 Fenster schlieсen und - OS/2 Vollbild. schlieсen gekennzeichnet. Siehe auch Wie kann ich Aktionsprofile aktivieren ?  WДhlen Sie eines der beiden (aktivierten) Aktionsprofile und aktivieren Sie das KnotextmenБ. Siehe auch Wie kann ich ein Aktionsprofil selektieren ?  WДhlen Sie den MenБeintrag Testen... aus ═══ 7.16. Wie kann ich die verwendete Sprache Дndern ? ═══ Um die von SendYes! verwendete Sprache zu Дndern, fБhren Sie einfach erneut das Installationsprogramm aus, indem Sie das Symbol SendYes! WPS Installationsprogramm ausfБhren. Im Installationsprogramm 1. wДhlen Sie die gewБnschte Sprache aus und 2. installieren Sie die SendYes! WPS Programmobjekte erneut Dadurch wird auch die von der SendYes! GUI verwendete Sprache geДndert. Anmerkung:  Die Оnderung der Sprache bleibt nur dann erhalten, wenn die SendYes! WPS Programmobjekte erneut installiert werden. Wenn Sie das Installationsprogramm verlassen, ohne dies zu tun, wird die Оnderung der Sprache nicht durchgefБhrt. ═══ 7.17. Wie kann ich SendYes! deinstallieren ? ═══ Um SendYes! zu deinstallieren, fБhren Sie das Deinstallationsprogramm aus, indem Sie das Symbol SendYes! WPS Deinstallationsprogramm ausfБhren oder das Deinstallationsprogramm von der Kommandozeile aus aufrufen. Dies wird die SendYes! WPS Programmobjekte von der ArbeitsoberflДche entfernen. Danach lФschen Sie die Dateien des SendYes! Pakets. ═══ 8. EinschrДnkungen ═══  SendYes! kann normalerweise nur Meldungsdialoge bearbeiten, die mit dem API WinMessageBox erstellt werden. Die IDs fБr die DruckknФpfe, die in diesen Standard-Meldungsdialogen verwendet werden, sind im Programmers Toolkit definiert. Ein zweites API, WinMessageBox2, gibt dem Programmierer die MФglichkeit, ebenfalls einen Meldungsdialog zu erstellen, aber die DruckknФpfe mit anderen Texten und anderen IDs zu versehen. SendYes! kann diese Meldungsdialoge nur dann bearbeiten, wenn wenigstens die Standard-IDs fБr die DruckknФpfe verwendet werden, da andere nicht bekannt sind. Des weiteren wБrde es sehr hilfreich sein, wenn auch die Texte der DruckknФpfe irgendwie mit denen der Standard-DruckknФpfe Бbereinstimmen. andernfalls werden Sie Schwierigkeiten haben, herauszubekommen, welchen Druckknopf Sie im SendYes! Aktionsprofil auswДhlen mБssen. Ein Beispiel, wo alles reibungslos funktionieren wБrde, ist, wenn eine Anwendung alle seine Meldungsdialoge immer in einer bestimmten Sprache erstellen soll, gleichgБltig unter welcher Sprachspezifischen OS/2 Version sie ausgefБhrt wird. Dann wБrde der Programmierer der Anwendung das WinMessageBox2 verwenden und dabei die Standard-IDs und Texte fБr die DruckknФpfe verwenden. In einem solchen Fall kФnnte ganz normal ein SendYes! Aktionsprofil fБr diesen Meldungsdialog erstellt und verwendet werden. Wenn Sie nicht sicher sind, ob ein Meldungsdialog die Standard-IDs fБr DruckknФpfe verwendet, БberprБfen Sie den Meldungsdialog mit der Utility PM Tree. Die IDs der verwendeten DruckknФpfe sollte im Bereich von 1 bis 8 liegen. Anmerkung: - PM Tree zeigt die ID 1 als DID_OK und ID 2 als DID_CANCEL an - Wenn der untersuchte Meldungsdialog weniger als vier DruckknФpfe verwendet, wird er auсerdem einen oder mehrere nicht verwendete DruckknФpfe mit IDs von 0x65 bis 0x67 enthalten, da immer vier DruckknФpfe erstellt werden, aber nur die IDs derjenigen DruckknФpfe redefiniert werden, die sichtbar sind und wirklich verwendet werden. ═══ 9. ZukБnftige Erweiterungen ═══  In einer zukБnftigen Version wird SENDYES.EXE durch ein richtiges WPS Objekt ersetzt werden und die aktuell vorhandenen Notizbuchseiten werden in das Einstellungsnotizbuch des WPS Objektes integriert. Alle Kommandozeilenparameter werden durch Setup-Strings ersetzt werden, sodaс eine Batch-Schnittstelle weiterhin mФglich ist. FБr alle, die gerne weiterhin auf der Kommandozeile arbeiten und nicht WPS Objekte benutzen mФchten, ist ein REXX Batch vorstellbar, der die Kommandozeilenparameter von V2.00 weiterhin unterstБtzt.  In zukБnftigen Versionen wird der Hook auch Бber den PMSHELL Prozess ladbar sein, sodaс der Overhead eines extra Prozesses vermieden werden kann. Die Menge des von SendYes! benФtigen Hauptspeichers wird aber nicht geringer werden, der einzige Unterschied wird sein, daс der Code, der die Hook DLL lДdt, ebenfalls in einer DLL steht, die ihrerseits automatisch durch PMSHELL geladen wird. Ein Nachteil besteht darin, daс SendYes! nur durch einen Neustart des Systems komplett aus dem Hauptspeicher entfernt werden kann. Darum wird das Laden durch einen separaten Prozess weiterhin angeboten werden, d.h. der Benutzer kann entscheiden, ob die SendYes! Programmdatei durch PMSHELL oder durch einen separaten Prozess geladen wird. Beachten Sie, daс das Markierungsfeld SendYes! aktivieren auf der Aktions-Seite deaktiviert ist, da in der aktuellen Version von SendYes! die Hook Programmdatei immer durch einen separaten Prozess geladen wird.  In der aktuellen Version von SendYes! wird die Hook Programmdatei immer aus dem Hauptspeicher entfernt, wenn der Hook deaktiviert wird. In zukБnftigen Versionen wird es mФglich sein, den Hook zwar zu deaktivieren, aber im Hauptspeicher zu belassen. Dies wird auch die einzige mФgliche Option sein, wenn die SendYes! Hook Programmdatei durch PMSHELL geladen wird. Wenn sie aber durch einen separaten Prozess geladen wird, kann der Benutzer entscheiden, ob sie bei Deaktivieren des Hooks aus dem Hauptspeicher entfernt werden soll oder nicht. Beachten Sie, daс das Markierungsfeld bei Deaktivieren aus Speicher entfernen auf der Aktions-Seite deaktiviert ist, da in der aktuellen Version von SendYes! die Hook Programmdatei immer aus dem Hauptspeicher entfernt wird, wenn der Hook deaktiviert wird.  SendYes! wird um eine Art von Schnappschuс- oder Lernfunktion erweitert werden, mit der die Meldungstexte aller Meldungsdialoge aufgefangen werden kФnnen, die erscheinen, wДhrend die Lernfunktion aktiv ist. Dies wird den Benutzer davon entlasten, Meldungstexte einzutippen, wenn neue Aktionsprofile erstellt werden. Beachten Sie, daс der MenБeintrag Suchen... im KontextmenБ der mit Definierte Aktionsprofile gekennzeichneten Liste auf der Aktions-Seite in der aktuellen Version deaktiviert ist und zur zukБnftigen Implementation dieser FunktionalitДt reserviert ist.  In der aktuellen SendYes! Version muс der Meldungstext exakt so eingegeben werden, wie er in dem zu bearbeitenden Meldungsdialog erscheint. Es kФnnte sinnvoll sein, regulДre AusdrБcke zu unterstБtzen, allerdings wird dann auch ein Verfahren benФtigt, um regulДre AusdrБcke miteinander zu vergleichen, da die Meldungstexte aller gespeicherten Aktionsprofile eindeutig sein mБssen. Im Moment wird ein "case sensitive string compare" verwendet, um sicherzustellen, daс ein neuer oder geДnderter Meldungstext eindeutig ist... Wenn allerdings die Suchen... Funktion implementiert ist, dann ist die UnterstБtzung von regulДren AusdrБcken vielleicht nicht mehr so wichtig ?  eine Import- und Exportfunktion fБr Aktionsprofile kФnnte sinnvoll sein. Im Moment ist mir nicht klar, ob sowas wirklich gebraucht wird. Wenn Sie glauben, daс Sie so etwas wirklich gebrauchen kФnnen, erwДhnen Sie es bitte in Ihrem e-mail.  Die Listen auf der Aktions-Seite sind im Moment nur Listen mit einfacher Selektierung. Es wДhre nett, wenn man mehrere Aktionsprofile auf einmal selektieren und z.B. mit einem Mal verschieben kФnnte. Das klingt vielleicht einfach, aber ist doch ziemlich kompliziert und mit einigem Aufwand verbunden... ═══ 10. Technische Details ═══ Die SendYes! PM Hooks erweiterte Listen National Language Support IPFC Preprocessor syslevel manager ═══ 10.1. Die SendYes! PM Hooks ═══ Die SendYes! FunktionalitДt wird dadurch ermФglicht, daс SendYes! PM Hooks (Haken) fБr das Abfangen bestimmter PM Meldungen installiert. Allgemeines Бber PM Hooks Es gibt verschiedene Kategorien von Hooks und jeder Hook erhДlt vom System alle Meldungen, die zu seiner Kategorie gehФren. Nach der Installation eines Hooks werden diese Meldungen zuerst an den Hook gesendet. Der Hook reagiert in der Regel nur auf einige wenige Meldungen, wДhrend alle anderen Meldungen an den eigentlichen Adressaten weitergeleitet werden. Die beiden wichtigsten Hooks sind der SendMessage Hook und der Input Hook. Der erste erhДlt alle Nachrichten, die synchron mit dem API WinSendMsg an irgendein PM Fenster gesendet werden. Der SendMessage Hook muс die Nachricht auf jeden Fall nach der eigenen Bearbeitung an den eigentlichen Adressaten weiterleiten, er kann aber ansonsten auf jeden Fall beliebig darauf reagieren. Der Input Hook hingegen erhДlt alle Meldungen, die mit dem API WinPostMsg asynchron an irgend ein PM-Fenster verschickt werden und bis zur Bearbeitung in dessen Meldungs-Warteschlange plaziert werden. Der Input Hook kann im Gegensatz zum SendMessage Hook nicht nur auf die Meldung reagieren, sondern bei Bedarf verhindern, daс die Meldung in die Meldungs-Warteschlange des EmpfДngers gestellt wird. So kann verhindert werden, daс der Adressat diese Meldung erhДlt bzw. bearbeitet. Die SendYes! PM Hooks SendYes! installiert je einen SendMessage Hook und einen Input Hook. Der SendYes! SendMessage Hook wartet darauf, daс eine Meldung fБr einen Fokuswechsel gesendet wird. Diese Meldungen werden vom PM an jedes Dialogfenster gesendet, dessen Kontrollfeld den Eingabefokus erhДlt oder verliert. SendYes! kann dann prБfen, ob das betreffende Dialogfenster ein Meldungsdialog ist. Wenn dies der Fall ist, dann wird der Dialog bzw. dessen Meldungstext mit den aktiven Aktionsprofilen verglichen. Gleicht der Meldungstext des Meldungsdialogs dem gespeicherten Meldungstext eines aktiven Aktionsprofils, so wird indirekt die im Aktionsprofil definierte Aktion ausgefБhrt. Die jeweilige Aktion kann nicht direkt ausgefБhrt werden, da beim erstmaligen Erhalts des Eingabefokus der Meldungsdialog noch nicht vollstДndig initialisiert ist. Lediglich der Standarddruckknopf ist zu diesem Zeitpunkt definiert und fБr eine Aktion verfБgbar, alle anderen DruckknФpfe jedoch noch nicht. Um nun Aktionen auf alle DruckknФpfe ausfБhren zu kФnnen, muс SendYes! dafБr sorgen, daс es noch einmal zu einem spДteren Zeitpunkt die Kontrolle erhДlt. Es verschickt dazu mit WinPostMsg eine spezielle Meldung an den Meldungsdialog, Da jedes PM Fenster erst dann Meldungen aus seiner Meldungswarteschlange erhalten kann, wenn seine Initialisierung abgeschlossen ist, erhДlt auch der Meldungsdialog diese spezielle Meldung erst, nachdem er vollstДndig initialisiert ist. Zu diesem Zeitpunkt fДngt der SendYes! Input Hook diese Meldung ab und kann nun die gewБnschte Aktion auf jeden der nun vollstДndig verfБgbaren DruckknФpfe vornehmen. Eine Besonderheit ist, falls die gewБnschte Aktion das Setzen eines Druckknopfes als Standarddruckknopf (und damit das Setzen des Eingabefokus darauf) ist: dann muс SendYes! auсerdem sicherstellen, daс diese Aktion nur einmal durchgefБhrt wird, also nur, wenn der Meldungsdialog das erste Mal aktiviert wird und damit eines seiner Kontrollfelder den Eingabefokus erhДlt. Ansonsten wБrde jeder Fokuswechsel innerhalb des Meldungsdialogs, also z.B. das Bewegen des Eingabefokus mit den Pfeiltasten immer wieder dieselbe Aktion auslФsen und der Fokus wБrde von SendYes! immer wieder auf denselben Druckknopf gesetzt. Das Ergebnis wДre, daс der Eingabefokus per Tastatur nicht mehr verДndert werden kФnnte und daher per Tastatur nur der Standarddruckknopf erreichbar wДre. Technisches Бber PM Hooks Ein Hook ist eine Funktion, die in einer DLL stehen muс. Der Prozess, der diese DLL lДdt und den Hook installiert, muс aktiv und im Hauptspeicher verbleiben, bis der Hook wieder deinstalliert wird. Daher werden fБr einen Hook mindestens eine Programmdatei und eine DLL benФtigt. Um den Hauptspeicher zu begrenzen, der durch den Hook belegt wird, ist seit V2.00 von SendYes! der Code, der die Hook DLL lДdt und den Hook installiert, von SENDYES.EXE. in eine separate Hook Programmdatei verlegt worden. Auf diese Weise ist es mФglich gewesen, die Benutzerschnittstelle in SENDYES.EXE bedeutend zu erweitern, wДhrend der Hook immer noch lediglich etwa dieselbe Menge Speicher benФtigt wie in der Vorversion. Da SENDYES.EXE nur fБr die Konfiguration bzw. fБr die Initialisierung benФtigt wird, belegt SendYes! im laufenden Betrieb entsprechend nur die geringe Menge an Hauptspeicher, die der Hook benФtigt. Die beiden folgenden Quelldateien fБr die Hook Lade-Programmdatei und die Hook DLL machen den Hauptteil der Arbeit und sind daher wohl die interessantesten, wenn auch zwei der kleinsten von allen SendYes! Quelldateien:  Hook Lade-Programmdatei  Hook DLL Weitere Informationen Бber Senden und Posten von PM Meldungen und Бber PM Hooks erhalten Sie in Programmers Toolkit Dokumentation. ═══ 10.1.1. hook Lader ═══ SNDYSHK.C #define INCL_DOSSEMAPHORES #define INCL_DOSMODULEMGR #define INCL_WINWINDOWMGR #define INCL_WINMESSAGEMGR #define INCL_WINHOOKS #define INCL_ERRORS #define INCL_DOSPROCESS #include #include #include #include "sndyshk.h" #include "sndysdll.h" #include "sndysldr.h" #define SENDYES_HOOKDLLFILE "SNDYSDLL" #define ERROR_BEEP DosBeep(800,100) /*┌────────────────────────────────────────────────────────────────────────┐ *│ Name : main │ *│ Comment : │ *│ Author : C.Langanke │ *│ Date : 05.11.1995 │ *│ Update : 05.11.1995 │ *│ called by : C-Runtime │ *│ calls : Win*, Dos* │ *│ Input : INT, PSZ[] - command line parms │ *│ Tasks : - starts hook │ *│ returns : INT - OS/2 error code │ *└────────────────────────────────────────────────────────────────────────┘ */ INT main ( INT argc, PSZ argv[] ) { HAB hab; HMQ hmq; QMSG qmsq; HEV hevTerminationSem = 0; HEV hevStartupSem = 0; HLIB hlibDLL = 0; BOOL fSendMsgHookActive = FALSE; BOOL fInputHookActive = FALSE; APIRET rc = NO_ERROR; do { // check if startup sem is there to make sure that // this executable is loaded only by the SendYes! GUI rc = DosOpenEventSem( SEM_STARTUP, &hevStartupSem); if (rc != NO_ERROR) break; // initialize PM resources hab = WinInitialize( 0); if (hab == NULLHANDLE) { rc = ERROR_INVALID_FUNCTION; break; } hmq = WinCreateMsgQueue( hab, 0); if (hmq == NULLHANDLE) { rc = ERRORIDERROR( WinGetLastError( hab)); break; } // do not participate on shutdown processing // because we will not dispatch our message queue, if (!WinCancelShutdown( hmq, TRUE)) { rc = ERRORIDERROR( WinGetLastError( hab)); break; } // initialize SENDYES DLL Data rc = InitDllData(); if (rc != NO_ERROR) { break; } // set up termination sem rc = DosCreateEventSem( SEM_TERMINATION, // name of sem &hevTerminationSem, // handle 0L, // named sem always shared FALSE); // initially set if (rc != NO_ERROR) { break; } // get DLL Handle, cannot fail because it is linked already statically rc = DosQueryModuleHandle( SENDYES_HOOKDLLFILE, &hlibDLL); // start the SendMsg hook fSendMsgHookActive = WinSetHook( hab, NULLHANDLE, HK_SENDMSG, (PFN)&SendMsgHook, hlibDLL); fInputHookActive = WinSetHook( hab, NULLHANDLE, HK_INPUT, (PFN)&InputHook, hlibDLL); if ((!fSendMsgHookActive) || (!fInputHookActive)) { rc = ERRORIDERROR( WinGetLastError( hab)); break; } // note that the message queue is not dispatched, // as in normal PM programs. We need the message // queue only for being able to call Win* APIs // the hooks do not make use of it ... // now post startup sem for the SendYes! GUI // to signal that startup processing has finished DosPostEventSem( hevStartupSem); // ... and wait for termination sem // posted by the SendYes! GUI rc = DosWaitEventSem( hevTerminationSem, SEM_INDEFINITE_WAIT); } while (FALSE); // cleanup DeinitDllData(); if (fSendMsgHookActive) WinReleaseHook( hab, NULLHANDLE, HK_SENDMSG, (PFN)&SendMsgHook, (HLIB)0); if (fInputHookActive) WinReleaseHook( hab, NULLHANDLE, HK_SENDMSG, (PFN)&InputHook, (HLIB)0); if (hmq) WinDestroyMsgQueue( hmq); if (hab) WinTerminate( hab); if (hevTerminationSem) DosCloseEventSem (hevTerminationSem); if (hevStartupSem) DosCloseEventSem( hevStartupSem); if (rc != NO_ERROR) ERROR_BEEP; return rc; } ═══ 10.1.2. hook ═══ SNDYSDLL.H #ifndef _SNDYSDLL_H #define _SNDYSDLL_H #include // // public prototypes // VOID EXPENTRY SendMsgHook( HAB hab, PSMHSTRUCT psmh, BOOL fInterTask); BOOL EXPENTRY InputHook( HAB hab, PQMSG pqmsg, USHORT usRemove); APIRET InitDllData( VOID); APIRET DeinitDllData( VOID); #endif // _SNDYSDLL_H SNDYSDLL.C #define INCL_WIN #define INCL_DOS #define INCL_ERRORS #include #include "sndysdll.h" #include "sndysprf.h" #include "sndyshk.h" #include // // magic values for resids // when these ids change, SendYes! will not work anylonger ... // #define ID_MSGBOX_MESSAGE 200 // ID of message text #define ID_MSGBOX_ICON 300 // ID of icon // // global variables // static BOOL fInitialized = FALSE; static PACTIONPRFLIST pactionprflistGlobal = NULL; static HMTX hmtxUpdateGlobal = 0L; // // defines for trigger message // #define WM_USER_MSGBOX_TRIGGER 0xFEDC #define MP_USER_MSGBOX_TRIGGER 0xFEDC /*┌────────────────────────────────────────────────────────────────────────┐ *│ Name : InitDllData │ *│ Comment : is to be called before use of the hook. │ *│ Author : C.Langanke │ *│ Date : 10.10.1995 │ *│ Update : 18.12.1995 │ *│ called by : main │ *│ calls : Dos* │ *│ Global i/o: PACTIONPRFLIST - pointer to list in named shared segment │ *│ HMTX - handle to update semaphore │ *│ BOOL - initialize flag │ *│ Input : - │ *│ Tasks : - initialises DLL data: │ *│ - gets access to shared segment │ *│ - creates update semaphore │ *│ returns : APIRET - OS/2 error code │ *└────────────────────────────────────────────────────────────────────────┘ */ APIRET _Export InitDllData ( VOID) { APIRET rc; // initialized ? if (fInitialized) return NO_ERROR; do { // get access to named shared segment // to keep it in access for this process rc = DosGetNamedSharedMem( (PVOID *) &pactionprflistGlobal, SEG_ACTIONPRFLIST, PAG_READ | PAG_WRITE); if (rc != NO_ERROR) break; // set up uptdate sem to keep it // in access for this process rc = DosCreateMutexSem( SEM_UPDATE, // name of sem &hmtxUpdateGlobal, // handle 0L, // named sem always shared FALSE); // initially not owned if (rc != NO_ERROR) break; } while (FALSE); // initialize done fInitialized = (rc == NO_ERROR); return rc; } /*┌────────────────────────────────────────────────────────────────────────┐ *│ Name : DeinitDllData │ *│ Comment : is to be called on termination of hook │ *│ Author : C.Langanke │ *│ Date : 10.10.1995 │ *│ Update : 18.12.1995 │ *│ called by : main │ *│ calls : Dos* │ *│ Global i/o: PACTIONPRFLIST - pointer to list in named shared segment │ *│ HMTX - handle to update semaphore │ *│ BOOL - initialize flag │ *│ Input : - │ *│ Tasks : - free DLL resources │ *│ returns : APIRET - OS/2 error code │ *└────────────────────────────────────────────────────────────────────────┘ */ APIRET _Export DeinitDllData ( VOID) { // deaktivate hook fInitialized = FALSE; // free named shared segment DosFreeMem( pactionprflistGlobal); // close update sem DosCloseMutexSem( hmtxUpdateGlobal); return NO_ERROR; } /*┌────────────────────────────────────────────────────────────────────────┐ *│ Name : SendMsgHook │ *│ Comment : Original version by Wes Santee, 1995 │ *│ Note that the global variables (pointer to shared mem │ *│ and handle to update sem) are not valid within the hook │ *│ function, because this function is executed within the │ *│ process environment of the message sender. │ *│ So they must be obtained from the system again. │ *│ Note that not all pushbuttons are defined, when │ *│ WM_FOCUSCHANGE or WM_ACTIVATE is sent (only the buttons │ *│ up to the defpushbutton are already there). Because we │ *│ want to be able to act on all pushbuttons, we post a │ *│ a trigger message and intercept that later through the │ *│ input hook, because that one is processed after creation │ *│ of the message box. │ *│ Author : Wes Santee, C.Langanke │ *│ Date : 1995 │ *│ Update : 18.12.1995 │ *│ called by : WinSendMsg API (???) │ *│ calls : Win*, Dos* │ *│ Input : HAB, PSMHSTRUCT, BOOL - parms of Send Message Hook │ *│ Tasks : - intercepts focuschange messages │ *│ - if it is a msgbox to process, post trigger message │ *│ returns : VOID │ *└────────────────────────────────────────────────────────────────────────┘ */ VOID _Export EXPENTRY SendMsgHook ( HAB hab, PSMHSTRUCT psmh, BOOL fInterTask ) { // initialized ? if (!fInitialized) return; // is it a focuschange and a "gain focus" message ? if ((psmh->msg == WM_FOCUSCHANGE) && ( SHORT1FROMMP( psmh->mp2) == TRUE)) { ULONG ulWindowID; CHAR szClassName[ 32]; HWND hwndMessage; HWND hwndIcon; // focus change in effect, is it a frame window ? WinQueryClassName( psmh->hwnd, sizeof( szClassName), szClassName); if ( strcmp( szClassName, "#1") == 0) { // has it subcontrols with the magic res // id for message text and icons ? hwndIcon = WinWindowFromID( psmh->hwnd, ID_MSGBOX_ICON); hwndMessage = WinWindowFromID( psmh->hwnd, ID_MSGBOX_MESSAGE); if ((hwndIcon) && (hwndMessage)) { APIRET rc; CHAR szDialogMessage[ MESSAGE_MAXLEN]; ULONG i; PACTIONPRFLIST pactionprflist = NULL; PACTIONPRF pactionprf = NULL; HMTX hmtxUpdate = 0; do { // query message text if (!WinQueryWindowText( hwndMessage, sizeof( szDialogMessage), szDialogMessage)) break; // get access to named shared segment // for the callers process environment rc = DosGetNamedSharedMem( (PVOID *) &pactionprflist, SEG_ACTIONPRFLIST, PAG_READ | PAG_WRITE); if (rc != NO_ERROR) break; // get handle to update sem // for the callers process environment rc = DosOpenMutexSem( SEM_UPDATE, &hmtxUpdate); if (rc != NO_ERROR) break; // get exclusive access to action profile list rc = DosRequestMutexSem( hmtxUpdate, SHAREDACCESS_WAIT); if (rc != NO_ERROR) break; // loop through all profiles for (i = 0, pactionprf = &pactionprflist->actionprf; i < pactionprflist->ulActionCount; i++, pactionprf = NEXTACTIONPRF( pactionprf)) { // skip profiles marked inactive or deleted if ((!pactionprf->fActive) || (pactionprf->fDeleted)) continue; // is it the message stored in this action profile ? if (strcmp( szDialogMessage, pactionprf->szMessage) != 0) continue; else { // post trigger message with button and action WinPostMsg( psmh->hwnd, WM_USER_MSGBOX_TRIGGER, MPFROMSHORT(MP_USER_MSGBOX_TRIGGER), MPFROM2SHORT( pactionprf->ulButton, pactionprf->ulAction)); // message found, so we're done break; } // end if "stored message" } // end for "all messages" } while (FALSE); // release access to the shared segment if (hmtxUpdate) { DosReleaseMutexSem( hmtxUpdate); DosCloseMutexSem( hmtxUpdate); } // free shared segment DosFreeMem( pactionprflist); } // end if (hwndMessage) } // if (hwndDesktop == hwndParent) } // end if (psmh->msg == WM_FOCUSCHANGE ) return; } /*┌────────────────────────────────────────────────────────────────────────┐ *│ Name : InputHook │ *│ Comment : │ *│ Author : C.Langanke │ *│ Date : 06.12.1995 │ *│ Update : 06.12.1995 │ *│ called by : PM message queue │ *│ calls : Win*, Dos* │ *│ Input : HAB, PQMSG, USHORT - parms of input hook │ *│ Tasks : - intercepts trigger message and performs specified action │ *│ on specified pushbutton. │ *│ returns : BOOL - remove flag │ *└────────────────────────────────────────────────────────────────────────┘ */ BOOL EXPENTRY InputHook ( HAB hab, PQMSG pqmsg, USHORT usRemove ) { BOOL fRemove = FALSE; static HWND hwndFocusChanged = NULLHANDLE; // make sure that it is really our trigger message ! if ((pqmsg->msg == WM_USER_MSGBOX_TRIGGER) && (pqmsg->mp1 == (MPFROMSHORT(MP_USER_MSGBOX_TRIGGER)))) { HWND hwndButton; ULONG ulButton = SHORT1FROMMP( pqmsg->mp2); ULONG ulAction = SHORT2FROMMP( pqmsg->mp2); // determine button window hwndButton = WinWindowFromID( pqmsg->hwnd, ulButton); // act upon button only if it is there if (hwndButton != NULLHANDLE) { switch (ulAction) { case ACTION_PRESS: WinPostMsg( hwndButton, BM_CLICK, MPFROMLONG( FALSE), 0); break; case ACTION_DEFAULT: // make sure to change focus only once per message box if (pqmsg->hwnd != hwndFocusChanged) { WinSetFocus( WinQueryDesktopWindow( WinQueryAnchorBlock( pqmsg->hwnd), 0), hwndButton); WinPostMsg( hwndButton, BM_SETDEFAULT, MPFROMLONG( TRUE), 0); hwndFocusChanged = pqmsg->hwnd; } break; case ACTION_DISABLE: WinEnableWindow( hwndButton, FALSE); break; } // end switch } // end if (hwndButton != NULLHANDLE) // remove message fRemove = TRUE; } // end if ((pqmsg->msg == WM_USER_MSGBOX_TRIGGER) && ... return fRemove; } ═══ 10.2. erweiterte Listen ═══ Um eine bedienungsfreundliche Benutzerschnittstelle anbieten zu kФnnen, verwendet SendYes! die folgenden leicht zu programmierenden und leicht zu bedienenden Erweiterungen fБr Listen, nДmlich die FunktionalitДt des Direct Manipulation ListBox (DMLB) Kontrollfeldes und des MultiColumn ListBox (MCLB) PM Kontrollfeldes. Dies erweitert normale Listen um die FДhigkeit, eine mehrspaltige Liste anzeigen zu kФnnen und auсerdem Ziehen&Ъbergeben (Drag&Drop) zwischen Listen zu unterstБtzen. Mit diesen Erweiterungen wird einige FunktionalitДt eines Containers abgedeckt, sie sind aber wesentlich einfacher zu programmieren und in der Bedienung schneller. SendYes! verwendet eine leicht modifizierte Version des Direct Manipulation ListBox (DMLB) Kontrollfeldes. Die kompletten Sourcen inclusive INF Referenzdatei sind auf IBM ftp Servern in der Datei LB.ZIP erhДltich. FБr weitere Informationen Бber die Programmierung dieser Kotrollfelder siehe auch OS/2 Developer Magazine, Nov./Dez. 1995. ═══ 10.2.1. Direct Manipulation ListBox (DMLB) ═══ Auszug aus DMLB.INF: Acknowledgments This control was originally conceived at IBM Yorktown Research by Alan Warren. The control was rewritten and enhanced by Mark McMillan of IBM, Research Triangle Park, USA. Description The Direct Manipulation ListBox is a very useful enhancement for the standard PM listbox control. It supplies the capability to support drag/drop reordering of items in a listbox, and drag/drop of items from one listbox to another. ═══ 10.2.2. MultiColumn ListBox (MCLB) ═══ Auszug aus MCLB.INF: Acknowledgments This control was originally conceived at the IBM United Kingdom Warwick Development group by Charles Cooper. The control was rewritten and enhanced by Mark McMillan of IBM, Research Triangle Park, USA. Description The MultiColumn ListBox is a very useful PM custom control designed to overcome some of the limitations of the standard PM listbox and container controls. It is simpler and in many cases faster than a container, but provides multicolumn (tabular) support for display of column-oriented data. The MCLB supports individually sizable columns, optional horizontal scroll bars at the base of each column, seperate font and color support for the titles and column data, owner-drawn lists, and a simple listbox-style programming model. The MCLB can be subclassed with the DMLB (Direct Manipulation ListBox) function also supplied in this toolkit to provide drag/drop reordering capability to the MCLB. ═══ 10.3. National Language Support ═══ SendYes! bietet zu Zeit englische und deutsche SprachunterstБtzung. Das SendYes! Paket enthДlt eine zip Datei mit den sprachenspezifischen Quelldateien fБr SendYes! in der englischen Version. Sie sind herzlich dazu eingeladen, diese in Ihre Sprache zu Бbersetzen und per e-mail an mich zu schicken. Als Dank wird Ihr Name ab der darauffolgenden Version von SendYes! im Abschnitt SendYes! National Language Supporter erscheinen. Die sprachenspezifischen Dateien sind: SNDYSENG.RCH diese Datei enthДlt die Texte, die in der SendYes! GUI verwendet werden SNDYSENG.H diese Datei enthДlt die Seiten-Titel, die in der SendYes! HLP und INF datei verwendet werden SNDYSENG.SRC diese Datei enthДlt den Quellcode fБr die SendYes! HLP und INF Datei SNDYSENG.TXT diese Datei enthДlt die Meldungen fБr das SendYes! Installationsprogramm und das Deinstallationsprogramm. MACROS.IPH and SENDYES.H diese Dateien enthalten Makros, die in SNDYSENG.SRC verwendet werden. Ъbersetzer sollten diese Dateien nicht verДndern, da sie nicht sprachenspezifisch sind. Sie werden nur mitgeliefert, um die in der IPF Quelldatei verwendeten Makros besser verstehen zu kФnnen. Siehe auch Das SendYes! Paket ═══ 10.4. IPFC Preprocessor ═══ FБr die Entwicklung der SendYes! HLP und INF Datei wird der IPFC Preprocessor Version 1.0 von Doug Haigh verwendet. Dieser PrДprozessor ermФglicht die Verwendung von  einfachen BookMaster Makros mit SchlБsselwort- und Positionsparametern. Dies erleichtert stark die Verwendung von IPF Links, Autolinks und die Fensterpositionierung.  C Headerdateien, die Бber ein spezielles SchlБsselwort (.imd) eingefБgt werden. Die C-defines werden in BookMaster Symbole umgewandelt und kФnnen dann mit BookMaster-Makros verwendet werden.  einzufБgenden Dateien, die sich nicht im aktuellen Verzeichnis befinden. Sie werden auсderdem in dem Pfad gesucht, der durch die Umgebungsvariable INCLUDE definiert wird.  Bookmaster 1.0 Vanilla conditional compile Variablen. Diese erlauben das konditionelle Kompilieren von Teilen der IPF Quelldatei fБr die HLP Datei und anderer Teile fБr die INF Datei, wДhrend der Rest fБr beide Dateien kompiliert wird. Auf diese Weise ist es mФglich, eine einzige Quelldatei fБr die HLP und fБr die INF Datei zu verwenden. FБr weitere Informationen Бber sprachenspezifische Dateien und die englischen Quelldateien fБr die HLP und INF Datei siehe auch National Language Support ═══ 10.5. syslevel manager ═══ Zur Erstellung der SendYes! Syslevel Datei wurde der Syslevel Manager SLVMGR von Duane S. Wood verwendet. Das Paket, aus dem dieses Programm stammt, enthДlt diesen Manager als ein Kommandozeilenutility, eine Textdatei, welche das Syslevel Dateiformat beschreibt und eine einfache PM Anwendung zum einfachen Erstellen und/oder Editieren von Syslevel Dateien. Das Paket wurde zuletzt in 1993 aktualisiert, aber das Syslevel Dateiformat scheint sich seitdem nicht verДndert zu haben. ═══ 11. Revisionshistorie ═══ Version 2.00 Version 1.10 Version 1.00 Version 0.70 Version 0.60 file_id.diz ═══ 11.1. Version 2.00 by C.Langanke (1. MДrz 1996) ═══  National Language Support implementiert. Meldungen, Dialoge und Hilfetexte sind zur Zeit in Deutsch und Englisch verfБgbar.  Der Hook wird ab jetzt anstelle von SENDYES.EXE durch eine separate Programmdatei geladen. Auf diese Weise wird der Hauptspeicherbedarf des Hooks auf ein absolutes Minimum reduziert, wДhrend die FunktionalitДt der Benutzerschnittstelle in SENDYES.EXE erweitert werden kann. Die Hook Programmdatei kann nur durch SENDYES.EXE kontrolliert werden. FБr technische Details Бber den SendYes! Hook siehe auch Die SendYes! PM Hooks in Technische Details  Die Programmdatei, welche den SendYes! Hook lДdt, wird nun vom Systemabschluсverfahren ausgeschlossen. Auf diese Weise verbleibt es im Hauptspeicher, bis alle Textsitzungen geschlossen sind.  Wenn SENDYES.EXE ohne Parameter aufgerufen wird, erscheint die neue SendYes! GUI. Sie besteht aus einem Notizbuch, welches fast wie ein Einstellungsnotizbuch eines WPS Objektes verwendet werden kann. Es erlaubt die Definition von Aktionsprofilen, um jeden gewБnschten Meldungsdialog angeben zu kФnnen, der automatisch bearbeitet werden soll. Die GUI verwendet die FunktionalitДt des Direct Manipulation ListBox (DMLB) Kontrollfeldes und des MultiColumn ListBox (MCLB) PM Kontrollfeldes, um eine bedienerfreundliche und dennoch schnelle GUI anbieten zu kФnnen. FБr witere technische Details siehe auch erweiterte Listen in Technische Details  SendYes! stellt drei vordefinierte Aktionsprofile fБr die Meldungsdialoge zur VerfБgung, die erscheinen, wenn OS/2 oder DOS VIO oder Vollbildschirm-Textsizungen geschlossen werden oder ein Systemabschluс durchgefБhrt wird. Auf diese Weise wird die FunktionalitДt von vorherigen SendYes! Versionen unterstБtzt, ohne daс SendYes! dafБr zuvor durch den Benutzer konfiguriert werden muс.  TESTALL.CMD wurde entfernt. Das Schlieсen von Testsitzungen kann nun auf der Aktions-Seite in der SendYes! GUI getestet werden. Auf diese Weise kann SendYes! dafБr sorgen, daс die entsprechenden vordefinierten Aktionsprofile wirklich aktiv sind, wenn sie getestet werden sollen. Siehe auch Wie kann ich vordefinierte Aktionsprofile testen ?  SendYes! enthДlt ein Installationsprogramm, das einen SendYes! Ordner auf der ArbeitsoberflДche erstellt. Dieser Ordner enthДlt wiederum einige SendYes! WPS Programmobjekte. Mit dem Deinstallationsprogramm kФnnen diese objekte wieder entfernt werden. Wenn Sie den Auswahlcursor innerhalb des SendYes! Ordners bewegen und dann die F1 Taste drБcken, wird das entsprechende Hilfefenster erscheinen.  Neue Kommandozeilenparameter: - /LOAD - /UNLOAD - /ACTIVATE - /DEACTIVATE - /STATUS - /BATCH - /QUIET  Nicht mehr unterstБtzte Kommandozeilenparameter: - Der Parameter /SWITCHENTRY wird nicht lДnger unterstБtzt. Die Hook Programmdatei kann ausschlieсlich nur Бber die SendYes! GUI oder Бber die Parameter /UNLOAD and /LOAD bzw. /ACTIVATE und /DEACTIVATE fБr SENDYES.EXE gesteuert werden. - Der Parameter /CLOSE wurde durch den Parameter /UNLOAD ersetzt. Der neue Parameter schlieсt nicht mehr eine aktive Instanz von SENDYES.EXE, sondern stattdessen eine aktive instanz der nun davon getrennten Hook Programmdatei.  Online Hilfe Buch hinzugefБgt (Sie lesen es garade). Beachten Sie, daс die Hilfe Datei fБr die SendYes! GUI ein Auszug dieser INF Datei ist.  SendYes! enthДlt nun eine Syslevel Datei, die die Version von SendYes! anzeigt, wenn der OS/2 Befehl syslevel ausgefБhrt wird. FБr weitere informationen Бber die SendYes! Syslevel Datei siehe auch syslevel manager  Der grФсte Teil der Quelldateien wird nicht mehr weitergegeben. Der Umfang aller SendYes! Quelldateien ist so groс geworden, daс ich ab sofort nur noch folgende Teile weitergebe: - die Quelldateien fБr den Hook und die Hook Programmdatei sind in dieser INF Datei enthalten. Ich glaube, sie dБrften am meisten von Interesse sein. - Die Quelldatei(en) fБr die HLP und die INF Datei. Sie enthalten einige Techniken fБr die Entwicklung von Online Hilfe-BБchern mit den IPFC Preprocessor BookMaster Makros und Variablen zur konditionellen Kompilierung. Siehe auch Die SendYes! PM Hooks IPFC Preprocessor National Language Support Die anderen Quelldateien enthalten lediglich normale GUI FunktionalitДt, fБr die weitere Informationen aus dem Programmers Toolkit entnommen werden kФnnen (von wo auch ich alle Informationen erhalten habe). Wenn Sie darБber hinaus Fragen haben, mailen Sie mir diese zu und ich werden mein Bestes tun, um diese zu beantworten. ═══ 11.2. Version 1.10 by C.Langanke (13. Oktober 1995) ═══  SendYes! wurde mit IBM C Set++ V2 kompiliert. Das emx runtime wird nicht lДnger benФtigt.  Neue Kommandozeilenparameter: - Parameter /? oder /Help zeigt eine kurze Hilfe an. - Parameter /Close schlieсt eine aktive Instanz von SendYes!. Wenn SendYes! micht aktiv ist, wird ein Fehlermeldungsdialog angezeigt. - Parameter /Batch unterdrБckt Meldungsdialoge und generiert stattdessen Informations- bzw. FehlertФne. - Parameter /Switchentry erstellt analog zu /S in SendYes! V1.00 einen Eintrag in der Fensterliste - die Parameternamen kФnnen wahlweise groс und klein geschrieben werden. - Anstelle eines SchrДgstriches kФnnen Sie auch das Minuszeichen verwenden - das heiсt, daс z.B. die Parameter /load und -load gleichwertig sind. - es reicht aus, nur den ersten Buchstaben des Schalternamens anzugeben - das heiсt, daс .z.B. die Parameter /b und /batch (oder -b und -batch) ebenfalls gleichwertig sind.  Eine Fehler-Meldungsdialog wird angezeigt, wenn - SendYes! bereits aktiv ist - SendYes! nicht richtig initialisiert werden kann - SendYes! nicht aktiv ist, wenn es mit dem Parameter /C geschlossen werden soll - ein ungБltiger Parameter angegeben wurde  Ein Informations-Meldungsdialog wird angezeigt, wenn - SendYes! erfolgreich mit dem Parameter /C geschlossen werden konnte.  Nur noch Meldungsdialoge, deren Meldungstexte mit "This message may contain an active program." werden geschlossen. Dies hДlt SendYes! davon ab, jeden beliebigen Meldungsdialog mit MBID_YES zu schlieсen, wie dies bis jetzt der Fall war. SendYes! liest den richtigen Meldungstext aus PM Resourcen-DLLs, daher sollte es sprachenneutral sein. UnglБcklicherweise ist der Meldungstext fБr das Schlieсen von OS/2 Vollbildschirm-Textsitzungen im zweiten Satz etwas anders, daher wird der Meldungstext nur bis zum ersten Punkt verglichen. Ich hoffe, daс dies unter allen zukБnftigen OS/2-Versionen kompatibel sein wird und wirklich zu allen unterschiedlichen OS/2-Versionen verschiedener Sprachen kompatibel ist. Um es auszutesten: FБhren sie TESTALL.CMD aus, um alle vier Arten von Textsitzungen zu erstellen und Schlieсen Sie diese, wДhrend SendYes! aktiv ist: wenn sie ohne BestДtigungsdialoge schlieсen, funktioniert alles gut. Wenn nicht, teilen Sie es mir bitte per e-mail mit... ═══ 11.3. Version 1.00 by Wes Santee (26. August 1995) ═══  Now using emx0.9a, fix 6 (emxfix06.zip). Be sure to get the updated emxrt.zip runtime DLL's (see README.TXT)  '/S' parameter now tells SendYes! to put an entry in the switch list  SendYes! icon now bound to executable file ═══ 11.4. Version 0.7 by Wes Santee (17. Juni 1995) ═══  Now using emx0.9a, fix 5 (emxfix05.zip). Be sure to get the updated emxrt.zip runtime DLL's.  Wouldn't close full-screen sessions. Fixed. ═══ 11.5. Version 0.6 by Wes Santee (29. Mai 1995) ═══  Initial release ═══ 11.6. file_id.diz ═══ (v2.00) SendYes! - PM/WPS background utility SendYes! processes standard message boxes that you define SendYes! action profiles for automatically and performs one of three possible actions on one of the pushbuttons. No more confirmation boxes for closing a DOS or OS/2 windowed or fullscreen text session if you don't like them. New GUI ! German and english NLS support ! Freeware ! Author/Maintainer: cla@oerag.de. ═══ 12. Danksagungen ═══ Idee fБr SendYes! erweiterte Listen IPFC Preprocessor syslevel manager SendYes! National Language Supporter ═══ 12.1. Idee fБr SendYes! ═══ Aller Dank fБr die Idee und das Erstellen der ersten Version von SendYes! gebБhrt Wes Santee. ═══ 12.2. erweiterte Listen ═══ Die SendYes! GUI verwendet neue Listen-Kontrollfelder, die die LeistungsfДhigkeit von Listen sehr erweitern. Diese FunktionalitДt ermФglichte mir eine einfache Programmierung und allen Benutzern eine einfache Handhabung. Aller Dank dafБr gebБhrt  Alan Warren von IBM, Yorktown Research und Mark McMillan von IBM, Research Triangle Park, USA fБr das Direct Manipulation ListBox (DMLB) Kontrollfeld und  Charles Cooper von IBM, United Kingdom Warwick Development group und Mark McMillan von IBM, Research Triangle Park, USA. fБr das MultiColumn ListBox (MCLB) Kontrollfeld. FБr technische Einzelheiten siehe auch erweiterte Listen in Technische Details ═══ 12.3. IPFC Preprocessor ═══ FБr das VorБbersetzen der Quelldatei fБr die HLP und INF Dateien wurde der IPFC Preprocessor Version 1.0 von Doug Haigh verwendet. FБr technische Einzelheiten siehe auch IPFC Preprocessor in Technische Details ═══ 12.4. syslevel manager ═══ FБr die Erstellung der Syslevel Datei von SendYes! wurde der syslevel Manager SLVMGR verwendet. Dieses Programm stammt von Duane S. Wood vom OS/2 Development Boca Raton, Florida. FБr technische Einzelheiten siehe auch syslevel manager in Technische Details ═══ 12.5. SendYes! National Language Supporter ═══ Tut mir leid, es haben sich noch keine Ъbersetzer gemeldet ... Wenn Ihre Sprache noch nicht von SendYes! unterstБtzt wird und Sie mir helfen wollen, Ihre Sprache zu unterstБtzen, lesen Sie bitte auch National Language Support. ═══ rechte Maustaste ═══ Der Begriff der rechten Mausktaste, wie er in dieser Online Hilfe-Datei verwendet wird, trifft nur dann auf Sie zu, wenn sie nicht die Einstellungen des Maus-Objektes im Ordner Systemkonfiguration verДndert haben. Die folgenden Einstellungen haben einen Einfuс darauf, wie SendYes! bei der Verwendung der rechten Maustaste arbeitet. Wenn Sie diese verДndern, mБssen Sie die Maus so verwenden, wie Sie sie konfiguriert haben. Beachten Sie, daс die rechte Maustaste im allgemeinen auch als Maustaste 2 bezeichnet wird. Konfiguration  LinkshДnder (vertauscht Maustaste 1 und 2) Tasten  Auswahl von Maustaste 1 fБr Objekte ziehen Anmerkung: Wenn Sie Aktionsprofile mit der Maustaste 1 ziehen, ist der Mauszeiger fБr Ziehen nicht sichtbar. Das Ziehen ist dennoch mФglich.  Auswahl einer anderen Einstellung fБr KontextmenБs anzeigen als 1 x Klicken der Taste 2 ohne Steuerungstasten