Label mit Lotus Notes und Microsoft Word drucken

Sie können den Code ohne Anpassung in jeder beliebigen Adressdatenbank verwenden.
Dazu kopieren sie aus der Demo-DB die folgenden Designelemente

Maske ($lblConfig)
Ansichten ($lblConfig) und Config
ScriptBibliothek libLabel

Nachdem sie ihre Datenbank vorbereitet haben, können wir den Datenexport konfigurieren. Wechseln sie in die Ansicht Config und erstellen sie eine neue Konfiguration.

Sie können mehrere unterschiedliche Konfigurationen erstellen; wenn sie die Adressen drucken, wird ihnen eine Liste der mglichen Ausgabeformate angezeigt.

Generell ist der Ausdruck auf 5 Zeilen begrenzt. Welche Werte ausgedruckt werden, legen sie durch die Werte in den Feldern Row 1 – Row 5 fest. Tragen sie hier die Namen der Felder ein, die ausgedruckt werden sollen. Es können pro Zeile mehrere Felder ausgedruckt werden; die Feldnamen werden dann, wie im Beispiel duch ein Komma getrennt.

Das Feld Config ist ein Beschreibungsfeld; es wird ihnen in der Auswahl ebenso angezeigt wie des Feld Description.
In den Feldern Label und Rows legen sie die Werte des Formulas fest. Die korrekten Werte des zu verwendenden Labels erhalten sie, indem sie in Microsoft Word über “Extras – Umschläge und Etiketten” klicken.

Wechseln sie in der Reiter Etiketten und klicken auf Optionen

Jetzt können sie die gewünschte Vorlage auswählen

eine Besonderheit stellt das Feld Skip dar. Einige Formulare enthalten Zwischenr?ume. Dies müssen sie dem Programm durch das setzen des Feldes Skip auf den Wert Yes mitteilen, da sonst der Ausdruck in diese Zwischenräume erfolgt.

Darüber hinaus müssen sie in das Feld Rows die Gesamtzahl der Zellen einer Reihe eintragen, also Anzahl der Label plus Anzahl der Zwischenräume
Nachdem sie alle notwendigen Konfigurationsdokumente angelegt haben, können sie den Labeldruck starten; hierzu wählen sie die gewünschten Adressen in einer Ansicht aus und klicken auf “Print Label” Die gewählten Adressen werden dann über Microsoft Word ausgedruckt.

DOWNLOAD


Deutsche Sprache

Als ich noch Kind war benutzte man das Wort â??in’ nur vor Ortsbezeichnungen. Heute ist es â??in’, â??in’ zu sein. â??in’-Leute haben ihre Sprache mit amerikanischen Begriffen durchsetzt, die durch phonetische Hässlichkeit besonders auffallen.
Damit schaffen sie für sich selbst eine Aura des â??successfull’. Will sagen erfolgreich und überlegen. Überlegen meint, ‘über anderen zu liegen’. Viele Menschen fühlen sich oft unterlegen,sind es aber gar nicht sind.

Sie versuchen unbewusst durch perfekt korrekte Aussprache amerikanischer Bezeichnungen sich das Gefühl zu verschaffen, ‘über anderen zu liegen’, oder zu den Besseren dazu zugehören. Wenn die jeweils anderen dabei diese Ausdrucksweise dann gar nicht verstehen, umso besser. Steigt dann doch das Gefühl scheinbarer Ã?berlegenheit. Hauptsache sie bewegen sich im â??mainstream’, im Hauptstrom, und die Wirkung ist â??cool’. Anscheinend frieren sie in dieser Kühle nicht. Dabei reden sie oft viel und sagen nur wenig. ‘trendy’ zu sein ist alles. Es drängt sie, Zungenbrecher wie â??Massachusetts’ und ähnliches mit perfekter Andacht nur ja mit stark amerikanischer Slan-Färbung auch im Unterton vollendet auszusprechen.

Die Industrie geht darauf ein. Die Fernsehwerbung bei ntv verwendet deutsche Worte nur noch ausnahmsweise. Fast alle Werbebotschaften dort sind amerikanisch. Die Telekom kannte eine Zeit lang keine Ortsgespräche mehr; nur city-calls’. Vermutlich hat man das dann mal mit dem Computer-Schreibprogramm â??Word’ geschrieben und dabei diesen Unsinn bemerkt. Denn dieses aus den USA kommende Schreibprogramm erzeugt mit seiner automatischen Rechtschreibüberprüfung bei all diesen Vokabeln automatisch die Anzeige: ‘Keine Rechtschreibüberprüfung möglich’. Vermutlich haben Amerikaner uns da unterstellt, daÃ? wir nur in unserer eigenen Sprache schreiben und dieses ‘denglisch’ erst gar nicht in die Automatik mit einbezogen. Auf meiner Telefonrechnung ist jetzt von City- und Regional-Verbindungen die Rede. Welch ein Fortschritt ist doch dieser Rückschritt.

Die Nutzung des Frankfurter Flughafen ist ohne Englisch-Kenntnisse oder Wörterbuch nicht mehr möglich; in Düsseldorf geht das kaum noch ohne. Der Flughafen ‘Charles de Gaulle’ in Paris ist genauso international. Aber alle Schilder dort sind zweisprachig, französisch und englisch. Nicht englisch und französisch, oder nur englisch. Ã?ber Ausgängen auf spanischen Flughäfen steht nur ‘Salida’, nicht Exit.

Es schert uns nicht, wenn Amerikaner von Branswik, Kolloune, Hämbörg oder Mjunik reden, wenn sie Braunschweig, Köln, Hamburg oder München meinen.

Ein Offizier der englischen Armee erzählte mir vor Jahren, daß er in Deutschland schon seit langem bei ‘Dtschallitsch’ stationiert sei. Als ich das nicht verstand, zeigte er mir auf einer Autokarte: Jülich.

Die Franzosen fahren über Aix-La-Chapelle nach Collogne. Nicht über Aachen nach Köln. Die Italiener sprechen von Frankoforte und Amburgo, wenn sie Frankfurt und Hamburg meinen. Kommt jedoch der aufrechte Deutsche mit seiner Perfektion und 100%keit nach Italien, passt er sich sofort an. Dort spricht er dann auch von Mailand, Venedig, Genua und Neapel, wenn er Milano, Venezia, Genova und Napoli meint. Korrektes Italienisch scheint nicht das gleiche Ansehen bei anderen Zeitgenossen zu erzeugen wie perfektes Amerikanisch. Natürlich denkt man dabei nicht an das Ansehen, sondern an das image.

Es war in Burg-St.Moritz, einer Kleinstadt in den französischen Alpen. Die Leute dort sagen Bourg-St.Maurice. Ein Mann auf der Straße, nach dem Weg befragt, antwortete mir: “Hinter makdonnall links abbiegen”. Die französischen Bezeichnungen für ‘hinter’ und ‘links abbiegen’ verstand ich. Mit ‘makdonnall’ konnte ich jedoch gar nichts anfangen. Ich fuhr die StraÃ?e einfach weiter runter und sah eine Mc-Donalds-Filiale. Da war es dann klar. Dabei bemerkte ich zu meinem Entsetzen, daÃ? auch ich gar nicht anders mehr sagen kann als: Mäk Donnelds.

Früher machte man die Standesunterschiede an der Kleidung fest. Die Besseren waren leicht durch andere Kleidung von den Geringeren zu unterscheiden. Die Schirmmütze der Armen von damals ist als baseball-cap zurückgekehrt. Nicht als Zeichen von Armut, sondern als folgsame Anpassung an den Zeitgeist. Einige Jugendliche scheinen diese Caps nachts im Bett noch auf dem Kopf zu behalten. Weil sie wohl im Kopf so schönes Selbstwert-Gefühl verschaffen. Nachdem nicht einmal der Stern aus Stuttgart-Untertürkheim beim Prestige das mehr ist, was er einmal war, brauchten die Menschen einen Ersatz dafür. Vor allem einen, der nicht so teuer ist wie ein Mercedes. Nun übernehmen sie jede alberne Bezeichnung aus Amerika mit Eifer und Wonne. Die in den USA durchaus gängige Bezeichnung ‘name drop in’ jedoch nicht. Das ist auch verständlich. Würde es doch zuviel offen legen. ‘name drop in’ bedeutet: Durch Namen hinein kommen. (Im Kreis der Besseren dazu gehören). Es gibt wohl viele Menschen für die das überaus wichtig zu sein scheint.

Schon 200 Jahre vor Christus meinte Ben Akiba, damals ein weiser Mann im Orient,: “Es ist alles schon einmal da gewesen”. Recht hatte er. Denn vor 100 Jahren hatten wir in Deutschland das gleiche ‘name drop in’ in französischer Ausführung schon einmal. Was heute als cool gilt, war damals ‘en vogue’ und super trendy der ‘dernier crie’. Der Bürgersteig war das Trottoir, das Sofa das Chaiselongue, der kleine Schrank das Vertikot. Von damals erhalten geblieben ist uns nur die Geldbörse, das Portemonnaie. Daher glaube ich, daÃ? sich die gleiche Unsitte in amerikanischer Ausführung eines Tages, bis auf einige Reste, von selbst ‘canceln’ wird.


PING in LotusScript

Die Klasse PING enhält die Funktion Ping(), der die zu überpr?fende Adresse als Zeichenkette in der Form “127.0.0.1” übergeben wird. Ist der Ping erfolgreich wird true zurückgegeben,ansonsten false.

Die Konstante TIMEOUT gibt an, wie viele Millisekunden ( DEFAULT = 500 ms ) die Funktion versuchen soll, den Zielrechner zu erreichen. Zum Testen der Funktion erstellen sie einen Button und kopieren sie den folgenden Code in den Click Event der Schaltfläche

Read More


nKill – Restart Notes after a crash

Wer kennt das nicht. Der Notes Client ist mal wieder abgestürzt und läßt sich nun beim besten Willen nicht mehr zu einem Neustart bewegen. Schuld daran sind Prozesse, die nach einem Absturz im Speicher verbleiben und den Neustart verhindern.
Zwar gibt es bereits Tools auf dem Markt, die einem aus diesem Dilemma heraushelfen können. Aber in den meisten Fällen müssen diese Tools erst installiert und nach einem Crash erst aufgerufen werden.
Daher habe ich dieses Tool geschrieben. Für die Interessierten habe ich den Quelltext beigefügt. Das Tool lauft unter Win9.x/WinME/Win NT 3.x/Win NT 4.0/ Win 2000 und XP

#include "windows.h"
#include "tlhelp32.h"
#include "iostream."
#include "string.h"
#ifdef BORLANDC
#include "string.h"
#include "ctype.h"
#endif
int KILL_PROC_BY_NAME(const char *);
int main(int argc,char *argv[])
{
int iRes;
char string[] = "ldapsearch.exe, nadminp.exe, naldaemn.exe, namgr.exe, 
napdaemn.exe, nchronos.exe, ncollect.exe,nconvert.exe, ndiiop.exe, 
ndyncfg.exe, nhldaemn.exe, nhttp.exe, nhttpcgi.exe, nimapcl.exe, 
nlnotes.exe,nlogasio.exe, nminder.exe, nnntpcl.exe, nnotesmm.exe, 
stringn.exe, npop3.exe, nupdall.exe, nupdate.exe, nweb.exe,
nwrdaemn.exe, nxpcdmn.exe, rtfcnvt.exe, CLHAP32.EXE, ntaskldr.exe";
char separator[] = ",";
char *token;
token = strtok(string, separator);
while( token != NULL )
{
iRes=KILL_PROC_BY_NAME(token);
cout < < token << " Result code=" << iRes << endl;
token = strtok(NULL, separator);
}
    return 0;
}
int KILL_PROC_BY_NAME(const char *szToTerminate)
//   Return codes are as follows:
//   0   = Process was successfully terminated
//   603 = Process was not currently running
//   604 = No permission to terminate process
//   605 = Unable to load PSAPI.DLL
//   602 = Unable to terminate process for some other reason
//   606 = Unable to identify system type
//   607 = Unsupported OS
//   632 = Invalid process name
//   700 = Unable to get procedure address from PSAPI.DLL
//   701 = Unable to get process list, EnumProcesses failed
//   702 = Unable to load KERNEL32.DLL
//   703 = Unable to get procedure address from KERNEL32.DLL
//   704 = CreateToolhelp32Snapshot failed
{
BOOL bResult,bResultm;
DWORD aiPID[1000],iCb=1000,iNumProc,iV2000=0;
DWORD iCbneeded,i,iFound=0;
char szName[MAX_PATH],szToTermUpper[MAX_PATH];
HANDLE hProc,hSnapShot,hSnapShotm;
OSVERSIONINFO osvi;
HINSTANCE hInstLib;
int iLen,iLenP,indx;
HMODULE hMod;
PROCESSENTRY32 procentry;
MODULEENTRY32 modentry;
iLenP=strlen(szToTerminate);
if(iLenP<1 || iLenP>MAX_PATH) return 632;
for(indx=0;indx    szToTermUpper[indx]=toupper(szToTerminate[indx]);
szToTermUpper[iLenP]=0;
// PSAPI Function Pointers.
BOOL (WINAPI *lpfEnumProcesses)( DWORD *, DWORD cb, DWORD * );
BOOL (WINAPI *lpfEnumProcessModules)( HANDLE, HMODULE *,
DWORD, LPDWORD );
DWORD (WINAPI *lpfGetModuleBaseName)( HANDLE, HMODULE,
LPTSTR, DWORD );
// ToolHelp Function Pointers.
HANDLE (WINAPI *lpfCreateToolhelp32Snapshot)(DWORD,DWORD) ;
BOOL (WINAPI *lpfProcess32First)(HANDLE,LPPROCESSENTRY32) ;
BOOL (WINAPI *lpfProcess32Next)(HANDLE,LPPROCESSENTRY32) ;
BOOL (WINAPI *lpfModule32First)(HANDLE,LPMODULEENTRY32) ;
BOOL (WINAPI *lpfModule32Next)(HANDLE,LPMODULEENTRY32) ;
// First check what version of Windows we're in
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
bResult=GetVersionEx(&osvi);
if(!bResult)     // Unable to identify system version
return 606;
if((osvi.dwPlatformId != VER_PLATFORM_WIN32_NT) &&
(osvi.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS))
return 607;
if(osvi.dwPlatformId==VER_PLATFORM_WIN32_NT)
{
hInstLib = LoadLibraryA("PSAPI.DLL");
if(hInstLib == NULL)
return 605;
// Get procedure addresses.
lpfEnumProcesses = (BOOL(WINAPI *)(DWORD *,DWORD,DWORD*))
GetProcAddress( hInstLib, "EnumProcesses" ) ;
lpfEnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *,
DWORD, LPDWORD)) GetProcAddress( hInstLib,
"EnumProcessModules" ) ;
lpfGetModuleBaseName =(DWORD (WINAPI *)(HANDLE, HMODULE,
LPTSTR, DWORD )) GetProcAddress( hInstLib,
"GetModuleBaseNameA" ) ;
if(lpfEnumProcesses == NULL ||
lpfEnumProcessModules == NULL ||
lpfGetModuleBaseName == NULL)
{
FreeLibrary(hInstLib);
return 700;
}
bResult=lpfEnumProcesses(aiPID,iCb,&iCbneeded);
if(!bResult)
{
// Unable to get process list, EnumProcesses failed
FreeLibrary(hInstLib);
return 701;
}

// How many processes are there?
iNumProc=iCbneeded/sizeof(DWORD);

// Get and match the name of each process
for(i=0;i    {
// Get the (module) name for this process

strcpy(szName,"Unknown");
// First, get a handle to the process
hProc=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,
aiPID[i]);
// Now, get the process name
if(hProc)
{
if(lpfEnumProcessModules(hProc,&hMod,sizeof(hMod),&iCbneeded) )
{
iLen=lpfGetModuleBaseName(hProc,hMod,szName,MAX_PATH);
}
}
CloseHandle(hProc);
// We will match regardless of lower or upper case
#ifdef BORLANDC
if(strcmp(strupr(szName),szToTermUpper)==0)
#else
if(strcmp(_strupr(szName),szToTermUpper)==0)
#endif
{
// Process found, now terminate it
iFound=1;
// First open for termination
hProc=OpenProcess(PROCESS_TERMINATE,FALSE,aiPID[i]);
if(hProc)
{
if(TerminateProcess(hProc,0))
{
// process terminated
CloseHandle(hProc);
FreeLibrary(hInstLib);
return 0;
}
else
{
// Unable to terminate process
CloseHandle(hProc);
FreeLibrary(hInstLib);
return 602;
}
}
else
{
// Unable to open process for termination
FreeLibrary(hInstLib);
return 604;
}
}
}
}

if(osvi.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
// Win/95 or 98 or ME

hInstLib = LoadLibraryA("Kernel32.DLL");
if( hInstLib == NULL )
return 702;

lpfCreateToolhelp32Snapshot=
(HANDLE(WINAPI *)(DWORD,DWORD))
GetProcAddress( hInstLib,
"CreateToolhelp32Snapshot" ) ;
lpfProcess32First=
(BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))
GetProcAddress( hInstLib, "Process32First" ) ;
lpfProcess32Next=
(BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))
GetProcAddress( hInstLib, "Process32Next" ) ;
lpfModule32First=
(BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32))
GetProcAddress( hInstLib, "Module32First" ) ;
lpfModule32Next=
(BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32))
GetProcAddress( hInstLib, "Module32Next" ) ;
if( lpfProcess32Next == NULL ||
lpfProcess32First == NULL ||
lpfModule32Next == NULL ||
lpfModule32First == NULL ||
lpfCreateToolhelp32Snapshot == NULL )
{
FreeLibrary(hInstLib);
return 703;
}

hSnapShot = lpfCreateToolhelp32Snapshot(
TH32CS_SNAPPROCESS, 0 ) ;
if( hSnapShot == INVALID_HANDLE_VALUE )
{
FreeLibrary(hInstLib);
return 704;
}

// Get the first process' information.
procentry.dwSize = sizeof(PROCESSENTRY32);
bResult=lpfProcess32First(hSnapShot,&procentry);

// While there are processes, keep looping and checking.
while(bResult)
{
// Get a handle to a Toolhelp snapshot of this process.
hSnapShotm = lpfCreateToolhelp32Snapshot(
TH32CS_SNAPMODULE, procentry.th32ProcessID) ;
if( hSnapShotm == INVALID_HANDLE_VALUE )
{
CloseHandle(hSnapShot);
FreeLibrary(hInstLib);
return 704;
}
// Get the module list for this process
modentry.dwSize=sizeof(MODULEENTRY32);
bResultm=lpfModule32First(hSnapShotm,&modentry);

// While there are modules, keep looping and checking
while(bResultm)
{
if(strcmp(modentry.szModule,szToTermUpper)==0)
{
// Process found, now terminate it
iFound=1;
// First open for termination
hProc=OpenProcess(PROCESS_TERMINATE,FALSE,procentry.th32ProcessID);
if(hProc)
{
if(TerminateProcess(hProc,0))
{
// process terminated
CloseHandle(hSnapShotm);
CloseHandle(hSnapShot);
CloseHandle(hProc);
FreeLibrary(hInstLib);
return 0;
}
else
{
// Unable to terminate process
CloseHandle(hSnapShotm);
CloseHandle(hSnapShot);
CloseHandle(hProc);
FreeLibrary(hInstLib);
return 602;
}
}
else
{
// Unable to open process for termination
CloseHandle(hSnapShotm);
CloseHandle(hSnapShot);
FreeLibrary(hInstLib);
return 604;
}
}
else
{  // Look for next modules for this process
modentry.dwSize=sizeof(MODULEENTRY32);
bResultm=lpfModule32Next(hSnapShotm,&modentry);
}
}

//Keep looking
CloseHandle(hSnapShotm);
procentry.dwSize = sizeof(PROCESSENTRY32);
bResult = lpfProcess32Next(hSnapShot,&procentry);
}
CloseHandle(hSnapShot);
}
if(iFound==0)
{
FreeLibrary(hInstLib);
return 603;
}
FreeLibrary(hInstLib);
return 0;
}

DOWNLOAD


Lotus Script Klasse “Systeminformationen”

Lotus Script Klasse mit folgenden Funktionen:

    kleine/ grosse Schriftarten installiert
    Ist eine Soundkarte installiert
    Anzahl Farben
    Tastatur Typ
    Anzahl Funktionstasten
    Hostname
    IP Adresse des Host
    aktuelle Bildschirmaufloesung
    CPU Taktfrequenz
    Anzahl Processoren
    Prozessor Typ
    Prozessor Build Level
    Prozessor Revision
    Betriebssystem
    Windows Systemverzeichnis
    Notes Verzeichnis
    Welche COM Ports sind verfuegbar
    Dateisystem, Label und
    Seriennummer der Festplatte
    Neustart von Windows ( auch Windows 2000 !!
    LockWorkstation
    Internet – Verbindungsstatus

DOWNLOAD