⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 01_9_17_5.asp.html

📁 有用的VC教程,包括编程思想编程技巧程序效率等方面的指导
💻 HTML
📖 第 1 页 / 共 3 页
字号:
 参 数:   dwPID: 进 程ID, NULL 代 表 当 前 进 程</td></tr></table><table width=100% ><tr><td class=a14>
        dwType: RSP_SIMPLE_SERVICE 为 登 记</td></tr></table><table width=100% ><tr><td class=a14>
                RSP_UNREGISTER_SERVICE 为 取 消 登 记</td></tr></table><table width=100% ><tr><td class=a14>
 返 回 值: TRUE:   调 用 成 功</td></tr></table><table width=100% ><tr><td class=a14>
        FALSE:  调 用 失 败</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
(2) 另 外, 为 了 让Service 进 程 有 机 会 在BOOT 后 就 启 动,Windows95 的Registry 中 提 供 了 加 载 方 法: 在KEY " MyComputer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices " 加 入 自 己 的 应 用 程 序 命 令 行, 即 可 实 现 开 机 自 动 加 载. 当 然, 如 果 你 得 机 器 中 没 有 这 个Key, 自 己 建 一 个 也 是 可 以 的. </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
例 程</td></tr></table><table width=100% ><tr><td class=a14>
下 面 是 实 现 例 程, 所 有 代 码 经 过 了WINDOWS95. WINDOWS98 BETA3 的 测 试, 可 以 方 便 的 加 入 到 自 己 的 项 目 文 件 中. </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
      <td class=a14> 头 文 件: </td>
    </tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// File:           service.h</td></tr></table><table width=100% ><tr><td class=a14>
// The head file of "service.cpp"</td></tr></table><table width=100% ><tr><td class=a14>
// Note: 1. You must use C++ compiler</td></tr></table><table width=100% ><tr><td class=a14>
//     2. The platform is WIN32 (WINNT & WIN95)</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#ifndef _SERVICE_H</td></tr></table><table width=100% ><tr><td class=a14>
#define _SERVICE_H</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
/////////////////////////////////////////////////// USED FOR WIN95 SERVICE</td></tr></table><table width=100% ><tr><td class=a14>
// Micros</td></tr></table><table width=100% ><tr><td class=a14>
#define RSP_SIMPLE_SERVICE                      1</td></tr></table><table width=100% ><tr><td class=a14>
#define RSP_UNREGISTER_SERVICE          0</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Function types for GetProcAddress</td></tr></table><table width=100% ><tr><td class=a14>
#define RegisterServiceProcess_PROFILE  (DWORD (__stdcall *) (DWORD, DWORD))</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
// Service Fuctions in Win95</td></tr></table><table width=100% ><tr><td class=a14>
BOOL    W95ServiceRegister(DWORD dwType);</td></tr></table><table width=100% ><tr><td class=a14>
BOOL    W95StartService( DWORD dwType );</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#endif</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
CPP 文 件:</td></tr></table><table width=100% ><tr><td class=a14>
// File:                service.cpp --- implement the service</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#include "service.h"</td></tr></table><table width=100% ><tr><td class=a14>
/////////////////////////////////////////////////// USED FOR WIN95 SERVICE</td></tr></table><table width=100% ><tr><td class=a14>
 登 记 为Service 子 程 序:</td></tr></table><table width=100% ><tr><td class=a14>
/////////////////////////////////////////////////////////////////////////////////</td></tr></table><table width=100% ><tr><td class=a14>
// Define:              BOOL    W95ServiceRegister(DWORD dwType)</td></tr></table><table width=100% ><tr><td class=a14>
// Parameters:  dwType  --- Flag to register or unregister the service</td></tr></table><table width=100% ><tr><td class=a14>
//            RSP_SIMPLE_SERVICE      means register</td></tr></table><table width=100% ><tr><td class=a14>
//            RSP_UNREGISTER_SERVICE  means unregister</td></tr></table><table width=100% ><tr><td class=a14>
// Return:  TRUE --- call success; FALSE --- call failer</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
BOOL    W95ServiceRegister( DWORD dwType )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
        // Function address defination</td></tr></table><table width=100% ><tr><td class=a14>
        DWORD   (__stdcall * hookRegisterServiceProcess)</td></tr></table><table width=100% ><tr><td class=a14>
                   ( DWORD dwProcessId, DWORD dwType ); </td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
        // Get address of function</td></tr></table><table width=100% ><tr><td class=a14>
        hookRegisterServiceProcess = RegisterServiceProcess_PROFILE</td></tr></table><table width=100% ><tr><td class=a14>
                                                 GetProcAddress</td></tr></table><table width=100% ><tr><td class=a14>
   (GetModuleHandle("KERNEL32"),</td></tr></table><table width=100% ><tr><td class=a14>
  TEXT("RegisterServiceProcess"));</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
        // Register the WIN95 service</td></tr></table><table width=100% ><tr><td class=a14>
        if(hookRegisterServiceProcess(NULL,dwType)==0)</td></tr></table><table width=100% ><tr><td class=a14>
                return FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
        return TRUE;</td></tr></table><table width=100% ><tr><td class=a14>
}</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
 加 入 注 册 表 子 程 序:</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
#define SERVICE_NAME    TEXT("SERVICE")</td></tr></table><table width=100% ><tr><td class=a14>
// Define:              BOOL    W95StartService( DWORD dwType )</td></tr></table><table width=100% ><tr><td class=a14>
// Parameters:  dwType  --- Flag to register or unregister the service</td></tr></table><table width=100% ><tr><td class=a14>
//            RSP_SIMPLE_SERVICE      means register</td></tr></table><table width=100% ><tr><td class=a14>
//            RSP_UNREGISTER_SERVICE  means unregister</td></tr></table><table width=100% ><tr><td class=a14>
// Return: TRUE --- call success; FALSE --- call failer</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
BOOL W95StartService( DWORD dwType )</td></tr></table><table width=100% ><tr><td class=a14>
{</td></tr></table><table width=100% ><tr><td class=a14>
        // Local Variables</td></tr></table><table width=100% ><tr><td class=a14>
        TCHAR   lpszBuff[256];</td></tr></table><table width=100% ><tr><td class=a14>
        LPTSTR  lpszStr = lpszBuff +128;</td></tr></table><table width=100% ><tr><td class=a14>
        LPTSTR  lpszName        = lpszBuff;</td></tr></table><table width=100% ><tr><td class=a14>
        HANDLE  hKey            = NULL;</td></tr></table><table width=100% ><tr><td class=a14>
        DWORD   dwStrCb         = 0;</td></tr></table><table width=100% ><tr><td class=a14>
        DWORD   dwValueType     = 0;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
        // Get service name currently</td></tr></table><table width=100% ><tr><td class=a14>
        lpszName = GetCommandLine();</td></tr></table><table width=100% ><tr><td class=a14>
        for( int i = _tcslen(lpszName)-1; i>=0; i-- )</td></tr></table><table width=100% ><tr><td class=a14>
        {</td></tr></table><table width=100% ><tr><td class=a14>
                if( ( lpszName[i] != '"' )&&( lpszName[i]!=' ') )</td></tr></table><table width=100% ><tr><td class=a14>
                        break;</td></tr></table><table width=100% ><tr><td class=a14>
                else if( lpszName[i] == '"' )</td></tr></table><table width=100% ><tr><td class=a14>
                        lpszName[i] = '\0';</td></tr></table><table width=100% ><tr><td class=a14>
        }</td></tr></table><table width=100% ><tr><td class=a14>
        if( lpszName[0] == '"' )</td></tr></table><table width=100% ><tr><td class=a14>
                lpszName = lpszName +1;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
        // Registe as start up service</td></tr></table><table width=100% ><tr><td class=a14>
        if( RegOpenKeyEx (HKEY_LOCAL_MACHINE,</td></tr></table><table width=100% ><tr><td class=a14>
TEXT( "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunServices"),</td></tr></table><table width=100% ><tr><td class=a14>
                     0,</td></tr></table><table width=100% ><tr><td class=a14>
                     KEY_QUERY_VALUE | KEY_SET_VALUE,</td></tr></table><table width=100% ><tr><td class=a14>
                     &hKey ) != ERROR_SUCCESS )</td></tr></table><table width=100% ><tr><td class=a14>
        {</td></tr></table><table width=100% ><tr><td class=a14>
                if( RegCreateKey(       HKEY_LOCAL_MACHINE,</td></tr></table><table width=100% ><tr><td class=a14>
TEXT( "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunServices"),</td></tr></table><table width=100% ><tr><td class=a14>
                                        &hKey ) != ERROR_SUCCESS )</td></tr></table><table width=100% ><tr><td class=a14>
                {</td></tr></table><table width=100% ><tr><td class=a14>
                        //DebugOut( "RegCreateKey() error!");</td></tr></table><table width=100% ><tr><td class=a14>
                        return FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
                }</td></tr></table><table width=100% ><tr><td class=a14>
        }</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
        dwValueType     = REG_SZ;</td></tr></table><table width=100% ><tr><td class=a14>
        dwStrCb         = 128;</td></tr></table><table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr><td class=a14>
        // Take value</td></tr></table><table width=100% ><tr><td class=a14>
        if( RegQueryValueEx(hKey, </td></tr></table><table width=100% ><tr><td class=a14>
                                SERVICE_NAME,</td></tr></table><table width=100% ><tr><td class=a14>
                                0,</td></tr></table><table width=100% ><tr><td class=a14>
                                &dwValueType,</td></tr></table><table width=100% ><tr><td class=a14>
                                (LPBYTE)lpszStr,</td></tr></table><table width=100% ><tr><td class=a14>
                                &dwStrCb ) == ERROR_SUCCESS )</td></tr></table><table width=100% ><tr><td class=a14>
        </td></tr></table><table width=100% ><tr><td class=a14>
        {</td></tr></table><table width=100% ><tr><td class=a14>
                // Find this key value</td></tr></table><table width=100% ><tr><td class=a14>
                if( _tcscmp( lpszStr, lpszName )==0 )</td></tr></table><table width=100% ><tr><td class=a14>
                {</td></tr></table><table width=100% ><tr><td class=a14>
                        // Remove the service</td></tr></table><table width=100% ><tr><td class=a14>
                        if( dwType == RSP_UNREGISTER_SERVICE )</td></tr></table><table width=100% ><tr><td class=a14>
                        {</td></tr></table><table width=100% ><tr><td class=a14>
if( RegDeleteValue( hKey, SERVICE_NAME ) == ERROR_SUCCESS )</td></tr></table><table width=100% ><tr><td class=a14>
                                {</td></tr></table><table width=100% ><tr><td class=a14>
                                        RegCloseKey ( hKey );</td></tr></table><table width=100% ><tr><td class=a14>
                                        return TRUE;</td></tr></table><table width=100% ><tr><td class=a14>
                                }</td></tr></table><table width=100% ><tr><td class=a14>
                                RegCloseKey( hKey );</td></tr></table><table width=100% ><tr><td class=a14>
                                return FALSE;</td></tr></table><table width=100% ><tr><td class=a14>
                        }</td></tr></table><table width=100% ><tr><td class=a14>
                        // Already exist service</td></tr></table><table width=100% ><tr><td class=a14>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -