隱藏任務欄圖標
2012-10-12 10:01:31| 分类:
Delphi
| 标签:
|举报
|字号大中小 订阅
//轉
#include <atlbase.h>
#include <atlconv.h>
#include <CommCtrl.h>
void HideWindow(HWND h, BOOL bHide)
{
ShowWindow(h, bHide? SW_HIDE:SW_SHOW);
}
void HideTrayIcon(char szIcon[],BOOL show)
{
HWND hWnd,hWndPaper;
unsigned long lngPID;
long lngButtons;
HANDLE hProcess;
LPVOID lngAddress;
long lngHwndAdr,lngHwnd;
char strBuff[1024]={0};
TBBUTTON tbButton;
hWnd = FindWindow("Shell_TrayWnd", NULL);
hWnd = FindWindowEx(hWnd, 0, "TrayNotifyWnd", NULL);
hWndPaper = FindWindowEx(hWnd, 0, "SysPager", NULL);
if(!hWndPaper)
hWnd = FindWindowEx(hWnd, 0, "ToolbarWindow32", NULL);
else
hWnd = FindWindowEx(hWndPaper, 0, "ToolbarWindow32", NULL);
GetWindowThreadProcessId(hWnd, &lngPID);
hProcess = OpenProcess(PROCESS_ALL_ACCESS|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, 0, lngPID);
lngAddress = VirtualAllocEx(hProcess, 0, 0x4096, MEM_COMMIT, PAGE_READWRITE);
lngButtons = SendMessage(hWnd, TB_BUTTONCOUNT, 0, 0);
for(int i=0 ;i<lngButtons;i++)
{
SendMessage(hWnd,TB_GETBUTTON, i, long(lngAddress));
ReadProcessMemory(hProcess, LPVOID(long(lngAddress)), &tbButton, sizeof(tbButton),0);
ReadProcessMemory(hProcess, LPVOID(tbButton.iString), strBuff, 1024, 0);
ReadProcessMemory(hProcess, LPVOID(tbButton.dwData),&lngHwndAdr,4,0);
ReadProcessMemory(hProcess, LPVOID(lngHwndAdr),&lngHwnd, 4,0);
USES_CONVERSION;
char *str = OLE2T((LPOLESTR)(strBuff));
if(strstr(str,szIcon))
{
SendMessage(hWnd,TB_HIDEBUTTON, tbButton.idCommand, MAKELONG (show, 0));
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
break;
}
}
VirtualFreeEx( hProcess, lngAddress, 0X4096, MEM_RELEASE);
CloseHandle(hProcess);
}
int main(int argc, char* argv[])
{
HideWindow(FindWindow(0, "TM2009"), TRUE);
HideTrayIcon("TM", TRUE);
for (int i=0; i<5; i++)
{
printf("%dS restore。。。\r\n", 5-i);
Sleep(1000);
}
HideWindow(FindWindow(0, "TM2009"), FALSE);
HideTrayIcon("TM", FALSE);
return 0;
}
评论这张
转发至微博
转发至微博
评论