Domino 9 und frühere Versionen > ND8: Entwicklung

C-API: Aktualisierungsintervall FT-Index abfragen/setzen

<< < (2/2)

mholup:
Doch man kann die Funktion benutzen du must sie nur extra laden

So hier ist der Link aus Api Beschreibung:

http://www-12.lotus.com/ldd/doc/tools/c/6.5/api65ug.nsf/85255d56004d2bfd85255b1800631684/80194706d58ab82e85255f58005cae65?OpenDocument

/* Load the DLL */
hNotesDLL = OSLoadLibrary("nnotes.dll", (DWORD)0, &hmod, &ProcAddress);

Ein kleines Beispiel(Extract) um die Funktion zu laden bei Problemen und Fragen dazu melde dich einfach.

//Beginn
typedef STATUS (_stdcall *NSFDbGetExtendedInfoType)(DHANDLE,long*); Wichtig

int main(int argc, char *argv[])
{
//TEST
      int rc;
      char FullPath[1024] = "";
      char Server[255] = "";
      char FilePath[1024] = "";
      char szErrorString[255] = " ";
      WHANDLE hmod;
      DHANDLE hDB;
      long hB1=0;
      DWORD hB;
      blockid p1;
      DWORD ProcAddress;
      char *p,*pValue;
      BOOL freeResult, runTimeLinkSuccess = FALSE;
      HINSTANCE dllHandle = NULL;             
      NSFDbGetExtendedInfoType NSFDbGetExtendedInfoPtr = NULL;
      //local
      strcpy(FilePath,"Check.nsf");
      if (strlen(Server))
      {
         rc = OSPathNetConstruct (NULL, Server, FilePath, FullPath);
      }
      else strcpy(FullPath,FilePath);

      NSFDbOpen (FullPath, &hDB);
      if (hDB == 0) return(0);
       //Load the dll and keep the handle to it
      //dllHandle = OSLoadLibrary("nnotes.dll",(DWORD)0, &hmod, &ProcAddress);
      dllHandle = LoadLibrary(L"nnotes.dll");
      if (NULL != dllHandle)
      {
         NSFDbGetExtendedInfoPtr = (NSFDbGetExtendedInfoType)GetProcAddress(dllHandle,"NSFDbGetExtendedInfo");
         // If the function address is valid, call the function.
           if (runTimeLinkSuccess = (NULL != NSFDbGetExtendedInfoPtr))
           {
            //hB = &p1;
            rc = NSFDbGetExtendedInfoPtr(hDB, &hB1);
            if (rc != NOERROR)
            {
               OSLoadString(0,ERR(rc),szErrorString,LINEOTEXT-1);
                MessageBox (GetFocus(), LPCTSTR(szErrorString),L"Notes Error", MB_OK);
            }
            p = (char far *)OSLockObject((DHANDLE)hB1);
            int i = 1;
            while (!p==NULL)
            {
               pValue = p;
               p++;
               pValue++;
               i++;
            }
            OSUnlockObject((DHANDLE)hB1);
            OSMemFree((DHANDLE)hB1);
           }

           //Free the library:
           freeResult = FreeLibrary(dllHandle); 
           return 0;
      }
      else return 0;
      //Server = Lokal

Gruß Max

mholup:
Hallo,

so hatte mal ein paar Minuten Zeit und habe ein kleines Progrämmchen als Beispiel für NSFDbGetExtendedInfo geschrieben.

Source hängt mit an.

Grüsse Max

inu:
Fantastisch! Jetztt noch auf das 9. Byte zugreifen und schon habe ich den Wer, den ich brauche. Das ganze konnte ich lediglich im Debugmodus nachstellen, da sich die innere WHILE-Schleife tot läuft. Irgendwie wird kein Ende erreicht / erkannt. Hast Du ne Idee zur Behebung?

Hast Du den ne Vorstellung, welche Ergebnisse die Funktion NSFDbGetExtendedInfo so alles zurück liefert und an welcher Stelle die sich befinden?

Viele Grüße

mholup:
Hallo,

ich nehme an du sprichst von dieser While-Schleife.
Die Variable "i" sollte eigentlich für den Abruch sorgen und zwar beim 9ten Byte.
Der zurück gegebene Bereich ist bei mir sehr groß über pagegrenze hinaus und "i" ist als integer zu klein und muss long sein.

Also was zurückgegeben wird dürfte das sein was du mit rechter Maus ICON Application/Properties auswählst, sowie Access Control List usw.

Um rauszubekommen wo welcher Wert steht dürfte sehr mühselig sein aber nicht unmöglich.


p = (char far *)OSLockObject((DHANDLE)hB1);
            int i = 1;
            while (!p==NULL)
            {
               //pValue = p;
               if (i==3) p1.index = p;
               if (i==7) p1.option = p;
               if (i==9) p1.frequence = p;
               if (i>9) break;
               p++;
               //pValue++;
               i++;
            }

Nachtrag:
den Bereich den man zurück bekommt scheint die gesamte Datebank zu sein Daten und Struktur.

Gruß Max

inu:
Vielen Dank Max, Du hast mir sehr geholfen. Es funktioniert alles wunderbar.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln