Friday 2 | 02:05:PM
Code:
program Project2;
{$APPTYPE CONSOLE}
uses
Windows,Messages;
function StrLCopy(Dest: PChar; const Source: PChar; MaxLen: Cardinal): PChar; assembler;
asm
PUSH EDI
PUSH ESI
PUSH EBX
MOV ESI,EAX
MOV EDI,EDX
MOV EBX,ECX
XOR AL,AL
TEST ECX,ECX
JZ @@1
REPNE SCASB
JNE @@1
INC ECX
@@1: SUB EBX,ECX
MOV EDI,ESI
MOV ESI,EDX
MOV EDX,EDI
MOV ECX,EBX
SHR ECX,2
REP MOVSD
MOV ECX,EBX
AND ECX,3
REP MOVSB
STOSB
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
end;
function StrPCopy(Dest: PChar; const Source: string): PChar;
begin
Result := StrLCopy(Dest, PChar(Source), Length(Source));
end;
Procedure ModifyClipboardData(MyString : String);
VAR
DataHan : THandle;
P : Pointer;
Begin
OpenClipboard(0);
EmptyClipboard;
DataHan := GlobalAlloc(GHND, Length(MyString)+ 1);
P := GlobalLock(DataHan);
StrPCopy(P, MyString);
GlobalUnlock(DataHan);
Windows.SetClipboardData(CF_TEXT, DataHan);
CloseClipboard;
End;
Function StrToInt(Data : string) : Integer;
Begin
Val(Data,Result,Result);
end;
VAR
TInfo : TAGGUITHREADINFO;
Buffer : String;
iDelay : Integer;
sMessage :String;
begin
sMessage := 'HELLO WORLD';
iDelay := 1000;
IF iDelay=0 Then iDelay:=10000;
IF lstrlenA(PAnsiChar(sMessage))<1 then ExitProcess(0);
While True Do
Begin
ModifyClipboardData(sMessage);
ZeroMemory(@TInfo,SizeOf(TInfo));
TInfo.cbSize := SizeOf(TAGGUITHREADINFO);
Windows.GetGUIThreadInfo(0,TInfo);
SetLength(Buffer, 255);
GetClassNameA(TInfo.hwndFocus, PAnsiChar(Buffer), 255);
IF Copy(Buffer,1,Length('TChatRichEdit'))='TChatRichEdit' then
Begin
keybd_event(VK_CONTROL,0,0,0);
keybd_event(ord('V'),0,0,0);
keybd_event(ord('V'),0,KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
end;
Sleep(iDelay);
End;
ExitProcess(0);
end.