获取到windows任务管理器的项

#include< windows.h >
#include< commctrl.h >




void main()


{


HWND hwnd,hwnd1,hwnd2,hwnd3;
int iItem=0;
LVITEM lvitem, *plvitem;
char ItemBuf[512],*pItem;
DWORD PID;
HANDLE hProcess;


hwnd=FindWindow("Progman","Program Manager");
hwnd1=FindWindowEx(hwnd,0,"SHELLDLL_DefView",0);
hwnd2=FindWindowEx(hwnd1,0,"SysListView32",0);
::ShowWindow(hwnd2,SW_SHOWNORMAL);


hwnd2=FindWindow("Shell_TrayWnd",0);
::ShowWindow(hwnd2,SW_SHOWNORMAL);


hwnd=FindWindow("#32770","Windows 任务管理器");
hwnd=FindWindowEx(hwnd,0,"#32770",0);
hwnd=FindWindowEx(hwnd,0,"SysListView32",0);


if (!hwnd)


MessageBox(NULL,"[Windows 任务管理器] 尚未启动!","错误!",NULL);


else
{
iItem=SendMessage(hwnd,LVM_GETNEXTITEM,-1,LVNI_SELECTED);
if (iItem==-1)


MessageBox(NULL,"没有指定目标进程 !","错误!",NULL);


else
{
//itoa(iItem,temp,10);
//MessageBox(NULL,temp,"iItem",NULL);
GetWindowThreadProcessId(hwnd, &PID);


hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
if (!hProcess)


MessageBox(NULL,"获取进程句柄操作失败!","错误!",NULL);


else
{
plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);
pItem=(char*)VirtualAllocEx(hProcess, NULL, 512, MEM_COMMIT, PAGE_READWRITE);
if ((!plvitem)||(!pItem))


MessageBox(NULL,"无法分配内存!","错误!",NULL);


else
{
lvitem.cchTextMax=512;
//lvitem.iSubItem=1;//PID
lvitem.iSubItem=0; //ProcessName
lvitem.pszText=pItem;
WriteProcessMemory(hProcess, plvitem, &lvitem, sizeof(LVITEM), NULL);
SendMessage(hwnd, LVM_GETITEMTEXT, (WPARAM)iItem, (LPARAM)plvitem);
ReadProcessMemory(hProcess, pItem, ItemBuf, 512, NULL);


MessageBox(NULL,ItemBuf,"ItemBuf",NULL);
}
}
}
}


//释放内存
CloseHandle(hwnd);
CloseHandle(hProcess);
VirtualFreeEx(hProcess, plvitem, 0, MEM_RELEASE);
VirtualFreeEx(hProcess, pItem, 0, MEM_RELEASE);


//return 0;
}




把桌面图标围城一个圆圈


void C***::OnSetDeskIcon() 
{
HWND  hwndParent = ::FindWindow( "Progman", "Program Manager" ); 
HWND  hwndSHELLDLL_DefView = ::FindWindowEx( hwndParent, NULL, "SHELLDLL_DefView", NULL ); 
HWND  hwndSysListView32 = ::FindWindowEx( hwndSHELLDLL_DefView, NULL, "SysListView32", "FolderView" );


int Nm = ListView_GetItemCount( hwndSysListView32 );


int sNm = 0;
if( Nm >= 10 )
{
sNm = 10;
}else{
sNm = Nm;
}


for( int i = 0; i < sNm; i++ )
{
int x = 400 + 150*cos( i*36*3.1415926/180 );
int y = 400 + 150*sin( i*36*3.1415926/180 );


::SendMessage( hwndSysListView32,   LVM_SETITEMPOSITION, i,   MAKELPARAM( x,y));
}
ListView_RedrawItems(hwndSysListView32, 0, ListView_GetItemCount(hwndSysListView32) - 1);
::UpdateWindow(hwndSysListView32);
}



获取到桌面图标


void C***::OnSetDeskIcon()
{
HWND hDestTop; 
    hDestTop = ::FindWindow("progman", NULL); 
    hDestTop = ::FindWindowEx(hDestTop, 0, "shelldll_defview", NULL); 
    hDestTop = ::FindWindowEx(hDestTop, 0, "syslistview32", NULL); 

int count=(int)::SendMessage( hDestTop, LVM_GETITEMCOUNT, 0, 0);


    LVITEM lvi, *_lvi;
char item[512], subitem[512];
char *_item, *_subitem;
unsigned long pid;
HANDLE process;

GetWindowThreadProcessId( hDestTop, &pid);
process=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, pid);

_lvi=(LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);
_item=(char*)VirtualAllocEx(process, NULL, 512, MEM_COMMIT, PAGE_READWRITE);
_subitem=(char*)VirtualAllocEx(process, NULL, 512, MEM_COMMIT, PAGE_READWRITE);


RECT  rc;
rc.left = LVIR_ICON;  //这个一定要设定 可以去看MSDN关于LVM_GETITEMRECT的说明
RECT* _rc =(RECT*)VirtualAllocEx( process, NULL, sizeof(RECT), MEM_COMMIT, PAGE_READWRITE); 


lvi.cchTextMax=512;

for( int i=0; i< 10; i++) {


lvi.iSubItem=0;
lvi.pszText=_item;
WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL);
::SendMessage( hDestTop, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_lvi);

lvi.iSubItem=1;
lvi.pszText=_subitem;
WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL);
::SendMessage( hDestTop, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_lvi);

::WriteProcessMemory( process, _rc, &rc, sizeof(rc), NULL);
::SendMessage( hDestTop, LVM_GETITEMRECT, (WPARAM)i, (LPARAM)_rc);


ReadProcessMemory(process, _item, item, 512, NULL);
ReadProcessMemory(process, _subitem, subitem, 512, NULL);



ReadProcessMemory(process, _rc, &rc, sizeof(rc), NULL);
CString str;
str.Format("LF:%d TP:%d RT:%d BT:%d", rc.left,rc.top,rc.right,rc.bottom);
AfxMessageBox(str);


str.Format("%s - %s\n", item, subitem);
AfxMessageBox( str );
}

VirtualFreeEx(process, _lvi, 0, MEM_RELEASE);
VirtualFreeEx(process, _item, 0, MEM_RELEASE);
VirtualFreeEx(process, _subitem, 0, MEM_RELEASE);
VirtualFreeEx(process, _rc, 0, MEM_RELEASE);


CloseHandle( process );
}


屏幕上下移动 


HWND pdesk=GetDesktopWindow();//桌面句柄,可理解为指向桌面的指针


//ScrollWindow(pdesk,-100, 0, NULL, NULL);//向左移动100像素
/*for(int i=0;i<50;i++)
{
    ScrollWindow(pdesk, (i+10), 0, NULL, NULL);//向右移动100像素
  Sleep(30);
}


for(int j=0;j<50;j++)
{
  ScrollWindow(pdesk, -(j+10), 0, NULL, NULL);//向右移动100像素
  Sleep(30);
}
for(int k=0;k<50;k++)
{
   ScrollWindow(pdesk, 0, (k+10),NULL, NULL);//向上移动100像素
}*



SDK工具栏和状态栏:

hWndStatus=CreateWindowEx(0,STATUSCLASSNAME,(LPCWSTR)"",WS_CHILD|WS_BORDER|WS_VISIBLE,-100,-100,10,10,hWnd,(HMENU)100,hInst,NULL);  
        if(!hWndStatus)  
        MessageBox(hWnd,TEXT("can't create statusbar!"),TEXT("error_notify"),MB_OK);  
        SendMessage(hWndStatus,SB_SETPARTS,(WPARAM)nCount,(LPARAM)array);  
        SendMessage(hWndStatus,SB_SETTEXT,(LPARAM)1,(WPARAM)TEXT("I am status bar"));  
        SendMessage(hWndStatus,SB_SETTEXT,(LPARAM)2,(WPARAM)TEXT("by yiruirui"));  */


hWndTool=CreateWindowEx(0,TOOLBARCLASSNAME,NULL,WS_CHILD|WS_VISIBLE|TBSTYLE_TOOLTIPS,0,0,0,0,hWnd,(HMENU)1111,hInst,NULL);  
        SendMessage(hWndTool,TB_BUTTONSTRUCTSIZE,(WPARAM)sizeof(TBBUTTON),0);  


tbab.hInst=HINST_COMMCTRL;
        tbab.nID=IDB_STD_SMALL_COLOR;  
        if(SendMessage(hWndTool,TB_ADDBITMAP,1,(LPARAM)&tbab)==-1)  
            MessageBox(hWnd,TEXT("失败"),TEXT("创建"),0);


ZeroMemory(tbb,sizeof(tbb));  
        tbb[0].iBitmap=STD_HELP;  
        tbb[0].fsState=TBSTATE_CHECKED;  
        tbb[0].fsStyle=TBSTYLE_BUTTON;  
        tbb[0].idCommand=ID_FILE_NEW;  
        tbb[0].iString=(INT_PTR)"1";  
        tbb[1].iBitmap=STD_FILEOPEN;  
        tbb[1].fsState=TBSTATE_ENABLED;  
        tbb[1].fsStyle=TBSTYLE_BUTTON;  
        tbb[1].idCommand=ID_FILE_OPEN;  
        tbb[1].iString=(INT_PTR)"4";  
        tbb[2].iBitmap=STD_FILESAVE;  
        tbb[2].fsState=TBSTATE_ENABLED;  
        tbb[2].fsStyle=TBSTYLE_BUTTON;  
        tbb[2].idCommand=ID_FILE_SAVEAS;  
        tbb[2].iString=(INT_PTR)"7";
  
        SendMessage(hWndTool,TB_ADDBUTTONS,sizeof(tbb)/sizeof(TBBUTTON),(LPARAM)&tbb);  
        SendMessage(hWndTool,TB_SETBUTTONSIZE,0,(LPARAM)MAKELONG(20,5));  
        SendMessage(hWndTool,TB_AUTOSIZE,0,0);  
        return 0 ;  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值