IMSLib; // IMS ActiveX Control moduleDispatch _DIMS; // Dispatch interface for IMS Control
GUID={1DBF3294-10D5-410C-B964-2318A45DF1A8};
  cUser: I4;
  cRoom: I4;
  roomID: I4;
  bInVPM: bool;
  regNick: BSTR;
  createDate: date;
  lastVisitDate: date;
  bInRoom: bool;
  selfUID: I4;
  bConnected: bool;
  function Login(ugidLo:I4; logstring:BSTR);
  function EnterRoom(roomID:I4; userlevel:I4; usernick:BSTR);
  function Connect;
  function AddRoom(roomname:BSTR; permanent:I2; invisible:I2; max_user:I2; mic_count:I2; mic_time:I2; vhostmaster:I2; voperator:I2; vuser:I2; vguest:I2);
  function QuitRoom(msgtext:BSTR);
  function Logout;
  function ChangeRoomCate(roomID:I4; cateno:I2; sortno:I2);
  function WantMic;
  function DropMic;
  function ChangeNick(usernick:BSTR);
  function PubText(userid:I4; msgtext:BSTR);
  function PrivText(userid:I4; msgtext:BSTR);
  function Idx2id(idx:I4): I4;
  function Nickbyid(uid:I4): BSTR;
  function UserStatus(uid:I4): I4;
  function UserDef(uid:I4): I4;
  function SetUserDef(udata:I4);
  function EnumCate(cate:I2): I2;
  function EnumRoom(cate:I2; rid:I4): I4;
  function roomname(rid:I4): BSTR;
  function RoomProp(rid:I4): I4;
  function RoomCUser(rid:I4): I4;
  function RoomList;
  function RoomIdx2id(ridx:I4): I4;
  function RoomCate(rid:I4): I2;
  function RoomSort(rid:I4): I2;
  function DelRoom(rid:I4);
  function RoomUPriv(rid:I4): I4;
  function SetSelfPriv(vocr:I4; pubtr:I4; prvtr:I4);
  function VPMRequest(uid:I4; msg:BSTR);
  function VPMPermit(uid:I4);
  function VPMLeave;
  function Register(passwd:BSTR; nick:BSTR; xmlinfo:BSTR);
  function ChangeUserLevel(ugidLo:I4; ulevel:I2; cateid:I2; rid:I4);
  function ChangePasswd(ugidLo:I4; oldpassword:BSTR; newpassword:BSTR; nick:BSTR): I4;
  function userlevel(uid:I4): I4;
  function SelfInfo(infoidx:I4): I4;
  function OPKick(uid:I4; msg:BSTR);
  function OPGetMic(fromuid:I4; touid:I4);
  function OPSetNick(uid:I4; nick:BSTR);
  function OPSetUserPriv(uid:I4; vout:I2; vin:I2; tout:I2; tin:I2; ulevel:I2);
  function OPForceVPM(uid:I4);
  function OPCastText(cateid:I2; rid:I4; castmst:BSTR);
  function OPSetRoomParam(locked:I2; invisble:I2; mic_time:I2; min_ulevel:I2);
  function SetUserRela(uid:I4; svoc:I2; rvoc:I2; stxt:I2; rtxt:I2);
  function SetParam(funcnum:I4; value:I4);
  function RoomInfo(rid:I4; infoidx:I4): I4;
  function UserInfo(uid:I4; infoidx:I4): I4;Dispatch _DIMSEvents; // Event interface for IMS Control
GUID={5EA8C44A-C5D5-4038-AA81-8B4F826996C4};
  function OnNoUsed(t:I4; v0:I4; v1:I4; s0:BSTR; s1:BSTR);
  function OnInit(status:I4);
  function OnError(errcode:I4);
  function OnLogin(errcode:I4; userlevel:I4; product:BSTR; regurl:BSTR);
  function OnConnect;
  function OnEnterRoom(userid:I4; roomname:BSTR);
  function OnRoomAdd(errcode:I4; roomID:I4);
  function OnLogout(errcode:I4);
  function OnUserStat(userid:I4; userstat:I4);
  function OnRoomStat(permanent:I2; locked:I2; invisible:I2; max_user:I2; mic_count:I2; mic_time:I2);
  function OnChangeRoomCate(errcode:I4; roomID:I4);
  function OnGetMic(userid:I4);
  function OnWantMic(userid:I4);
  function OnDropMic(userid:I4);
  function OnNewUser(userid:I4; usernick:BSTR);
  function OnChangeNick(userid:I4; newnick:BSTR; oldnick:BSTR);
  function OnPubText(fromuid:I4; touid:I4; msgtext:BSTR);
  function OnPrivText(fromuid:I4; touid:I4; msgtext:BSTR);
  function OnQuitRoom(errcode:I4; oldnick:BSTR; quitmsg:BSTR);
  function OnRoomList(crooms:I4);
  function OnRoomDel(errcode:I4);
  function OnSelfStat(vocr:I4; pubtr:I4; prvtr:I4);
  function OnVPMRequest(uid:I4; msg:BSTR);
  function OnVPMEnter(uid0:I4; uid1:I4);
  function OnVPMLeave(uid:I4);
  function OnVPMOpEnter(opuid:I4; uid:I4);
  function OnRegister(ugidLo:I4; ugidhi:I4);
  function OnChangeUserLevel(errcode:I4; ugid_lo:I4);
  function OnChangePasswd(errcode:I4; ugid_lo:I4);
  function OnCastText(cateid:I2; roomID:I4; ugid:I4; castmsg:BSTR);
  function OnUpdateUL(cUser:I4);Class IMS; // IMS Control
GUID={CCB49BC3-E872-4741-BF40-67AE5FBD1753};
  cUser: I4;
  cRoom: I4;
  roomID: I4;
  bInVPM: bool;
  regNick: BSTR;
  createDate: date;
  lastVisitDate: date;
  bInRoom: bool;
  selfUID: I4;
  bConnected: bool;
  function Login(ugidLo:I4; logstring:BSTR);
  function EnterRoom(roomID:I4; userlevel:I4; usernick:BSTR);
  function Connect;
  function AddRoom(roomname:BSTR; permanent:I2; invisible:I2; max_user:I2; mic_count:I2; mic_time:I2; vhostmaster:I2; voperator:I2; vuser:I2; vguest:I2);
  function QuitRoom(msgtext:BSTR);
  function Logout;
  function ChangeRoomCate(roomID:I4; cateno:I2; sortno:I2);
  function WantMic;
  function DropMic;
  function ChangeNick(usernick:BSTR);
  function PubText(userid:I4; msgtext:BSTR);
  function PrivText(userid:I4; msgtext:BSTR);
  function Idx2id(idx:I4): I4;
  function Nickbyid(uid:I4): BSTR;
  function UserStatus(uid:I4): I4;
  function UserDef(uid:I4): I4;
  function SetUserDef(udata:I4);
  function EnumCate(cate:I2): I2;
  function EnumRoom(cate:I2; rid:I4): I4;
  function roomname(rid:I4): BSTR;
  function RoomProp(rid:I4): I4;
  function RoomCUser(rid:I4): I4;
  function RoomList;
  function RoomIdx2id(ridx:I4): I4;
  function RoomCate(rid:I4): I2;
  function RoomSort(rid:I4): I2;
  function DelRoom(rid:I4);
  function RoomUPriv(rid:I4): I4;
  function SetSelfPriv(vocr:I4; pubtr:I4; prvtr:I4);
  function VPMRequest(uid:I4; msg:BSTR);
  function VPMPermit(uid:I4);
  function VPMLeave;
  function Register(passwd:BSTR; nick:BSTR; xmlinfo:BSTR);
  function ChangeUserLevel(ugidLo:I4; ulevel:I2; cateid:I2; rid:I4);
  function ChangePasswd(ugidLo:I4; oldpassword:BSTR; newpassword:BSTR; nick:BSTR): I4;
  function userlevel(uid:I4): I4;
  function SelfInfo(infoidx:I4): I4;
  function OPKick(uid:I4; msg:BSTR);
  function OPGetMic(fromuid:I4; touid:I4);
  function OPSetNick(uid:I4; nick:BSTR);
  function OPSetUserPriv(uid:I4; vout:I2; vin:I2; tout:I2; tin:I2; ulevel:I2);
  function OPForceVPM(uid:I4);
  function OPCastText(cateid:I2; rid:I4; castmst:BSTR);
  function OPSetRoomParam(locked:I2; invisble:I2; mic_time:I2; min_ulevel:I2);
  function SetUserRela(uid:I4; svoc:I2; rvoc:I2; stxt:I2; rtxt:I2);
  function SetParam(funcnum:I4; value:I4);
  function RoomInfo(rid:I4; infoidx:I4): I4;
  function UserInfo(uid:I4; infoidx:I4): I4;
  function OnNoUsed(t:I4; v0:I4; v1:I4; s0:BSTR; s1:BSTR);
  function OnInit(status:I4);
  function OnError(errcode:I4);
  function OnLogin(errcode:I4; userlevel:I4; product:BSTR; regurl:BSTR);
  function OnConnect;
  function OnEnterRoom(userid:I4; roomname:BSTR);
  function OnRoomAdd(errcode:I4; roomID:I4);
  function OnLogout(errcode:I4);
  function OnUserStat(userid:I4; userstat:I4);
  function OnRoomStat(permanent:I2; locked:I2; invisible:I2; max_user:I2; mic_count:I2; mic_time:I2);
  function OnChangeRoomCate(errcode:I4; roomID:I4);
  function OnGetMic(userid:I4);
  function OnWantMic(userid:I4);
  function OnDropMic(userid:I4);
  function OnNewUser(userid:I4; usernick:BSTR);
  function OnChangeNick(userid:I4; newnick:BSTR; oldnick:BSTR);
  function OnPubText(fromuid:I4; touid:I4; msgtext:BSTR);
  function OnPrivText(fromuid:I4; touid:I4; msgtext:BSTR);
  function OnQuitRoom(errcode:I4; oldnick:BSTR; quitmsg:BSTR);
  function OnRoomList(crooms:I4);
  function OnRoomDel(errcode:I4);
  function OnSelfStat(vocr:I4; pubtr:I4; prvtr:I4);
  function OnVPMRequest(uid:I4; msg:BSTR);
  function OnVPMEnter(uid0:I4; uid1:I4);
  function OnVPMLeave(uid:I4);
  function OnVPMOpEnter(opuid:I4; uid:I4);
  function OnRegister(ugidLo:I4; ugidhi:I4);
  function OnChangeUserLevel(errcode:I4; ugid_lo:I4);
  function OnChangePasswd(errcode:I4; ugid_lo:I4);
  function OnCastText(cateid:I2; roomID:I4; ugid:I4; castmsg:BSTR);
  function OnUpdateUL(cUser:I4);