??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产成人久久综合野外,伊人伊成久久人综合网777,久久大香香蕉国产http://www.shnenglu.com/lovelypig/category/1219.html代码是咒?我是法?/description>zh-cnMon, 27 Oct 2008 12:10:19 GMTMon, 27 Oct 2008 12:10:19 GMT60100行代码去除QQq告http://www.shnenglu.com/lovelypig/archive/2008/10/26/65130.htmlSun, 26 Oct 2008 12:18:00 GMThttp://www.shnenglu.com/lovelypig/archive/2008/10/26/65130.htmlhttp://www.shnenglu.com/lovelypig/comments/65130.htmlhttp://www.shnenglu.com/lovelypig/archive/2008/10/26/65130.html#Feedback4http://www.shnenglu.com/lovelypig/comments/commentRss/65130.htmlhttp://www.shnenglu.com/lovelypig/services/trackbacks/65130.htmlZ么写q个: 
     1Q像我这么爱q净的hQ当然不能容忍和MM聊天的时候,看到一个内广告在上面一闪一闪,q不引诱老纳么;
     2Qؓ什么不用其它外挂?珊瑚虫已SQ再没用q其它。现有的外挂实现了一些我不想要的功能Q看IP也没必要Q聊天的都是熟h。另外,不知道它做了些什么事情;
     3Q打发这个无聊的周末?br>
怎样实现Q?br>     1Q万能的HOOK

现在用到的是全局的SHELL HOOKQHook的是H口创徏完成的消息;

    g_hShellHook = SetWindowsHookEx( WH_SHELL,
                (HOOKPROC)ShellHook,
                g_hInstance,
                
0);

 ShellHook 的实现如?

static LRESULT CALLBACK ShellHook(UINT nCode, WPARAM wParam, LPARAM lParam)
{
    
if(nCode < 0)
        
goto CallOrg;
    
    
if( HSHELL_WINDOWCREATED == nCode )
    
{
        
if!isQQWnd( (HWND)wParam ) )
            
goto CallOrg;
        
        EnumChildWindows( (HWND)wParam, EnumChildProc, (LPARAM)
0 );
    }

    
CallOrg:
    
return CallNextHookEx( g_hShellHook, nCode, wParam, lParam);
}
 


在收到窗口创建后的消息时Q就判断q个H口是不是QQ?q里用到?GetWindowThreadProcessId Q它q回H口相关的进EID

BOOL isQQWnd(HWND hWnd)
{
    
if( g_pContext == NULL )
        
return FALSE;

    
if( g_dwQQProcessID == 0 )
        g_dwQQProcessID 
= GetQQProcessID();
    
    DWORD dwWndProcessID;
    
if( GetWindowThreadProcessId( hWnd, &dwWndProcessID ) == 0 )
        
return FALSE;
    
    
return dwWndProcessID == g_dwQQProcessID;

}


然后枚D它的子窗口,看它的子H口有没有广告控Ӟ有的话就l子控g发送个WM_CLOSE的消?

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam  )
{
    DWORD dwID 
= GetDlgCtrlID( hwnd );
    
if( dwID == 0x3e9 )
    
{
        HWND hPrarent 
= GetParent( hwnd );
        PostMessage(hwnd, WM_CLOSE, 
00 );
        Sleep( 
10 );
        PostMessage(hPrarent, WM_PAINT, 
00 );
    }

    
else if( dwID == 0x643f )
    
{
        PostMessage(hwnd, WM_CLOSE, 
00 );
    }


    
return TRUE;
}

其中的两个硬~码是用 spy++ 分析出来的,可能因ؓ版本的不同,会有差异。所以我不确定能不能关闭其它版本的QQq告。我使用的版本是QQ2008贺岁版?br>
--------------------------------------------------------------------------

后记:
   管实现的技术很?但还是花了我大半天的旉. 写完之后觉得枚D子窗口的方式太低? 或者还有其它高效点的方式。另外还有全局钩子,可能没有必要。如果下午周末持l无聊,我会试改进一下?br>
   QQ的聊天对话框很简?不像MSN的对话框,铁板一?用spy++啥都看不?但是可以?AccExplorer 分析.惛_MSN的对话框上加点东西进去,实现h很困难。对q方面有研究的同学不妨与我讨Z下实玎ͼ一起学习、进步?br>      
   代码的行数没敎ͼ有效代码估计也就百把行吧Q呵呵,我承认我是标题党?br>
?   源代?+ bin



2008-10-26 20:18 发表评论
]]>
搜烦内存取得QQLhttp://www.shnenglu.com/lovelypig/archive/2006/12/13/16347.htmlTue, 12 Dec 2006 16:36:00 GMThttp://www.shnenglu.com/lovelypig/archive/2006/12/13/16347.htmlhttp://www.shnenglu.com/lovelypig/comments/16347.htmlhttp://www.shnenglu.com/lovelypig/archive/2006/12/13/16347.html#Feedback6http://www.shnenglu.com/lovelypig/comments/commentRss/16347.htmlhttp://www.shnenglu.com/lovelypig/services/trackbacks/16347.htmlq样的帖?不知道可不可以放到首?.如果不行,ȝ理员清? 谢谢.

HANDLE GetQQProcess();
bool  SeachQQNumber(HANDLE _hProcess, string   & strQQ);
int  _tmain( int  argc, _TCHAR *  argv[])
{
    HANDLE hProces 
=  GetQQProcess() ;
    
if (hProces ==  NULL)
        cout 
<< " No run QQ! " << endl;

    
string  strQQ;
    SeachQQNumber(hProces,strQQ);
    cout 
<< strQQ << endl;
    system(
" pause " );
    
return   0 ;
}


bool  SeachQQNumber(HANDLE _hProcess,  string   & strQQ)
{
    SuspendThread(_hProcess);
    
    DWORD dwBaseAddress; 
    MEMORY_BASIC_INFORMATION mbi;
    
char   process_mem[ 4096 =   { 0 } ;
    DWORD number_of_bytes_read 
=   0 ;
    SYSTEM_INFO si; 
    GetSystemInfo(
& si);
    dwBaseAddress 
=  (DWORD)si.lpMinimumApplicationAddress; 
    
while (dwBaseAddress  <  (DWORD)si.lpMaximumApplicationAddress) 
    

        mbi.BaseAddress 
=  (LPVOID)dwBaseAddress; 
        VirtualQueryEx(_hProcess, (LPVOID)dwBaseAddress, 
& mbi,  sizeof (mbi));
        dwBaseAddress 
=  (DWORD)mbi.BaseAddress  +  mbi.RegionSize; 
        
if (mbi.State  !=  MEM_COMMIT  ||  mbi.AllocationProtect  !=  PAGE_READWRITE)  // 跌未分配或不可d的区域?/span>
        
            
continue
        }
 
        
        
// 搜烦
         for (DWORD i  =  (DWORD)mbi.BaseAddress; i  <  dwBaseAddress; i += 4096 )
        
{
            
if ( ! ReadProcessMemory(_hProcess,LPCVOID(i),process_mem, 4096 , & number_of_bytes_read))
                
break ;            
            
for ( int  j = 0 ;j < 4096   -   9 ;j ++ )
            
{
                
if ( ! memcmp( & process_mem[j], " \\MsgEx.db " , 9 ) )
                
{
                    
// printf("begin\n");
                     for ( int  k = j - 1 ; k  >  j - 12 ; k -- )
                    
{
                        
if (process_mem[k]  >=   ' 0 '   &&  process_mem[k]  <=   ' 9 ' )
                        
{
                            strQQ 
=   process_mem[k]  +  strQQ;
                        }

                        
else
                            
break ;
                    }

                    
if (strQQ.length())
                    
{
                        ResumeThread(_hProcess);
                        
return   true ;
                    }
            
                }

            }

        }

    }

    ResumeThread(_hProcess);
    
return   false ;
}



HANDLE GetQQProcess()
{
    PROCESSENTRY32 pe;
    pe.dwSize 
=   sizeof (PROCESSENTRY32);
    HANDLE hSnapshot 
=  CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,  0 );
    Process32First(hSnapshot, 
& pe);
    
do {
        
if ( ! _tcsicmp(pe.szExeFile,_T( " qq.exe " )))
        
{
            CloseHandle(hSnapshot);
            
return  OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID);
        }

        pe.dwSize 
=   sizeof (PROCESSENTRY32);
    }
while (Process32Next(hSnapshot,  & pe));
    CloseHandle(hSnapshot);
    
return  NULL;
}


2006-12-13 00:36 发表评论
]]>
生成的小E序的技?/title><link>http://www.shnenglu.com/lovelypig/archive/2006/09/13/12420.html</link><dc:creator>子</dc:creator><author>子</author><pubDate>Wed, 13 Sep 2006 09:41:00 GMT</pubDate><guid>http://www.shnenglu.com/lovelypig/archive/2006/09/13/12420.html</guid><wfw:comment>http://www.shnenglu.com/lovelypig/comments/12420.html</wfw:comment><comments>http://www.shnenglu.com/lovelypig/archive/2006/09/13/12420.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lovelypig/comments/commentRss/12420.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lovelypig/services/trackbacks/12420.html</trackback:ping><description><![CDATA[A:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">t _tmain(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, _TCHAR</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br /><img id="Codehighlighter1_35_294_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_294_Open_Text.style.display='none'; Codehighlighter1_35_294_Closed_Image.style.display='inline'; Codehighlighter1_35_294_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_35_294_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_294_Closed_Text.style.display='none'; Codehighlighter1_35_294_Open_Image.style.display='inline'; Codehighlighter1_35_294_Open_Text.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_35_294_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/images/dot.gif" /></span><span id="Codehighlighter1_35_294_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> typedef </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> (WINAPI </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">myMsg)( IN HWND hWnd,IN LPCSTR lpText, IN LPCSTR lpCaption,IN UINT uType);<br /><img src="http://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> HANDLE m_hDLL </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ::LoadLibrary(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">user32.dll</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> myMsg msg </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (myMsg)GetProcAddress((HMODULE)m_hDLL, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MessageBoxA</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br /><img src="http://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">msg)(NULL,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TEST</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TEST</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /><img src="http://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> <br /><img src="http://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" /> </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><img src="http://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />B:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> _tmain(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> argc, _TCHAR</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> argv[])<br /><img id="Codehighlighter1_37_86_Open_Image" onclick="this.style.display='none'; Codehighlighter1_37_86_Open_Text.style.display='none'; Codehighlighter1_37_86_Closed_Image.style.display='inline'; Codehighlighter1_37_86_Closed_Text.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_37_86_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_37_86_Closed_Text.style.display='none'; Codehighlighter1_37_86_Open_Image.style.display='inline'; Codehighlighter1_37_86_Open_Text.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_37_86_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.shnenglu.com/images/dot.gif" /></span><span id="Codehighlighter1_37_86_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />    MessageBoxA(NULL,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br /><img src="http://www.shnenglu.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br /><img src="http://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align="top" /></span></div><br />A生成的exe 的大?< B<br /><img src ="http://www.shnenglu.com/lovelypig/aggbug/12420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lovelypig/" target="_blank">子</a> 2006-09-13 17:41 <a href="http://www.shnenglu.com/lovelypig/archive/2006/09/13/12420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>q程U程插入,获得其它q程ListCtrl信息http://www.shnenglu.com/lovelypig/archive/2006/06/26/8999.htmlSun, 25 Jun 2006 18:07:00 GMThttp://www.shnenglu.com/lovelypig/archive/2006/06/26/8999.htmlhttp://www.shnenglu.com/lovelypig/comments/8999.htmlhttp://www.shnenglu.com/lovelypig/archive/2006/06/26/8999.html#Feedback0http://www.shnenglu.com/lovelypig/comments/commentRss/8999.htmlhttp://www.shnenglu.com/lovelypig/services/trackbacks/8999.html阅读全文

2006-06-26 02:07 发表评论
]]>
Win32服务控制c?/title><link>http://www.shnenglu.com/lovelypig/archive/2006/04/01/4871.html</link><dc:creator>子</dc:creator><author>子</author><pubDate>Sat, 01 Apr 2006 01:55:00 GMT</pubDate><guid>http://www.shnenglu.com/lovelypig/archive/2006/04/01/4871.html</guid><wfw:comment>http://www.shnenglu.com/lovelypig/comments/4871.html</wfw:comment><comments>http://www.shnenglu.com/lovelypig/archive/2006/04/01/4871.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/lovelypig/comments/commentRss/4871.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lovelypig/services/trackbacks/4871.html</trackback:ping><description><![CDATA[ <p>/**<br />W32Server.h   <br /><a href="/lovelypig">http://www.shnenglu.com/lovelypig</a>  子<br />*/<br />#ifndef  _CW32SERVER_H <br />#define  _CW32SERVER_H <br />#include <windows.h><br />#include <stdio.h></p> <p> </p> <p>class CW32Server<br />{<br /> TCHAR  m_szServerName[MAX_PATH];<br /> SC_HANDLE   m_hService;<br /> SC_HANDLE   m_hScm;<br /> SERVICE_STATUS ServiceStatus;<br /> BYTE  m_cfgBuf[4096];<br />public:</p> <p> CW32Server(void);<br /> CW32Server(const TCHAR *strServerName); <br /> BOOL    Open(const TCHAR *strServerName);  </p> <p> /**  q回状? <br />  SERVICE_CONTINUE_PENDING The service continue is pending. <br />  SERVICE_PAUSE_PENDING The service pause is pending. <br />  SERVICE_PAUSED The service is paused. <br />  SERVICE_RUNNING The service is running. <br />  SERVICE_START_PENDING The service is starting. <br />  SERVICE_STOP_PENDING The service is stopping. <br />  SERVICE_STOPPED The service is not running. <br /> */<br /> DWORD GetState();     <br /> BOOL    SetState(DWORD state);<br /> BOOL    Start();<br /> BOOL    Stop();</p> <p> /**<br />  SERVICE_AUTO_START  A service started automatically by the service control manager during system startup. <br />  SERVICE_BOOT_START  A device driver started by the system loader. This value is valid only for driver services. <br />  SERVICE_DEMAND_START A service started by the service control manager when a process calls the StartService function. <br />  SERVICE_DISABLED  A service that cannot be started. Attempts to start the service result in the error code ERROR_SERVICE_DISABLED. <br />  SERVICE_SYSTEM_START <br /> */<br /> BOOL    GetConfig();   //如果q回真,配置状态填充在 m_config  ?<br /> SC_HANDLE    GetHandle();  //需要禁用、启动服务,使用 ChangeServiceConfig(GetHandle(),...)   查看MSDN<br /> ~CW32Server(void);</p> <p> QUERY_SERVICE_CONFIG *m_config;<br />};</p> <p> <br />#endif <br /><br /><br />/**<br />W32Server.cpp<br /><a href="/lovelypig">http://www.shnenglu.com/lovelypig</a>  子<br />*/<br />#include ".\w32server.h"<br />#include <assert.h></p> <p>CW32Server::CW32Server(void)<br />{<br /> memset((char*)&m_szServerName,0,sizeof(TCHAR)*MAX_PATH);<br /> memset((char*)&m_config,0,sizeof(m_config));<br /> m_hService = 0;<br /> m_hScm   = 0;<br /> m_config = (QUERY_SERVICE_CONFIG*)m_cfgBuf;<br />}</p> <p>CW32Server::CW32Server(const TCHAR *strServerName)<br />{ <br /> assert(strServerName);</p> <p> CW32Server();<br /> _tcscpy(m_szServerName,strServerName); </p> <p> m_hScm=OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE);<br /> if(!m_hScm)<br /> {<br />  return ;<br /> }<br /> m_hService=OpenService(m_hScm,strServerName,SERVICE_ALL_ACCESS);<br /> if(!m_hService)<br /> {<br />  CloseServiceHandle(m_hScm);<br />  m_hScm = NULL;<br />    }<br />}<br />CW32Server::~CW32Server(void)<br />{<br /> if( m_hScm )<br /> {<br />  CloseServiceHandle(m_hScm);<br />  m_hScm = NULL;<br /> }<br /> if( m_hService )<br /> {<br />  CloseServiceHandle(m_hService);<br />  m_hService = NULL;<br /> }<br />}</p> <p>BOOL   CW32Server:: Open(const TCHAR *strServerName)<br />{<br /> assert(strServerName);</p> <p> if( m_hScm )<br /> {<br />  CloseServiceHandle(m_hScm);<br />  m_hScm = NULL;<br /> }<br /> if( m_hService )<br /> {<br />  CloseServiceHandle(m_hService);<br />  m_hService = NULL;<br /> }</p> <p> _tcscpy(m_szServerName,strServerName); <br /> m_hScm=OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE);<br /> if(!m_hScm)<br /> {<br />  return FALSE;<br /> }<br /> m_hService=OpenService(m_hScm,strServerName,SERVICE_ALL_ACCESS);<br /> if(!m_hService)<br /> {<br />  CloseServiceHandle(m_hScm);<br />  m_hScm = NULL;<br />  return FALSE;<br /> }<br /> return TRUE;<br />}</p> <p>DWORD CW32Server::GetState()<br />{ <br /> assert(m_hService);</p> <p>    if(QueryServiceStatus(m_hService,&ServiceStatus))<br /> {<br />  return ServiceStatus.dwCurrentState;<br /> }<br /> else<br /> {<br />  return 0xffffffff;<br /> }<br />}</p> <p>BOOL    CW32Server::SetState(DWORD state)<br />{<br /> assert(m_hService);</p> <p> return ControlService(m_hService,state,&ServiceStatus);<br />}</p> <p>BOOL    CW32Server::Start()<br />{<br /> assert(m_hService);</p> <p> return StartService(m_hService,0,NULL);</p> <p>}</p> <p>BOOL    CW32Server::Stop()<br />{<br /> assert(m_hService);</p> <p> return ControlService(m_hService,SERVICE_CONTROL_STOP,&ServiceStatus);<br />}</p> <p>BOOL    CW32Server::GetConfig()<br />{<br /> assert(m_hService);<br /> <br /> DWORD cbBufSize = 4096;<br /> DWORD pcbBytesNeeded = 4096;<br /> return QueryServiceConfig(m_hService,m_config,cbBufSize, &pcbBytesNeeded);<br />}</p> <p>SC_HANDLE  CW32Server::GetHandle()<br />{<br /> assert(m_hService);<br /> return m_hService;<br />}</p> <img src ="http://www.shnenglu.com/lovelypig/aggbug/4871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lovelypig/" target="_blank">子</a> 2006-04-01 09:55 <a href="http://www.shnenglu.com/lovelypig/archive/2006/04/01/4871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>|卡c?/title><link>http://www.shnenglu.com/lovelypig/archive/2006/04/01/4870.html</link><dc:creator>子</dc:creator><author>子</author><pubDate>Sat, 01 Apr 2006 01:46:00 GMT</pubDate><guid>http://www.shnenglu.com/lovelypig/archive/2006/04/01/4870.html</guid><wfw:comment>http://www.shnenglu.com/lovelypig/comments/4870.html</wfw:comment><comments>http://www.shnenglu.com/lovelypig/archive/2006/04/01/4870.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/lovelypig/comments/commentRss/4870.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lovelypig/services/trackbacks/4870.html</trackback:ping><description><![CDATA[ <p>//说明Q^时做更改|卡QPq样的活挺多的,_来_去ȝQ简单的打了个包Q?br />//引用Q?font color="#000000"><a class="" title="" target="">VCkbaseQ不重vWindows直接更改IP地址<br /></a></font>//代码Q?br /><br /><br />//Adapter_.h<br />#ifndef _ADAPTER_H<br />#define _ADAPTER_H<br />#include <tchar.h><br />#include <Windows.h><br />#include <stdio.h><br />#include <Iphlpapi.h><br />#pragma comment(lib,"iphlpapi.lib")<br />#pragma comment(lib,"ws2_32.lib")<br />#include <assert.h><br />#include <string><br />#include <vector><br />using   namespace  std;</p> <p> <br />typedef int (CALLBACK* DHCPNOTIFYPROC)(LPWSTR, LPWSTR, BOOL, DWORD, DWORD, DWORD, int);</p> <p>class CAdapter<br />{<br /> private:<br />  class ADAPTER_INFO<br />  {<br />    string strName;   // 适配器名U?br />    string strDriverDesc; // 适配器描q?br />    string strIP;   // IP地址<br />    string strSubnetMask;  // 子网掩码<br />    string strNetGate;  // |关<br />    string strDNS;         //DNS<br />    string strMAC;<br />    ::MIB_IFROW IfRow;  //用于量,状态显C?/p> <p>    BOOL   RegSetIP();<br />    BOOL   ChangeSysSet();<br />    <br />   public:<br />    void   SetInx(DWORD _dwpIndex) { IfRow.dwIndex  = _dwpIndex; }</p> <p>    //取得IP信息<br />    string& GetName(){  return strName; }<br />    string& GetDriverDesc(){ return strDriverDesc; }<br />    string& GetIP(){ return strIP; }<br />    string& GetSubnetMask(){ return strSubnetMask; }<br />    string& GetNetGate(){ return strNetGate; }<br />    string& GetDNS(){ return strDNS; }<br />    string& GetMAC(){ return strMAC; }<br />    <br />    //取得状?量<br />    DWORD    GetState(){<br />     if(GetIfEntry(&IfRow) != NO_ERROR)<br />     {<br />      return 0;<br />     }<br />     /*<br />     #define MIB_IF_OPER_STATUS_NON_OPERATIONAL      0<br />     #define MIB_IF_OPER_STATUS_UNREACHABLE          1<br />     #define MIB_IF_OPER_STATUS_DISCONNECTED         2<br />     #define MIB_IF_OPER_STATUS_CONNECTING           3<br />     #define MIB_IF_OPER_STATUS_CONNECTED            4<br />     #define MIB_IF_OPER_STATUS_OPERATIONAL          5<br />     */<br />     return IfRow.dwOperStatus ;<br />    }<br />    <br />    DWORD    GetSendBytes(){<br />     if(GetIfEntry(&IfRow) != NO_ERROR)<br />     {<br />      return 0;<br />     }<br />     return IfRow.dwOutOctets;<br />    }<br />    DWORD    GetReceiveBytes(){<br />     if(GetIfEntry(&IfRow) != NO_ERROR)<br />     {<br />      return 0;<br />     }  <br />     return IfRow.dwInOctets;<br />    }<br />    DWORD   GetSpeed(){<br />     if(GetIfEntry(&IfRow) != NO_ERROR)<br />     {<br />      return 0;<br />     }<br />     return IfRow.dwSpeed;<br />    }</p> <p>    DWORD   GetOutUcastPkts(){<br />     if(GetIfEntry(&IfRow) != NO_ERROR)<br />     {<br />      return 0;<br />     }<br />     return IfRow.dwOutUcastPkts;<br />    } <br />    DWORD   GetOutNUcastPkts(){<br />     if(GetIfEntry(&IfRow) != NO_ERROR)<br />     {<br />      return 0;<br />     }<br />     return IfRow.dwOutNUcastPkts;<br />    } <br />    DWORD   GetInUcastPkts(){<br />     if(GetIfEntry(&IfRow) != NO_ERROR)<br />     {<br />      return 0;<br />     }<br />     return IfRow.dwInUcastPkts;<br />    } <br />    DWORD   GetInNUcastPkts(){<br />     if(GetIfEntry(&IfRow) != NO_ERROR)<br />     {<br />      return 0;<br />     }<br />     return IfRow.dwInNUcastPkts;<br />    } <br />    //讄IP信息<br />    BOOL SetName(string _PstrName  ,BOOL bChange = 0)  { <br />     strName = _PstrName ;<br />     if( bChange)<br />      return ChangeSysSet();<br />     return TRUE;<br />    }<br />    BOOL SetDriverDesc(string _PstrDriverDesc,BOOL bChange = 0){   <br />     strDriverDesc = _PstrDriverDesc;<br />     if( bChange)<br />      ChangeSysSet();<br />     return TRUE;<br />    }<br />    BOOL SetIP(string _PstrIP,BOOL bChange = 0){  <br />     strIP = _PstrIP ;<br />     if( bChange)<br />      ChangeSysSet();<br />     return TRUE;<br />    }<br />    BOOL SetSubnetMask(string _PstrSubnetMask,BOOL bChange = 0){  <br />     strSubnetMask = _PstrSubnetMask; <br />     if( bChange)<br />      ChangeSysSet();<br />     return TRUE;<br />    }<br />    BOOL SetNetGate(string _PstrNetGate,BOOL bChange = 0){ <br />     strNetGate = _PstrNetGate; <br />     if( bChange)<br />      ChangeSysSet();<br />     return TRUE;<br />    }<br />    BOOL SetDNS(string strSetDNS = ""){<br />     if( !strSetDNS.length() )<br />     {<br />      HKEY hKey;<br />      DWORD dwType;<br />      char  szReadBuf[64];<br />      DWORD cbData = 64;<br />      string strKeyName ="SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";<br />      strKeyName += this->strName;<br />      if(RegOpenKeyExA(HKEY_LOCAL_MACHINE,strKeyName.c_str(),0,<br />         KEY_READ,&hKey) != ERROR_SUCCESS)<br />      {<br />       return FALSE;<br />      }<br />      if( RegQueryValueExA(hKey,"NameServer",0,&dwType,(BYTE*)szReadBuf,&cbData) != ERROR_SUCCESS)<br />      {<br />       return FALSE;<br />      }<br />      RegCloseKey(hKey);<br />      strDNS = szReadBuf;<br />     }<br />     else<br />     {<br />      strDNS = strSetDNS;<br />      return ChangeSysSet();<br />     }<br />     return TRUE;<br />    }<br />    void SetMAC(BYTE *Address){  <br />      char  buf[6];<br />      for(int i= 0;i< 6;i++)<br />      {<br />       sprintf( buf,"%02x",Address[i]);<br />       strMAC += string(buf);<br />      }<br />      /*<br />      sprintf(pAI->mac, "%02X%02X%02X%02X%02X%02X",<br />       int (pAdapterInfo->Address[0]),<br />       int (pAdapterInfo->Address[1]),<br />       int (pAdapterInfo->Address[2]),<br />       int (pAdapterInfo->Address[3]),<br />       int (pAdapterInfo->Address[4]),<br />       int (pAdapterInfo->Address[5]));<br />      */<br />    }<br />  };<br /> vector<ADAPTER_INFO> m_AdapterVec;<br /> public:<br />  CAdapter(void);<br />  ~CAdapter(void);</p> <p>  size_t GetAdapterCount ()<br />  {<br />   return m_AdapterVec.size();<br />  }</p> <p>  ADAPTER_INFO& operator[](DWORD iInx)<br />  {<br />   assert(iInx < m_AdapterVec.size());<br />   return m_AdapterVec[iInx];<br />  }<br />};</p> <p> <br />#endif<br /><br /><br />//Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-<br />//Adapter_.cpp<br />#include ".\adapter_.h"</p> <p> <br />CAdapter::CAdapter(void)<br />{<br /> DWORD ulAdapterInfoSize = sizeof(IP_ADAPTER_INFO);<br /> IP_ADAPTER_INFO *pAdapterInfo = (IP_ADAPTER_INFO*)new char[ulAdapterInfoSize];<br /> if( GetAdaptersInfo(pAdapterInfo, &ulAdapterInfoSize) == ERROR_BUFFER_OVERFLOW ) // ~冲Z够大<br /> {<br />  delete pAdapterInfo;<br />  pAdapterInfo = (IP_ADAPTER_INFO*)new char[ulAdapterInfoSize];<br /> }<br /> if( GetAdaptersInfo(pAdapterInfo, &ulAdapterInfoSize) == ERROR_SUCCESS )<br /> {<br />  do {<br />   if (pAdapterInfo->Type == MIB_IF_TYPE_ETHERNET)<br />   {<br />    ADAPTER_INFO *pAI = new ADAPTER_INFO;<br />    pAI->SetInx(pAdapterInfo->Index);<br />    pAI->SetName(pAdapterInfo->AdapterName);<br />    pAI->SetDriverDesc(pAdapterInfo->Description);<br />    pAI->SetMAC(pAdapterInfo->Address);<br />    pAI->SetIP(pAdapterInfo->IpAddressList.IpAddress.String);<br />    pAI->SetNetGate(pAdapterInfo->GatewayList.IpAddress.String);<br />    pAI->SetSubnetMask(pAdapterInfo->IpAddressList.IpMask.String);<br />    pAI->SetDNS();<br />    m_AdapterVec.push_back(*pAI);<br />   }<br />   pAdapterInfo = pAdapterInfo->Next;<br />  } while(pAdapterInfo);<br /> }<br /> delete pAdapterInfo;<br />}</p> <p>CAdapter::~CAdapter(void)<br />{<br /> m_AdapterVec.clear();<br />}</p> <p>BOOL CAdapter::ADAPTER_INFO::ChangeSysSet()<br />{<br /> //在注册表中修改信?br /> if(!RegSetIP())<br /> {<br />  return FALSE;<br /> }</p> <p> HINSTANCE  hDhcpDll;<br /> DHCPNOTIFYPROC pDhcpNotifyProc;<br /> WCHAR wcAdapterName[256];<br /> MultiByteToWideChar(CP_ACP, 0, this->strName.c_str(), -1, wcAdapterName,256);</p> <p> if((hDhcpDll = LoadLibraryA("dhcpcsvc")) == NULL)<br /> {<br />  return FALSE;<br /> }</p> <p> if((pDhcpNotifyProc = (DHCPNOTIFYPROC)GetProcAddress(hDhcpDll, "DhcpNotifyConfigChange")) != NULL)<br /> {<br />  if((pDhcpNotifyProc)(NULL, wcAdapterName, TRUE, <br />   0,    //指明W几个IP地址Q如果只有该接口只有一个IP地址则ؓ0<br />   inet_addr(strIP.c_str()), //<br />   inet_addr(strSubnetMask.c_str()), <br />   0    //对DHCP的操?0:不修? 1:启用 DHCPQ?:用 DHCP<br />   ) != ERROR_SUCCESS)<br />  {<br />   FreeLibrary(hDhcpDll);<br />   return FALSE;<br />  }<br />  FreeLibrary(hDhcpDll);<br /> }<br /> return TRUE;<br />}</p> <p>BOOL CAdapter::ADAPTER_INFO::RegSetIP()<br />{<br /> HKEY hKey;<br /> string strKeyName ="SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";<br /> strKeyName += strName;</p> <p> if(RegOpenKeyExA(HKEY_LOCAL_MACHINE,<br />  strKeyName.c_str(),<br />  0,<br />  KEY_WRITE,<br />  &hKey) != ERROR_SUCCESS)<br /> {<br />  return FALSE;<br /> }<br /> strIP.push_back('\0');<br /> strSubnetMask.push_back('\0');<br /> strNetGate.push_back('\0');</p> <p> RegSetValueExA(hKey, "IPAddress", 0, REG_MULTI_SZ, (unsigned char*)strIP.data(), (DWORD)strIP.length()+2);<br /> RegSetValueExA(hKey, "SubnetMask", 0, REG_MULTI_SZ, (unsigned char*)strSubnetMask.data(),(DWORD)strSubnetMask.length()+2 );<br /> RegSetValueExA(hKey, "DefaultGateway", 0, REG_MULTI_SZ, (unsigned char*)strNetGate.data(), (DWORD)strNetGate.length()+2);<br /> RegSetValueExA(hKey, "NameServer", 0, REG_SZ, (unsigned char*)strDNS.data(),(DWORD) strDNS.length());<br /> RegCloseKey(hKey);<br /> return TRUE;<br />}<br /><br /></p> <img src ="http://www.shnenglu.com/lovelypig/aggbug/4870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lovelypig/" target="_blank">子</a> 2006-04-01 09:46 <a href="http://www.shnenglu.com/lovelypig/archive/2006/04/01/4870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.baotourcw.cn" target="_blank">þþƷ</a>| <a href="http://www.allywll-800.cn" target="_blank">þ㽶һëƬ</a>| <a href="http://www.zjhongfeng.cn" target="_blank">޾þһ </a>| <a href="http://www.orientalhotel.com.cn" target="_blank">þùƷһ</a>| <a href="http://www.b3804.cn" target="_blank">ŷպۺϾþ</a>| <a href="http://www.jzyuan.cn" target="_blank">99REþþƷﶼǾƷ</a>| <a href="http://www.ycqdzgov.cn" target="_blank">޹պۺϾþþƷ</a>| <a href="http://www.zzjinhua.cn" target="_blank">㽶þþƷۺ</a>| <a href="http://www.jupucha.com.cn" target="_blank">AVպƷþþþþ</a>| <a href="http://www.iubonut.cn" target="_blank">ŷþþþƷ</a>| <a href="http://www.up2me.cn" target="_blank">ݹ97þ÷ѹۿ</a>| <a href="http://www.dnnmodules.cn" target="_blank">þþþŷղAV</a>| <a href="http://www.nmgbetl.cn" target="_blank">þù˾Ʒ鶹</a>| <a href="http://www.shibaba.cn" target="_blank">ŷþþҹһĻ </a>| <a href="http://www.wooblog.cn" target="_blank">þþþAVȥ</a>| <a href="http://www.fuxingjidian.cn" target="_blank">ƷŮ߳׾þþ</a>| <a href="http://www.shangxinju.cn" target="_blank">Ʒһþ</a>| <a href="http://www.shbolangjixie.cn" target="_blank">Ʒþþþþ벻</a>| <a href="http://www.drxt.com.cn" target="_blank">þþƵ</a>| <a href="http://www.hzyzhongyuan.cn" target="_blank">ĻþþƷ</a>| <a href="http://www.zawin.cn" target="_blank">AVӰƬþþþþ</a>| <a href="http://www.51kuyu.cn" target="_blank">ŷҹƷþþþ</a>| <a href="http://www.callmanager.cn" target="_blank">㽶þþþ</a>| <a href="http://www.gaokaocaiti.cn" target="_blank">þˬˬAV </a>| <a href="http://www.bjwx2008.cn" target="_blank">뾫Ʒþһ</a>| <a href="http://www.117shop.cn" target="_blank">þw5www</a>| <a href="http://www.geishi.cn" target="_blank">ɫþþþþþС˵</a>| <a href="http://www.utey.cn" target="_blank">ɫþþۺľþһ</a>| <a href="http://www.zgcl.org.cn" target="_blank">þó˹Ʒ</a>| <a href="http://www.a0037.cn" target="_blank">þþþþ</a>| <a href="http://www.baodecai.cn" target="_blank">97þùۺϾƷŮ </a>| <a href="http://www.3495.com.cn" target="_blank">þþƷԴվ</a>| <a href="http://www.ohos33.cn" target="_blank">ƷŮþþ</a>| <a href="http://www.td265.cn" target="_blank">˺ݺۺϾþ88</a>| <a href="http://www.qfzxd.cn" target="_blank">þ޴ɫĻþþ</a>| <a href="http://www.vauban.cn" target="_blank">һһþۺϺݺ</a>| <a href="http://www.fengguan1688.cn" target="_blank">һaɫƬþٸһHƬѷ</a>| <a href="http://www.530taiji.cn" target="_blank">þ㽶߿ۿ</a>| <a href="http://www.jiaqianli.cn" target="_blank">þþƷ۲ӰԺ</a>| <a href="http://www.oaaz.cn" target="_blank">þù</a>| <a href="http://www.4091.com.cn" target="_blank">Ʒ׾þAAAƬ69</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>