Browse Source

Initial commit

master
Mikanoshi 9 years ago
commit
1fd747b85c
  1. 618
      CallExec.pas
  2. BIN
      Icons/main1.ico
  3. BIN
      Icons/main2.ico
  4. BIN
      Icons/main3.ico
  5. BIN
      Icons/main4.ico
  6. BIN
      Icons/main5.ico
  7. BIN
      Icons/rnq.bmp
  8. BIN
      Icons/rnq.ico
  9. 35
      InvisCheck.cfg
  10. 121
      InvisCheck.dof
  11. 355
      InvisCheck.dpr
  12. 298
      InvisCheck.dproj
  13. 108
      InvisCheck.dproj.2007
  14. BIN
      icons.res
  15. 185
      plugin.pas
  16. 949
      pluginutil.pas
  17. 249
      sform.dfm
  18. 498
      sform.pas

618
CallExec.pas

@ -0,0 +1,618 @@
unit CallExec;
interface
uses
plugin,
pluginutil,
Types,
Graphics,
Windows;
type
{$IFNDEF UNICODE}
RawByteString = AnsiString;
{$ENDIF UNICODE}
ContactInfo=record
UIN:integer;
Status:byte;
Invisible:boolean;
DisplayedName, First, Last:AnsiString
end;
var
callback:TpluginFun; // &RQ callback function
plugsendflag: boolean = false;
function str2comm(s:RawByteString):pointer;
function callStr(s:RawByteString):pointer;
{####################################}
// --=== Commands ===--
procedure RQ_SendMsg(uin, Flag:integer; msg:AnsiString);
function RQ_GetRoasterList:TIntegerDynArray;
function RQ_GetIgnoreList:TIntegerDynArray;
function RQ_GetChatWindow(var wnd:HWND; var left, top, width, height:integer):integer;
function RQ_GetRoasterWindow(var wnd:HWND; var left, top, width, height:integer):integer;
function RQ_GetPrefWindow(var wnd:HWND; var left, top, width, height:integer):integer;
procedure RQ_SendContacts(uin, Flag:integer; contacts:TIntegerDynArray);
procedure RQ_SendAddedYou(uin:integer);
function RQ_AddToList(List:integer; uins:TIntegerDynArray):integer;
function RQ_RemoveFromList(List:integer; uins:TIntegerDynArray):integer;
procedure RQ_SetStatus(Status:byte);
procedure RQ_SetVisibility(Visibility:byte);
procedure RQ_Quit;
procedure RQ_Connect;
procedure RQ_Disconnect;
procedure RQ_SetAutoMessage(AutoMessage:AnsiString);
procedure RQ_SendAutoMessageRequest(uin:integer);
// -
function RQ_CreateChatButton(buttonProc:pointer; buttonIcon: hIcon;
buttonHint:AnsiString; PicName : AnsiString = ''):integer;
procedure RQ_ChangeChatButton(buttonAddr:Integer; buttonIcon: hIcon;
buttonHint:AnsiString; PicName : AnsiString = '');
procedure RQ_DeleteChatButton(var buttonAddr:Integer);
{####################################}
// --=== Get ===--
function RQ_GetTime:Double;
function RQ_GetList(List:integer):TIntegerDynArray;
function RQ_GetContactInfo(uin:integer):ContactInfo;
function RQ_GetName(uin:integer): AnsiString;
function RQ_GetDisplayedName(uin:integer):AnsiString;
function RQ_GetAwayTime:double;
function RQ_GetAndrqPath:AnsiString;
function RQ_GetUserPath:AnsiString;
function RQ_GetAndrqVersion:integer;
function RQ_GetRnQVersion: Integer;
function RQ_GetAndrqVersionAsString:AnsiString;
function RQ_GetCurrentUser:integer;
function RQ_GetUserTime:double;
function RQ_GetConnectionState:integer;
function RQ_GetWindow(window:integer; var wnd:HWND; var left, top, width, height:integer):integer;
function RQ_GetAutoMessage:AnsiString;
function RQ_GetChatUIN:integer;
{####################################}
procedure RQ__ParseInitString(data:Pointer; var callback:TpluginFun; var apiVersion:integer;
var andrqPath, userPath:AnsiString; var currentUIN:integer);
procedure RQ__ParseMsgGotString(data:pointer; var uin, flags:integer; var when:TDateTime;
var msg:AnsiString);
procedure RQ__ParseMsgSentString(data:pointer; var uin, flags:integer; var msg:AnsiString);
procedure RQ__ParseURLGotString(data:Pointer; var uin, flags:integer; var when:TDateTime; var URL, text:AnsiString);
procedure RQ__ParseAddedYouSentString(data:Pointer; var uin:integer);
procedure RQ__ParseAddedYouGotString(data:Pointer; var uin, flags:integer; var when:TDateTime);
procedure RQ__ParseContactsSentString(data:Pointer; var uin, flags:integer; var contacts:TIntegerDynArray);
procedure RQ__ParseContactsGotString(data:Pointer; var uin, flags:integer; var when:TDateTime;
var contacts:TIntegerDynArray);
procedure RQ__ParseAuthSentString(data:Pointer; var uin:integer);
procedure RQ__ParseAuthRequestGotString(data:Pointer; var uin, flags:integer; var when:TDateTime; var text:AnsiString);
procedure RQ__ParseAuthDeniedSentString(data:Pointer; var uin:integer; var text:AnsiString);
procedure RQ__ParseAutoMessageSentString(data:Pointer; var uin:integer; var text:AnsiString);
procedure RQ__ParseAutoMessageGotString(data:Pointer; var uin:integer; var text:AnsiString);
procedure RQ__ParseAutoMessageRequestSentString(data:Pointer; var uin:integer);
procedure RQ__ParseAutoMessageRequestGotString(data:Pointer; var uin:integer);
procedure RQ__ParseVisibilityChanged(data:Pointer; var contact:integer);
procedure RQ__ParseUserinfoChanged(data:Pointer; var uin:integer);
procedure RQ__ParseStatusChanged(data:Pointer; var uin:integer; var newStatus, oldStatus:byte;
var newInvisibleState, oldInvisibleState:Boolean);
procedure RQ__ParseListAddString(data:Pointer; var list:byte; var uins:TIntegerDynArray);
procedure RQ__ParseListRemoveString(data:Pointer; var list:byte; var uins:TIntegerDynArray);
{####################################}
implementation
uses
SysUtils;
// convert a string to a "plugin communication"
function str2comm(s:RawByteString):pointer;
var outBuffer:RawByteString;
begin
outBuffer:=_int(length(s))+s;
result:=@outBuffer[1];
end; // str2comm
// execute callback on a string instead of pointer
function callStr(s:RawByteString):pointer;
begin
result:=callback(str2comm( s ))
end;
{##############################################################################}
procedure RQ_SendMsg(uin, Flag:integer; msg:AnsiString);
{ Flag:
Single =0
Multi =1 }
begin
PlugSendFlag := false;
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_SEND_MSG)+_int(uin)+_int(Flag)+_istring(msg));
end;
procedure RQ_SendContacts(uin, Flag:integer; contacts:TIntegerDynArray);
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_SEND_CONTACTS)+_int(uin)+_int(Flag)+_intlist(contacts));
end;
procedure RQ_SendAddedYou(uin:integer);
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_SEND_ADDEDYOU)+_int(uin));
end;
function RQ_AddToList(List:integer; uins:TIntegerDynArray):integer;
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_LIST_ADD)+AnsiChar(List)+_intlist(uins));
result := 0;
end;
function RQ_RemoveFromList(List:integer; uins:TIntegerDynArray):integer;
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_LIST_REMOVE)+AnsiChar(List)+_intlist(uins));
result := 0;
end;
procedure RQ_SetStatus(Status:byte);
{ PS_ONLINE, PS_OCCUPIED, PS_DND
PS_NA, PS_AWAY, PS_F4C, PS_OFFLINE, PS_UNKNOWN }
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_SET_STATUS)+AnsiChar(Status));
end;
procedure RQ_SetVisibility(Visibility:byte);
{ PV_ALL, PV_NORMAL, PV_PRIVACY, PV_INVISIBLE }
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_SET_VISIBILITY)+AnsiChar(Visibility));
end;
procedure RQ_Quit;
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_QUIT));
end;
procedure RQ_Connect;
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_CONNECT));
end;
procedure RQ_Disconnect;
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_DISCONNECT));
end;
procedure RQ_SetAutoMessage(AutoMessage:AnsiString);
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_SET_AUTOMSG)+_istring(AutoMessage));
end;
procedure RQ_SendAutoMessageRequest(uin:integer);
begin
callStr(AnsiChar(PM_CMD)+AnsiChar(PC_SEND_AUTOMSG_REQ)+_int(uin));
end;
{##############################################################################}
function RQ_GetTime:Double;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_TIME));
if _byte_at(data, 4) = PM_DATA then try Result:=_double(data,5) except Result := 0 end else Result := 0;
end;
function RQ_GetList(List:integer):TIntegerDynArray;
{
PL_ROASTER, PL_VISIBLELIST, PL_INVISIBLELIST, PL_TEMPVISIBLELIST,
PL_IGNORELIST, PL_DB, PL_NIL.
}
var
data:Pointer;
begin
if _byte_at(data, 4) = PM_DATA then try Result:=_intlist_at(data,5) except Result := nil end else Result := nil;
end;
function RQ_GetContactInfo(uin:integer):ContactInfo;
var
data:Pointer;
tempCI:ContactInfo;
a:array[0..50]of AnsiChar;
i:integer;
begin
tempCI.UIN := 0;
tempCI.Status := 0;
tempCI.Invisible := false;
tempCI.DisplayedName := '';
tempCI.First:= '';
tempCI.Last := '';
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_CONTACTINFO)+_int(uin));
if _byte_at(data, 4) = PM_DATA then
try
for i:=0 to 50 do begin
a[i]:=AnsiChar(_byte_at(data,i));
end;
with tempCI do begin
UIN:=_int_at(data,9);
Status:=_byte_at(data,13);
Invisible:=boolean(_byte_at(data,14));
DisplayedName:=_istring_at(data,15);
i:=15+4+Length(DisplayedName);
First:=_istring_at(data,i);
i:=i+4+Length(First);
Last:=_istring_at(data,i);
end;
Result.UIN:=length(a);
Result:=tempCI;
except Result := tempCI end else Result := tempCI;
end;
function RQ_GetDisplayedName(uin:integer):AnsiString;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_DISPLAYED_NAME)+_int(uin));
if _byte_at(data, 4) = PM_DATA then
try Result:=_istring_at(data,5) except Result:='ERROR' end else Result:='ERROR';
end;
function RQ_GetAwayTime:double;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_AWAYTIME));
if _byte_at(data, 4) = PM_DATA then try result:=_double(data, 5);
except Result:=0 end else Result:=0;
end;
function RQ_GetAndrqPath:AnsiString;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_ANDRQ_PATH));
if _byte_at(data, 4) = PM_DATA then
try Result:=_istring_at(data,5) except Result:='ERROR' end else Result:='ERROR';
end;
function RQ_GetUserPath:AnsiString;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_USER_PATH));
if _byte_at(data, 4) = PM_DATA then
try Result:=_istring_at(data,5) except Result:='ERROR' end else Result:='ERROR';
end;
function RQ_GetAndrqVersion:integer;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_ANDRQ_VER));
if _byte_at(data, 4) = PM_DATA then
try result:=_int_at(data, 5) except Result:=0 end else Result:=0;
end;
function RQ_GetRnQVersion: Integer;
var
data: Pointer;
begin
data := CallStr(AnsiChar(PM_GET)+AnsiChar(PG_RNQ_BUILD));
if _byte_at(data, 4) = PM_DATA then
try Result := _int_at(data,5) except Result:=0 end else Result:=0;
end;
function RQ_GetAndrqVersionAsString:AnsiString;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_ANDRQ_VER_STR));
if _byte_at(data, 4) = PM_DATA then
try result:=_istring_at(data, 5) except Result:='ERROR' end else Result:='ERROR';
end;
{ Name }
function RQ_GetName(uin:integer): AnsiString;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+ AnsiChar(PG_DISPLAYED_NAME)+_int(uin));
if _byte_at(data, 4) = PM_DATA then
try result:=_istring_at(data, 5) except Result:='ERROR' end else Result:='ERROR';
end;
function RQ_GetCurrentUser:integer;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_USER));
if _byte_at(data, 4) = PM_DATA then
try Result := _int_at(data,5) except Result:=0 end else Result:=0;
end;
function RQ_GetUserTime:double;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_USERTIME));
if _byte_at(data, 4) = PM_DATA then
try Result := _int_at(data,5) except Result:=0 end else Result:=0;
end;
function RQ_GetConnectionState:integer;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_CONNECTIONSTATE ));
if _byte_at(data, 4) = PM_DATA then
try Result := _int_at(data,5) except Result:=-1 end else Result:=-1;
end;
function RQ_GetWindow(window:integer; var wnd:HWND; var left, top, width, height:integer):integer;
{ PW_ROASTER, PW_CHAT, PW_PREFERENCES }
var
data:Pointer;
begin
data:=callStr( AnsiChar(PM_GET)+AnsiChar(PG_WINDOW)+AnsiChar(PW_CHAT));
if _byte_at(data,4) = PM_DATA then try
wnd:=_int_at(data, 5);
left:=_int_at(data, 9);
top:=_int_at(data, 13);
width:=_int_at(data, 17);
height:=_int_at(data, 21);
result := 1;
except result := 0 end else result := 0;
end;
function RQ_GetAutoMessage:AnsiString;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_AUTOMSG));
if _byte_at(data, 4) = PM_DATA then
try result:=_istring_at(data, 5) except Result:='ERROR' end else Result:='ERROR';
end;
function RQ_GetChatUIN:integer;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+AnsiChar(PG_CHAT_UIN));
if _byte_at(data, 4) = PM_DATA then
try Result := _int_at(data,5) except Result:=0 end else Result:=0;
end;
function RQ_CreateChatButton(buttonProc:Pointer; buttonIcon: hIcon;
buttonHint:AnsiString; PicName : AnsiString = ''):integer;
var
data:Pointer;
begin//
data:=callStr(AnsiChar(PM_CMD)+ AnsiChar(PC_ADDBUTTON)+
_int(integer(buttonProc))+_int(integer(buttonIcon))+
_istring(buttonHint)+_istring(PicName));
Result:=_int_at(data, 4);
end;
procedure RQ_ChangeChatButton(buttonAddr:Integer; buttonIcon: hIcon;
buttonHint:AnsiString; PicName : AnsiString = '');
begin//
callStr(AnsiChar(PM_CMD)+ AnsiChar(PC_MODIFY_BUTTON)
+_int(integer(buttonAddr))+_int(integer(buttonIcon))
+_istring(buttonHint)+_istring(PicName));
end;
procedure RQ_DeleteChatButton(var buttonAddr:Integer);
begin//
callStr(AnsiChar(PM_CMD)+ AnsiChar(PC_DELBUTTON)+_int(integer(buttonAddr)));
buttonAddr:=0;
end;
{++++++++++++++++++++++++++++++++++++}
procedure RQ__ParseInitString(data:Pointer; var callback:TpluginFun; var apiVersion:integer;
var andrqPath, userPath:AnsiString; var currentUIN:integer);
var
i:integer;
begin
callback:=_ptr_at(data,6);
apiVersion:=_int_at(data, 10);
andrqPath:=_istring_at(data, 14);
i:=14+4+length(andrqPath);
userPath:=_istring_at(data, i);
i:=i+4+length(userPath);
currentUIN:=_int_at(data, i);
end;
procedure RQ__ParseMsgGotString(data:pointer; var uin, flags:integer; var when:TDateTime;
var msg:AnsiString);
begin
uin:=_int_at(data, 6);
flags:=_int_at(data, 10);
when:=_double(data, 14);
msg:=_istring_at(data, 22);
end;
procedure RQ__ParseMsgSentString(data:pointer; var uin, flags:integer; var msg:AnsiString);
begin
uin:=_int_at(data, 6);
flags:=_int_at(data, 10);
msg:=_istring_at(data, 14);
end;
procedure RQ__ParseURLGotString(data:Pointer; var uin, flags:integer; var when:TDateTime; var URL, text:AnsiString);
var
i:integer;
begin
uin:=_int_at(data, 6);
flags:=_int_at(data, 10);
when:=_double(data, 14);
URL:=_istring_at(data, 22);
i:=22+4+length(URL);
text:=_istring_at(data, i);
end;
procedure RQ__ParseAddedYouSentString(data:Pointer; var uin:integer);
begin
uin:=_int_at(data, 6);
end;
procedure RQ__ParseAddedYouGotString(data:Pointer; var uin, flags:integer; var when:TDateTime);
begin
uin:=_int_at(data, 6);
flags:=_int_at(data, 10);
when:=_double(data, 14);
end;
procedure RQ__ParseContactsSentString(data:pointer; var uin, flags:integer; var contacts:TIntegerDynArray);
begin
uin:=_int_at(data, 6);
flags:=_int_at(data, 10);
contacts:=_intlist_at(data, 14);
end;
procedure RQ__ParseContactsGotString(data:Pointer; var uin, flags:integer; var when:TDateTime; var contacts:TIntegerDynArray);
begin
uin:=_int_at(data, 6);
flags:=_int_at(data, 10);
when:=_double(data, 14);
contacts:=_intlist_at(data, 22);
end;
procedure RQ__ParseAuthSentString(data:Pointer; var uin:integer);
begin
uin:=_int_at(data, 6);
end;
procedure RQ__ParseAuthRequestGotString(data:Pointer; var uin, flags:integer; var when:TDateTime; var text:AnsiString);
begin
uin:=_int_at(data, 6);
flags:=_int_at(data, 10);
when:=_double(data, 14);
text:=_istring_at(data, 22);
end;
procedure RQ__ParseAuthDeniedSentString(data:Pointer; var uin:integer; var text:AnsiString);
begin
uin:=_int_at(data, 6);
text:=_istring_at(data, 10);
end;
procedure RQ__ParseAutoMessageSentString(data:Pointer; var uin:integer; var text:AnsiString);
begin
uin:=_int_at(data, 6);
text:=_istring_at(data, 10);
end;
procedure RQ__ParseAutoMessageGotString(data:Pointer; var uin:integer; var text:AnsiString);
begin
uin:=_int_at(data, 6);
text:=_istring_at(data, 10);
end;
procedure RQ__ParseAutoMessageRequestSentString(data:Pointer; var uin:integer);
begin
uin:=_int_at(data, 6);
end;
procedure RQ__ParseAutoMessageRequestGotString(data:Pointer; var uin:integer);
begin
uin:=_int_at(data, 6);
end;
procedure RQ__ParseVisibilityChanged(data:Pointer; var contact:integer);
{ if contact = 0 - all contacts }
begin
contact:=_int_at(data, 6);
end;
procedure RQ__ParseUserinfoChanged(data:Pointer; var uin:integer);
begin
uin:=_int_at(data, 6);
end;
procedure RQ__ParseStatusChanged(data:Pointer; var uin:integer; var newStatus, oldStatus:byte;
var newInvisibleState, oldInvisibleState:Boolean);
begin
uin:=_int_at(data, 6);
newStatus:=_byte_at(data, 10);
oldStatus:=_byte_at(data, 11);
newInvisibleState:=boolean(_byte_at(data, 12));
oldInvisibleState:=boolean(_byte_at(data, 13));
end;
procedure RQ__ParseListAddString(data:Pointer; var list:byte; var uins:TIntegerDynArray);
begin
list:=_byte_at(data, 6);
uins:=_intlist_at(data, 7);
end;
procedure RQ__ParseListRemoveString(data:Pointer; var list:byte; var uins:TIntegerDynArray);
begin
list:=_byte_at(data, 6);
uins:=_intlist_at(data, 7);
end;
{ RoasterList }
function RQ_GetRoasterList:TIntegerDynArray;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+ AnsiChar(PG_LIST)+ AnsiChar(PL_ROASTER));
if _byte_at(data, 4) = PM_DATA then
try Result := _intlist_at(data, 5) except Result:=nil end else Result:=nil;
end;
{ IgnoreList }
function RQ_GetIgnoreList:TIntegerDynArray;
var
data:Pointer;
begin
data:=CallStr(AnsiChar(PM_GET)+ AnsiChar(PG_LIST)+ AnsiChar(PL_IGNORELIST));
if _byte_at(data, 4) = PM_DATA then
try Result := _intlist_at(data, 5) except Result:=nil end else Result:=nil;
end;
function RQ_GetChatWindow(var wnd:HWND; var left, top, width, height:integer):integer;
var
data:Pointer;
begin
data:=callStr( AnsiChar(PM_GET)+ AnsiChar(PG_WINDOW)+ AnsiChar(PW_CHAT));
if _byte_at(data,4) = PM_DATA then try
wnd:=_int_at(data, 5);
left:=_int_at(data, 9);
top:=_int_at(data, 13);
width:=_int_at(data, 17);
height:=_int_at(data, 21);
result := 1;
except result := 0; end else result := 0;
end;
function RQ_GetRoasterWindow(var wnd:HWND; var left, top, width, height:integer):integer;
var
data:Pointer;
begin
data:=callStr( AnsiChar(PM_GET)+ AnsiChar(PG_WINDOW)+ AnsiChar(PW_ROASTER));
if _byte_at(data,4) = PM_DATA then try
wnd:=_int_at(data, 5);
left:=_int_at(data, 9);
top:=_int_at(data, 13);
width:=_int_at(data, 17);
height:=_int_at(data, 21);
result := 1;
except result := 0; end else result := 0;
end;
function RQ_GetPrefWindow(var wnd:HWND; var left, top, width, height:integer):integer;
var
data:Pointer;
begin
data:=callStr( AnsiChar(PM_GET)+ AnsiChar(PG_WINDOW)+ AnsiChar(PW_PREFERENCES));
if _byte_at(data,4) = PM_DATA then try
wnd:=_int_at(data, 5);
left:=_int_at(data, 9);
top:=_int_at(data, 13);
width:=_int_at(data, 17);
height:=_int_at(data, 21);
result := 1;
except result := 0; end else result := 0;
end;
end.

BIN
Icons/main1.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Icons/main2.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Icons/main3.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Icons/main4.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Icons/main5.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Icons/rnq.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Icons/rnq.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

35
InvisCheck.cfg

@ -0,0 +1,35 @@
-$A8
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I+
-$J-
-$K-
-$L+
-$M-
-$N+
-$O+
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$YD
-$Z1
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-LE"c:\program files\borland\delphi7\Projects\Bpl"
-LN"c:\program files\borland\delphi7\Projects\Bpl"

121
InvisCheck.dof

@ -0,0 +1,121 @@
[FileVersion]
Version=7.0
[Compiler]
A=8
B=0
C=1
D=1
E=0
F=0
G=1
H=1
I=1
J=0
K=0
L=1
M=0
N=1
O=1
P=1
Q=0
R=0
S=0
T=0
U=0
V=1
W=0
X=1
Y=1
Z=1
ShowHints=1
ShowWarnings=1
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
NamespacePrefix=
SymbolDeprecated=1
SymbolLibrary=1
SymbolPlatform=1
UnitLibrary=1
UnitPlatform=1
UnitDeprecated=1
HResultCompat=1
HidingMember=1
HiddenVirtual=1
Garbage=1
BoundsError=1
ZeroNilCompat=1
StringConstTruncated=1
ForLoopVarVarPar=1
TypedConstVarPar=1
AsgToTypedConst=1
CaseLabelRange=1
ForVariable=1
ConstructingAbstract=1
ComparisonFalse=1
ComparisonTrue=1
ComparingSignedUnsigned=1
CombiningSignedUnsigned=1
UnsupportedConstruct=1
FileOpen=1
FileOpenUnitSrc=1
BadGlobalSymbol=1
DuplicateConstructorDestructor=1
InvalidDirective=1
PackageNoLink=1
PackageThreadVar=1
ImplicitImport=1
HPPEMITIgnored=1
NoRetVal=1
UseBeforeDef=1
ForLoopVarUndef=1
UnitNameMismatch=1
NoCFGFileFound=1
MessageDirective=1
ImplicitVariants=1
UnicodeToLocale=1
LocaleToUnicode=1
ImagebaseMultiple=1
SuspiciousTypecast=1
PrivatePropAccessor=1
UnsafeType=1
UnsafeCode=1
UnsafeCast=1
[Linker]
MapFile=0
OutputObjs=0
ConsoleApp=1
DebugInfo=0
RemoteSymbols=0
MinStackSize=16384
MaxStackSize=1048576
ImageBase=4194304
ExeDescription=
[Directories]
OutputDir=
UnitOutputDir=
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=
Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;FreeRep7;tdbf
Conditionals=
DebugSourceDirs=
UsePackages=0
[Parameters]
RunParams=
HostApplication=C:\Progs\Inet\Chat\R&Q 1100\plugins\RnQEyeSrc\TestRnQ\R&Q.exe
Launcher=
UseLauncher=0
DebugCWD=C:\Progs\Inet\Chat\R&Q 1100\plugins\RnQEyeSrc\TestRnQ\plugins
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1049
CodePage=1251

355
InvisCheck.dpr

@ -0,0 +1,355 @@
library RnQEye;
uses
Types,
Classes,
Windows,
Messages,
plugin,
pluginutil,
CallExec,
Dialogs,
SysUtils,
Graphics,
MMSystem,
IdMultipartFormData,
IdExceptionCore,
idHTTP,
MyOver,
sform in 'sform.pas' {SetForm};
{$SETPEFLAGS IMAGE_FILE_LINE_NUMS_STRIPPED or IMAGE_FILE_LOCAL_SYMS_STRIPPED}
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])}
type
TPOSTThread = class(TThread)
protected
procedure Execute; override;
end;
var
userPath, andrqPath: AnsiString;
vApiVersion, currentUIN: Integer;
POST: TThread;
action: boolean;
{$R icons.res}
// ==========================================================
function EngToRus(statuseng: string): string;
begin
if statuseng = 'Online' then result:='Â ñåòè';
if statuseng = 'Occupied' then result:='Çàíÿò';
if statuseng = 'DND' then result:='Íå áåñïîêîèòü';
if statuseng = 'N/A' then result:='Íåäîñòóïåí';
if statuseng = 'Away' then result:='Óø¸ë';
if statuseng = '' then result:='Ñâîáîäåí';
if statuseng = 'Offline' then result:='Îòêëþ÷åí';
if statuseng = 'Unknown' then result:='Íåèçâåñòåí';
if statuseng = 'Invisible' then result:='Íåâèäèìûé';
// if statuseng = '' then result:='Îøèáêà! Ïîâòîðèòå çàïðîñ';
end;
procedure OnButtonClickEx(uintocheck: integer);
var i: integer;
finish, found: boolean;
procedure ExceptionProxy(ExcpMsg: string);
begin
if (SetForm.AvoidBan.checked = true) and
(SetForm.UseProxy.checked = true)
and (SetForm.ListBox1.Items.Count >= 2) then
begin
if action = true then
if (GlobalProxy = StartProxy - 1) or ((GlobalProxy = 0) and (StartProxy = 0)) then
begin
ifPOST := false;
showmessage('Íå óäàëîñü ïîäêëþ÷èòüñÿ íè ÷åðåç îäèí èç óêàçàííûõ ïðîêñè');
POST.Free;
exit;
end;
SetForm.ExecAntiBan;
action := true;
OnButtonClickEx(uintocheck);
end
else
begin
ifPOST := false;
showmessage('Îøèáêà îñíîâíîãî ïðîêñè:'+#13+ExcpMsg+#13#13+'Ñïèñîê ïåðåáîðà ïóñò èëè ïåðåáîð ïðîêñè âûêëþ÷åí');
end;
end;
begin
if uintocheck = -1 then uintocheck := RQ_GetChatUIN;
if uintocheck <= 0 then exit;
try
if SetForm.TurnedOn.Checked = false then
begin
SetForm.Show;
exit;
end;
finish := false;
if GlobalProxy > SetForm.ListBox1.Items.Count -1 then GlobalProxy := 0;
if action = false then StartProxy := GlobalProxy;
if SetForm.UseProxy.Checked = true then
begin
if SetForm.ListBox1.Items.Count = 0 then
begin
ReadTMTnotice := false;
ifPOST := false;
showmessage('Âêëþ÷åíî èñïîëüçîâàíèå ïðîêñè, íî ñàì ïðîêñè (èëè èõ ñïèñîê) íå çàäàí');
// POST.Free;
exit;
end
else
with SetForm do
if (SetForm.AvoidBan.Checked = true) then
begin
idH.ProxyParams.ProxyServer := ExtractWord(1, ListBox1.items[GlobalProxy], delimq);
idH.ProxyParams.ProxyPort := StrToInt(ExtractWord(2, ListBox1.items[GlobalProxy], delimq));
end
else
begin
idH.ProxyParams.ProxyServer := ExtractWord(1, ListBox1.items[0], delimq);
idH.ProxyParams.ProxyPort := StrToInt(ExtractWord(2, ListBox1.items[0], delimq));
end;
end;
mpf := TIdMultiPartFormDataStream.Create;
if SetForm.CheckService.ItemIndex = 0 then
begin
mpf.AddFormField(SetForm.ikey.text, '1');
if SetForm.YouAreAdded.checked = true then
mpf.AddFormField('youwereadded', 'on');
end;
mpf.AddFormField('uin', IntToStr(uintocheck));
repeat
ifPOST := true;
try
if SetForm.CheckService.ItemIndex = 0 then
gotcha := idH.post('http://kanicq.ru/invisible/pda/?method=2', mpf)
else
gotcha := idH.post('http://inviznet.ru/inviz_check.php', mpf);
except end;
if pos('Your have exceeded', gotcha) > 0 then
begin
if (SetForm.AvoidBan.checked = true) and (SetForm.AvoidBan.Enabled = true) then
begin
SetForm.ExecAntiBan;
continue;
end
else
begin
mpf.free;
ShowMessage('Îòâåò ñ ñàéòà: '+
copy(gotcha, pos('Your have exceeded', gotcha),
pos('<form', gotcha) - pos('Your have exceeded', gotcha)));
ReadTMTnotice := false;
ifPOST := false;
POST.Free;
exit;
end;
end;
if pos('The service is currently overflooded', gotcha) > 0 then
begin
mpf.free;
ShowMessage('Îòâåò ñ ñàéòà: '+
copy(gotcha, pos('The service is currently overflooded', gotcha),
pos('<form', gotcha) - pos('The service is currently overflooded', gotcha)));
ReadTMTnotice := false;
ifPOST := false;
POST.Free;
exit;
end;
finish := true;
until finish = true;
if SetForm.CheckService.ItemIndex = 0 then
begin
gotcha := copy(gotcha, pos('Result:', gotcha), 200);
num := IntToStr(uintocheck);
status := EngToRus(copy(gotcha, pos('"> ',gotcha)+3, pos('</b',gotcha)-pos('"> ',gotcha)-3));
end
else
if SetForm.CheckService.ItemIndex = 1 then
begin
gotcha := copy(gotcha, pos('red !important;"><center>', gotcha), 100);
num := IntToStr(uintocheck);
status := (copy(gotcha, pos(';"><center>',gotcha)+12, pos('</center>',gotcha)-pos(';"><center>',gotcha)-12));
if pos('íåâèäèìîñò', status) > 0 then status := 'Íåâèäèìûé'
else if pos('Â ñåòè', status) > 0 then status := 'Â ñåòè'
else if pos('Íå â ñåòè', status) > 0 then status := 'Îòêëþ÷åí';
end;
gdt := FormatDateTime('hh:nn:ss dd.mm.yyyy', now);
found := false;
for i := 2 to glst.Count-1 do
if pos(num, glst[i]) = 1 then
begin
glst[i] := num+'|'+status+'|'+gdt;
found := true;
end;
if (StrToInt(num) > 0) and (found = false) then glst.Add(num+'|'+status+'|'+gdt);
glst.SaveToFile(string(RQ_GetUserPath + stname));
mpf.Free;
ReadTMTnotice := false;
ifPOST := false;
POST.Free;
except
on E: EIdConnectTimeout do ExceptionProxy(E.Message);
on E: EIdReadTimeout do
begin
ReadTMTnotice := true;
ExceptionProxy(E.Message);
end;
on E: Exception do
begin
if (pos('# 10061', E.Message) > 0) or
(pos('# 10065', E.Message) > 0) or
(pos('# 10054', E.Message) > 0) or
(pos('timeout', E.Message) > 0) then ExceptionProxy(E.Message)
else showmessage(E.Message);
end;
end;
end;
procedure TPOSTThread.Execute;
begin
action := false;
ReadTMTnotice := false;
OnButtonClickEx(-1);
end;
procedure OnButtonClick(iButton: integer);
var
State : TKeyboardState;
begin
case iButton of
0: begin
GetKeyboardState(State);
if (State[vk_Control] and 128) <> 0 then
RQ_SendMsg(765000, 0, AnsiString(IntToStr(RQ_GetChatUIN)))
else
POST := TPOSTThread.Create(False);
end;
1: SetForm.Show;
2: smsg(VersionText);
end;
end;
function pluginFun(data:pointer):pointer; stdcall;
begin
result:=NIL;
if (data=NIL) or (_int_at(data)=0) then exit;
case _byte_at(data,4) of
PM_EVENT:
case _byte_at(data,5) of
// PE_PROPERTIES_CHANGED: smsg(its(_int_at(data,6)){ + ' | ' + _istring_at(data,7)});
PE_INITIALIZE:
begin
RQ__ParseInitString(data, callback, vapiVersion, andrqPath, userPath, currentUIN);
if RQ_GetRnQVersion < 1074 then
begin
MessageBox(0, PChar('Èçâèíèòå, íî ýòîò ïëàãèí íå ìîæåò ðàáîòàòü ñ äàííîé âåðñèåé RnQ.'+
#13'Ïîæàëóéñòà, îáíîâèòå ïðîãðàììó è ñíèìèòå ãàëêó ñ ïëàãèíà InvisCheck.dll '), PChar('InvisChecker'), MB_ICONHAND);
Exit;
end;
IdH := TIdHTTP.Create(nil);
IdH.ReadTimeout := 3000;
IdH.AllowCookies := true;
IdH.HandleRedirects := true;
IdH.MaxAuthRetries := 3;
IdH.ProxyParams.BasicAuthentication := false;
IdH.Request.Accept := 'text/html, */*';
IdH.Request.BasicAuthentication := false;
//data := callStr(ansichar(PM_GET) + ansichar(PG_WINDOW) + ansichar(PW_CHAT));
SetForm := TSetForm.Create(nil);
glst := TStringList.Create;
if fileexists(string(RQ_GetUserPath + stname)) then
begin
glst.LoadFromFile(string(RQ_GetUserPath + stname));
if glst.count > 0 then
try
if pos('|', glst[0]) = 0 then glst[0] := glst[0] + '|';
if SetForm.ExtractWord(1, glst[0], delims) <> '' then
SetForm.YouAreAdded.Checked := StrToBool(SetForm.ExtractWord(1, glst[0], delims));
if SetForm.ExtractWord(2, glst[0], delims) <> '' then
SetForm.ikey.Text := SetForm.ExtractWord(2, glst[0], delims);
if SetForm.ExtractWord(3, glst[0], delims) <> '' then
SetForm.CheckService.ItemIndex := StrToInt(SetForm.ExtractWord(3, glst[0], delims));
except end;
if glst.count > 1 then SetForm.TurnedOn.Checked := StrToBool(glst[1]);
end else
begin
glst.Add('0');
glst.Add('1');
end;
hico1 := TIcon.Create;
hico2 := TIcon.Create;
hico3 := TIcon.Create;
hico4 := TIcon.Create;
hico5 := TIcon.Create;
hico1.Handle := LoadIcon(HInstance, 'ICON_1');
hico2.Handle := LoadIcon(HInstance, 'ICON_2');
hico3.Handle := LoadIcon(HInstance, 'ICON_3');
hico4.Handle := LoadIcon(HInstance, 'ICON_4');
hico5.Handle := LoadIcon(HInstance, 'ICON_5');
ba := RQ_CreateChatButton(@OnButtonClick, hico2.Handle, 'InvisChecker');
SetForm.StartTimer;
result:=str2comm(ansichar(PM_DATA)+_istring(namepl)+_int(APIversion));
end;
PE_PREFERENCES:
begin
SetForm.Show;
end;
PE_FINALIZE:
begin
IdH.Free;
if MegaTimer <> 0 then TimeKillEvent(MegaTimer);
if ba <> 0 then RQ_DeleteChatButton(ba);
if SetForm <> nil then SetForm.Free;
glst.free;
hico1.free;
hico2.free;
hico3.free;
hico4.free;
hico5.free;
end;
end;//case
end;//case
end; // pluginFun
exports
pluginFun;
end.

298
InvisCheck.dproj

@ -0,0 +1,298 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{74D52849-BA31-4BE7-8744-1AE96C334AFF}</ProjectGuid>
<MainSource>InvisCheck.dpr</MainSource>
<Config Condition="'$(Config)'==''">Release</Config>
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
<ProjectVersion>14.4</ProjectVersion>
<Base>True</Base>
<AppType>Library</AppType>
<FrameworkType>None</FrameworkType>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>1</TargetedPlatforms>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='OSX32' and '$(Base)'=='true') or '$(Base_OSX32)'!=''">
<Base_OSX32>true</Base_OSX32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
<Base_Win32>true</Base_Win32>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
<Cfg_1_Win32>true</Cfg_1_Win32>
<CfgParent>Cfg_1</CfgParent>
<Cfg_1>true</Cfg_1>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='OSX32' and '$(Cfg_2)'=='true') or '$(Cfg_2_OSX32)'!=''">
<Cfg_2_OSX32>true</Cfg_2_OSX32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
<Cfg_2_Win32>true</Cfg_2_Win32>
<CfgParent>Cfg_2</CfgParent>
<Cfg_2>true</Cfg_2>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Winapi;Vcl;Vcl.Samples;$(DCC_Namespace)</DCC_Namespace>
<VerInfo_Locale>1049</VerInfo_Locale>
<DCC_StrictVarStrings>false</DCC_StrictVarStrings>
<DCC_DependencyCheckOutputName>InvisCheck.dll</DCC_DependencyCheckOutputName>
<GenDll>true</GenDll>
<DCC_ImageBase>00400000</DCC_ImageBase>
<DCC_Platform>x86</DCC_Platform>
<DCC_UnitSearchPath>$(DELPHI)\Lib\Debug;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
<DCC_UsePackage>vcl;rtl;vclx;indy;dbrtl;vcldb;bdertl;vclie;visualclx;vclshlctrls;dclOfficeXP;tdbf;vclactnband;adortl;vcldbx;visualdbclx;dsnap;dsnapcon;dbexpress;dss;inet;xmlrtl;inetdbbde;inetdbxpress;webdsnap;VclSmp;soaprtl;dbxcds;inetdb;websnap;ibxpress;qrpt;FlatStyle_D5;IndyCore;IndySystem;IndyProtocols;$(DCC_UsePackage)</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_OSX32)'!=''">
<Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns>
</PropertyGroup>
<PropertyGroup Condition="'$(Base_Win32)'!=''">
<Debugger_HostApplication>C:\SpeedProgs\Inet\Chat\RnQ\R&amp;Q.exe</Debugger_HostApplication>
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<Debugger_CWD>C:\SpeedProgs\Inet\Chat\RnQ\plugins</Debugger_CWD>
<DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=0.5.1.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=0.5.1.0;Comments=</VerInfo_Keys>
<VerInfo_MajorVer>0</VerInfo_MajorVer>
<VerInfo_MinorVer>5</VerInfo_MinorVer>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_DLL>true</VerInfo_DLL>
<VerInfo_Release>1</VerInfo_Release>
<Manifest_File>None</Manifest_File>
<DCC_MapFile>3</DCC_MapFile>
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_DebugInformation>false</DCC_DebugInformation>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_DebugInformation>true</DCC_DebugInformation>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Locale>1033</VerInfo_Locale>
<DCC_MapFile>3</DCC_MapFile>
<Manifest_File>None</Manifest_File>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<Manifest_File>None</Manifest_File>
<DCC_MapFile>3</DCC_MapFile>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_Define>DEBUG;EUREKALOG;EUREKALOG_VER6;$(DCC_Define)</DCC_Define>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_OSX32)'!=''">
<Icns_MainIcns>$(BDS)\bin\delphi_PROJECTICNS.icns</Icns_MainIcns>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<DCC_Define>_VER7;$(DCC_Define)</DCC_Define>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="$(MainSource)">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="sform.pas">
<Form>SetForm</Form>
</DCCReference>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<Import Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')" Project="$(BDS)\Bin\CodeGear.Delphi.Targets"/>
<Import Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')" Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj"/>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>VCLApplication</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">InvisCheck.dpr</Source>
</Source>
<Parameters>
<Parameters Name="HostApplication">C:\SpeedProgs\Inet\Chat\RnQ\R&amp;Q.exe</Parameters>
<Parameters Name="DebugCWD">C:\SpeedProgs\Inet\Chat\RnQ\plugins</Parameters>
</Parameters>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1049</VersionInfo>
<VersionInfo Name="CodePage">1251</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName"/>
<VersionInfoKeys Name="FileDescription"/>
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName"/>
<VersionInfoKeys Name="LegalCopyright"/>
<VersionInfoKeys Name="LegalTrademarks"/>
<VersionInfoKeys Name="OriginalFilename"/>
<VersionInfoKeys Name="ProductName"/>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments"/>
</VersionInfoKeys>
<Excluded_Packages>
<Excluded_Packages Name="$(BDSBIN)\dcloffice2k160.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
</Excluded_Packages>
</Delphi.Personality>
<Platforms>
<Platform value="OSX32">False</Platform>
<Platform value="Win32">True</Platform>
<Platform value="Win64">False</Platform>
</Platforms>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
</Project>
<!-- EurekaLog First Line
[Exception Log]
EurekaLog Version=7001
Activate=0
atVCL=1
AutoCrashOperation=2
boHandleSafeCallExceptions=1
boUseMainModuleOptions=1
csoAllowedRenderMethods=64
csoShowWindowsThreads=1
DeleteMapAfterCompile=0
dpJCL=1
edoSendErrorReportChecked=0
edoShowSendErrorReportOption=0
Email Address=""
Email Object=""
Encrypt Password=""
Errors Number=32
Errors Terminate=3
Freeze Timeout=1
idEurekaLog=1
idEurekaLogDetailed=1
idMSClassic=1
idStepsToReproduce=1
loCatchLeaks=0
loEnableMMDebugMode=0
loFreeAllLeaks=1
loHideRTLLeaks=0
loMaxLeaks=0
loOnlyUnderIDE=0
loProcessesSection=1
Output Path=""
ProjectID="{9B39764C-3722-49C3-B2A6-6BBDC15F97A8}"
SMTP From="eurekalog@email.com"
SMTP Host=""
SMTP UserID=""
sndAddDateInFileName=0
sndBugZillaLogin=""
sndBugZillaPort=0
sndBugZillaURL=""
sndFogBugzHost=""
sndFogBugzLogin=""
sndFogBugzPort=0
sndFTPLogin=""
sndFTPPort=0
sndFTPURL=""
sndHTTPPort=0
sndHTTPURL=""
sndMantisLogin=""
sndMantisPort=0
sndMantisURL=""
sndMAPISubject=""
sndMAPITarget=""
sndShellRecepient=""
sndShellSubject=""
sndShowFailureMsg=1
sndSMAPISubject=""
sndSMAPITarget=""
sndSMTPClientFrom="eurekalog@email.com"
sndSMTPClientHost=""
sndSMTPClientLogin=""
sndSMTPClientSubject=""
sndSMTPClientTarget=""
sndSMTPServerFrom="eurekalog@email.com"
sndSMTPServerSubject=""
sndSMTPServerTarget=""
soActCtlsControlClass=1
soActCtlsControlText=1
soActCtlsFormClass=1
soActCtlsFormText=1
soAppCompilationDate=1
soAppName=1
soAppParameters=1
soAppStartDate=1
soAppUpTime=1
soAppVersionNumber=1
soCmpDisplayDPI=1
soCmpDisplayMode=1
soCmpFreeDisk=1
soCmpFreeMemory=1
soCmpName=1
soCmpPrinter=1
soCmpProcessor=1
soCmpSysUpTime=1
soCmpTotalDisk=1
soCmpTotalMemory=1
soCmpVideoCard=1
soCustomData=1
soExcCount=1
soExcDate=1
soExcModuleName=1
soExcModuleVersion=1
soExcNote=1
soExcStatus=1
soNetDHCP=1
soNetDNS1=1
soNetDNS2=1
soNetGateway=1
soNetIP=1
soNetSubmask=1
soOSBuildN=1
soOSCharset=1
soOSLanguage=1
soOSType=1
soOSUpdate=1
soUserCompany=1
soUserID=1
soUserPrivileges=1
TextsCollection=""
TrakerUser=""
WebPort=0
WebURL=""
EurekaLog Last Line -->

108
InvisCheck.dproj.2007

@ -0,0 +1,108 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{74D52849-BA31-4BE7-8744-1AE96C334AFF}</ProjectGuid>
<MainSource>InvisCheck.dpr</MainSource>
<Config Condition="'$(Config)'==''">Debug</Config>
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
<Cfg_1>true</Cfg_1>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
<Cfg_2>true</Cfg_2>
<CfgParent>Base</CfgParent>
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_DependencyCheckOutputName>InvisCheck.dll</DCC_DependencyCheckOutputName>
<GenDll>true</GenDll>
<DCC_RangeChecking>true</DCC_RangeChecking>
<DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
<DCC_ImageBase>00400000</DCC_ImageBase>
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
<DCC_Platform>x86</DCC_Platform>
<DCC_UnitSearchPath>$(DELPHI)\Lib\Debug;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
<DCC_UsePackage>vcl;rtl;vclx;indy;dbrtl;vcldb;bdertl;vclie;visualclx;vclshlctrls;dclOfficeXP;tdbf;vclactnband;adortl;vcldbx;visualdbclx;dsnap;dsnapcon;dbexpress;dss;inet;xmlrtl;inetdbbde;inetdbxpress;webdsnap;VclSmp;soaprtl;dbxcds;inetdb;websnap;ibxpress;qrpt;FlatStyle_D5;IndyCore;IndySystem;IndyProtocols</DCC_UsePackage>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1)'!=''">
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_DebugInformation>false</DCC_DebugInformation>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2)'!=''">
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
</PropertyGroup>
<ItemGroup>
<DelphiCompile Include="InvisCheck.dpr">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="CallExec.pas"/>
<DCCReference Include="sform.pas">
<Form>SetForm</Form>
</DCCReference>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>VCLApplication</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality>
<Source>
<Source Name="MainSource">InvisCheck.dpr</Source>
</Source>
<Parameters>
<Parameters Name="HostApplication">C:\Progs\Inet\Chat\R&amp;Q 1100\plugins\RnQEyeSrc\TestRnQ\R&amp;Q.exe</Parameters>
<Parameters Name="UseLauncher">False</Parameters>
<Parameters Name="DebugCWD">C:\Progs\Inet\Chat\R&amp;Q 1100\plugins\RnQEyeSrc\TestRnQ\plugins</Parameters>
<Parameters Name="LoadAllSymbols">True</Parameters>
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
</Parameters>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1049</VersionInfo>
<VersionInfo Name="CodePage">1251</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName"/>
<VersionInfoKeys Name="FileDescription"/>
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName"/>
<VersionInfoKeys Name="LegalCopyright"/>
<VersionInfoKeys Name="LegalTrademarks"/>
<VersionInfoKeys Name="OriginalFilename"/>
<VersionInfoKeys Name="ProductName"/>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments"/>
</VersionInfoKeys>
</Delphi.Personality>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
</Project>

BIN
icons.res

Binary file not shown.

185
plugin.pas

@ -0,0 +1,185 @@
Unit plugin;
interface
const
APIversion = 5;
// whatlist
PL_ROASTER =1;
PL_VISIBLELIST =2;
PL_INVISIBLELIST =3;
PL_TEMPVISIBLELIST =4;
PL_IGNORELIST =5;
PL_DB =6;
PL_NIL =7; // not in list
// connection state
PCS_DISCONNECTED =1;
PCS_CONNECTED =2;
PCS_CONNECTING =3;
// whatwindow
PW_ROASTER =1;
PW_CHAT =2;
PW_PREFERENCES =3;
// status
PS_ONLINE =0;
PS_OCCUPIED =1;
PS_DND =2;
PS_NA =3;
PS_AWAY =4;
PS_F4C =5; // free for chat
PS_OFFLINE =6;
PS_UNKNOWN =7;
PS_EVIL =8;
PS_DEPRESSION =9;
// visibility
PV_INVISIBLE =0;
PV_PRIVACY =1;
PV_NORMAL =2;
PV_ALL =3;
PV_CL =4;
// messages
PM_GET =1; // asking data
PM_DATA =2; // posting datas (reply)
PM_EVENT =3; // event notification
PM_ABORT =4; // abort event (reply)
PM_CMD =5; // exec command
PM_ACK =6; // ack to request (reply)
PM_ERROR =7; // error (reply)
// events
PE_INITIALIZE =01;
PE_FINALIZE =02;
PE_PREFERENCES =03;
PE_CONNECTED =04;
PE_DISCONNECTED =05;
PE_MSG_GOT =06;
PE_MSG_SENT =07;
PE_CONTACTS_GOT =08;
PE_CONTACTS_SENT =09;
PE_URL_GOT =10;
PE_URL_SENT =11;
PE_ADDEDYOU_GOT =12;
PE_ADDEDYOU_SENT =13;
PE_AUTHREQ_GOT =14;
PE_AUTHREQ_SENT =15;
PE_AUTH_GOT =16;
PE_AUTH_SENT =17;
PE_AUTHDENIED_GOT =18;
PE_AUTHDENIED_SENT =19;
PE_GCARD_GOT =20;
PE_GCARD_SENT =21;
PE_AUTOMSG_GOT =22;
PE_AUTOMSG_SENT =23;
PE_AUTOMSG_REQ_GOT =24;
PE_AUTOMSG_REQ_SENT =25;
PE_EMAILEXP_GOT =26;
PE_EMAILEXP_SENT =27;
PE_LIST_ADD =28;
PE_LIST_REMOVE =29;
PE_STATUS_CHANGED =30;
PE_USERINFO_CHANGED =31;
PE_VISIBILITY_CHANGED =32;
PE_WEBPAGER_GOT =33;
PE_WEBPAGER_SENT =34;
PE_FROM_MIRABILIS =35;
PE_UPDATE_INFO =36;
PE_XSTATUSMSG_SENT = 223;
PE_XSTATUS_REQ_GOT = 224;
PE_SELECTTAB =50;
PE_DESELECTTAB =51;
PE_CLOSETAB =52;
PE_QUIT =255;
// get