收集的库

#include "stdafx.h"


#include "xu.h"
#include <Tlhelp32.h>
#include <fstream>


/*
#define GETLASTERRSTR() do{
LPVOID lpmsg;
DWORD _errcode = ::GetLastError();
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
            NULL,
_errcode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)lpmsg,
0,
NULL);


  AfxMessageBox(CString((LPTSTR)lpmsg));
LocalFree(lpmsg);
 } while (0);

*/


static void _SendInput(UINT cInputs,LPINPUT pInputs,int cbSize)
{
if (0 == ::SendInput(cInputs,pInputs,cbSize)){

LPVOID lpmsg = NULL;
DWORD errcode = ::GetLastError();
if (0 == errcode) return;
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
errcode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpmsg,
0,
NULL);


AfxMessageBox(CString((LPTSTR)lpmsg));
LocalFree(lpmsg);
}
}




namespace xu{


//Unicode char To ANSI char
std::string CStrToStr(const wchar_t *pstr)
{
char*  pElementText;
int    iTextLen;
// wide char to multi char
iTextLen = WideCharToMultiByte( CP_ACP,
0,
pstr,
-1,
NULL,
0,
NULL,
NULL );


pElementText = new char[iTextLen + 1];
memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );

::WideCharToMultiByte( CP_ACP,
0,
pstr,
-1,
pElementText,
iTextLen,
NULL,
NULL );


std::string str(pElementText);
delete[] pElementText;

return str;
}


//Unicode char To ANSI char
std::string CStrToStr(CString &str)
{
return CStrToStr(str.GetBuffer(0));
//return "";
}


void mouse_rclick()
{
MOUSEINPUT mi = {0,0,0,0,0,NULL};

INPUT Input = {INPUT_MOUSE};
//Input.mi = mi;
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;
SendInput(1,&Input,sizeof(Input));

Sleep(100);


Input.mi.dwFlags = MOUSEEVENTF_RIGHTUP;
SendInput(1,&Input,sizeof(Input));


Sleep(100);
}


void mouse_click()
{
MOUSEINPUT mi = {0,0,0,0,0,NULL};

INPUT Input = {INPUT_MOUSE};
//Input.mi = mi;
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
SendInput(1,&Input,sizeof(Input));

Sleep(100);


Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1,&Input,sizeof(Input));


Sleep(100);
}


void button_click(HWND hwnd)
{
RECT rec;
::GetWindowRect(hwnd,&rec);


::SetCursorPos((rec.left+rec.right)/2,(rec.bottom+rec.top)/2);
mouse_click();
Sleep(100);
}


void mouse_move(int x,int y)
{
//SetCursorPos(x,y);
//Sleep(2000);
/* mouse event, move absolutely*/
INPUT inputs={0};
inputs.type=INPUT_MOUSE;
inputs.mi.dx=100;
inputs.mi.dy=200;
inputs.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;
SendInput(1, &inputs, sizeof(inputs));
}


void CopyTextDataToClipBoard(const char* pszData, const int nDataLen)
{
if (::OpenClipboard(NULL)){
::EmptyClipboard();
HGLOBAL hmem = ::GlobalAlloc(GHND,nDataLen+1);
char *pmem = (char *)::GlobalLock(hmem);
memcpy(pmem,pszData,nDataLen+1);
::GlobalUnlock(hmem);
::SetClipboardData(CF_TEXT,hmem);
::CloseClipboard();
::GlobalFree(hmem);
}
}


BOOL GetTextDataFromClipBoard(std::string &str)
{
if (::OpenClipboard(NULL)){
//获取剪贴板数据
HGLOBAL hmem = ::GetClipboardData(CF_TEXT);
if (NULL != hmem){
char *lpstr = (char *)::GlobalLock(hmem);
if (NULL != lpstr){
//MessageBox(0, lpStr, "", 0);
str = lpstr;
::GlobalUnlock(hmem);
}
else{
return FALSE;
}
}
else{
return FALSE;
}
::CloseClipboard();
}
return TRUE;
}




CString GetProcessSnapFromSYS()
{
HANDLE hProc = NULL;
PROCESSENTRY32 pe32 = {0};
CString str;
//做一个系统中当前进程列表的快照
hProc = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); 


if (INVALID_HANDLE_VALUE == hProc)
return L"";


pe32.dwSize = sizeof(PROCESSENTRY32);


if (::Process32First(hProc,&pe32)){


do{
HANDLE hp = ::OpenProcess(PROCESS_TERMINATE | PROCESS_ALL_ACCESS,
 FALSE,
 pe32.th32DefaultHeapID);


if (!hp){
CString cstr;
cstr.Format(L"%d\n",pe32.th32ProcessID);
str += cstr;
}


}while (::Process32Next(hProc,&pe32));
}


::CloseHandle(hProc);
return str;
}




//为方便使用,下面这个函数包装了前两个函数。
void SendKeys(CString msg)
{
short vk;
BOOL shift;
USES_CONVERSION;
wchar_t* data = T2W(msg.GetBuffer(0));
int len = wcslen(data);
for(int i=0;i<len;i++){
if (data[i]>=0 && data[i]<256){ //ascii字符
vk = VkKeyScanW(data[i]);


if (vk == -1){
SendUnicode(data[i]);
}
else{
if (vk < 0){
vk = ~vk + 0x1;
}


shift = vk >> 8 & 0x1;


if (GetKeyState(VK_CAPITAL) & 0x1){
if (data[i]>='a' && data[i]<='z' || data[i]>='A' && data[i]<='Z'){
shift = !shift;
}
}
SendAscii(vk & 0xFF, shift);
}
}
else{ //unicode字符
SendUnicode(data[i]);
}
}
}


void SendString(HWND hWnd,WCHAR * str,int len)
{
int i;
if(hWnd){
for(i=0;i<len;i++){
::SendMessage(hWnd, WM_IME_CHAR, str[i], 0);
}
::PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0); //发送回车键
}
}




void SendString(HWND hWnd,char * str,int len)
{
int i;
BYTE ch;
if(hWnd){
for(i=0;i<len;){
ch=(BYTE)str[i];
if(IsDBCSLeadByte(ch)){
i++;
::SendMessage(hWnd,WM_IME_CHAR,MAKEWORD((BYTE)str[i],ch),0);
i++;
}
else{
::SendMessage(hWnd, WM_IME_CHAR, (WORD)ch, 0);
i++;
}
}
::PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0); //发送回车键
}
}


}


void WriteLog(const char *pName,const char *pData,bool bEnd,bool app)
{
std::ofstream outf(pName,app? std::ios::app : std::ios::out);


outf<<pData<<bEnd? "\n":" ";


outf.close();
}




void SendAscii(wchar_t data, BOOL shift)
{
INPUT input[2];
memset(input, 0, 2 * sizeof(INPUT));


if (shift){
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_SHIFT;
_SendInput(1, input, sizeof(INPUT));
}


input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = data;


input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = data;
input[1].ki.dwFlags = KEYEVENTF_KEYUP;
_SendInput(2, input, sizeof(INPUT));


if (shift){
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = VK_SHIFT;
input[0].ki.dwFlags = KEYEVENTF_KEYUP;
_SendInput(1, input, sizeof(INPUT));  
}
}


void SendUnicode(wchar_t data)
{
INPUT input[2];
memset(input, 0, 2 * sizeof(INPUT));


input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = 0;
input[0].ki.wScan = data;
input[0].ki.dwFlags = KEYEVENTF_UNICODE;


input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = 0;
input[1].ki.wScan = data;
input[1].ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_UNICODE;


_SendInput(2, input, sizeof(INPUT));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资料收集是一个集资料收集,网页收集,和附件收集为一体的工具。使用本工具,能够把平时您零乱的资料、图片、程序等都存放在一起,统一管理起来。方便您的查找和使用。 资料收集的最大特色是抓取网页内容,可以将网页或是网页中的部分文本、链接和图片、Flash等多种资源,分门别类地收集到资料中; 并且可以保存几乎所有的格式的文件到附件中去。允许通过定制IE的右键菜单来方便采集的过程,除了使用右键, 您还可以在网页中选取想要的部分,拖到采集窗里让资料收集;您可以在原有的浏览器中采集而不用打开任何程序, 大大节省了系统资源。 书的编辑区采用用户熟悉的目录树结构,使得用户更容易操作。抓取的资源可以自动或手动地加入到不同的节点中; 可以直接在编辑区内编辑纯文本、格式文本。文本区不受大小限制,支持段落重排和gb、big5码转换; 书中的任何一个节点都支持加密,方便个人和共享用户的使用; 数据的查询支持多达三种的高级搜索方式,使您能更快的定位所需要的内容。 可以象Winamp、QICQ2000一样更换皮肤,资料提供皮肤下载。只要您来到我们的网站下载就行。 资料收集是一个绿色软件,您只要解压缩到某一个目录下就可以使用了,当您认为不想再使用时,直接把它所在的目录删除掉就行了。不会在系统中留下任何的垃圾。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值