XEffort for x64??

XEffort for x64??

A number of my applications use the XEffort set of libraries to interface to the Windows API.

A number of my clients have migrated to 64-bit MS Office, and so I need to start migrating to x64.

I gather that XEffort is only available for Win32, or has anyone ported it to x64?

If not, it looks like a long road ahead ...

Thanks,

David

4 posts / 0 nouveau(x)
Dernière contribution
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.

I'm not aware of an x64 port. Since I'm now hosting Xeffort it's on my list, but I don't see having the time to do it for a while.

Steve - Intel Developer Support

Thanks, Steve.

While some of my apps use dialogs extensively, it looks like my immediate need is to read some registry strings and upper/lower case conversion.  I can write my own case conversion routines, but are there any alternatives to XEffort for accessing Registry, for both Win32 and x64?

Thanks,

David

There are registry interfaces in ifwin ( advapi32). I found an very old application that I had an example of some usage, I don't know if this still works ok on w7 or x64 and it looks like some update is required but for what its worth....

subroutine regtest()
  integer*4     mode,ll,ierr,valLen
  character*256 skey,valdata,valname
  mode=1
  skey='SOFTWARE\\xxxxxxx\\yyyyyyyy\\&
        &Pages\\uuuuuu\\zzzzzzzzz'C
  valname='C:\\WINDOWS\\system32\\yyyyyy.DLL'C
  call ReadRegVar(skey,valData,valname,mode,ll,ierr)
  skey='SOFTWARE\\zzzz\\yyyyyyy\\&
        &Pages\\VERCP32\\tt0'C
  valName='Test'C;  valData='hurrah'C;  valLen=6
  call WriteRegVar(skey,valData,valname,valLen,ierr)
return
end




subroutine ReadRegVar(skey,valData,valname,mode,ll,ierr)
  use ifwin
  implicit none
  character*(*),intent(inout)::skey
  character*(*),intent(inout)::valdata
  character*(*),intent(inout)::valname
  integer*4, intent(inout):: mode
  integer*4, intent(out):: ll
  integer*4, intent(out):: ierr
  character*255 subKey, vname, strx
  integer*4 regCallStat, mainKey, hKey, l1, l2
  ierr = 0
  if (mode .eq. 1) then
    mainKey= HKEY_LOCAL_MACHINE
  else
    ierr = -2;    return
  endif
  subkey = skey
  regCallStat=RegOpenKeyEx(mainKey,subKey,0, KEY_QUERY_VALUE,loc(hKey))
  if (regCallStat .ne. 0) then
    ierr = regCallStat;    return
  endif
  vname = valname ! value name
  l1 = 0;  l2 = 256
  regCallStat = RegQueryValueEx (hKey, vname, 0, loc(l1),loc(strx),loc(l2))
  if (regCallStat .ne. 0) then
    ierr = regCallStat; return
  endif
  ll = l2 - 1 ! strip away null termination
  valdata = strx(1:ll)
end



subroutine WriteRegVar(skey,valData,valName,ValLen,ierr)
  use ifwin;  implicit none
  character*(*),intent(inout)::skey
  character*(*),intent(inout)::valdata
  character*(*),intent(inout)::valName
  integer*4, intent(in) :: valLen
  integer*4, intent(out):: ierr
  character*255 subKey, vname
  integer*4 regCallStat, mainKey, hKey, l1, l2, valType,hNewOrOld

  ierr = 0;  mainKey= HKEY_LOCAL_MACHINE;  subkey = skey
  valType=REG_SZ
  regCallStat=RegCreateKeyEx(mainKey, loc(subKey), 0,'REG_SZ'C,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, loc(hKey),loc(hNewOrOld))
  if(regCallStat) return
  regCallStat=RegSetValueEx(hKey, valName, 0, valType, loc(valData), valLen)
  if(regCallStat) ierr=-1
  return
end

 

Laisser un commentaire

Veuillez ouvrir une session pour ajouter un commentaire. Pas encore membre ? Rejoignez-nous dès aujourd’hui