If I remember well, these itens at FKeys uses the same memory struct of itens at your inventory.
So, this may help you:
Code:
class T_Itembag { //SIZE OF 0x328
public:
DWORD dwConstantPtr; //vtable pointer
char szUnknown0[8];
DWORD dwItemUniqueID;
char szUnknown1[12];
DWORD dwItemID;
DWORD dwUnknown1;
char szNamePointer[16]; //if len is >15 then this become a pointer to a long name //just a std::string type
DWORD dwNameLength;
char szUnknown2[4];
BYTE bClass;
BYTE wUnknown1;
WORD wLevel;
char szUnknown2b[12];
DWORD dwPrice;
char szUnknown3[23];
BYTE b1stsocket; //0=no socket, 255=socket, anyother number represent a gem. 13 = sdg, 20 = rrg, etc
BYTE b2ndsocket;
char szUnknown4[8];
BYTE bCompositionPlus;
char szUnknown5[38];
char szTypeName[16]; //rareitem, gem, quest, gift, etc...
DWORD dwTypeNameLength;
char szUnknown6[8];
char szDescription[16]; //Description~don't~use~spaces.
DWORD dwDescriptionLength;
char szUnknown6b[368];
DWORD dwShowTipNote;
char szUnknown7[28];
DWORD dwStackNumber;
.
.
.
You can get the pointers offset by counting the bytes used before the variable dwStackNumber (this is what you are looking for). So, for example, if you can get pointer to itemtypeid (dwItemID in the class above), just count the bytes and you are good to go. Good luck!