home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / sndys200.zip / sndysger.inf (.txt) < prev    next >
OS/2 Help File  |  1996-03-01  |  76KB  |  2,306 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. SendYes! ╨¬berblick ΓòÉΓòÉΓòÉ
  3.  
  4. SendYes! V2.0
  5. Sind Sie jemals diese Meldungsdialoge leid gewesen, die Sie nicht unterdr╨æcken 
  6. k╨ñnnen ? Gehen Ihnen auch die Sicherheitsabfragen auf die Nerven, die beim 
  7. Schlie╤üen jeder Textsitzung erscheinen ? 
  8.  
  9. Benutzen Sie nun SendYes!, um auf Standard-Meldungsdialoge automatisch zu 
  10. reagieren. 
  11.  
  12. Wes Santee, Author von SendYes! V1.00: 
  13. "Ich schrieb SendYes!, weil ich  es ha╤üte, beim Systemabschlu╤ü immer den 
  14. Ja-Knopf zu dr╨æcken, um jede einzelne Textsitzung zu schlie╤üen, die noch offen 
  15. war." 
  16.  
  17. SendYes! ist ein kleines Programm, welches auf das Erscheinen von 
  18. Meldungsdialogen wartet und pr╨æft, ob einer erscheint, dessen Meldungstext mit 
  19. einem der Meldungstexte ╨æbereinstimmt, die in SendYes! definiert sind. Wenn 
  20. dies der Fall ist, wird eine benutzerdefinierte Aktion auf einen vom Benutzer 
  21. ausgew╨öhlten Druckknopf ausgef╨æhrt. M╨ñgliche Aktionen sind: Dr╨æcken des 
  22. Knopfes, den Druckknopf als Standardknopf setzen oder den Druckknopf zu 
  23. deaktivieren. 
  24.  
  25. Die Definition eines Meldungstextes zusammen mit einer Aktion wird als 
  26. Aktionsprofil in SendYes! gespeichert. Es k╨ñnnen beliebig viele Aktionsprofile 
  27. angelegt werden. 
  28.  
  29. Vorherige Versionen von SendYes! dienten dazu, ausschlie╤ülich Meldungsdialoge 
  30. zum Schlie╤üen von Textsitzungen zu unterdr╨æcken. Dies wurde dadurch erreicht, 
  31. indem eine PM Meldung an den Ja-Druckknopf gesendet wurde, da╤ü er gedr╨æckt 
  32. wird, daher bekam das Programm seinen Namen. 
  33. Diese Funktion als eine Untermenge der aktuellen Funktionalit╨öt wird durch 
  34. vordefinierte Aktionsprofile unterst╨ætzt. Wenn diese Aktionsprofile aktiviert 
  35. werden, schlie╤üt SendYes! wie in den vorherigen Versionen die Meldungsdialoge 
  36. zum Schlie╤üen von Textsitzungen automatisch. 
  37.  
  38.  
  39. ΓòÉΓòÉΓòÉ 2. Voraussetzungen ΓòÉΓòÉΓòÉ
  40.  
  41. SendYes! wurde unter OS/2 V2.11 und OS/2 Warp 3.0 getestet, ob es 
  42. Meldungsdialoge erkennen und automatisch bearbeiten kann. Dazu werden einige 
  43. Ressource-IDs verwendet, die den Meldungstext und das Symbol im 
  44. Standard-Meldungsdialog betreffen. Wenn diese Ressource-IDs sich in zuk╨ænftigen 
  45. OS/2 Versionen ╨öndern sollten, wird SendYes! nicht mehr funktionieren und mu╤ü 
  46. an die neue Version angepasst werden. Allerdings sind diese IDs bisher immer 
  47. gleich geblieben ... 
  48.  
  49. Au╤üerdem liest SendYes! den Meldungstext f╨ær einige vordefinierte 
  50. Aktionsprofile aus PM Ressource-DLLs. Wenn diese IDs sich ╨öndern, werden die 
  51. vordefinierten Aktionsprofile nicht l╨önger die richtigen Meldungstexte 
  52. enthalten und nicht mehr funktionieren. Allerdings k╨ñnnen neue Aktionsprofile 
  53. selbst erstellt werden, die anstelle der vordefinierten Aktionsprofile die 
  54. betroffenen Meldungsdialoge automatisch schlie╤üen. 
  55.  
  56. F╨ær weitere Informationen ╨æber vordefinierten Aktionsprofile und wie man testen 
  57. kann, ob sie funktionieren, siehe auch 
  58.  
  59.        vordefinierte Aktionsprofile 
  60.  
  61.  
  62. ΓòÉΓòÉΓòÉ 3. Das SendYes! Paket ΓòÉΓòÉΓòÉ
  63.  
  64. Das SendYes! Paket enth╨ölt die folgenden Dateien: 
  65.  
  66.  
  67. readme.cmd            zeigt den "SendYes! ╨¬berblick" deser INF Datei
  68. install.cmd           ruft das Installationsprogramm auf
  69. sendyes.exe           die GUI Programmdatei
  70. sndyshk.bin           die Hook Programmdatei
  71. sndysdll.dll          die Hook DLL
  72.  
  73. sndyseng.dll          englische Resourcenbibliothek
  74. sndyseng.hlp          englische Hilfedatei
  75. sndyseng.inf          englisches Online Buch
  76.  
  77. sndysger.dll          deutsche Resourcenbibliothek
  78. sndysger.hlp          deutsche Hilfedatei
  79. sndysger.inf          deutsches Online Buch
  80.  
  81. nlssrc.zip            zip Datei, die die Quelldateien f╨ær den
  82.                       National Language Support enth╨ölt
  83.  
  84. install\install.cmd   Installationsprogramm f╨ær die SendYes! WPS Programmobjekte
  85. install\remove.cmd    Deinstallationsprogramm f╨ær die IDH_IDPNL_USAGE_WPSOBJ.
  86. install\sndyseng.msg  englische Installations-Meldungsdatei
  87. install\sndysger.msg  deutsche Installations-Meldungsdatei
  88. install\*.ico         Icons, die vom Installations- und Deinstallationsprogramm verwendet werden
  89.  
  90. Anmerkung: 
  91.  
  92.      Die Dateien f╨ær die Unterst╨ætzung von Sprachen, die nicht von SendYes! 
  93.       benutzt werden sollen, k╨ñnnen gel╨ñscht werden. 
  94.  
  95.  
  96. ΓòÉΓòÉΓòÉ 4. Copyright & Co. ΓòÉΓòÉΓòÉ
  97.  
  98. Copyright 
  99. generelle Lizenz 
  100. Shareware Lizenz 
  101. Gew╨öhrleistungsausschlu╤ü 
  102.  
  103.  
  104. ΓòÉΓòÉΓòÉ 4.1. Copyright ΓòÉΓòÉΓòÉ
  105.  
  106. SendYes! Copyright (C) Christian Langanke 1996 
  107.  
  108. Sie k╨ñnnen Ihre Anmerkungen/Vorschl╨öge via internet e-mail an den Author 
  109. senden. 
  110.  
  111. Richten Sie Ihr e-mail an cla@oerag.de 
  112.  
  113.  
  114. ΓòÉΓòÉΓòÉ 4.2. generelle Lizenz ΓòÉΓòÉΓòÉ
  115.  
  116. SendYes! ist freie Software (freeware) f╨ær nichtkommerziellen Gebrauch und 
  117. shareware f╨ær den Gebrauch in kommerziell genutzten Umgebungen. 
  118.  
  119. Sie k╨ñnnen SENDYES frei verwenden, solange 
  120.  
  121.      SENDYES in einer nicht kommerziellen Umgebung eigesetzt wird 
  122.  
  123.  Sie d╨ærfen SendYes! beliebig weitergeben, solange 
  124.  
  125.      SendYes! oder Teile davon nicht als Teil eines anderen Programmes 
  126.       verkauft werden 
  127.      bis auf die Kosten f╨ær ╨¬bertragungsmedien keine Geb╨æhren f╨ær das Programm 
  128.       erhoben werden 
  129.      das komplette Paket unver╨öndert weitergegeben wird 
  130.      Sie mir ╨æber e-mail mitteilen, ob und warum Sie das Prgramm m╨ñgen (oder 
  131.       auch nicht) und/oder mit Vorschl╨ögen zur weiteren Verbesserungen 
  132.  
  133.       Ich w╨ærde besonders gerne von Ihnen h╨ñren, wenn Sie mir dabei helfen 
  134.       wollen, Ihre Sprache durch SendYes! unterst╨ætzen zu k╨ñnnen, so dies noch 
  135.       nicht geschieht. 
  136.  
  137.       Siehe auch 
  138.            National Language Support 
  139.  
  140.  
  141. ΓòÉΓòÉΓòÉ 4.3. Shareware Lizenz ΓòÉΓòÉΓòÉ
  142.  
  143. Sie d╨ærfen SendYes! in einer kommerziell genutzten Umgebung nur dann verwenden, 
  144. wenn Sie zus╨ötzlich zu den Bestimmungen der generellen Lizenz folgende 
  145. Bedingungen befolgen: 
  146.  
  147.      Wenn Sie SendYes! ╨æber eine Probezeit von 30 Tagen hinaus 
  148.       weiterverwenden, registrieren Sie es und zahlen eine Registrierungsgeb╨æhr 
  149.       von 10 DM f╨ær 
  150.  
  151.         -  jede Kopie des SendYes! Pakets, das Sie gleichzeitig auf einem 
  152.            einzelnen PC verwenden 
  153.         -  jeden Benutzer, der geichzeitig via Netzwerk auf ein installiertes 
  154.            SendYes! Paket Zugreifen kann. Sie sind daf╨ær verantwortlich, da╤ü 
  155.            nur die Anzahl der Benutzer gleichzeitig auf ein installiertes 
  156.            SendYes! Paket Zugriff haben, f╨ær die Sie registriert haben. Oder 
  157.            mit anderen Worten, Sie m╨æssen f╨ær jeden Benutzer registrieren, der 
  158.            gleichzeitig auf ein installiertes SendYes! Paket zugreifen kann. 
  159.  
  160.      Wenn Sie SendYes! nach der Probezeit von 30 Tagen nicht registrieren, 
  161.       l╨ñschen Sie alle installierten Kopien von SendYes!. 
  162.  
  163.  Die Registrierung gilt f╨ær alle Versionen von SendYes! bis inclusive V2.99. 
  164.  
  165.  Kontaktieren Sie den Autor f╨ær Mengenrabatte und Firmenlizenzen. 
  166.  
  167.  
  168. ΓòÉΓòÉΓòÉ 4.4. Gew╨öhrleistungsausschlu╤ü ΓòÉΓòÉΓòÉ
  169.  
  170. Weil dieses Programm frei (freeware) ist, wird weder eine ausdr╨æckliche noch 
  171. eine implizite Garantie gegeben. 
  172.  
  173. Ich bin nicht verantwortlich f╨ær irgend einen Schaden, der einem Anwender 
  174. direkt oder indirekt durch SendYes! entsteht. 
  175.  
  176. Die gesamte Software wird ausgeliefert, wie sie ist (supplied AS IS). 
  177.  
  178. Sie d╨ærfen das SendYes! Paket nur auf eigenes Risiko benutzen. 
  179.  
  180. SendYes! darf nicht in Staaten verwendet werden, die den Auschlu╤ü der oben 
  181. aufgef╨æhrten Garantien verbieten. 
  182.  
  183.  
  184. ΓòÉΓòÉΓòÉ 5. Installation ΓòÉΓòÉΓòÉ
  185.  
  186. Dateien kopieren 
  187. Installationsprogramm 
  188. Deinstallationsprogramm 
  189.  
  190.  
  191. ΓòÉΓòÉΓòÉ 5.1. Dateien kopieren ΓòÉΓòÉΓòÉ
  192.  
  193. Wenn Sie das SendYes! Paket als ZIP Datei erhalten haben, erstellen Sie ein 
  194. Verzeichnis f╨ær die Dateien des SendYes! Pakets auf Ihrer Festplatte und 
  195. extrahieren Sie alle Dateien aus der ZIP-Datei dort hinein. 
  196.  
  197. Stellen Sie dabei sicher, da╤ü die in der ZIP-Datei gespeicherte 
  198. Verzeichnisstruktur beibehalten wird ! 
  199.  
  200.  
  201. ΓòÉΓòÉΓòÉ 5.2. Installationsprogramm ΓòÉΓòÉΓòÉ
  202.  
  203. F╨æhren Sie folgende Schritte aus, um einen SendYes! Ordner mit voreigestellten 
  204. Programmobjekten zu erstellen: 
  205.  
  206.    1. ╨ñffnen Sie ein OS/2 Fenster 
  207.    2. wechseln Sie in das Verzeichnis, in dem sich die Dateien des SendYes! 
  208.       Pakets befinden 
  209.    3. wechseln Sie in das Unterverzeichnis INSTALL 
  210.    4. f╨æhren Sie den Befehl 
  211.            install 
  212.       aus 
  213.  
  214.  Im Installationsprogramm k╨ñnnen Sie die Sprache ausw╨öhlen, die vom Programm 
  215.  verwendet werden soll. 
  216.  
  217.  Das Installationsprogramm erstellt den SendYes! Ordner mit verschiedenen 
  218.  SendYes! WPS Programmobjekten. 
  219.  
  220.  Anmerkung: 
  221.  
  222.      Wenn Sie die Dateien des SendYes! Paketes z.B. auf eine andere Festplatte 
  223.       verschieben wollen, so verschieben Sie das SendYes! Verzeichnis an die 
  224.       neue Position und f╨æhren Sie erneut das Installationsprogramm aus, um die 
  225.       SendYes! WPS Programmobjekte entsprechend neu einzustellen. 
  226.  
  227.  
  228. ΓòÉΓòÉΓòÉ 5.3. Deinstallationsprogramm ΓòÉΓòÉΓòÉ
  229.  
  230. Um alle SendYes! WPS Programmobjekte zu deinstallieren, 
  231.  
  232.      starten Sie das Symbol SendYes! WPS Deinstallationsprogramm 
  233.  
  234.      oder f╨æhren Sie folgende Schritte aus: 
  235.  
  236.         1. ╨ñffnen Sie ein OS/2 Fenster 
  237.         2. wechseln Sie in das Verzeichnis, in dem sich die Dateien des 
  238.            SendYes! Pakets befinden 
  239.         3. wechseln Sie in das Unterverzeichnis INSTALL 
  240.         4. f╨æhren Sie den Befehl 
  241.                 remove 
  242.            aus. 
  243.  
  244.  Anmerkung: 
  245.  
  246.      Das SendYes! WPS Deinstallationsprogramm entfernt keine Dateien von Ihrer 
  247.       Festplatte. Um SendYes! komplett zu deinstallieren, m╨æssen Sie au╤üerdem 
  248.       die Dateien des SendYes! Pakets selbst entfernen. 
  249.  
  250.  
  251. ΓòÉΓòÉΓòÉ 6. Benutzung ΓòÉΓòÉΓòÉ
  252.  
  253. Aktionsprofile 
  254. vordefinierte Aktionsprofile 
  255. SendYes! GUI 
  256. SendYes! WPS Programmobjekte 
  257. Kommandozeilenparameter 
  258.  
  259.  
  260. ΓòÉΓòÉΓòÉ 6.1. Aktionsprofile ΓòÉΓòÉΓòÉ
  261.  
  262. Die graphische Benutzerschnittstelle von SendYes! erlaubt dem Benutzer, 
  263. Aktionsprofile zu erstellen, zu kopieren, zu editieren und zu l╨ñschen. 
  264. Aktionsprofile bestehen aus: 
  265.  
  266.      dem Meldungstext des Meldungsdialogs, der bearbeitet werden soll. 
  267.  
  268.      dem Druckknopf, auf den eine Aktion ausgef╨æhrt werden soll. Alle f╨ær 
  269.       einen Standardmeldungsdialog vorgesehenen Druckn╨ñpfe k╨ñnnen ausgew╨öhlt 
  270.       werden und es liegt in der Verantwortung des Benutzers, einen Druckknopf 
  271.       anzugeben, der tats╨öchlich in dem Meldungsdialog verwendet wird, welcher 
  272.       automatisch bearbeitet werden soll. 
  273.  
  274.      der Aktion, die ausgef╨æhrt werden soll. M╨ñgliche Aktionen sind: 
  275.  
  276.         -  den Druckknopf zu dr╨æcken 
  277.         -  den Druckknopf als Standardknopf und zus╨ötzlich den Fokus auf den 
  278.            Druckknopf zu setzen 
  279.  
  280.            Anmerkung:  Diese Aktion wird nur beim erstmaligen Erscheinen des 
  281.            Meldungsdialogs ausgef╨æhrt.. 
  282.  
  283.         -  den Druckknopf zu deaktivieren 
  284.  
  285.       Anmerkung: 
  286.  
  287.         -  Der Meldungstext eines Aktionsprofiles mu╤ü sich von denen aller 
  288.            anderen Aktionsprofile unterscheiden, also eindeutig sein, soda╤ü f╨ær 
  289.            jeden m╨ñglichen Meldungsdialog nur ein Aktionsprofil existiert. 
  290.         -  Der Meldungstext von vordefinierten Aktionsprofilen kann nicht 
  291.            editiert werden. Trotzdem k╨ñnnen der zu bearbeitende Druckknopf und 
  292.            die auf ihn auszuf╨æhrende Aktion ge╨öndert werden. 
  293.         -  Die Aktion, die Sie ausw╨öhlen, wird jedesmal ausgef╨æhrt, wenn der 
  294.            Meldungsdialog den Eingabefokus erh╨ölt (au╤üer wenn der Druckknopf 
  295.            als Standard-Druckknopf gesetzt wird, dies wird nur einmal 
  296.            durchgef╨æhrt). 
  297.            Daher ist es nicht sehr sinnvoll, ein Aktionsprofil zu definieren, 
  298.            welches den Druckknopf f╨ær die Hilfefunktion dr╨æckt, auch wenn das 
  299.            m╨ñglich ist. Wenn Sie ein solches Aktionsprofil benutzen, wird es 
  300.            jedesmal die Hilfefunktion aktivieren, wenn Sie auf den 
  301.            Meldungsdialog klicken, da er dadurch den Eingabefokus erh╨ölt und 
  302.            die definierte Aktion ausgel╨ñst wird. 
  303.            Schlie╤üen Sie in einem solchen Fall zuerst den Meldungsdialog und 
  304.            dann das Hilfe-Fenster. 
  305.  
  306.  
  307. ΓòÉΓòÉΓòÉ 6.2. vordefinierte Aktionsprofile ΓòÉΓòÉΓòÉ
  308.  
  309. Vordefinierte Aktionsprofile unterscheiden sich von benutzerdefinierten 
  310. Profilen wie folgt: 
  311.  
  312.      sie werden automatisch durch SendYes! erstellt und angezeigt, wenn es das 
  313.       erste Mal gestartet wird. 
  314.  
  315.      sie k╨ñnnen nicht gel╨ñscht werden 
  316.  
  317.      ihr Meldungstext wird aus PM Resource-DLLs gelesen und kann nicht 
  318.       ver╨öndert werden. 
  319.  
  320.  Trotzdem k╨ñnnen der zu bearbeitende Druckknopf und die auf ihn auszuf╨æhrende 
  321.  Aktion f╨ær vordefinierte Aktionsprofile ge╨öndert werden. 
  322.  
  323.  Da die Meldungstexte f╨ær diese vordefinierten Aktionsprofile aus PM 
  324.  Resource-DLLs gelesen werden, werden sie unter allen OS/2 WARP Versionen 
  325.  funktionieren, gleichg╨æltig, welche sprachenspezifische Version Sie verwenden. 
  326.  Au╤üderdem werden sie nicht in der INI Datei gespeichert, welche von SendYes! 
  327.  erstellt wird, um die Aktionsprofile zu sichern. Dadurch kann diese Datei 
  328.  zwischen Benutzern von OS/2 Versionen verschiedener Sprachen ausgetauscht 
  329.  werden. 
  330.  
  331.  Der Zweck dieser vordefinierten Aktionsprofile ist vor allem, die 
  332.  Funktionalit╨öt von vorherigen Versionen von SendYes! zu unterst╨ætzen, ohne da╤ü 
  333.  der Benutzer zuerst die Aktionsprofile daf╨ær selbst erstellen mu╤ü. 
  334.  
  335.  Damit der Benutzer zwischen vordefinierten und selbstdefinierten 
  336.  Aktionsprofilen unterscheiden kann, wird jedes der vordefinierten 
  337.  Aktionsprofile mit einer vorangestellten Kennzeichnung angezeigt. 
  338.  
  339.  In der aktuellen Version stellt SendYes! die folgenden vordefinierten 
  340.  Aktionsprofile zur Verf╨ægung, um Meldungsdialoge f╨ær Sicherheitsabfragen 
  341.  bearbeiten zu k╨ñnnen: 
  342.  
  343.      zum Schlie╤üen von OS/2 Fenster Textsitzungen. Wenn dieses Aktionsprofil 
  344.       aktiv ist, werden au╤üderdem die Meldungsdialoge f╨ær Sicherheitsabfragen 
  345.       f╨ær DOS Fenster und Vollbildschirm-Textsitzungen bearbeitet. 
  346.       Dieses Aktionsprofil tr╨ögt die Kennzeichnung OS/2 Fenster schlie╤üen 
  347.  
  348.      zum Schlie╤üen von OS/2 Vollbildschirm-Textsitzungen. 
  349.       Dieses Aktionsprofil tr╨ögt die Kennzeichnung OS/2 Vollbild. schlie╤üen 
  350.  
  351.      zum Systemabschlu╤ü 
  352.       Dieses Aktionsprofil tr╨ögt die Kennzeichnung Systemabschlu╤ü 
  353.  
  354.  Um zu pr╨æfen, ob die vordefinierten Aktionsprofile von SendYes! auch unter 
  355.  Ihrem OS/2 die DOS und OS/2 Fenster und Vollbildschirm-Textsitzungen ohne 
  356.  Sicherheitsabfragen schlie╤üen, siehe auch 
  357.  
  358.       Wie kann ich vordefinierte Aktionsprofile testen ? 
  359.  
  360.  Wenn alle Textsitzungen ohne Sicherheitsabfrage geschlossen werden, 
  361.  funktioniert alles einwandfrei. 
  362.  Wenn nicht, schicken Sie mir bitte ein e-mail und berichten es mir ... 
  363.  F╨ær die Zwischenzeit k╨ñnnen Sie ein Aktionsprofil selbst definieren, welches 
  364.  die Textsitzungen auch auf IHREM System ohne Sicherheitsabfrage schlie╤üt. 
  365.  
  366.  
  367. ΓòÉΓòÉΓòÉ 6.3. SendYes! GUI ΓòÉΓòÉΓòÉ
  368.  
  369. Die SendYes! GUI besteht aus einen Notizbuch, das fast wie ein 
  370. Einstellungsnotizbuch eines WPS-Objektes verwendet werden kann. Dieses 
  371. Notizbuch erscheint, wenn Sie SendYes! ohne jeden Parameter starten oder das 
  372. Symbol SendYes! ausf╨æhren. 
  373.  
  374. Anmerkung:  Es kann jeweils nur eine Instanz der SendYes! GUI aktiv sein. 
  375.  
  376. Das Notizbuch enth╨ölt zwei Seiten und ein gemeinsamer Dialog wird f╨ær das 
  377. Anlegen, Kopieren und Editieren von Aktionsprofilen vwerwendet: 
  378.  
  379.      Sitzungs-Seite 
  380.      Aktions-Seite 
  381.      Neu / Editieren / Kopieren Dialog 
  382.  
  383.  
  384. ΓòÉΓòÉΓòÉ 6.3.1. Sitzungs-Seite ΓòÉΓòÉΓòÉ
  385.  
  386. Auf dieser Seite k╨ñnnen Sie 
  387.  
  388.      die SendYes! Hook Programmdatei starten und damit die SendYes! 
  389.       Funktionalit╨öt aktivieren. 
  390.  
  391.       Benutzen Sie das Markierungsfeld SendYes! aktivieren, um SendYes! zu 
  392.       aktivieren oder zu deaktivieren. 
  393.  
  394.      definieren, ob die SendYes! Hook Programmdatei durch einen separaten 
  395.       Prozess oder durch den PMSHELL-Prozess geladen wird. 
  396.  
  397.       Anmerkung:  In der aktuellen Version wird die SendYes! Hook Programmdatei 
  398.       immer durch einen separaten Prozess geladen. Daher kann diese Einstellung 
  399.       nicht ver╨öndert werden. 
  400.  
  401.      definieren, ob die SendYes! Hook Programmdatei beim Deaktivieren aus dem 
  402.       Hauptspeicher entfernt werden soll oder nicht. 
  403.  
  404.       Anmerkung:  In der aktuellen Version wird die SendYes! Hook Programmdatei 
  405.       beim Deaktivieren immer aus dem Hauptspeicher entfernt. Daher kann diese 
  406.       Einstellung nicht ver╨öndert werden. 
  407.  
  408.  
  409. ΓòÉΓòÉΓòÉ 6.3.2. Aktions-Seite ΓòÉΓòÉΓòÉ
  410.  
  411. Auf dieser Seite k╨ñnnen Sie Aktionsprofile definieren und selbst- und 
  412. vordefinierte Aktionsprofile aktivieren und deaktivieren. Alle Profile werden 
  413. in zwei Listen gehalten: 
  414.  
  415.      Die mit Definierte Aktionsprofile gekennzeichnete Liste enth╨ölt 
  416.       Aktionsprofile, die nicht aktiv sind. 
  417.  
  418.       Profile, die sich in dieser Liste befinden, k╨ñnnen aktiviert, editiert, 
  419.       kopiert oder gel╨ñscht und neue Aktionsprofile k╨ñnnen erstellt werden. 
  420.  
  421.       Anmerkung:  Vordefinierte Aktionsprofile k╨ñnnen nicht gel╨ñscht und ihr 
  422.       Meldungstext kann nicht editiert werden 
  423.  
  424.      Die mit Aktive Aktionsprofile gekennzeichnete Liste enth╨ölt die 
  425.       Aktionsprofile, welche aktiv sind. Wenn die SendYes! Hook Programmdatei 
  426.       auf der Sitzungs-Seite aktiviert wurde, werden die Aktionsprofile 
  427.       ausgef╨æhrt, wenn die entsprechenden Meldungsdialoge erscheinen. 
  428.  
  429.       Profile, die sich in dieser Liste befinden, k╨ñnnen lediglich editiert, 
  430.       gel╨ñscht und deaktiviert werden. Das Erstellen von neuen Aktionsprofilen 
  431.       und das Kopieren von bestehenden Aktionsprofilen ist nur in der mit 
  432.       Definierte Aktionsprofile gekennzeichneten Liste m╨ñglich. 
  433.       Au╤üerdem k╨ñnnen die vordefinierten Aktionsprofile f╨ær das Schlie╤üen von 
  434.       Textsizungen (und nur diese) getestet werden: 
  435.       SendYes! erstellt daf╨ær die entsprechenden Textsitzungen, welche dann 
  436.       einfach ╨æber die Fensterliste geschlossen werden k╨ñnnen. 
  437.  
  438.       Anmerkung:  Vordefinierte Aktionsprofile k╨ñnnen nicht gel╨ñscht und ihr 
  439.       Meldungstext kann nicht editiert werden 
  440.  
  441.  Obwohl Sie Aktionsprofile entweder ╨æber die Maus oder per Tastatur 
  442.  manipulieren k╨ñnnen, ist die Benutzung der Maus wesentlich einfacher. Die 
  443.  erweiterten Listen, welche die Funktionalit╨öt der Direct Manipulation ListBox 
  444.  (DMLB) und der MultiColumn ListBox (MCLB) enthalten, erlauben die folgende 
  445.  Verwendung der Maus: 
  446.  
  447.      verwenden Sie die rechte Maustaste in den Listen, um ein Kontextmen╨æ 
  448.       aufzurufen, welches die oben beschriebenen Aktionen erm╨ñglicht. 
  449.  
  450.      als eine Alternative f╨ær einige der in den Kontextmen╨æs angebotenen 
  451.       Aktionen verwenden Sie Ziehen&╨¬bergeben (Drag&Drop): 
  452.  
  453.         -  zwischen den beiden Listen, um Aktionsprofile zu aktivieren oder zu 
  454.            deaktivieren 
  455.         -  in der mit Definierte Aktionsprofile gekennzeichneten Liste, um ein 
  456.            bestehendes Aktionsprofil zu kopieren 
  457.  
  458.  F╨ær weitere Informationen, wie Aktionsprofile manipuliert werden k╨ñnnen, siehe 
  459.  auch 
  460.  
  461.       Wie kann ich ... ? 
  462.  
  463.  SendYes! stellt drei vordefinierte Aktionsprofile zur Verf╨ægung, welche dazu 
  464.  dienen, einige Standard-Meldungsdialoge zu bearbeiten. Sie k╨ñnnen einige 
  465.  dieser Profile testen, um zu pr╨æfen, ob sie einwandfrei funktionieren. 
  466.  
  467.  Siehe dazu auch: 
  468.  
  469.       vordefinierte Aktionsprofile 
  470.       Wie kann ich vordefinierte Aktionsprofile testen ? 
  471.  
  472.  
  473. ΓòÉΓòÉΓòÉ 6.3.3. Neu / Editieren / Kopieren Dialog ΓòÉΓòÉΓòÉ
  474.  
  475. In diesem Dialog k╨ñnnen Sie neue Aktionsprofile erstellen oder bestehende 
  476. Aktionsprofile kopieren oder editieren. 
  477.  
  478.  
  479. ΓòÉΓòÉΓòÉ 6.4. SendYes! WPS Programmobjekte ΓòÉΓòÉΓòÉ
  480.  
  481. Das SendYes! WPS Installationsprogramm erstellt die folgenden Objekte: 
  482.  
  483.      einen SendYes! Ordner auf der Arbeitsoberfl╨öche, der die folgenden 
  484.       Programmreferenzobjekte enth╨ölt: 
  485.  
  486.         -  SendYes! initialisieren 
  487.         -  SendYes! 
  488.         -  SendYes! V2.0 Hilfe 
  489.         -  SendYes! WPS Installationsprogramm 
  490.         -  SendYes! WPS Deinstallationsprogramm 
  491.  
  492.      eine Referenz von SendYes! initialisieren, die in den Systemstart-Ordner 
  493.       gestellt wird, soda╤ü SendYes! bei jedem Neustart von OS/2 initialisiert 
  494.       wird. F╨ær weitere Informationen ╨æber die Initialisierung von SendYes! 
  495.       beim Systemstart siehe auch 
  496.  
  497.            Wie kann ich SendYes! initialisieren ? 
  498.  
  499.      eine Referenz des Ordners Sytemstart, die in den SendYes! Ordner gestellt 
  500.       wird, soda╤ü Sie einfach auf den Systemstart-Ordner zugreifen k╨ñnnen, um 
  501.       gegebenenfalls die Referenz von SendYes! initialisieren l╨ñschen oder 
  502.       wieder in den Systemstart-Ordner stellen zu k╨ñnnen. 
  503.  
  504.      eine Referenz von SendYes!, welche in den Ordner Systemkonfiguration 
  505.       gestellt wird. 
  506.  
  507.  
  508. ΓòÉΓòÉΓòÉ 6.4.1. SendYes! initialisieren ΓòÉΓòÉΓòÉ
  509.  
  510. Dieses Symbol l╨ödt die SendYes! Hook Programmdatei, wenn die aktuellen 
  511. Einstellungen besagen, da╤ü SendYes! aktiv ist. Eine Referenz dieses Symbols 
  512. wird durch das Installationsprogramm in den Ordner Sytemstart gestellt, soda╤ü 
  513. SendYes! bei jedem Neustart von OS/2 initialisiert wird. 
  514.  
  515. Anmerkung: 
  516.  
  517.      Wenn die Umgebungsvariable RESTARTOBJECTS in der CONFIG.SYS auf den Wert 
  518.       NO gesetzt wird, werden Objekte im Ordner Sytemstart nicht automatisch 
  519.       beim Systemstart ausgef╨æhrt. Dann mu╤ü SendYes! ╨æber einen Aufruf in der 
  520.       STARTUP.CMD oder per Hand initialisiert werden. 
  521.       F╨ær weitere Informationen ╨æber die Initialisierung von SendYes! beim 
  522.       Systemstart siehe auch 
  523.            Wie kann ich SendYes! initialisieren ? 
  524.      Sie k╨ñnnen die SendYes! Hook Programmdatei auch ╨æber die SendYes! GUI 
  525.       laden, indem Sie die folgenden Schritte durchf╨æhren: 
  526.         1. ╨ñffnen Sie die SendYes! GUI 
  527.         2. w╨öhlen Sie die Sitzungs-Seite 
  528.         3. markieren Sie das mit SendYes! aktivieren gekennzeichnete 
  529.            Markierungsfeld 
  530.         4. das Statusfeld ╨æber den Druckkn╨ñpfen zeigt den neuen Status von 
  531.            SendYes! an, wenn die SendYes! Hook Programmdatei geladen werden 
  532.            konnte. 
  533.      Es wird kein Informationsmeldungsdialog angezeigt. Nur im Fehlerfall wird 
  534.       ein Fehlermeldungsdialog angezeigt. 
  535.      Dieses Symbol entspricht der Ausf╨æhrung des Befehls 
  536.            [start] SENDYES /INITIALIZE 
  537.       auf der Kommandozeile im SendYes! Verzeichnis. 
  538.  
  539.  
  540. ΓòÉΓòÉΓòÉ 6.4.2. SendYes! ΓòÉΓòÉΓòÉ
  541.  
  542. Dieses Symbol startet die SendYes! GUI, in der die aktuellen Einstellungen des 
  543. Programmes ver╨öndert werden k╨ñnnen. 
  544.  
  545. Anmerkung: 
  546.  
  547.      Dieses Symbol entspricht der Ausf╨æhrung des Befehls 
  548.            [start] SENDYES 
  549.       auf der Kommandozeile im SendYes! Verzeichnis. 
  550.  
  551.  
  552. ΓòÉΓòÉΓòÉ 6.4.3. SendYes! V2.0 Hilfe ΓòÉΓòÉΓòÉ
  553.  
  554. Dieses Symbol zeigt diese Hilfedatei an. 
  555.  
  556. Anmerkung: 
  557.  
  558.      Dieses Symbol entspricht der Ausf╨æhrung des Befehls 
  559.            README 
  560.       auf der Kommandozeile im SendYes! Verzeichnis. Dieser Befehl zeigt die 
  561.       INF Datei f╨ær die aktuell ausgew╨öhlte Sprache an. 
  562.      Sie k╨ñnnen ebenso eine sprachenspezifische INF Datei direkt anzeigen 
  563.       lassen, indem Sie den Befehl 
  564.            README ??? or 
  565.            [start] view sndys??? 
  566.       auf der Kommandozeile im SendYes! Verzeichnis ausf╨æhren, wobei ??? die 
  567.       englische Abk╨ærzung der gew╨ænschten Sprache ist. F╨ær weitere 
  568.       Informationen ╨æber verf╨ægbare INF Dateien siehe auch 
  569.            Das SendYes! Paket 
  570.  
  571.  
  572. ΓòÉΓòÉΓòÉ 6.4.4. SendYes! WPS Installationsprogramm ΓòÉΓòÉΓòÉ
  573.  
  574. Dieses Symbol f╨æhrt das Installationsprogramm f╨ær die SendYes! WPS 
  575. Programmobjekte aus. 
  576.  
  577. Innerhalb dieses Programms k╨ñnnen Sie au╤üerdem die von SendYes! zu verwendende 
  578. Sprache ausw╨öhlen und die SendYes! WPS Programmobjekte erneut erstellen bzw. 
  579. aktualisieren, damit die neu ausgew╨öhlte Sprache f╨ær die Objekttitel verwendet 
  580. wird. 
  581.  
  582.  
  583. ΓòÉΓòÉΓòÉ 6.4.5. SendYes! WPS Deinstallationsprogramm ΓòÉΓòÉΓòÉ
  584.  
  585. Dieses Symbol f╨æhrt das Deinstallationsprogramm f╨ær die SendYes! WPS 
  586. Programmobjekte aus. 
  587.  
  588. Mit diesem Programm k╨ñnnen Sie die SendYes! WPS Programmobjekte entfernen. 
  589.  
  590. Anmerkung: 
  591.  
  592.      Das SendYes! WPS Deinstallationsprogramm entfernt keine Dateien von Ihrer 
  593.       Festplatte. Um SendYes! komplett zu deinstallieren, m╨æssen Sie au╤üerdem 
  594.       die Dateien des SendYes! Pakets selbst entfernen. 
  595.  
  596.  
  597. ΓòÉΓòÉΓòÉ 6.5. Kommandozeilenparameter ΓòÉΓòÉΓòÉ
  598.  
  599. Die folgenden Parameter k╨ñnnen zur Steuerung von SendYes! von der kommandozeile 
  600. verwendet werden: 
  601.  
  602.  /INITIALIZE 
  603.  /LOAD                    /STATUS 
  604.  /UNLOAD                  /BATCH 
  605.  /ACTIVATE                /QUIET 
  606.  /DEACTIVATE              /? 
  607.  
  608.  Algemeines zu Schalterparametern: 
  609.  
  610.      die Parameternamen k╨ñnnen wahlweise gro╤ü und klein geschrieben werden. 
  611.      Anstelle eines Schr╨ögstriches k╨ñnnen Sie auch das Minuszeichen verwenden 
  612.       - das hei╤üt, da╤ü z.B. die Parameter /load und -load gleichwertig sind. 
  613.      es reicht aus, nur den ersten Buchstaben des Schalternamens anzugeben - 
  614.       das hei╤üt, da╤ü .z.B. die Parameter /b und /batch (oder -b und -batch) 
  615.       ebenfalls gleichwertig sind. 
  616.  
  617.  
  618. ΓòÉΓòÉΓòÉ 6.5.1. /INITIALIZE ΓòÉΓòÉΓòÉ
  619.  
  620. Dieser Parameter dient dazu, um SendYes! beim Systemstart zu initialisieren. 
  621.  
  622. Wenn die aktuellen Einstellungen von SendYes! besagen, da╤ü die Hook 
  623. Programmdatei aktiv ist, so verh╨ölt sich SendYes! so, als w╨öre der Parameter 
  624. /LOAD angegeben worden. 
  625.  
  626. Anmerkung: 
  627.  
  628.      Es wird kein Informationsmeldungsdialog angezeigt. Nur im Fehlerfall wird 
  629.       ein Fehlermeldungsdialog angezeigt. 
  630.  
  631.  
  632. ΓòÉΓòÉΓòÉ 6.5.2. /LOAD ΓòÉΓòÉΓòÉ
  633.  
  634. Dieser Parameter l╨ödt die SendYes! Hook Programmdatei, falls sie nicht bereits 
  635. geladen ist. Wenn die Hook Programmdatei erfolgreich geladen werden kann, so 
  636. ist die SendYes! Funktionalit╨öt verf╨ægbar und Meldungsdialoge, welche 
  637. aktivierten Aktionsprofilen entsprechen, werden automatisch bearbeitet. 
  638.  
  639. Anmerkung: 
  640.  
  641.      Wenn die Hook Programmdatei erfolgreich geladen werden kann, wird ein 
  642.       Informations-Meldungsdialog angezeigt. 
  643.      Wenn die Hook Programmdatei bereits geladen ist oder nicht geladen werden 
  644.       kann, wird ein Fehlermeldungsdialog angezeigt. 
  645.      Jeweils der Informations- und der Fehlermeldungsdialog k╨ñnnen durch den 
  646.       Parameter /BATCH unterdr╨æckt werden. Anstelle dessen wird dann ein 
  647.       Informations- bzw. ein Fehlerton generiert. 
  648.  
  649.       Weiterhin kann auch der Informations- bzw. Fehlerton durch den Parameter 
  650.       /QUIET unterdr╨æckt werden. 
  651.  
  652.  
  653. ΓòÉΓòÉΓòÉ 6.5.3. /UNLOAD ΓòÉΓòÉΓòÉ
  654.  
  655. Dieser Parameter entfernt die SendYes! Hook Programmdatei wieder, wenn sie 
  656. aktiv ist. Wenn die Hook Programmdatei entfernt wird, ist die SendYes! 
  657. Funktionalit╨öt nicht l╨önger verf╨ægbar und Meldungsdialoge werden nicht l╨önger 
  658. automatisch bearbeitet. 
  659.  
  660. Anmerkung: 
  661.  
  662.      Wenn die Hook Programmdatei erfolgreich entfernt werden kann, wird ein 
  663.       Informations-Meldungsdialog angezeigt. 
  664.      Wenn die Hook Programmdatei nicht geladen ist oder nicht entfernt werden 
  665.       kann, wird ein Fehlermeldungsdialog angezeigt. 
  666.      Jeweils der Informations- und der Fehlermeldungsdialog k╨ñnnen durch den 
  667.       Parameter /BATCH unterdr╨æckt werden. Anstelle dessen wird dann ein 
  668.       Informations- bzw. ein Fehlerton generiert. 
  669.  
  670.       Weiterhin kann auch der Informations- bzw. Fehlerton durch den Parameter 
  671.       /QUIET unterdr╨æckt werden. 
  672.  
  673.  
  674. ΓòÉΓòÉΓòÉ 6.5.4. /ACTIVATE ΓòÉΓòÉΓòÉ
  675.  
  676. Dieser Parameter funktioniert genauso wie /LOAD. 
  677.  
  678. Er ist lediglich als ein Gegenst╨æck zu /DEACTIVATE implementiert worden. 
  679.  
  680.  
  681. ΓòÉΓòÉΓòÉ 6.5.5. /DEACTIVATE ΓòÉΓòÉΓòÉ
  682.  
  683. In der aktuellen Version von SendYes! funktioniert dieser Parameter genauso wie 
  684. /UNLOAD. 
  685.  
  686. Das wird sich ╨öndern, wenn SendYes! das Deaktivieren der Hook Programmdatei 
  687. ohne Entfernen aus dem Hauptspeicher unterst╨ætzt. Dann wird /DEACTIVATE f╨ær 
  688. dieses Deaktivieren verwendet werden. 
  689.  
  690.  
  691. ΓòÉΓòÉΓòÉ 6.5.6. /STATUS ΓòÉΓòÉΓòÉ
  692.  
  693. Dieser Parameter ermittelt, ob die SendYes! Hook Programmdatei aktiv ist oder 
  694. nicht. 
  695.  
  696. Ein Status-Meldungsdialog wird angezeigt und der folgende ERRORLEVEL 
  697. zur╨æckgegeben: 
  698.  
  699.  1   SendYes! ist aktiv 
  700.  0   SendYes! ist nicht aktiv 
  701.  
  702.  Anmerkung: 
  703.  
  704.      Wenn /STATUS angegeben wird, werden alle anderen Parameter au╤üer /? 
  705.       ignoriert. 
  706.      Der Status-Meldungsdialog kann durch den Parameter /BATCH unterdr╨æckt 
  707.       werden. Im Gegensatz zur Verwendung von /BATCH mit anderen Parametern 
  708.       wird hier kein Informations- oder Fehlerton generiert. 
  709.  
  710.  
  711. ΓòÉΓòÉΓòÉ 6.5.7. /BATCH ΓòÉΓòÉΓòÉ
  712.  
  713. Dieser Parameter underdr╨æckt Meldungsdialoge, wenn die Parameter /LOAD, 
  714. /UNLOAD, /ACTIVATE, /DEACTIVATE oder /STATUS verarbeitet werden. 
  715.  
  716. Anstelle der Anzeige eines Meldungsdialogs wird ein Informations- oder 
  717. Fehlerton generiert. Dieser Ton kann ebenfalls unterdr╨æckt werden, wenn 
  718. au╤üderdem /QUIET angegeben wird. 
  719.  
  720. Wenn /BATCH zusammen mit /STATUS angegeben wird, wird generell kein Ton 
  721. erzeugt. 
  722.  
  723.  
  724. ΓòÉΓòÉΓòÉ 6.5.8. /QUIET ΓòÉΓòÉΓòÉ
  725.  
  726. Dieser Parameter unterdr╨æckt Informations- oder Fehlert╨ñne, wenn der Parameter 
  727. /BATCH verwendet wird. 
  728.  
  729.  
  730. ΓòÉΓòÉΓòÉ 6.5.9. /? ΓòÉΓòÉΓòÉ
  731.  
  732. Dieser Parameter zeigt eine kurze Hilfe ╨æber die Parameter an. 
  733.  
  734. Wenn /? angegeben wird, werden alle anderen Parameter ignoriert. 
  735.  
  736. Anstelle von /? kann auch /HELP verwendet werden. 
  737.  
  738.  
  739. ΓòÉΓòÉΓòÉ 7. Wie kann ich ... ? ΓòÉΓòÉΓòÉ
  740.  
  741. ... SendYes! laden ? 
  742. ... SendYes! entfernen ? 
  743. ... SendYes! aktivieren ? 
  744. ... SendYes! deaktivieren ? 
  745. ... den SendYes! Status ermitteln ? 
  746. ... SENDYES.EXE in Batchdateien verwenden ? 
  747. ... SendYes! initialisieren ? 
  748.  
  749. ... die SendYes! GUI starten ? 
  750. ... ein Aktionsprofil selektieren ? 
  751. ... Aktionsprofile erstellen ? 
  752. ... ein Aktionsprofil kopieren ? 
  753. ... Aktionsprofile aktivieren ? 
  754. ... Aktionsprofile deaktivieren ? 
  755. ... Aktionsprofile editieren ? 
  756. ... vordefinierte Aktionsprofile testen ? 
  757.  
  758. ... die verwendete Sprache ╨öndern ? 
  759. ... SendYes! deinstallieren ? 
  760.  
  761.  
  762. ΓòÉΓòÉΓòÉ 7.1. Wie kann ich SendYes! laden ? ΓòÉΓòÉΓòÉ
  763.  
  764. Um die SendYes! Hook Programmdatei zu laden 
  765.  
  766.      f╨æhren Sie in der SendYes! GUI die folgenden Schritte durch: 
  767.  
  768.         1. ╨ñffnen Sie die SendYes! GUI 
  769.         2. w╨öhlen Sie die Sitzungs-Seite 
  770.         3. markieren Sie das mit SendYes! aktivieren gekennzeichnete 
  771.            Markierungsfeld 
  772.         4. das Statusfeld ╨æber den Druckkn╨ñpfen zeigt den neuen Status von 
  773.            SendYes! an, wenn die SendYes! Hook Programmdatei geladen werden 
  774.            konnte. 
  775.  
  776.      oder f╨æhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! 
  777.       Verzeichnis aus: 
  778.  
  779.            [start] SENDYES /LOAD [/BATCH] [/QUIET] 
  780.  
  781.  
  782. ΓòÉΓòÉΓòÉ 7.2. Wie kann ich SendYes! entfernen ? ΓòÉΓòÉΓòÉ
  783.  
  784. Um die SendYes! Hook Programmdatei zu entfernen 
  785.  
  786.      f╨æhren Sie in der SendYes! GUI die folgenden Schritte durch: 
  787.  
  788.         1. ╨ñffnen Sie die SendYes! GUI 
  789.         2. w╨öhlen Sie die Sitzungs-Seite 
  790.         3. entfernen Sie die Markierung von dem mit SendYes! aktivieren 
  791.            gekennzeichneten Markierungsfeld 
  792.         4. das Statusfeld ╨æber den Druckkn╨ñpfen zeigt den neuen Status von 
  793.            SendYes! an, wenn die SendYes! Hook Programmdatei entfernt werden 
  794.            konnte. 
  795.  
  796.      oder f╨æhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! 
  797.       Verzeichnis aus: 
  798.  
  799.            [start] SENDYES /UNLOAD [/BATCH] [/QUIET] 
  800.  
  801.  
  802. ΓòÉΓòÉΓòÉ 7.3. Wie kann ich SendYes! aktivieren ? ΓòÉΓòÉΓòÉ
  803.  
  804. In der aktuellen Version von SendYes! entspricht das Aktivieren der SendYes! 
  805. Hook Programmdatei dem Laden dieser Programmdatei. 
  806. Um die SendYes! Hook Programmdatei zu aktivieren, 
  807.  
  808.      f╨æhren Sie in der SendYes! GUI die folgenden Schritte durch: 
  809.  
  810.         1. ╨ñffnen Sie die SendYes! GUI 
  811.         2. w╨öhlen Sie die Sitzungs-Seite 
  812.         3. markieren Sie das mit SendYes! aktivieren gekennzeichnete 
  813.            Markierungsfeld 
  814.         4. das Statusfeld ╨æber den Druckkn╨ñpfen zeigt den neuen Status von 
  815.            SendYes! an, wenn die SendYes! Hook Programmdatei geladen werden 
  816.            konnte. 
  817.  
  818.      oder f╨æhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! 
  819.       Verzeichnis aus: 
  820.  
  821.            [start] SENDYES /ACTIVATE [/BATCH] [/QUIET] 
  822.  
  823.  
  824. ΓòÉΓòÉΓòÉ 7.4. Wie kann ich SendYes! deaktivieren ? ΓòÉΓòÉΓòÉ
  825.  
  826. In der aktuellen Version von SendYes! entspricht das Deaktivieren der SendYes! 
  827. Hook Programmdatei dem Entfernen dieser Programmdatei aus dem Hauptspeicher. 
  828. Um die SendYes! Hook Programmdatei zu deaktivieren, 
  829.  
  830.      f╨æhren Sie in der SendYes! GUI die folgenden Schritte durch: 
  831.  
  832.         1. ╨ñffnen Sie die SendYes! GUI 
  833.         2. w╨öhlen Sie die Sitzungs-Seite 
  834.         3. entfernen Sie die Markierung von dem mit SendYes! aktivieren 
  835.            gekennzeichneten Markierungsfeld 
  836.         4. das Statusfeld ╨æber den Druckkn╨ñpfen zeigt den neuen Status von 
  837.            SendYes! an, wenn die SendYes! Hook Programmdatei entfernt werden 
  838.            konnte. 
  839.  
  840.      oder f╨æhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! 
  841.       Verzeichnis aus: 
  842.  
  843.            [start] SENDYES /DEACTIVATE [/BATCH] [/QUIET] 
  844.  
  845.  
  846. ΓòÉΓòÉΓòÉ 7.5. Wie kann ich den SendYes! Status ermitteln ? ΓòÉΓòÉΓòÉ
  847.  
  848. Um den Status der SendYes! Hook Programmdatei zu ermitteln 
  849.  
  850.      f╨æhren Sie in der SendYes! GUI die folgenden Schritte durch: 
  851.  
  852.         1. ╨ñffnen Sie die SendYes! GUI 
  853.         2. w╨öhlen Sie die Sitzungs-Seite 
  854.         3. das Statusfeld ╨æber den Druckkn╨ñpfen zeigt den Status von SendYes! 
  855.  
  856.      oder f╨æhren Sie den folgenden Befehl auf der Kommandozeile im SendYes! 
  857.       Verzeichnis aus: 
  858.  
  859.            [start] SENDYES /STATUS [/BATCH] 
  860.  
  861.  
  862. ΓòÉΓòÉΓòÉ 7.6. Wie kann ich SENDYES.EXE in Batchdateien verwenden ? ΓòÉΓòÉΓòÉ
  863.  
  864. Wenn Sie SENDYES.EXE in Batchdateien verwenden wollen, k╨ñnnen Sie dazu den 
  865. Parameter /BATCH verwenden. Damit werden alle Informations- und 
  866. Fehlermeldungsdialoge unterdr╨æckt. Das Ergebnis kann in normalen Batchdateien 
  867. immer ╨æber die OS/2 ERRORLEVEL Variable und in REXX Batchdateien immer ╨æber die 
  868. Variable rc ermittelt werden: Mit Ausnahme der Status-Abfrage wird die 
  869. ERRORLEVEL Variable bei erfolgreicher Ausf╨æhrung immer auf Null gesetzt. 
  870. Andernfalls wird ein OS/2 Fehlercode zur╨æckgegeben. 
  871.  
  872. Anmerkung: 
  873.  
  874.      Wenn der Parameter/BATCH verwendet wird, um Informations- und 
  875.       Fehlermeldungsdialoge zu unterdr╨æcken, werden stattdessen Informations- 
  876.       und Fehlert╨ñne generiert, um dem Benutzer den Erfolg der 
  877.       Programmausf╨æhrung anzuzeigen. Um diese T╨ñne ebenfalls zu unterdr╨æcken, 
  878.       kann au╤üerdem der Parameter /QUIET verwendet werden. 
  879.  
  880.  
  881. ΓòÉΓòÉΓòÉ 7.7. Wie kann ich SendYes! initialisieren ? ΓòÉΓòÉΓòÉ
  882.  
  883. Das SendYes! Installationsprogramm stellt eine Referenz von  SendYes! 
  884. initialisieren in den Ordner Systemstart, soda╤ü SendYes! bei jedem Neustart von 
  885. OS/2 initialisiert wird. 
  886.  
  887. Dies funktioniert jedoch nur, wenn die Umgebungsvariable RESTARTOBJECTS in der 
  888. CONFIG.SYS auf einen Wert gesetzt wird, der die WPS dazu veranla╤üt, bei jedem 
  889. Neustart alle Objekte auszuf╨æhren, die sich im Ordner Systemstart befinden. 
  890.  
  891. Diese Umgebungsvariable kan in der CONFIG.SYS auf folgende Werte gesetzt 
  892. werden: 
  893.  
  894.  <kein Wert> 
  895.            Alle Programme, die beim letzen Systemabschlu╤ü aktiv waren, werden 
  896.            beim Systemstart automatisch neu gestartet. Auch alle Objekte, die 
  897.            sich im Ordner Systemstart befinden, werden beim Systemstart 
  898.            ge╨ñffnet. 
  899.  
  900.            SendYes! kann dadurch ╨æber die Referenz von SendYes! initialisieren 
  901.            im Ordner Systemstart initialisiert werden. 
  902.  
  903.  STARTUPFOLDERSONLY 
  904.            Programme, die beim letzen Systemabschlu╤ü aktiv waren, werden beim 
  905.            Systemstart nicht automatisch neugestartet. Dennoch werden alle 
  906.            Objekte, die sich im Ordner Systemstart befinden, beim Systemstart 
  907.            ge╨ñffnet. (╨¬brigens k╨ñnnen tats╨öchlich mehrere Systemstartordner 
  908.            existieren, wenngleich OS/2 nur einen anlegt). 
  909.  
  910.            SendYes! kann dadurch ╨æber die Referenz von SendYes! initialisieren 
  911.            im Ordner Systemstart initialisiert werden. 
  912.  
  913.  NO 
  914.            Keinerlei Programme werden durch die WPS automatisch gestartet. 
  915.  
  916.            SendYes! kann auf diese Weise NICHT durch die Referenz von SendYes! 
  917.            initialisieren im Ordner System Start initialisiert werden. 
  918.  
  919.            F╨ægen Sie stattdessen den folgenden Befehl in die STARTUP.CMD ein 
  920.  
  921.                 [start] d:\pfad\SENDYES /INITIALIZE 
  922.  
  923.            wobei d:\pfad der voll qualifizierte Pfadname des SendYes! 
  924.            Verzeichnisses ist, oder f╨æhren Sie SendYes! initialisieren per Hand 
  925.            aus. 
  926.  
  927.  
  928. ΓòÉΓòÉΓòÉ 7.8. Wie kann ich die SendYes! GUI starten ? ΓòÉΓòÉΓòÉ
  929.  
  930. Um die SendYes! GUI zu starten, f╨æhren Sie das Symbol 
  931.  
  932.       SendYes! 
  933.  
  934.  aus oder oder f╨æhren Sie den folgenden Befehl auf der Kommandozeile im 
  935.  SendYes! Verzeichnis aus: 
  936.  
  937.       [start] SENDYES 
  938.  
  939.  
  940. ΓòÉΓòÉΓòÉ 7.9. Wie kann ich ein Aktionsprofil selektieren ? ΓòÉΓòÉΓòÉ
  941.  
  942. Um ein Aktionsprofil auszuw╨öhlen, f╨æhren Sie folgende Schritte durch: 
  943.  
  944.      ╨ñffnen Sie die SendYes! GUI. 
  945.       Siehe auch 
  946.  
  947.            Wie kann ich die SendYes! GUI starten ? 
  948.  
  949.      W╨öhlen Sie die Aktions-Seite aus. 
  950.  
  951.      Um ein Aktionsprofil mit der Tastatur auszuw╨öhlen, bet╨ötigen Sie die TAB 
  952.       Taste solange, bis die Liste, die das gew╨ænschte Profil enth╨ölt, den 
  953.       Eingabefokus erh╨ölt. W╨öhlen Sie dann das gew╨ænschte Profil mit den 
  954.       Pfeiltasten aus. 
  955.       Sie k╨ñnnen das Kontextmen╨æ f╨ær das Profil durch Dr╨æcken der Eingabetaste 
  956.       aktivieren. 
  957.       Dies trifft auch zu, wenn die betreffende Liste leer ist. Sobald die 
  958.       Liste den Eingabefokus erhalten hat, wird durch das Dr╨æcken der 
  959.       Eingabetaste das Kontextmen╨æ aktiviert. 
  960.  
  961.      Um ein Aktionsprofil mit der Maus zu selektieren, klicken Sie einfach 
  962.       darauf. 
  963.       Das Kontextmen╨æ f╨ær dieses Profil kann durch Anklicken mit der rechten 
  964.       Maustaste aktiviert werden. 
  965.       Dies trifft auch zu, wenn die betreffende Liste leer ist. Ein Klick mit 
  966.       der rechten Maustaste auf die Liste aktiviert ebenfalls das Kontextmen╨æ. 
  967.  
  968.  
  969. ΓòÉΓòÉΓòÉ 7.10. Wie kann ich Aktionsprofile erstellen ? ΓòÉΓòÉΓòÉ
  970.  
  971. Um ein Aktionsprofil zu erstellen, f╨æhren Sie auf der Aktions-Seite folgende 
  972. Schritte durch: 
  973.  
  974.      Aktivieren Sie das Kontextmen╨æ der Liste Definierte Aktionsprofile. 
  975.       Siehe auch 
  976.  
  977.            Wie kann ich ein Aktionsprofil selektieren ? 
  978.  
  979.      W╨öhlen Sie den Men╨æeintrag Neu... aus 
  980.  
  981.      SendYes! zeigt einen Dialog an, in dem die Einstellungen f╨ær das neue 
  982.       Profil eingetragen werden k╨ñnnen. 
  983.       Siehe auch 
  984.  
  985.            Aktionsprofile 
  986.            Neu / Editieren / Kopieren Dialog 
  987.  
  988.  
  989. ΓòÉΓòÉΓòÉ 7.11. Wie kann ich ein Aktionsprofil kopieren ? ΓòÉΓòÉΓòÉ
  990.  
  991. Um ein existierendes Aktionsprofil zu kopieren, f╨æhren Sie auf der 
  992. Aktions-Seite folgende Schritte durch: 
  993.  
  994.      W╨öhlen Sie in der mit Definierte Aktionsprofile gekennzeichneten Liste 
  995.       das gew╨ænschte Profil aus. Um ein Aktionsprofil zu kopieren, welches 
  996.       gerade aktiv ist und sich daher in der mit Aktive Aktionsprofile 
  997.       gekennzeichneten Liste befindet, so mu╤ü dieses zeitweilig deaktiviert 
  998.       werden, soda╤ü es kopiert werden kann. 
  999.       Siehe auch 
  1000.  
  1001.            Wie kann ich ein Aktionsprofil selektieren ? 
  1002.            Wie kann ich Aktionsprofile deaktivieren ? 
  1003.  
  1004.      W╨öhlen Sie den Men╨æeintrag Kopieren... aus 
  1005.  
  1006.      SendYes! zeigt einen Dialog an, in dem die Einstellungen f╨ær das neue 
  1007.       Profil eingetragen werden k╨ñnnen. Es mu╤ü zumindest der Meldungstext 
  1008.       ge╨öndert werden, da dieser unter allen Aktionsprofilen eindeutig sein 
  1009.       mu╤ü. 
  1010.       Siehe auch 
  1011.  
  1012.            Aktionsprofile 
  1013.            Neu / Editieren / Kopieren Dialog 
  1014.  
  1015.  
  1016. ΓòÉΓòÉΓòÉ 7.12. Wie kann ich Aktionsprofile aktivieren ? ΓòÉΓòÉΓòÉ
  1017.  
  1018. Um ein Aktionsprofil zu aktivieren, f╨æhren Sie auf der Aktions-Seite folgende 
  1019. Schritte durch: 
  1020.  
  1021.      Wenn Sie dies per Tastatur durchf╨æhren wollen: 
  1022.  
  1023.         -  W╨öhlen Sie in der mit Definierte Aktionsprofile gekennzeichneten 
  1024.            Liste das gew╨ænschte Profil aus und aktivieren Sie das Kontextmen╨æ. 
  1025.            Siehe auch 
  1026.                 Wie kann ich ein Aktionsprofil selektieren ? 
  1027.         -  W╨öhlen Sie den Men╨æeintrag Aktivieren aus 
  1028.  
  1029.       Wenn Sie dies mit der Maus durchf╨æhren wollen: 
  1030.  
  1031.         -  Ziehen Sie das gew╨ænschte Profil von der mit Definierte 
  1032.            Aktionsprofile gekennzeichneten Liste in die mit Aktive 
  1033.            Aktionsprofile gekennzeichnete Liste. 
  1034.  
  1035.  
  1036. ΓòÉΓòÉΓòÉ 7.13. Wie kann ich Aktionsprofile deaktivieren ? ΓòÉΓòÉΓòÉ
  1037.  
  1038. Um ein Aktionsprofil zu deaktivieren, f╨æhren Sie auf der Aktions-Seite folgende 
  1039. Schritte durch: 
  1040.  
  1041.      Wenn Sie dies per Tastatur durchf╨æhren wollen: 
  1042.  
  1043.         -  W╨öhlen Sie in der mit Aktive Aktionsprofile gekennzeichneten Liste 
  1044.            das gew╨ænschte Profil aus und aktivieren Sie das Kontextmen╨æ. 
  1045.            Siehe auch 
  1046.                 Wie kann ich ein Aktionsprofil selektieren ? 
  1047.         -  W╨öhlen Sie den Men╨æeintrag Deaktivieren aus 
  1048.  
  1049.       Wenn Sie dies mit der Maus durchf╨æhren wollen: 
  1050.  
  1051.         -  Ziehen Sie das gew╨ænschte Profil von der mit Aktive Aktionsprofile 
  1052.            gekennzeichneten Liste in die mit Definierte Aktionsprofile 
  1053.            gekennzeichnete Liste. 
  1054.  
  1055.  
  1056. ΓòÉΓòÉΓòÉ 7.14. Wie kann ich Aktionsprofile editieren ? ΓòÉΓòÉΓòÉ
  1057.  
  1058. Um ein Aktionsprofil zu editieren, f╨æhren Sie auf der Aktions-Seite folgende 
  1059. Schritte durch: 
  1060.  
  1061.      W╨öhlen Sie das gew╨ænschte Aktionsprofil aus, welches editiert werden soll 
  1062.       und aktivieren Sie das Kontextmen╨æ. 
  1063.       Sowohl deaktivierte als auch aktivierte Aktionsprofile k╨ñnnen editiert 
  1064.       werden. 
  1065.       Siehe auch 
  1066.  
  1067.            Wie kann ich ein Aktionsprofil selektieren ? 
  1068.  
  1069.      W╨öhlen Sie den Men╨æeintrag Editieren... aus 
  1070.  
  1071.      SendYes! zeigt einen Dialog an, in dem die Einstellungen f╨ær das Profil 
  1072.       ver╨öndert werden k╨ñnnen. 
  1073.  
  1074.  
  1075. ΓòÉΓòÉΓòÉ 7.15. Wie kann ich vordefinierte Aktionsprofile testen ? ΓòÉΓòÉΓòÉ
  1076.  
  1077. Um die vordefinierten Aktionsprofile f╨ær das Schlie╤üen von Textsitzungen zu 
  1078. testen, kann SendYes! die entsprechenden Textsitzungen automatisch erstellen, 
  1079. soda╤ü der Test wesentlich vereinfacht wird. Wenn die Sitzungen erstellt sind, 
  1080. k╨ñnnen Sie diese ╨æber die Fensterliste schlie╤üen. 
  1081. Die Sicherheitsabfragen sollten dann nicht mehr erscheinen. 
  1082.  
  1083. Nat╨ærlich funktionieren diese Profile auch mit jeder anderen Textsitzung. 
  1084.  
  1085. Um SendYes! die Textsitzungen f╨ær Sie erstellen zu lassen, f╨æhren Sie auf der 
  1086. Aktions-Seite folgende Schritte durch: 
  1087.  
  1088.      Falls dies noch nicht geschehen ist, aktivieren Sie eines oder besser 
  1089.       beide vordefinierten Aktionsprofile f╨ær das Schlie╤üen von Textsitzungen. 
  1090.       Sie sind mit 
  1091.  
  1092.         -  OS/2 Fenster schlie╤üen und 
  1093.         -  OS/2 Vollbild. schlie╤üen 
  1094.       gekennzeichnet. 
  1095.  
  1096.       Siehe auch 
  1097.  
  1098.            Wie kann ich Aktionsprofile aktivieren ? 
  1099.  
  1100.      W╨öhlen Sie eines der beiden (aktivierten) Aktionsprofile und aktivieren 
  1101.       Sie das Knotextmen╨æ. 
  1102.       Siehe auch 
  1103.  
  1104.            Wie kann ich ein Aktionsprofil selektieren ? 
  1105.  
  1106.      W╨öhlen Sie den Men╨æeintrag Testen... aus 
  1107.  
  1108.  
  1109. ΓòÉΓòÉΓòÉ 7.16. Wie kann ich die verwendete Sprache ╨öndern ? ΓòÉΓòÉΓòÉ
  1110.  
  1111. Um die von SendYes! verwendete Sprache zu ╨öndern, f╨æhren Sie einfach erneut das 
  1112. Installationsprogramm aus, indem Sie das Symbol SendYes! WPS 
  1113. Installationsprogramm ausf╨æhren. 
  1114.  
  1115. Im Installationsprogramm 
  1116.  
  1117.    1. w╨öhlen Sie die gew╨ænschte Sprache aus und 
  1118.    2. installieren Sie die SendYes! WPS Programmobjekte erneut 
  1119.  
  1120.  Dadurch wird auch die von der SendYes! GUI verwendete Sprache ge╨öndert. 
  1121.  
  1122.  Anmerkung: 
  1123.  
  1124.      Die ╨₧nderung der Sprache bleibt nur dann erhalten, wenn die SendYes! WPS 
  1125.       Programmobjekte erneut installiert werden. Wenn Sie das 
  1126.       Installationsprogramm verlassen, ohne dies zu tun, wird die ╨₧nderung der 
  1127.       Sprache nicht durchgef╨æhrt. 
  1128.  
  1129.  
  1130. ΓòÉΓòÉΓòÉ 7.17. Wie kann ich SendYes! deinstallieren ? ΓòÉΓòÉΓòÉ
  1131.  
  1132. Um SendYes! zu deinstallieren, f╨æhren Sie das Deinstallationsprogramm aus, 
  1133. indem Sie das Symbol SendYes! WPS Deinstallationsprogramm ausf╨æhren oder das 
  1134. Deinstallationsprogramm von der Kommandozeile aus aufrufen. 
  1135.  
  1136. Dies wird die SendYes! WPS Programmobjekte von der Arbeitsoberfl╨öche entfernen. 
  1137. Danach l╨ñschen Sie die Dateien des SendYes! Pakets. 
  1138.  
  1139.  
  1140. ΓòÉΓòÉΓòÉ 8. Einschr╨önkungen ΓòÉΓòÉΓòÉ
  1141.  
  1142.      SendYes! kann normalerweise nur Meldungsdialoge bearbeiten, die mit dem 
  1143.       API WinMessageBox erstellt werden. Die IDs f╨ær die Druckkn╨ñpfe, die in 
  1144.       diesen Standard-Meldungsdialogen verwendet werden, sind im Programmers 
  1145.       Toolkit definiert. 
  1146.  
  1147.       Ein zweites API, WinMessageBox2, gibt dem Programmierer die M╨ñglichkeit, 
  1148.       ebenfalls einen Meldungsdialog zu erstellen, aber die Druckkn╨ñpfe mit 
  1149.       anderen Texten und anderen IDs zu versehen. SendYes! kann diese 
  1150.       Meldungsdialoge nur dann bearbeiten, wenn wenigstens die Standard-IDs f╨ær 
  1151.       die Druckkn╨ñpfe verwendet werden, da andere nicht bekannt sind. 
  1152.       Des weiteren w╨ærde es sehr hilfreich sein, wenn auch die Texte der 
  1153.       Druckkn╨ñpfe irgendwie mit denen der Standard-Druckkn╨ñpfe ╨æbereinstimmen. 
  1154.       andernfalls werden Sie Schwierigkeiten haben, herauszubekommen, welchen 
  1155.       Druckknopf Sie im SendYes! Aktionsprofil ausw╨öhlen m╨æssen. 
  1156.       Ein Beispiel, wo alles reibungslos funktionieren w╨ærde, ist, wenn eine 
  1157.       Anwendung alle seine Meldungsdialoge immer in einer bestimmten Sprache 
  1158.       erstellen soll, gleichg╨æltig unter welcher Sprachspezifischen OS/2 
  1159.       Version sie ausgef╨æhrt wird. Dann w╨ærde der Programmierer der Anwendung 
  1160.       das WinMessageBox2 verwenden und dabei die Standard-IDs und Texte f╨ær die 
  1161.       Druckkn╨ñpfe verwenden. In einem solchen Fall k╨ñnnte ganz normal ein 
  1162.       SendYes! Aktionsprofil f╨ær diesen Meldungsdialog erstellt und verwendet 
  1163.       werden. 
  1164.  
  1165.       Wenn Sie nicht sicher sind, ob ein Meldungsdialog die Standard-IDs f╨ær 
  1166.       Druckkn╨ñpfe verwendet, ╨æberpr╨æfen Sie den Meldungsdialog mit der Utility 
  1167.       PM Tree. Die IDs der verwendeten Druckkn╨ñpfe sollte im Bereich von 1 bis 
  1168.       8 liegen. 
  1169.  
  1170.       Anmerkung: 
  1171.  
  1172.         -  PM Tree zeigt die ID 1 als DID_OK und ID 2 als DID_CANCEL an 
  1173.         -  Wenn der untersuchte Meldungsdialog weniger als vier Druckkn╨ñpfe 
  1174.            verwendet, wird er au╤üerdem einen oder mehrere nicht verwendete 
  1175.            Druckkn╨ñpfe mit IDs von 0x65 bis 0x67 enthalten, da immer vier 
  1176.            Druckkn╨ñpfe erstellt werden, aber nur die IDs derjenigen Druckkn╨ñpfe 
  1177.            redefiniert werden, die sichtbar sind und wirklich verwendet werden. 
  1178.  
  1179.  
  1180. ΓòÉΓòÉΓòÉ 9. Zuk╨ænftige Erweiterungen ΓòÉΓòÉΓòÉ
  1181.  
  1182.      In einer zuk╨ænftigen Version wird SENDYES.EXE durch ein richtiges WPS 
  1183.       Objekt ersetzt werden und die aktuell vorhandenen Notizbuchseiten werden 
  1184.       in das Einstellungsnotizbuch des WPS Objektes integriert. Alle 
  1185.       Kommandozeilenparameter werden durch Setup-Strings ersetzt werden, soda╤ü 
  1186.       eine Batch-Schnittstelle weiterhin m╨ñglich ist. F╨ær alle, die gerne 
  1187.       weiterhin auf der Kommandozeile arbeiten und nicht WPS Objekte benutzen 
  1188.       m╨ñchten, ist ein REXX Batch vorstellbar, der die Kommandozeilenparameter 
  1189.       von V2.00 weiterhin unterst╨ætzt. 
  1190.  
  1191.      In zuk╨ænftigen Versionen wird der Hook auch ╨æber den PMSHELL Prozess 
  1192.       ladbar sein, soda╤ü der Overhead eines extra Prozesses vermieden werden 
  1193.       kann. Die Menge des von SendYes! ben╨ñtigen Hauptspeichers wird aber nicht 
  1194.       geringer werden, der einzige Unterschied wird sein, da╤ü der Code, der die 
  1195.       Hook DLL l╨ödt, ebenfalls in einer DLL steht, die ihrerseits automatisch 
  1196.       durch PMSHELL geladen wird. Ein Nachteil besteht darin, da╤ü SendYes! nur 
  1197.       durch einen Neustart des Systems komplett aus dem Hauptspeicher entfernt 
  1198.       werden kann. Darum wird das Laden durch einen separaten Prozess weiterhin 
  1199.       angeboten werden, d.h. der Benutzer kann entscheiden, ob die SendYes! 
  1200.       Programmdatei durch PMSHELL oder durch einen separaten Prozess geladen 
  1201.       wird. 
  1202.       Beachten Sie, da╤ü das Markierungsfeld SendYes! aktivieren auf der 
  1203.       Aktions-Seite deaktiviert ist, da in der aktuellen Version von SendYes! 
  1204.       die Hook Programmdatei immer durch einen separaten Prozess geladen wird. 
  1205.  
  1206.      In der aktuellen Version von SendYes! wird die Hook Programmdatei immer 
  1207.       aus dem Hauptspeicher entfernt, wenn der Hook deaktiviert wird. In 
  1208.       zuk╨ænftigen Versionen wird es m╨ñglich sein, den Hook zwar zu 
  1209.       deaktivieren, aber im Hauptspeicher zu belassen. Dies wird auch die 
  1210.       einzige m╨ñgliche Option sein, wenn die SendYes! Hook Programmdatei durch 
  1211.       PMSHELL geladen wird. Wenn sie aber durch einen separaten Prozess geladen 
  1212.       wird, kann der Benutzer entscheiden, ob sie bei Deaktivieren des Hooks 
  1213.       aus dem Hauptspeicher entfernt werden soll oder nicht. 
  1214.       Beachten Sie, da╤ü das Markierungsfeld bei Deaktivieren aus Speicher 
  1215.       entfernen auf der Aktions-Seite deaktiviert ist, da in der aktuellen 
  1216.       Version von SendYes! die Hook Programmdatei immer aus dem Hauptspeicher 
  1217.       entfernt wird, wenn der Hook deaktiviert wird. 
  1218.  
  1219.      SendYes! wird um eine Art von Schnappschu╤ü- oder Lernfunktion erweitert 
  1220.       werden, mit der die Meldungstexte aller Meldungsdialoge aufgefangen 
  1221.       werden k╨ñnnen, die erscheinen, w╨öhrend die Lernfunktion aktiv ist. Dies 
  1222.       wird den Benutzer davon entlasten, Meldungstexte einzutippen, wenn neue 
  1223.       Aktionsprofile erstellt werden. 
  1224.       Beachten Sie, da╤ü  der Men╨æeintrag  Suchen... im Kontextmen╨æ der mit 
  1225.       Definierte Aktionsprofile gekennzeichneten Liste auf der Aktions-Seite in 
  1226.       der aktuellen Version deaktiviert ist und zur zuk╨ænftigen Implementation 
  1227.       dieser Funktionalit╨öt reserviert ist. 
  1228.  
  1229.      In der aktuellen SendYes! Version mu╤ü der Meldungstext exakt so 
  1230.       eingegeben werden, wie er in dem zu bearbeitenden Meldungsdialog 
  1231.       erscheint. Es k╨ñnnte sinnvoll sein, regul╨öre Ausdr╨æcke zu unterst╨ætzen, 
  1232.       allerdings wird dann auch ein Verfahren ben╨ñtigt, um regul╨öre Ausdr╨æcke 
  1233.       miteinander zu vergleichen, da die Meldungstexte aller gespeicherten 
  1234.       Aktionsprofile eindeutig sein m╨æssen. Im Moment wird ein "case sensitive 
  1235.       string compare" verwendet, um sicherzustellen, da╤ü ein neuer oder 
  1236.       ge╨önderter Meldungstext eindeutig ist... 
  1237.  
  1238.       Wenn allerdings die Suchen... Funktion implementiert ist, dann ist die 
  1239.       Unterst╨ætzung von regul╨ören Ausdr╨æcken vielleicht nicht mehr so wichtig ? 
  1240.  
  1241.      eine Import- und Exportfunktion f╨ær Aktionsprofile k╨ñnnte sinnvoll sein. 
  1242.       Im Moment ist mir nicht klar, ob sowas wirklich gebraucht wird. Wenn Sie 
  1243.       glauben, da╤ü Sie so etwas wirklich gebrauchen k╨ñnnen, erw╨öhnen Sie es 
  1244.       bitte in Ihrem e-mail. 
  1245.  
  1246.      Die Listen auf der Aktions-Seite sind im Moment nur Listen mit einfacher 
  1247.       Selektierung. Es w╨öhre nett, wenn man mehrere Aktionsprofile auf einmal 
  1248.       selektieren und z.B. mit einem Mal verschieben k╨ñnnte. Das klingt 
  1249.       vielleicht einfach, aber ist doch ziemlich kompliziert und mit einigem 
  1250.       Aufwand verbunden... 
  1251.  
  1252.  
  1253. ΓòÉΓòÉΓòÉ 10. Technische Details ΓòÉΓòÉΓòÉ
  1254.  
  1255. Die SendYes! PM Hooks 
  1256. erweiterte Listen 
  1257. National Language Support 
  1258. IPFC Preprocessor 
  1259. syslevel manager 
  1260.  
  1261.  
  1262. ΓòÉΓòÉΓòÉ 10.1. Die SendYes! PM Hooks ΓòÉΓòÉΓòÉ
  1263.  
  1264. Die SendYes! Funktionalit╨öt wird dadurch erm╨ñglicht, da╤ü SendYes! PM Hooks 
  1265. (Haken) f╨ær das Abfangen bestimmter PM Meldungen installiert. 
  1266.  
  1267. Allgemeines ╨æber PM Hooks 
  1268. Es gibt verschiedene Kategorien von Hooks und jeder Hook erh╨ölt vom System alle 
  1269. Meldungen, die zu seiner Kategorie geh╨ñren. Nach der Installation eines Hooks 
  1270. werden diese Meldungen zuerst an den Hook gesendet. Der Hook reagiert in der 
  1271. Regel nur auf einige wenige Meldungen, w╨öhrend alle anderen Meldungen an den 
  1272. eigentlichen Adressaten weitergeleitet werden. 
  1273. Die beiden wichtigsten Hooks sind der SendMessage Hook und der Input Hook. Der 
  1274. erste erh╨ölt alle Nachrichten, die synchron mit dem API WinSendMsg an irgendein 
  1275. PM Fenster gesendet werden. Der SendMessage Hook mu╤ü die Nachricht auf jeden 
  1276. Fall nach der eigenen Bearbeitung an den eigentlichen Adressaten weiterleiten, 
  1277. er kann aber ansonsten auf jeden Fall beliebig darauf reagieren. 
  1278. Der Input Hook hingegen erh╨ölt alle Meldungen, die mit dem API WinPostMsg 
  1279. asynchron an irgend ein PM-Fenster verschickt werden und bis zur Bearbeitung in 
  1280. dessen Meldungs-Warteschlange plaziert werden. Der Input Hook kann im Gegensatz 
  1281. zum SendMessage Hook nicht nur auf die Meldung reagieren, sondern bei Bedarf 
  1282. verhindern, da╤ü die Meldung in die Meldungs-Warteschlange des Empf╨öngers 
  1283. gestellt wird. So kann verhindert werden, da╤ü der Adressat diese Meldung erh╨ölt 
  1284. bzw. bearbeitet. 
  1285.  
  1286. Die SendYes! PM Hooks 
  1287. SendYes! installiert je einen SendMessage Hook und einen Input Hook. Der 
  1288. SendYes! SendMessage Hook wartet darauf, da╤ü eine Meldung f╨ær einen 
  1289. Fokuswechsel gesendet wird. 
  1290. Diese Meldungen werden vom PM an jedes Dialogfenster gesendet, dessen 
  1291. Kontrollfeld den Eingabefokus erh╨ölt oder verliert. SendYes! kann dann pr╨æfen, 
  1292. ob das betreffende Dialogfenster ein Meldungsdialog ist. Wenn dies der Fall 
  1293. ist, dann wird der Dialog bzw. dessen Meldungstext mit den aktiven 
  1294. Aktionsprofilen verglichen. Gleicht der Meldungstext des Meldungsdialogs dem 
  1295. gespeicherten Meldungstext eines aktiven Aktionsprofils, so wird indirekt die 
  1296. im Aktionsprofil definierte Aktion ausgef╨æhrt. 
  1297.  
  1298. Die jeweilige Aktion kann nicht direkt ausgef╨æhrt werden, da beim erstmaligen 
  1299. Erhalts des Eingabefokus der Meldungsdialog noch nicht vollst╨öndig 
  1300. initialisiert ist. Lediglich der Standarddruckknopf ist zu diesem Zeitpunkt 
  1301. definiert und f╨ær eine Aktion verf╨ægbar, alle anderen Druckkn╨ñpfe jedoch noch 
  1302. nicht. 
  1303.  
  1304. Um nun Aktionen auf alle Druckkn╨ñpfe ausf╨æhren zu k╨ñnnen, mu╤ü SendYes! daf╨ær 
  1305. sorgen, da╤ü es noch einmal zu einem sp╨öteren Zeitpunkt die Kontrolle erh╨ölt. Es 
  1306. verschickt dazu mit WinPostMsg eine spezielle Meldung an den Meldungsdialog, Da 
  1307. jedes PM Fenster erst dann Meldungen aus seiner Meldungswarteschlange erhalten 
  1308. kann, wenn seine Initialisierung abgeschlossen ist, erh╨ölt auch der 
  1309. Meldungsdialog diese spezielle Meldung erst, nachdem er vollst╨öndig 
  1310. initialisiert ist. 
  1311. Zu diesem Zeitpunkt f╨öngt der SendYes! Input Hook diese Meldung ab und kann nun 
  1312. die gew╨ænschte Aktion auf jeden der nun vollst╨öndig verf╨ægbaren Druckkn╨ñpfe 
  1313. vornehmen. 
  1314.  
  1315. Eine Besonderheit ist, falls die gew╨ænschte Aktion das Setzen eines 
  1316. Druckknopfes als Standarddruckknopf (und damit das Setzen des Eingabefokus 
  1317. darauf) ist: dann mu╤ü SendYes! au╤üerdem sicherstellen, da╤ü diese Aktion nur 
  1318. einmal durchgef╨æhrt wird, also nur, wenn der Meldungsdialog das erste Mal 
  1319. aktiviert wird und damit eines seiner Kontrollfelder den Eingabefokus erh╨ölt. 
  1320. Ansonsten w╨ærde jeder Fokuswechsel innerhalb des Meldungsdialogs, also z.B. das 
  1321. Bewegen des Eingabefokus mit den Pfeiltasten immer wieder dieselbe Aktion 
  1322. ausl╨ñsen und der Fokus w╨ærde von SendYes! immer wieder auf denselben Druckknopf 
  1323. gesetzt. Das Ergebnis w╨öre, da╤ü der Eingabefokus per Tastatur nicht mehr 
  1324. ver╨öndert werden k╨ñnnte und daher per Tastatur nur der Standarddruckknopf 
  1325. erreichbar w╨öre. 
  1326.  
  1327. Technisches ╨æber PM Hooks 
  1328. Ein Hook ist eine Funktion, die in einer DLL stehen mu╤ü. Der Prozess, der diese 
  1329. DLL l╨ödt und den Hook installiert, mu╤ü aktiv und im Hauptspeicher verbleiben, 
  1330. bis der Hook wieder deinstalliert wird. 
  1331. Daher werden f╨ær einen Hook mindestens eine Programmdatei und eine DLL 
  1332. ben╨ñtigt. Um den Hauptspeicher zu begrenzen, der durch den Hook belegt wird, 
  1333. ist seit V2.00 von SendYes! der Code, der die Hook DLL l╨ödt und den Hook 
  1334. installiert, von SENDYES.EXE. in eine separate Hook Programmdatei verlegt 
  1335. worden. 
  1336. Auf diese Weise ist es m╨ñglich gewesen, die Benutzerschnittstelle in 
  1337. SENDYES.EXE bedeutend zu erweitern, w╨öhrend der Hook immer noch lediglich etwa 
  1338. dieselbe Menge Speicher ben╨ñtigt wie in der Vorversion. Da SENDYES.EXE nur f╨ær 
  1339. die Konfiguration bzw. f╨ær die Initialisierung ben╨ñtigt wird, belegt SendYes! 
  1340. im laufenden Betrieb entsprechend nur die geringe Menge an Hauptspeicher, die 
  1341. der Hook ben╨ñtigt. 
  1342.  
  1343. Die beiden folgenden Quelldateien f╨ær die Hook Lade-Programmdatei und die Hook 
  1344. DLL machen den Hauptteil der Arbeit und sind daher wohl die interessantesten, 
  1345. wenn auch zwei der kleinsten von allen SendYes! Quelldateien: 
  1346.  
  1347.      Hook Lade-Programmdatei 
  1348.      Hook DLL 
  1349.  
  1350.  Weitere Informationen ╨æber Senden und Posten von PM Meldungen und ╨æber PM 
  1351.  Hooks erhalten Sie in Programmers Toolkit Dokumentation. 
  1352.  
  1353.  
  1354. ΓòÉΓòÉΓòÉ 10.1.1. hook Lader ΓòÉΓòÉΓòÉ
  1355.  
  1356. SNDYSHK.C 
  1357.  
  1358. #define INCL_DOSSEMAPHORES
  1359. #define INCL_DOSMODULEMGR
  1360. #define INCL_WINWINDOWMGR
  1361. #define INCL_WINMESSAGEMGR
  1362. #define INCL_WINHOOKS
  1363. #define INCL_ERRORS
  1364.  
  1365. #define INCL_DOSPROCESS
  1366.  
  1367. #include <os2.h>
  1368. #include <stdlib.h>
  1369. #include <string.h>
  1370. #include "sndyshk.h"
  1371. #include "sndysdll.h"
  1372. #include "sndysldr.h"
  1373.  
  1374. #define SENDYES_HOOKDLLFILE      "SNDYSDLL"
  1375.  
  1376. #define ERROR_BEEP      DosBeep(800,100)
  1377.  
  1378. /*ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1379.  *Γöé Name      : main                                                       Γöé
  1380.  *Γöé Comment   :                                                            Γöé
  1381.  *Γöé Author    : C.Langanke                                                 Γöé
  1382.  *Γöé Date      : 05.11.1995                                                 Γöé
  1383.  *Γöé Update    : 05.11.1995                                                 Γöé
  1384.  *Γöé called by : C-Runtime                                                  Γöé
  1385.  *Γöé calls     : Win*, Dos*                                                 Γöé
  1386.  *Γöé Input     : INT, PSZ[]  - command line parms                           Γöé
  1387.  *Γöé Tasks     : - starts hook                                              Γöé
  1388.  *Γöé returns   : INT - OS/2 error code                                      Γöé
  1389.  *ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1390.  */
  1391. INT main
  1392.          (
  1393.          INT            argc,
  1394.          PSZ            argv[]
  1395.          )
  1396. {
  1397.          HAB            hab;
  1398.          HMQ            hmq;
  1399.          QMSG           qmsq;
  1400.          HEV            hevTerminationSem  = 0;
  1401.          HEV            hevStartupSem      = 0;
  1402.          HLIB           hlibDLL            = 0;
  1403.          BOOL           fSendMsgHookActive = FALSE;
  1404.          BOOL           fInputHookActive   = FALSE;
  1405.          APIRET         rc                 = NO_ERROR;
  1406.  
  1407. do
  1408.    {
  1409.    // check if startup sem is there to make sure that
  1410.    // this executable is loaded only by the SendYes! GUI
  1411.    rc = DosOpenEventSem( SEM_STARTUP,
  1412.                          &hevStartupSem);
  1413.    if (rc != NO_ERROR)
  1414.       break;
  1415.  
  1416.    // initialize PM resources
  1417.    hab = WinInitialize( 0);
  1418.    if (hab == NULLHANDLE)
  1419.       {
  1420.       rc = ERROR_INVALID_FUNCTION;
  1421.       break;
  1422.       }
  1423.  
  1424.    hmq = WinCreateMsgQueue( hab, 0);
  1425.    if (hmq == NULLHANDLE)
  1426.       {
  1427.       rc = ERRORIDERROR( WinGetLastError( hab));
  1428.       break;
  1429.       }
  1430.  
  1431.    // do not participate on shutdown processing
  1432.    // because we will not dispatch our message queue,
  1433.    if (!WinCancelShutdown( hmq, TRUE))
  1434.       {
  1435.       rc = ERRORIDERROR( WinGetLastError( hab));
  1436.       break;
  1437.       }
  1438.  
  1439.    // initialize SENDYES DLL Data
  1440.    rc = InitDllData();
  1441.    if (rc != NO_ERROR)
  1442.       {
  1443.       break;
  1444.       }
  1445.  
  1446.    // set up termination sem
  1447.    rc = DosCreateEventSem( SEM_TERMINATION,     // name of sem
  1448.                            &hevTerminationSem,  // handle
  1449.                            0L,                  // named sem always shared
  1450.                            FALSE);              // initially set
  1451.    if (rc != NO_ERROR)
  1452.       {
  1453.       break;
  1454.       }
  1455.  
  1456.    // get DLL Handle, cannot fail because it is linked already statically
  1457.    rc = DosQueryModuleHandle( SENDYES_HOOKDLLFILE, &hlibDLL);
  1458.  
  1459.    // start the SendMsg hook
  1460.    fSendMsgHookActive = WinSetHook( hab, NULLHANDLE, HK_SENDMSG, (PFN)&SendMsgHook, hlibDLL);
  1461.    fInputHookActive   = WinSetHook( hab, NULLHANDLE, HK_INPUT,   (PFN)&InputHook,   hlibDLL);
  1462.    if ((!fSendMsgHookActive) || (!fInputHookActive))
  1463.       {
  1464.       rc = ERRORIDERROR( WinGetLastError( hab));
  1465.       break;
  1466.       }
  1467.  
  1468.    // note that the message queue is not dispatched,
  1469.    // as in normal PM programs. We need the message
  1470.    // queue only for being able to call Win* APIs
  1471.    // the hooks do not make use of it ...
  1472.  
  1473.    // now post startup sem for the SendYes! GUI
  1474.    // to signal that startup processing has finished
  1475.    DosPostEventSem( hevStartupSem);
  1476.  
  1477.    // ... and wait for termination sem
  1478.    // posted by the SendYes! GUI
  1479.    rc = DosWaitEventSem( hevTerminationSem, SEM_INDEFINITE_WAIT);
  1480.  
  1481.    } while (FALSE);
  1482.  
  1483. // cleanup
  1484. DeinitDllData();
  1485.  
  1486. if (fSendMsgHookActive) WinReleaseHook( hab, NULLHANDLE, HK_SENDMSG, (PFN)&SendMsgHook, (HLIB)0);
  1487. if (fInputHookActive)   WinReleaseHook( hab, NULLHANDLE, HK_SENDMSG, (PFN)&InputHook,   (HLIB)0);
  1488. if (hmq)                WinDestroyMsgQueue( hmq);
  1489. if (hab)                WinTerminate( hab);
  1490. if (hevTerminationSem)  DosCloseEventSem (hevTerminationSem);
  1491. if (hevStartupSem)      DosCloseEventSem( hevStartupSem);
  1492. if (rc != NO_ERROR)     ERROR_BEEP;
  1493.  
  1494. return rc;
  1495. }
  1496.  
  1497.  
  1498. ΓòÉΓòÉΓòÉ 10.1.2. hook ΓòÉΓòÉΓòÉ
  1499.  
  1500. SNDYSDLL.H 
  1501.  
  1502.  
  1503. #ifndef _SNDYSDLL_H
  1504. #define _SNDYSDLL_H
  1505.  
  1506. #include <os2.h>
  1507.  
  1508. //
  1509. //      public prototypes
  1510. //
  1511.  
  1512. VOID EXPENTRY SendMsgHook( HAB hab, PSMHSTRUCT psmh, BOOL fInterTask);
  1513. BOOL EXPENTRY InputHook( HAB hab, PQMSG pqmsg, USHORT usRemove);
  1514.  
  1515. APIRET InitDllData( VOID);
  1516. APIRET DeinitDllData( VOID);
  1517.  
  1518. #endif // _SNDYSDLL_H
  1519.  
  1520. SNDYSDLL.C 
  1521.  
  1522. #define INCL_WIN
  1523. #define INCL_DOS
  1524. #define INCL_ERRORS
  1525.  
  1526. #include <os2.h>
  1527. #include "sndysdll.h"
  1528. #include "sndysprf.h"
  1529. #include "sndyshk.h"
  1530.  
  1531. #include <string.h>
  1532.  
  1533. //
  1534. //      magic values for resids
  1535. //      when these ids change, SendYes! will not work anylonger ...
  1536. //
  1537.  
  1538. #define ID_MSGBOX_MESSAGE   200                    // ID of message text
  1539. #define ID_MSGBOX_ICON      300                    // ID of icon
  1540.  
  1541. //
  1542. //      global variables
  1543. //
  1544.  
  1545. static   BOOL           fInitialized         = FALSE;
  1546. static   PACTIONPRFLIST pactionprflistGlobal = NULL;
  1547. static   HMTX           hmtxUpdateGlobal     = 0L;
  1548.  
  1549. //
  1550. //      defines for trigger message
  1551. //
  1552.  
  1553. #define WM_USER_MSGBOX_TRIGGER   0xFEDC
  1554. #define MP_USER_MSGBOX_TRIGGER   0xFEDC
  1555.  
  1556. /*ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1557.  *Γöé Name      : InitDllData                                                Γöé
  1558.  *Γöé Comment   : is to be called before use of the hook.                    Γöé
  1559.  *Γöé Author    : C.Langanke                                                 Γöé
  1560.  *Γöé Date      : 10.10.1995                                                 Γöé
  1561.  *Γöé Update    : 18.12.1995                                                 Γöé
  1562.  *Γöé called by : main                                                       Γöé
  1563.  *Γöé calls     : Dos*                                                       Γöé
  1564.  *Γöé Global i/o: PACTIONPRFLIST - pointer to list in named shared segment   Γöé
  1565.  *Γöé             HMTX           - handle to update semaphore                Γöé
  1566.  *Γöé             BOOL           - initialize flag                           Γöé
  1567.  *Γöé Input     : -                                                          Γöé
  1568.  *Γöé Tasks     : - initialises DLL data:                                    Γöé
  1569.  *Γöé               - gets access to shared segment                          Γöé
  1570.  *Γöé               - creates update semaphore                               Γöé
  1571.  *Γöé returns   : APIRET - OS/2 error code                                   Γöé
  1572.  *ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1573.  */
  1574. APIRET _Export InitDllData ( VOID)
  1575. {
  1576.          APIRET        rc;
  1577.  
  1578. // initialized ?
  1579. if (fInitialized)
  1580.    return NO_ERROR;
  1581.  
  1582. do
  1583.    {
  1584.    // get access to named shared segment
  1585.    // to keep it in access for this process
  1586.    rc =  DosGetNamedSharedMem( (PVOID *) &pactionprflistGlobal,
  1587.                                SEG_ACTIONPRFLIST,
  1588.                                PAG_READ | PAG_WRITE);
  1589.    if (rc != NO_ERROR)
  1590.       break;
  1591.  
  1592.    // set up uptdate sem to keep it
  1593.    // in access for this process
  1594.    rc = DosCreateMutexSem( SEM_UPDATE,          // name of sem
  1595.                            &hmtxUpdateGlobal,   // handle
  1596.                            0L,                  // named sem always shared
  1597.                            FALSE);              // initially not owned
  1598.    if (rc != NO_ERROR)
  1599.       break;
  1600.  
  1601.    } while (FALSE);
  1602.  
  1603.  
  1604. // initialize done
  1605. fInitialized = (rc == NO_ERROR);
  1606.  
  1607. return rc;
  1608. }
  1609.  
  1610. /*ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1611.  *Γöé Name      : DeinitDllData                                              Γöé
  1612.  *Γöé Comment   : is to be called on termination of hook                     Γöé
  1613.  *Γöé Author    : C.Langanke                                                 Γöé
  1614.  *Γöé Date      : 10.10.1995                                                 Γöé
  1615.  *Γöé Update    : 18.12.1995                                                 Γöé
  1616.  *Γöé called by : main                                                       Γöé
  1617.  *Γöé calls     : Dos*                                                       Γöé
  1618.  *Γöé Global i/o: PACTIONPRFLIST - pointer to list in named shared segment   Γöé
  1619.  *Γöé             HMTX           - handle to update semaphore                Γöé
  1620.  *Γöé             BOOL           - initialize flag                           Γöé
  1621.  *Γöé Input     : -                                                          Γöé
  1622.  *Γöé Tasks     : - free DLL resources                                       Γöé
  1623.  *Γöé returns   : APIRET - OS/2 error code                                   Γöé
  1624.  *ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1625.  */
  1626. APIRET _Export DeinitDllData ( VOID)
  1627. {
  1628.  
  1629. // deaktivate hook
  1630. fInitialized = FALSE;
  1631.  
  1632. // free named shared segment
  1633. DosFreeMem( pactionprflistGlobal);
  1634.  
  1635. // close update sem
  1636. DosCloseMutexSem( hmtxUpdateGlobal);
  1637.  
  1638. return NO_ERROR;
  1639.  
  1640. }
  1641.  
  1642. /*ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1643.  *Γöé Name      : SendMsgHook                                                Γöé
  1644.  *Γöé Comment   : Original version by Wes Santee, 1995                       Γöé
  1645.  *Γöé             Note that the global variables (pointer to shared mem      Γöé
  1646.  *Γöé             and handle to update sem) are not valid within the hook    Γöé
  1647.  *Γöé             function, because this function is executed within the     Γöé
  1648.  *Γöé             process environment of the message sender.                 Γöé
  1649.  *Γöé             So they must be obtained from the system again.            Γöé
  1650.  *Γöé             Note that not all pushbuttons are defined, when            Γöé
  1651.  *Γöé             WM_FOCUSCHANGE or WM_ACTIVATE is sent (only the buttons    Γöé
  1652.  *Γöé             up to the defpushbutton are already there). Because we     Γöé
  1653.  *Γöé             want to be able to act on all pushbuttons, we post a       Γöé
  1654.  *Γöé             a trigger message and intercept that later through the     Γöé
  1655.  *Γöé             input hook, because that one is processed after creation   Γöé
  1656.  *Γöé             of the message box.                                        Γöé
  1657.  *Γöé Author    : Wes Santee, C.Langanke                                     Γöé
  1658.  *Γöé Date      : 1995                                                       Γöé
  1659.  *Γöé Update    : 18.12.1995                                                 Γöé
  1660.  *Γöé called by : WinSendMsg API (???)                                       Γöé
  1661.  *Γöé calls     : Win*, Dos*                                                 Γöé
  1662.  *Γöé Input     : HAB, PSMHSTRUCT, BOOL - parms of Send Message Hook         Γöé
  1663.  *Γöé Tasks     : - intercepts focuschange messages                          Γöé
  1664.  *Γöé               - if it is a msgbox to process, post trigger message     Γöé
  1665.  *Γöé returns   : VOID                                                       Γöé
  1666.  *ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1667.  */
  1668. VOID _Export EXPENTRY SendMsgHook
  1669.          (
  1670.          HAB            hab,
  1671.          PSMHSTRUCT     psmh,
  1672.          BOOL           fInterTask
  1673.          )
  1674. {
  1675.  
  1676. // initialized ?
  1677. if (!fInitialized)
  1678.    return;
  1679.  
  1680. // is it a focuschange and a "gain focus" message ?
  1681. if ((psmh->msg == WM_FOCUSCHANGE) && ( SHORT1FROMMP( psmh->mp2) == TRUE))
  1682.    {
  1683.             ULONG          ulWindowID;
  1684.             CHAR           szClassName[ 32];
  1685.             HWND           hwndMessage;
  1686.             HWND           hwndIcon;
  1687.  
  1688.    // focus change in effect, is it a frame window ?
  1689.    WinQueryClassName( psmh->hwnd, sizeof( szClassName), szClassName);
  1690.    if ( strcmp( szClassName, "#1") == 0)
  1691.       {
  1692.  
  1693.       // has it subcontrols with the magic res
  1694.       // id for message text and icons ?
  1695.       hwndIcon = WinWindowFromID( psmh->hwnd, ID_MSGBOX_ICON);
  1696.       hwndMessage = WinWindowFromID( psmh->hwnd, ID_MSGBOX_MESSAGE);
  1697.  
  1698.       if ((hwndIcon) && (hwndMessage))
  1699.          {
  1700.                    APIRET         rc;
  1701.                    CHAR           szDialogMessage[ MESSAGE_MAXLEN];
  1702.                    ULONG          i;
  1703.                    PACTIONPRFLIST pactionprflist = NULL;
  1704.                    PACTIONPRF     pactionprf     = NULL;
  1705.                    HMTX           hmtxUpdate     = 0;
  1706.          do
  1707.             {
  1708.  
  1709.             // query message text
  1710.             if (!WinQueryWindowText( hwndMessage,
  1711.                                      sizeof( szDialogMessage),
  1712.                                      szDialogMessage))
  1713.                break;
  1714.  
  1715.             // get access to named shared segment
  1716.             // for the callers process environment
  1717.             rc =  DosGetNamedSharedMem( (PVOID *) &pactionprflist,
  1718.                                         SEG_ACTIONPRFLIST,
  1719.                                         PAG_READ | PAG_WRITE);
  1720.             if (rc != NO_ERROR)
  1721.                break;
  1722.  
  1723.             // get handle to update sem
  1724.             // for the callers process environment
  1725.             rc = DosOpenMutexSem( SEM_UPDATE,
  1726.                                   &hmtxUpdate);
  1727.             if (rc != NO_ERROR)
  1728.                break;
  1729.  
  1730.             // get exclusive access to action profile list
  1731.             rc = DosRequestMutexSem( hmtxUpdate,
  1732.                                      SHAREDACCESS_WAIT);
  1733.             if (rc != NO_ERROR)
  1734.                break;
  1735.  
  1736.             // loop through all profiles
  1737.             for (i = 0, pactionprf = &pactionprflist->actionprf;
  1738.                  i < pactionprflist->ulActionCount;
  1739.                  i++, pactionprf = NEXTACTIONPRF( pactionprf))
  1740.                {
  1741.  
  1742.                // skip profiles marked inactive or deleted
  1743.                if ((!pactionprf->fActive) || (pactionprf->fDeleted))
  1744.                   continue;
  1745.  
  1746.                // is it the message stored in this action profile ?
  1747.                if (strcmp( szDialogMessage,
  1748.                            pactionprf->szMessage) != 0)
  1749.                   continue;
  1750.                else
  1751.                   {
  1752.  
  1753.                   // post trigger message with button and action
  1754.                   WinPostMsg( psmh->hwnd, WM_USER_MSGBOX_TRIGGER,
  1755.                               MPFROMSHORT(MP_USER_MSGBOX_TRIGGER),
  1756.                               MPFROM2SHORT( pactionprf->ulButton, pactionprf->ulAction));
  1757.  
  1758.                   // message found, so we're done
  1759.                   break;
  1760.  
  1761.                   } // end if "stored message"
  1762.  
  1763.                } // end for "all messages"
  1764.  
  1765.  
  1766.             } while (FALSE);
  1767.  
  1768.          // release access to the shared segment
  1769.          if (hmtxUpdate)
  1770.             {
  1771.             DosReleaseMutexSem( hmtxUpdate);
  1772.             DosCloseMutexSem( hmtxUpdate);
  1773.             }
  1774.  
  1775.          // free shared segment
  1776.          DosFreeMem( pactionprflist);
  1777.  
  1778.          } // end if (hwndMessage)
  1779.  
  1780.       } // if (hwndDesktop == hwndParent)
  1781.  
  1782.    } // end if (psmh->msg == WM_FOCUSCHANGE )
  1783.  
  1784. return;
  1785. }
  1786.  
  1787. /*ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1788.  *Γöé Name      : InputHook                                                  Γöé
  1789.  *Γöé Comment   :                                                            Γöé
  1790.  *Γöé Author    : C.Langanke                                                 Γöé
  1791.  *Γöé Date      : 06.12.1995                                                 Γöé
  1792.  *Γöé Update    : 06.12.1995                                                 Γöé
  1793.  *Γöé called by : PM message queue                                           Γöé
  1794.  *Γöé calls     : Win*, Dos*                                                 Γöé
  1795.  *Γöé Input     : HAB, PQMSG, USHORT - parms of input hook                   Γöé
  1796.  *Γöé Tasks     : - intercepts trigger message and performs specified action Γöé
  1797.  *Γöé               on specified pushbutton.                                 Γöé
  1798.  *Γöé returns   : BOOL - remove flag                                         Γöé
  1799.  *ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1800.  */
  1801. BOOL EXPENTRY InputHook
  1802.          (
  1803.          HAB            hab,
  1804.          PQMSG          pqmsg,
  1805.          USHORT         usRemove
  1806.          )
  1807. {
  1808.          BOOL           fRemove = FALSE;
  1809. static   HWND           hwndFocusChanged = NULLHANDLE;
  1810.  
  1811. // make sure that it is really our trigger message !
  1812. if ((pqmsg->msg == WM_USER_MSGBOX_TRIGGER) &&
  1813.     (pqmsg->mp1 == (MPFROMSHORT(MP_USER_MSGBOX_TRIGGER))))
  1814.    {
  1815.  
  1816.              HWND           hwndButton;
  1817.              ULONG          ulButton = SHORT1FROMMP( pqmsg->mp2);
  1818.              ULONG          ulAction = SHORT2FROMMP( pqmsg->mp2);
  1819.  
  1820.    // determine button window
  1821.    hwndButton = WinWindowFromID( pqmsg->hwnd, ulButton);
  1822.  
  1823.    // act upon button only if it is there
  1824.    if (hwndButton != NULLHANDLE)
  1825.       {
  1826.  
  1827.       switch (ulAction)
  1828.          {
  1829.          case ACTION_PRESS:
  1830.             WinPostMsg( hwndButton, BM_CLICK, MPFROMLONG( FALSE), 0);
  1831.             break;
  1832.  
  1833.          case ACTION_DEFAULT:
  1834.             // make sure to change focus only once per message box
  1835.             if (pqmsg->hwnd != hwndFocusChanged)
  1836.                {
  1837.                WinSetFocus( WinQueryDesktopWindow( WinQueryAnchorBlock( pqmsg->hwnd), 0), hwndButton);
  1838.                WinPostMsg( hwndButton, BM_SETDEFAULT, MPFROMLONG( TRUE), 0);
  1839.                hwndFocusChanged = pqmsg->hwnd;
  1840.                }
  1841.             break;
  1842.  
  1843.          case ACTION_DISABLE:
  1844.             WinEnableWindow(  hwndButton, FALSE);
  1845.             break;
  1846.  
  1847.          } // end switch
  1848.  
  1849.       } // end if (hwndButton != NULLHANDLE)
  1850.  
  1851.    // remove message
  1852.    fRemove = TRUE;
  1853.  
  1854.    } // end if ((pqmsg->msg == WM_USER_MSGBOX_TRIGGER) && ...
  1855.  
  1856. return fRemove;
  1857. }
  1858.  
  1859.  
  1860. ΓòÉΓòÉΓòÉ 10.2. erweiterte Listen ΓòÉΓòÉΓòÉ
  1861.  
  1862. Um eine bedienungsfreundliche Benutzerschnittstelle anbieten zu k╨ñnnen, 
  1863. verwendet SendYes!  die folgenden leicht zu programmierenden und leicht zu 
  1864. bedienenden Erweiterungen f╨ær Listen, n╨ömlich die Funktionalit╨öt des Direct 
  1865. Manipulation ListBox (DMLB) Kontrollfeldes und des MultiColumn ListBox (MCLB) 
  1866. PM Kontrollfeldes. 
  1867.  
  1868. Dies erweitert normale Listen um die F╨öhigkeit, eine mehrspaltige Liste 
  1869. anzeigen zu k╨ñnnen und au╤üerdem Ziehen&╨¬bergeben (Drag&Drop) zwischen Listen zu 
  1870. unterst╨ætzen. Mit diesen Erweiterungen wird einige Funktionalit╨öt eines 
  1871. Containers abgedeckt, sie sind aber wesentlich einfacher zu programmieren und 
  1872. in der Bedienung schneller. SendYes! verwendet eine leicht modifizierte Version 
  1873. des Direct Manipulation ListBox (DMLB) Kontrollfeldes. 
  1874.  
  1875. Die kompletten Sourcen inclusive INF Referenzdatei sind auf IBM ftp Servern in 
  1876. der Datei LB.ZIP erh╨öltich. 
  1877.  
  1878. F╨ær weitere Informationen ╨æber die Programmierung dieser Kotrollfelder siehe 
  1879. auch OS/2 Developer Magazine, Nov./Dez. 1995. 
  1880.  
  1881.  
  1882. ΓòÉΓòÉΓòÉ 10.2.1. Direct Manipulation ListBox (DMLB) ΓòÉΓòÉΓòÉ
  1883.  
  1884. Auszug aus DMLB.INF: 
  1885.  
  1886. Acknowledgments 
  1887. This control was originally conceived at IBM Yorktown Research by Alan Warren. 
  1888. The control was rewritten and enhanced by Mark McMillan of IBM, Research 
  1889. Triangle Park, USA. 
  1890.  
  1891. Description 
  1892. The Direct Manipulation ListBox is a very useful enhancement for the standard 
  1893. PM listbox control.  It supplies the capability to support drag/drop reordering 
  1894. of items in a listbox, and drag/drop of items from one listbox to another. 
  1895.  
  1896.  
  1897. ΓòÉΓòÉΓòÉ 10.2.2. MultiColumn ListBox (MCLB) ΓòÉΓòÉΓòÉ
  1898.  
  1899. Auszug aus MCLB.INF: 
  1900.  
  1901. Acknowledgments 
  1902. This control was originally conceived at the IBM United Kingdom Warwick 
  1903. Development group by Charles Cooper.  The control was rewritten and enhanced by 
  1904. Mark McMillan of IBM, Research Triangle Park, USA. 
  1905.  
  1906. Description 
  1907. The MultiColumn ListBox is a very useful PM custom control designed to overcome 
  1908. some of the limitations of the standard PM listbox and container controls.  It 
  1909. is simpler and in many cases faster than a container, but provides multicolumn 
  1910. (tabular) support for display of column-oriented data. 
  1911.  
  1912. The MCLB supports individually sizable columns, optional horizontal scroll bars 
  1913. at the base of each column, seperate font and color support for the titles and 
  1914. column data, owner-drawn lists, and a simple listbox-style programming model. 
  1915.  
  1916. The MCLB can be subclassed with the DMLB (Direct Manipulation ListBox) function 
  1917. also supplied in this toolkit to provide drag/drop reordering capability to the 
  1918. MCLB. 
  1919.  
  1920.  
  1921. ΓòÉΓòÉΓòÉ 10.3. National Language Support ΓòÉΓòÉΓòÉ
  1922.  
  1923. SendYes! bietet zu Zeit englische und deutsche Sprachunterst╨ætzung. 
  1924.  
  1925. Das SendYes! Paket enth╨ölt eine zip Datei mit den sprachenspezifischen 
  1926. Quelldateien f╨ær SendYes! in der englischen Version. Sie sind herzlich dazu 
  1927. eingeladen, diese in Ihre Sprache zu ╨æbersetzen und per e-mail an mich zu 
  1928. schicken. Als Dank wird Ihr Name ab der darauffolgenden Version von SendYes! im 
  1929. Abschnitt SendYes! National Language Supporter erscheinen. Die 
  1930. sprachenspezifischen Dateien sind: 
  1931.  
  1932.  SNDYSENG.RCH        diese Datei enth╨ölt die Texte, die in der SendYes! GUI 
  1933.                      verwendet werden 
  1934.  
  1935.  SNDYSENG.H          diese Datei enth╨ölt die Seiten-Titel, die in der SendYes! 
  1936.                      HLP und INF datei verwendet werden 
  1937.  
  1938.  SNDYSENG.SRC        diese Datei enth╨ölt den Quellcode f╨ær die SendYes! HLP und 
  1939.                      INF Datei 
  1940.  
  1941.  SNDYSENG.TXT        diese Datei enth╨ölt die Meldungen f╨ær das SendYes! 
  1942.                      Installationsprogramm und das Deinstallationsprogramm. 
  1943.  
  1944.  MACROS.IPH and 
  1945.  SENDYES.H           diese Dateien enthalten Makros, die in SNDYSENG.SRC 
  1946.                      verwendet werden. ╨¬bersetzer sollten diese Dateien nicht 
  1947.                      ver╨öndern, da sie nicht sprachenspezifisch sind. Sie 
  1948.                      werden nur mitgeliefert, um die in der IPF Quelldatei 
  1949.                      verwendeten Makros besser verstehen zu k╨ñnnen. 
  1950.  
  1951.  Siehe auch 
  1952.  
  1953.       Das SendYes! Paket 
  1954.  
  1955.  
  1956. ΓòÉΓòÉΓòÉ 10.4. IPFC Preprocessor ΓòÉΓòÉΓòÉ
  1957.  
  1958. F╨ær die Entwicklung der SendYes! HLP und INF Datei wird der IPFC Preprocessor 
  1959. Version 1.0 von Doug Haigh verwendet. 
  1960.  
  1961. Dieser Pr╨öprozessor erm╨ñglicht die Verwendung von 
  1962.  
  1963.      einfachen BookMaster Makros mit Schl╨æsselwort- und Positionsparametern. 
  1964.       Dies erleichtert stark die Verwendung von IPF Links, Autolinks und die 
  1965.       Fensterpositionierung. 
  1966.  
  1967.      C Headerdateien, die ╨æber ein spezielles Schl╨æsselwort (.imd) eingef╨ægt 
  1968.       werden. Die C-defines werden in BookMaster Symbole umgewandelt und k╨ñnnen 
  1969.       dann mit BookMaster-Makros verwendet werden. 
  1970.  
  1971.      einzuf╨ægenden Dateien, die sich nicht im aktuellen Verzeichnis befinden. 
  1972.       Sie werden au╤üderdem in dem Pfad gesucht, der durch die Umgebungsvariable 
  1973.       INCLUDE definiert wird. 
  1974.  
  1975.      Bookmaster 1.0 Vanilla conditional compile Variablen. Diese erlauben das 
  1976.       konditionelle Kompilieren von Teilen der IPF Quelldatei f╨ær die HLP Datei 
  1977.       und anderer Teile f╨ær die INF Datei, w╨öhrend der Rest f╨ær beide Dateien 
  1978.       kompiliert wird. Auf diese Weise ist es m╨ñglich, eine einzige Quelldatei 
  1979.       f╨ær die HLP und f╨ær die INF Datei zu verwenden. 
  1980.  
  1981.  F╨ær weitere Informationen ╨æber sprachenspezifische Dateien und die englischen 
  1982.  Quelldateien f╨ær die HLP und INF Datei siehe auch 
  1983.  
  1984.       National Language Support 
  1985.  
  1986.  
  1987. ΓòÉΓòÉΓòÉ 10.5. syslevel manager ΓòÉΓòÉΓòÉ
  1988.  
  1989. Zur Erstellung der SendYes! Syslevel Datei wurde der Syslevel Manager SLVMGR 
  1990. von Duane S. Wood verwendet. 
  1991.  
  1992. Das Paket, aus dem dieses Programm stammt, enth╨ölt diesen Manager als ein 
  1993. Kommandozeilenutility, eine Textdatei, welche das Syslevel Dateiformat 
  1994. beschreibt und eine einfache PM Anwendung zum einfachen Erstellen und/oder 
  1995. Editieren von Syslevel Dateien. 
  1996.  
  1997. Das Paket wurde zuletzt in 1993 aktualisiert, aber das Syslevel Dateiformat 
  1998. scheint sich seitdem nicht ver╨öndert zu haben. 
  1999.  
  2000.  
  2001. ΓòÉΓòÉΓòÉ 11. Revisionshistorie ΓòÉΓòÉΓòÉ
  2002.  
  2003. Version 2.00 
  2004. Version 1.10 
  2005. Version 1.00 
  2006. Version 0.70 
  2007. Version 0.60 
  2008. file_id.diz 
  2009.  
  2010.  
  2011. ΓòÉΓòÉΓòÉ 11.1. Version 2.00 by C.Langanke (1. M╨örz 1996) ΓòÉΓòÉΓòÉ
  2012.  
  2013.      National Language Support implementiert. Meldungen, Dialoge und 
  2014.       Hilfetexte sind zur Zeit in Deutsch und Englisch verf╨ægbar. 
  2015.  
  2016.      Der Hook wird ab jetzt anstelle von SENDYES.EXE durch eine separate 
  2017.       Programmdatei geladen. Auf diese Weise wird der Hauptspeicherbedarf des 
  2018.       Hooks auf ein absolutes Minimum reduziert, w╨öhrend die Funktionalit╨öt der 
  2019.       Benutzerschnittstelle in SENDYES.EXE erweitert werden kann. Die Hook 
  2020.       Programmdatei kann nur durch SENDYES.EXE kontrolliert werden. 
  2021.  
  2022.       F╨ær technische Details ╨æber den SendYes! Hook siehe auch 
  2023.  
  2024.            Die SendYes! PM Hooks in Technische Details 
  2025.  
  2026.      Die Programmdatei, welche den SendYes! Hook l╨ödt, wird nun vom 
  2027.       Systemabschlu╤üverfahren ausgeschlossen. Auf diese Weise verbleibt es im 
  2028.       Hauptspeicher, bis alle Textsitzungen geschlossen sind. 
  2029.  
  2030.      Wenn SENDYES.EXE ohne Parameter aufgerufen wird, erscheint die neue 
  2031.       SendYes! GUI. Sie besteht aus einem Notizbuch, welches fast wie ein 
  2032.       Einstellungsnotizbuch eines WPS Objektes verwendet werden kann. Es 
  2033.       erlaubt die Definition von Aktionsprofilen, um jeden gew╨ænschten 
  2034.       Meldungsdialog angeben zu k╨ñnnen, der automatisch bearbeitet werden soll. 
  2035.  
  2036.       Die GUI verwendet die Funktionalit╨öt des Direct Manipulation ListBox 
  2037.       (DMLB) Kontrollfeldes  und des MultiColumn ListBox (MCLB) PM 
  2038.       Kontrollfeldes, um eine bedienerfreundliche und dennoch schnelle GUI 
  2039.       anbieten zu k╨ñnnen. 
  2040.  
  2041.       F╨ær witere technische Details siehe auch 
  2042.  
  2043.            erweiterte Listen in Technische Details 
  2044.  
  2045.      SendYes! stellt drei vordefinierte Aktionsprofile f╨ær die Meldungsdialoge 
  2046.       zur Verf╨ægung, die erscheinen, wenn OS/2 oder DOS VIO oder 
  2047.       Vollbildschirm-Textsizungen geschlossen werden oder ein Systemabschlu╤ü 
  2048.       durchgef╨æhrt wird. 
  2049.       Auf diese Weise wird die Funktionalit╨öt von vorherigen SendYes! Versionen 
  2050.       unterst╨ætzt, ohne da╤ü SendYes! daf╨ær zuvor durch den Benutzer 
  2051.       konfiguriert werden mu╤ü. 
  2052.  
  2053.      TESTALL.CMD wurde entfernt. Das Schlie╤üen von Testsitzungen kann nun auf 
  2054.       der Aktions-Seite in der SendYes! GUI getestet werden. Auf diese Weise 
  2055.       kann SendYes! daf╨ær sorgen, da╤ü die entsprechenden vordefinierten 
  2056.       Aktionsprofile wirklich aktiv sind, wenn sie getestet werden sollen. 
  2057.       Siehe auch 
  2058.  
  2059.            Wie kann ich vordefinierte Aktionsprofile testen ? 
  2060.  
  2061.      SendYes! enth╨ölt ein Installationsprogramm, das einen SendYes! Ordner auf 
  2062.       der Arbeitsoberfl╨öche erstellt. Dieser Ordner enth╨ölt wiederum einige 
  2063.       SendYes! WPS Programmobjekte. Mit dem Deinstallationsprogramm k╨ñnnen 
  2064.       diese objekte wieder entfernt werden. 
  2065.  
  2066.       Wenn Sie den Auswahlcursor innerhalb des SendYes! Ordners bewegen und 
  2067.       dann die F1 Taste dr╨æcken, wird das entsprechende Hilfefenster 
  2068.       erscheinen. 
  2069.  
  2070.      Neue Kommandozeilenparameter: 
  2071.  
  2072.         -  /LOAD 
  2073.         -  /UNLOAD 
  2074.         -  /ACTIVATE 
  2075.         -  /DEACTIVATE 
  2076.         -  /STATUS 
  2077.         -  /BATCH 
  2078.         -  /QUIET 
  2079.  
  2080.      Nicht mehr unterst╨ætzte Kommandozeilenparameter: 
  2081.  
  2082.         -  Der Parameter /SWITCHENTRY wird nicht l╨önger unterst╨ætzt. Die Hook 
  2083.            Programmdatei kann ausschlie╤ülich nur ╨æber die SendYes! GUI oder 
  2084.            ╨æber die Parameter /UNLOAD and /LOAD bzw. /ACTIVATE und /DEACTIVATE 
  2085.            f╨ær SENDYES.EXE gesteuert werden. 
  2086.         -  Der Parameter /CLOSE wurde durch den Parameter /UNLOAD ersetzt. Der 
  2087.            neue Parameter schlie╤üt nicht mehr eine aktive Instanz von 
  2088.            SENDYES.EXE, sondern stattdessen eine aktive instanz der nun davon 
  2089.            getrennten Hook Programmdatei. 
  2090.  
  2091.      Online Hilfe Buch hinzugef╨ægt (Sie lesen es garade). Beachten Sie, da╤ü 
  2092.       die Hilfe Datei f╨ær die SendYes! GUI ein Auszug dieser INF Datei ist. 
  2093.  
  2094.      SendYes! enth╨ölt nun eine Syslevel Datei, die die Version von SendYes! 
  2095.       anzeigt, wenn der OS/2 Befehl syslevel ausgef╨æhrt wird. 
  2096.       F╨ær weitere informationen ╨æber die SendYes! Syslevel Datei siehe auch 
  2097.  
  2098.            syslevel manager 
  2099.  
  2100.      Der gr╨ñ╤üte Teil der Quelldateien wird nicht mehr weitergegeben. Der 
  2101.       Umfang aller SendYes! Quelldateien ist so gro╤ü geworden, da╤ü ich ab 
  2102.       sofort nur noch folgende Teile weitergebe: 
  2103.  
  2104.         -  die Quelldateien f╨ær den Hook und die Hook Programmdatei sind in 
  2105.            dieser INF Datei enthalten. Ich glaube, sie d╨ærften am meisten von 
  2106.            Interesse sein. 
  2107.  
  2108.         -  Die Quelldatei(en) f╨ær die HLP und die INF Datei. Sie enthalten 
  2109.            einige Techniken f╨ær die Entwicklung von Online Hilfe-B╨æchern mit 
  2110.            den IPFC Preprocessor BookMaster Makros und Variablen zur 
  2111.            konditionellen Kompilierung. 
  2112.  
  2113.       Siehe auch 
  2114.  
  2115.            Die SendYes! PM Hooks 
  2116.            IPFC Preprocessor 
  2117.            National Language Support 
  2118.  
  2119.       Die anderen Quelldateien enthalten lediglich normale GUI Funktionalit╨öt, 
  2120.       f╨ær die weitere Informationen aus dem Programmers Toolkit entnommen 
  2121.       werden k╨ñnnen (von wo auch ich alle Informationen erhalten habe). 
  2122.       Wenn Sie dar╨æber hinaus Fragen haben, mailen Sie mir diese zu und ich 
  2123.       werden mein Bestes tun, um diese zu beantworten. 
  2124.  
  2125.  
  2126. ΓòÉΓòÉΓòÉ 11.2. Version 1.10 by C.Langanke (13. Oktober 1995) ΓòÉΓòÉΓòÉ
  2127.  
  2128.      SendYes! wurde mit IBM C Set++ V2 kompiliert. 
  2129.       Das emx runtime wird nicht l╨önger ben╨ñtigt. 
  2130.  
  2131.      Neue Kommandozeilenparameter: 
  2132.  
  2133.         -  Parameter /? oder /Help zeigt eine kurze Hilfe an. 
  2134.         -  Parameter /Close schlie╤üt eine aktive Instanz von SendYes!. Wenn 
  2135.            SendYes! micht aktiv ist, wird ein Fehlermeldungsdialog angezeigt. 
  2136.         -  Parameter /Batch unterdr╨æckt Meldungsdialoge und generiert 
  2137.            stattdessen Informations- bzw. Fehlert╨ñne. 
  2138.         -  Parameter /Switchentry erstellt analog zu /S in SendYes! V1.00 einen 
  2139.            Eintrag in der Fensterliste 
  2140.         -  die Parameternamen k╨ñnnen wahlweise gro╤ü und klein geschrieben 
  2141.            werden. 
  2142.         -  Anstelle eines Schr╨ögstriches k╨ñnnen Sie auch das Minuszeichen 
  2143.            verwenden - das hei╤üt, da╤ü z.B. die Parameter /load und -load 
  2144.            gleichwertig sind. 
  2145.         -  es reicht aus, nur den ersten Buchstaben des Schalternamens 
  2146.            anzugeben - das hei╤üt, da╤ü .z.B. die Parameter /b und /batch (oder 
  2147.            -b und -batch) ebenfalls gleichwertig sind. 
  2148.  
  2149.      Eine Fehler-Meldungsdialog wird angezeigt, wenn 
  2150.  
  2151.         -  SendYes! bereits aktiv ist 
  2152.         -  SendYes! nicht richtig initialisiert werden kann 
  2153.         -  SendYes! nicht aktiv ist, wenn es mit dem Parameter /C geschlossen 
  2154.            werden soll 
  2155.         -  ein ung╨æltiger Parameter angegeben wurde 
  2156.  
  2157.      Ein Informations-Meldungsdialog wird angezeigt, wenn 
  2158.  
  2159.         -  SendYes! erfolgreich mit dem Parameter /C geschlossen werden konnte. 
  2160.  
  2161.      Nur noch Meldungsdialoge, deren Meldungstexte mit "This message may 
  2162.       contain an active program." werden geschlossen. Dies h╨ölt SendYes! davon 
  2163.       ab, jeden beliebigen Meldungsdialog mit MBID_YES zu schlie╤üen, wie dies 
  2164.       bis jetzt der Fall war. SendYes! liest den richtigen Meldungstext aus PM 
  2165.       Resourcen-DLLs, daher sollte es sprachenneutral sein. Ungl╨æcklicherweise 
  2166.       ist der Meldungstext f╨ær das Schlie╤üen von OS/2 
  2167.       Vollbildschirm-Textsitzungen im zweiten Satz etwas anders, daher wird der 
  2168.       Meldungstext nur bis zum ersten Punkt verglichen. 
  2169.       Ich hoffe, da╤ü dies unter allen zuk╨ænftigen OS/2-Versionen kompatibel 
  2170.       sein wird und wirklich zu allen unterschiedlichen OS/2-Versionen 
  2171.       verschiedener Sprachen kompatibel ist. Um es auszutesten: 
  2172.       F╨æhren sie TESTALL.CMD aus, um alle vier Arten von Textsitzungen  zu 
  2173.       erstellen und Schlie╤üen Sie diese, w╨öhrend SendYes! aktiv ist: 
  2174.       wenn sie ohne Best╨ötigungsdialoge schlie╤üen, funktioniert alles gut. 
  2175.       Wenn nicht, teilen Sie es mir bitte per e-mail mit... 
  2176.  
  2177.  
  2178. ΓòÉΓòÉΓòÉ 11.3. Version 1.00 by Wes Santee (26. August 1995) ΓòÉΓòÉΓòÉ
  2179.  
  2180.      Now using emx0.9a, fix 6 (emxfix06.zip).  Be sure to get the updated 
  2181.       emxrt.zip runtime DLL's (see README.TXT) 
  2182.  
  2183.      '/S' parameter now tells SendYes! to put an entry in the switch list 
  2184.  
  2185.      SendYes! icon now bound to executable file 
  2186.  
  2187.  
  2188. ΓòÉΓòÉΓòÉ 11.4. Version 0.7 by Wes Santee (17. Juni 1995) ΓòÉΓòÉΓòÉ
  2189.  
  2190.      Now using emx0.9a, fix 5 (emxfix05.zip).  Be sure to get the updated 
  2191.       emxrt.zip runtime DLL's. 
  2192.  
  2193.      Wouldn't close full-screen sessions.  Fixed. 
  2194.  
  2195.  
  2196. ΓòÉΓòÉΓòÉ 11.5. Version 0.6 by Wes Santee (29. Mai 1995) ΓòÉΓòÉΓòÉ
  2197.  
  2198.      Initial release 
  2199.  
  2200.  
  2201. ΓòÉΓòÉΓòÉ 11.6. file_id.diz ΓòÉΓòÉΓòÉ
  2202.  
  2203. (v2.00) SendYes! - PM/WPS background utility
  2204. SendYes! processes standard message boxes
  2205. that you define SendYes! action profiles for
  2206. automatically and performs one of three
  2207. possible actions on one of the pushbuttons.
  2208. No more confirmation boxes for closing a
  2209. DOS or OS/2 windowed or fullscreen text
  2210. session if you don't like them. New GUI !
  2211. German and english NLS support ! Freeware !
  2212. Author/Maintainer: cla@oerag.de.
  2213.  
  2214.  
  2215. ΓòÉΓòÉΓòÉ 12. Danksagungen ΓòÉΓòÉΓòÉ
  2216.  
  2217. Idee f╨ær SendYes! 
  2218. erweiterte Listen 
  2219. IPFC Preprocessor 
  2220. syslevel manager 
  2221. SendYes! National Language Supporter 
  2222.  
  2223.  
  2224. ΓòÉΓòÉΓòÉ 12.1. Idee f╨ær SendYes! ΓòÉΓòÉΓòÉ
  2225.  
  2226. Aller Dank f╨ær die Idee und das Erstellen der ersten Version von SendYes! 
  2227. geb╨æhrt Wes Santee. 
  2228.  
  2229.  
  2230. ΓòÉΓòÉΓòÉ 12.2. erweiterte Listen ΓòÉΓòÉΓòÉ
  2231.  
  2232. Die SendYes! GUI verwendet neue Listen-Kontrollfelder, die die 
  2233. Leistungsf╨öhigkeit von Listen sehr erweitern. 
  2234.  
  2235. Diese Funktionalit╨öt erm╨ñglichte mir eine einfache Programmierung und allen 
  2236. Benutzern eine einfache Handhabung. Aller Dank daf╨ær geb╨æhrt 
  2237.  
  2238.      Alan Warren von IBM, Yorktown Research und 
  2239.       Mark McMillan von IBM, Research Triangle Park, USA 
  2240.       f╨ær das Direct Manipulation ListBox (DMLB) Kontrollfeld und 
  2241.      Charles Cooper von IBM, United Kingdom Warwick Development group und 
  2242.       Mark McMillan von IBM, Research Triangle Park, USA. 
  2243.       f╨ær das MultiColumn ListBox (MCLB) Kontrollfeld. 
  2244.  
  2245.  F╨ær technische Einzelheiten siehe auch 
  2246.  
  2247.       erweiterte Listen in Technische Details 
  2248.  
  2249.  
  2250. ΓòÉΓòÉΓòÉ 12.3. IPFC Preprocessor ΓòÉΓòÉΓòÉ
  2251.  
  2252. F╨ær das Vor╨æbersetzen der Quelldatei f╨ær die HLP und INF Dateien wurde der 
  2253. IPFC Preprocessor Version 1.0 von Doug Haigh verwendet. 
  2254.  
  2255. F╨ær technische Einzelheiten siehe auch 
  2256.  
  2257.       IPFC Preprocessor in Technische Details 
  2258.  
  2259.  
  2260. ΓòÉΓòÉΓòÉ 12.4. syslevel manager ΓòÉΓòÉΓòÉ
  2261.  
  2262. F╨ær die Erstellung der Syslevel Datei von SendYes! wurde der syslevel Manager 
  2263. SLVMGR verwendet.  Dieses Programm stammt von Duane S. Wood vom OS/2 
  2264. Development Boca Raton, Florida. 
  2265.  
  2266. F╨ær technische Einzelheiten siehe auch 
  2267.  
  2268.       syslevel manager in Technische Details 
  2269.  
  2270.  
  2271. ΓòÉΓòÉΓòÉ 12.5. SendYes! National Language Supporter ΓòÉΓòÉΓòÉ
  2272.  
  2273. Tut mir leid, es haben sich noch keine ╨¬bersetzer gemeldet ... 
  2274.  
  2275. Wenn Ihre Sprache noch nicht von SendYes! unterst╨ætzt wird und Sie mir helfen 
  2276. wollen, Ihre Sprache zu unterst╨ætzen, lesen Sie bitte auch National Language 
  2277. Support. 
  2278.  
  2279.  
  2280. ΓòÉΓòÉΓòÉ <hidden> rechte Maustaste ΓòÉΓòÉΓòÉ
  2281.  
  2282. Der Begriff der rechten Mausktaste, wie er in dieser Online Hilfe-Datei 
  2283. verwendet wird, trifft nur dann auf Sie zu, wenn sie nicht die Einstellungen 
  2284. des Maus-Objektes im Ordner Systemkonfiguration ver╨öndert haben. 
  2285.  
  2286. Die folgenden Einstellungen haben einen Einfu╤ü darauf, wie SendYes! bei der 
  2287. Verwendung der rechten Maustaste arbeitet. Wenn Sie diese ver╨öndern, m╨æssen Sie 
  2288. die Maus so verwenden, wie Sie sie konfiguriert haben. 
  2289. Beachten Sie, da╤ü die rechte Maustaste im allgemeinen auch als Maustaste 2 
  2290. bezeichnet wird. 
  2291.  
  2292.  Konfiguration 
  2293.  
  2294.              Linksh╨önder (vertauscht Maustaste 1 und 2) 
  2295.  
  2296.  Tasten 
  2297.  
  2298.              Auswahl von Maustaste 1 f╨ær Objekte ziehen 
  2299.  
  2300.               Anmerkung:  Wenn Sie Aktionsprofile mit der Maustaste 1 ziehen, 
  2301.               ist der Mauszeiger f╨ær Ziehen nicht sichtbar. Das Ziehen ist 
  2302.               dennoch m╨ñglich. 
  2303.  
  2304.              Auswahl einer anderen Einstellung f╨ær Kontextmen╨æs anzeigen als 1 
  2305.               x Klicken der Taste 2 ohne Steuerungstasten 
  2306.