- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page