I have some code that will iterate through some MAPI folders using their Folder and Store Ids. This procedure is in a separate thread from my Main App.

 

The line IDispatch(MyFolder) := NameSpace.GetFolderFromID works fine, and returns a pointer to the folder. But if I try to access the Items of the folder I am getting an access violation. Can anyone shed some light on why this is happening?

 

This same code works fine if I run it within an Exchange Extension addin under the main thread. This is actually running in a separate exe.

 

var

  hr: HRESULT;

  MyFolder: MAPIFolder;

  tTemp: IMAPITable;

  iSess: IMAPISession;

  OLApplication: _ApplicationDisp;

 

begin

 

      MAPIInitialize(nil);

      MAPILogonEx(0, '', '', MAPI_BEST_ACCESS, iSess);

 

      IDispatch(OLApplication) := IDispatch(CoOutlookApplication.Create);

      for i := 0 to MyDList.Folders.Count - 1 do

      begin

        //Get IMAPITable

        try

          NameSpace := OLApplication.GetNamespace('MAPI');

          IDispatch(MyFolder) := NameSpace.GetFolderFromID(

                MyDList.Folders.Items[i].FolEID,

                MyDList.Folders.Items[i].StoreEID);

        except

          MyFolder := nil;

        end;

        if MyFolder = nil then goto cleanup;

 

        hr := (MyFolder.Items.RawTable as IUnknown).QueryInterface(IID_IMAPITable, tTemp);

…….

End;

 

 

Regards

Jason

 

 

_______________________________________________
Delphi mailing list
[email protected]
http://ns3.123.co.nz/mailman/listinfo/delphi

Reply via email to