| Available in LEADTOOLS Imaging Pro, Vector, Document, and Medical Imaging toolkits. | 
L_TwainGetCapabilityFromFile
#include "lttwn.h"
L_LTTWN_API L_INT L_TwainGetCapabilityFromFile (hSession, hFile, ppCapability, uIndex)
| HTWAINSESSION hSession; | /* handle to an existing TWAIN session */ | 
| HTWAINTEMPLATEFILE hFile; | /* handle to an existing template file */ | 
| pTW_CAPABILITY * ppCapability; | /* pointer to a pointer to a structure */ | 
| L_UINT uIndex; | /* capability index */ | 
Gets the capability, at the specified index, in the specified file.
| Parameter | Description | 
| hSession | Handle to an existing TWAIN session. This handle is obtained by calling the L_TwainInitSession function. | 
| hFile | Handle to an existing template file. | 
| ppCapability | Pointer to a pointer to a TW_CAPABILITY structure. This structure will be allocated internally. | 
| uIndex | Index of the capability to get from the file. This is a zero-based index. | 
Returns
| SUCCESS | The function was successful. | 
| ! = SUCCESS | An error occurred. Refer to Return Codes. | 
Comments
To get a capability stored in a file; the file must be opened for reading by calling L_TwainOpenTemplateFile function. The user must declare a variable of type pTW_CAPABILITY and pass the address of this to the function. This parameter will be updated with a pointer to the capability at the specified index.
| Note: | If the function is successful, the user must: | 
Free the container of the TW_CAPABILITY structure by a calling L_TwainFreeContainer function.
Free the value referenced by the contents of the ppCapability using GlobalUnlock and GlobalFree.
Required DLLs and Libraries
| LTTWN For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application. | 
See Also
| Functions: | L_TwainOpenTemplateFile, L_TwainAddCapabilityToFile, L_TwainTemplateDlg, L_TwainGetNumOfCapsInFile, L_TwainCloseTemplateFile, L_TwainInitSession, L_TwainEndSession. | 
| Topics: | |
| 
 | 
Example
L_INT  TwainGetCapabilityFromFileExample(HTWAINTEMPLATEFILE hFile,
                                                         HWND               hDlg, // Parent dialog handle
                                                         HTWAINSESSION g_hSession)
{
   L_INT nRet;
   OPENFILENAME ofn;
   L_TCHAR szFilePath[MAX_PATH];
   memset (&ofn, 0, sizeof(OPENFILENAME));
   memset (szFilePath, 0, MAX_PATH);
   ofn.lStructSize = sizeof(OPENFILENAME);
   ofn.hwndOwner = hDlg;
   ofn.lpstrFile = szFilePath;
   ofn.nMaxFile = MAX_PATH;
   ofn.lpstrTitle = TEXT("Load Template File");
   if (GetOpenFileName (&ofn)) 
   {
      nRet = L_TwainOpenTemplateFile (g_hSession, &hFile, szFilePath, LTWAIN_TEMPLATE_OPEN_READ);
      if (nRet == SUCCESS)
      {
         L_UINT uIndex, uCapCount = 0;
         pTW_CAPABILITY ptwCapability = NULL;
         
         nRet = L_TwainGetNumOfCapsInFile (g_hSession, hFile, &uCapCount);
         if (nRet == SUCCESS)
         {
            for (uIndex = 0 ;uIndex < uCapCount ;uIndex ++)
            {
               nRet = L_TwainGetCapabilityFromFile (g_hSession, hFile, &ptwCapability, uIndex);
               if (nRet == SUCCESS)
               {
                  nRet = L_TwainSetCapability (g_hSession, ptwCapability, LTWAIN_CAPABILITY_SET);
                  if(nRet != SUCCESS)
                     return nRet;
               }
               else
               {
                  return nRet;
               }
               if (ptwCapability)
               {
                  GlobalFree (ptwCapability->hContainer);
                  GlobalUnlock(ptwCapability);
                  GlobalFree (ptwCapability);
               }
            }
         }
         else
            return nRet;
         nRet = L_TwainCloseTemplateFile (g_hSession, hFile);
         if(nRet != SUCCESS)
            return nRet;
      }
      else
         return nRet;
   }
   return SUCCESS; 
}