这个比想像中的要麻烦有下面详细的8个步文件
1.首先在驱动文件夹,建立一个:"newcpl" 文件夹
2.建 "sources" 文件,内容如下
TARGETNAME=newcpl
SOURCES= /
connpnl.rc /
connpnl.cpp /
INCLUDES= /
$(_PROJECTROOT)/cesysgen/oak/inc /
CDEFINES=$(CDEFINES) -DBKLPNL_EXPORTS
CPL=1
DLLENTRY=DllEntry
TARGETTYPE=DYNLINK
TARGETLIBS= $(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib /
3.有sources 当然少不了,"makefile",文件 这个参考驱动
4.找一个.ico图标,现在我用"remotenw_new.ico",放在同一目录
5.建一个 "newcpl.def" 文件,内容如下
LIBRARY BKLPNL
EXPORTS
CPlApplet
6.建一个"resource.h",内容如下
#define IDD_BKL 101
#define IDC_BKLSLIDE 1000
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
#define IDI_REMOTENW 3000
#define IDS_TITLE 6000
#define IDS_INFO 6001
extern "C" BOOL APIENTRY VolumeDlgProc (HWND hDlg, UINT message, UINT wParam, LONG lParam);
7.建一个"connpnl.rc" .内容如下
#define APSTUDIO_READONLY_SYMBOLS
#include "resource.h"
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
#undef APSTUDIO_READONLY_SYMBOLS
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
IDI_REMOTENW ICON DISCARDABLE "remotenw_new.ico"
#ifdef APSTUDIO_INVOKED
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resrc1.h/0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""resource.h""/r/n"
"#define APSTUDIO_HIDDEN_SYMBOLS/r/n"
"#include ""windows.h""/r/n"
"#undef APSTUDIO_HIDDEN_SYMBOLS/r/n"
"/0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"/r/n"
"/0"
END
#endif // APSTUDIO_INVOKED
IDD_BKL DIALOG DISCARDABLE 0, 0, 187, 98
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "newcpl"//将是在控制面板看到的名字
FONT 10, "System"
BEGIN
DEFPUSHBUTTON "OK",IDOK,15,77,50,14
PUSHBUTTON "Cancel",IDCANCEL,114,77,50,14
CONTROL "Slider1",IDC_BKLSLIDE,"msctls_trackbar32",WS_TABSTOP,17,
34,152,15
END
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_BKL, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 180
TOPMARGIN, 7
BOTTOMMARGIN, 91
END
END
#endif // APSTUDIO_INVOKED
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "newcpl" //名字2.没多大作用
IDS_INFO "Connects to other computers, networks, and the Internet"
END
#endif // Chinese (P.R.C.) resources
#ifndef APSTUDIO_INVOKED
#endif // not APSTUDIO_INVOKED
8.最后一个文件了"connpnl.cpp"
#include <windows.h>
#include <tchar.h>
#include <cpl.h>
#include "resource.h"
#define lengthof(exp) ((sizeof((exp)))/sizeof((*(exp))))
HMODULE g_hModule = NULL;
extern "C" BOOL WINAPI DllEntry(HANDLE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
{
g_hModule = (HMODULE) hinstDLL;
}
break;
}
return TRUE;
}
extern "C" LONG CALLBACK CPlApplet(HWND hwndCPL, UINT message, LPARAM lParam1, LPARAM lParam2)
{
switch (message)
{
case CPL_INIT:
{
return 1;
}
case CPL_GETCOUNT:
{
return 1; // Just connmc
}
case CPL_NEWINQUIRE:
{
ASSERT(0 == lParam1);
ASSERT(lParam2);
NEWCPLINFO * lpNewCplInfo = (NEWCPLINFO *) lParam2;
if (lpNewCplInfo)
{
lpNewCplInfo->dwSize = sizeof(NEWCPLINFO);
lpNewCplInfo->dwFlags = 0;
lpNewCplInfo->dwHelpContext = 0;
lpNewCplInfo->lData = IDI_REMOTENW;
lpNewCplInfo->hIcon = LoadIcon(g_hModule, MAKEINTRESOURCE(IDI_REMOTENW));
LoadString(g_hModule, IDS_TITLE, lpNewCplInfo->szName, lengthof(lpNewCplInfo->szName));
LoadString(g_hModule, IDS_INFO, lpNewCplInfo->szInfo, lengthof(lpNewCplInfo->szInfo));
_tcscpy(lpNewCplInfo->szHelpFile, _T(""));
return 0;
}
return 1; // Failure
}
case CPL_DBLCLK:
{
PROCESS_INFORMATION pi = {0};
if (CreateProcess(_T("//Windows//waveout.exe"), NULL, NULL, //指点执行的文件
NULL, FALSE, 0, NULL, NULL, NULL, &pi))
{
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return 0;
}
return 1;
}
case CPL_STOP:
case CPL_EXIT:
default:
{
return 0;
}
}
return 1;
} // CPlApplet
编译后在 platform.bib 加入这个文件"newcpl.cpl"就可以了