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

📄 enumcpl.cpp

📁 这是一本学习 window编程的很好的参考教材
💻 CPP
字号:
// enumcpl.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <stdio.h>
#include <windows.h>
#include <cpl.h>

int main(int argc, char **argv, char **envp)
{   
	union { 
		NEWCPLINFOA NewCplInfoA;
		NEWCPLINFOW NewCplInfoW; 
	} Newcpl;

	HINSTANCE hLib; // Library Handle to *.cpl file
	APPLET_PROC CplCall; // Pointer to CPlApplet() function
	LONG i;

	// -------------------
	if (!(hLib = LoadLibrary(argv[1]))) 
		return 1;	
	if (!(CplCall=(APPLET_PROC)GetProcAddress(hLib,"CPlApplet")))
	{
		FreeLibrary(hLib);        
		return 2;
	}

	// -------------------
	CplCall(NULL, CPL_INIT,0,0); // Init the *.cpl file

	for (i=0;i<CplCall(NULL,CPL_GETCOUNT,0,0);i++)
	{
		printf("Control %s",argv[1]);

		Newcpl.NewCplInfoA.dwSize = 0;
		Newcpl.NewCplInfoA.dwFlags = 0;
		CplCall(NULL,CPL_NEWINQUIRE,i,(long)&Newcpl);

		if (Newcpl.NewCplInfoA.dwSize == sizeof(NEWCPLINFOW))
		{   // Case #1, CPL_NEWINQUIRE has returned an Unicode String
			wprintf(L",%s\n", Newcpl.NewCplInfoW.szName);
		}
		else 
		{   // Case #2, CPL_NEWINQUIRE has returned an ANSI String
			if (Newcpl.NewCplInfoA.dwSize != sizeof(NEWCPLINFOA))
			{
				// Case #3, CPL_NEWINQUIRE failed to return a string
				//    Get the string from the *.cpl Resource instead
				CPLINFO CInfo;

				CplCall(NULL,CPL_INQUIRE,i,(long)&CInfo);				
				LoadStringA(hLib,CInfo.idName,
					Newcpl.NewCplInfoA.szName,32);
			}
			printf(",%s\n", Newcpl.NewCplInfoA.szName);
		}
	} // for

	CplCall(NULL,CPL_EXIT,0,0);

	// -------------------
	FreeLibrary(hLib);        
	return 0;
}


⌨️ 快捷键说明

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