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

📄 memplug.cpp

📁 windows 手机homeskin
💻 CPP
📖 第 1 页 / 共 4 页
字号:
///////////////////////////////////////////////////////////////////////////////
//
//  This is "Sample Code" and is distributable subject to the terms of the end 
//  user license agreement.
//
///////////////////////////////////////////////////////////////////////////////

#include <windows.h>
#include <memory.h>
#include <ocidl.h>
#include <home.h>

#include "resource.h"
//#include <afxwin.h>
//#include <Winuser.h>
//#include "Afxwin.h"
/*

Add this to your .home.xml file to see this plugin:
If you are creating a new plugin based on this code
you absolutely must change the clsid!

    <plugin clsid="{55EE36E7-7CC3-47e8-85E2-1D8644280E7A}">
    </plugin>


*/

//andy
#define COMPILE_FLAG 0

HKEY hKeyLayerOfHomeSkin = NULL;
HKEY hKeyIndexOfFocusIcon = NULL;


ULONG g_dwDLLRefCount = 0;

#define INITGUID
#include "initguid.h"


//{55EE36E7-7CC3-47e8-85E2-1D8644280E7A}

// If you are creating a new plugin based on this code
// you absolutely must change the clsid!
#if COMPILE_FLAG==0
#define IMAGENAME TEXT("homeskin1_0.dll")

DEFINE_GUID(CLSID_PLUGMEM, 
0x55ee36e7, 0x7cc3, 0x47e8, 0x85, 0xe2, 0x1d, 0x86, 0x44, 0x28, 0xe, 0x7a);

#define CLSIDTEXT__PLUGMEM TEXT("55EE36E7-7CC3-47e8-85E2-1D8644280E7A")

#elif COMPILE_FLAG==1
#define IMAGENAME TEXT("homeskin1_1.dll")

DEFINE_GUID(CLSID_PLUGMEM, 
0x6579f3cb, 0xba4f, 0x46be, 0x89, 0x91, 0x83, 0x4, 0xb4, 0xea, 0xd, 0xdc);

#define CLSIDTEXT__PLUGMEM TEXT("6579F3CB-BA4F-46be-8991-8304B4EA0DDC")

#else
#define IMAGENAME TEXT("homeskin1_2.dll")

DEFINE_GUID(CLSID_PLUGMEM, 
0x4d40b61a, 0xa0f8, 0x4aeb, 0xac, 0xea, 0x62, 0x0, 0x76, 0x2a, 0xa, 0x3b);

#define CLSIDTEXT__PLUGMEM TEXT("4D40B61A-A0F8-4aeb-ACEA-6200762A0A3B")
#endif


// define all IID GUIDs

DEFINE_GUID(IID_IHomePlugin, 0x7F0C58E9, 0x4F30, 0x47bb, 0x96, 0x93, 0xd7, 0x78, 0xe9, 0x99, 0xc4, 0x33);
DEFINE_GUID(IID_IHomePluginEnvironment,  0xFF328DC0, 0x22F5, 0x4AC1, 0xA1, 0x03, 0x19, 0xB3, 0x89, 0xC6, 0x33, 0xFA);
DEFINE_GUID(IID_IHomePluginEnvironment2, 0xE01A8A84, 0xDDEF, 0x438e, 0x90, 0x04, 0x3F, 0xB2, 0xA9, 0x08, 0xE4, 0x65);
DEFINE_GUID(IID_IPersistStream, 0x00000109, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
DEFINE_GUID(IID_IPersist, 0x0000010c, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
DEFINE_GUID(IID_IObjectWithSite, 0xFC4801A3, 0x2BA9, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);

//#include "home.h"
#include <COGUID.H>
#undef INITGUID

//andy
#include <Tapi.h>
#include <extapi.h>
#include <Tsp.h>
#pragma comment( lib,"cellcore")
//hopper test
#include <tlhelp32.h>
#pragma comment (lib,"toolhelp.lib")
#include <cfgmgrapi.h>
#pragma comment (lib,"aygshell.lib")

#define HOMESCREEN_BITMAP
#define TOTALBALLICON   3
#define TOTALBITMAP       8
#define GET_INCREASED_BITMAP(i)   (i>=TOTALBITMAP?0:i)
#define GET_DECREASED_BITMAP(i)   (i<0?TOTALBITMAP-1:i)
#define TAPI_API_LOW_VERSION    0x00020000
#define TAPI_API_HIGH_VERSION   0x00020000
#define EXT_API_LOW_VERSION     0x00010000
#define EXT_API_HIGH_VERSION    0x00010000
struct homeScreenBitmap
{
	UINT xIcon;
	UINT yIcon;
	LPTSTR iconName;
	UINT xBall;
	UINT yBall;
}g_hsBitmap[TOTALBITMAP]=
{
	{14,47,MAKEINTRESOURCE(IDI_ICON_MAIL),7,42},
	{72+1,47,MAKEINTRESOURCE(IDI_ICON_CAMERA),67,42},
	{130,47,MAKEINTRESOURCE(IDI_ICON_WM),124,42},
	{14,103,MAKEINTRESOURCE(IDI_ICON_GAME),7,99},
	{130,103+1,MAKEINTRESOURCE(IDI_ICON_VIDEOPLAYER),124,99},
	{14-2,160,MAKEINTRESOURCE(IDI_ICON_HISTORY),7,152},
	{74,159,MAKEINTRESOURCE(IDI_ICON_CALENDAR),67,152},
	{131,159,MAKEINTRESOURCE(IDI_ICON_SETTING),124,152}
};

struct timeLocation
{
	LONG xTime;
	LONG yTime;
	LONG widthTime;
	LONG heightTime;
}g_timeLoc[5]=
{	
	{55,98,14,26},
	{70,98,14,26},
	{85,105,6,19},
	{92,98,14,26},
	{108,98,14,26}
};

static LPTSTR digitRource[10]=
{
	MAKEINTRESOURCE(IDI_ICON_DIG_0),
	MAKEINTRESOURCE(IDI_ICON_DIG_1),
	MAKEINTRESOURCE(IDI_ICON_DIG_2),
	MAKEINTRESOURCE(IDI_ICON_DIG_3),	
	MAKEINTRESOURCE(IDI_ICON_DIG_4),
	MAKEINTRESOURCE(IDI_ICON_DIG_5),
	MAKEINTRESOURCE(IDI_ICON_DIG_6),
	MAKEINTRESOURCE(IDI_ICON_DIG_7),
	MAKEINTRESOURCE(IDI_ICON_DIG_8),
	MAKEINTRESOURCE(IDI_ICON_DIG_9)
};


static LPCTSTR progName[TOTALBITMAP]=
{
	TEXT("\\windows\\tmail.exe"),
	TEXT("\\Windows\\PhoneCamera.exe"),
	TEXT("\\Windows\\wmplayer.exe"),
	//TEXT("\\Storage\\windows\\Start Menu\\Games\\Solitaire.lnk"),
	TEXT("\\Storage\\Application Data\\Home\\listview.exe"),
	TEXT("\\windows\\VideoPlayer.exe"),	
	TEXT("\\windows\\clog.exe"),
	//TEXT("\\Windows\\calendar.exe"),
	TEXT("\\Storage\\windows\\Start Menu\\Calendar.lnk"),
	TEXT("\\Windows\\settings.exe")	
	
};

static const LPTSTR ballName[TOTALBALLICON]={MAKEINTRESOURCE(IDI_ICON_BALL_A),MAKEINTRESOURCE(IDI_ICON_BALL_B),MAKEINTRESOURCE(IDI_ICON_BALL_C)};
static HDC g_hdc;
static UINT g_focusIconIndex,g_ballIndex;
static UINT g_iconTimerID=0;
static bool g_bSecondTurn,g_bFocusChange=false;
static UINT g_networkTimerID;
static SYSTEMTIME g_oldTime;
static TCHAR g_opertorName[32];
static RECT g_operatorRect;
static bool g_hasfoundOperator=false;
static HANDLE g_hEvent,g_hThread;
static HWND g_hHomeScreenWnd=NULL;
void ShowDebugInfo(TCHAR* buffer1,TCHAR* buffer2)
{
	MessageBox(NULL,buffer1,buffer2,MB_OK);
}

void CreateLogFile_CallStack(CHAR *str)
{
#ifdef LOG_FILE 
	FILE *fw = fopen("\\Windows\\andy_log_file.txt","a+");
	fprintf(fw,"Enter %s of HomeSkin Plugin %d\n",str,COMPILE_FLAG);
	fclose(fw);
#endif
}

BOOL isProcessRuning(LPCTSTR szRunName)
{
	HANDLE hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
			PROCESSENTRY32 pe;
	if(hSnap == (HANDLE)-1)
		DWORD dwError = GetLastError();

	pe.dwSize = sizeof(pe); 
		BOOL bNext=Process32First(hSnap, &pe); 
	 while(bNext) 
		{ 
		if(wcsicmp(pe.szExeFile,szRunName)==0)
		{ 
			//program is running
			CloseToolhelp32Snapshot (hSnap);	
			return TRUE;		
		} 
		bNext=Process32Next(hSnap, &pe); 
		} 

	CloseToolhelp32Snapshot (hSnap); 
	return FALSE;
}

HRESULT HopperTest_Recover(void)
{
	if(isProcessRuning(L"hopper.exe"))
	{
#if 1
		TCHAR *outBuffer = NULL;
		TCHAR buff[] = 
		{
			L"<wap-provisioningdoc>\
				<characteristic type=\"Home\">\
					<characteristic type=\"HKCU\\ControlPanel\\Home\">\
						<parm name=\"Scheme\" value=\"\\Windows\\full.home.xml\"/>\
						<parm name=\"ColorScheme\" value=\"\"/>\
						<parm name=\"BgImage\" value=\"\"/>\
					</characteristic>\
				</characteristic>\
			</wap-provisioningdoc>"
		};
		if(S_OK==DMProcessConfigXML(buff,CFGFLAG_PROCESS|CFGFLAG_METADATA,&outBuffer))
		{
		}
		else
		{
		}
		delete [] outBuffer;
#endif
		#if 0
		MoveFile(
			L"\\Storage\\Application Data\\homeskin1_hopper.home.xml",//LPCTSTR lpExistingFileName, 
			L"\\Storage\\Application Data\\Home\\homeskin1_hopper.home.xml"//LPCTSTR lpNewFileName, 
			); 
		MoveFile(
			L"\\Storage\\Application Data\\Home\\homeskin1.home.xml",//LPCTSTR lpExistingFileName, 
			L"\\Storage\\Application Data\\homeskin1.home.xml"//LPCTSTR lpNewFileName, 
			); 
		#endif
		return(S_OK);
	}	
	#if 0
	MoveFile(
		L"\\Storage\\Application Data\\homeskin1.home.xml",//LPCTSTR lpExistingFileName, 
		L"\\Storage\\Application Data\\Home\\homeskin1.home.xml"//LPCTSTR lpNewFileName, 
		); 
	MoveFile(
		L"\\Storage\\Application Data\\Home\\homeskin1_hopper.home.xml",//LPCTSTR lpNewFileName, 	
		L"\\Storage\\Application Data\\homeskin1_hopper.home.xml"//LPCTSTR lpExistingFileName, 
		); 		
	#endif
	return(E_FAIL);
}

void DrawBall(HDC hdc,UINT iconIndex,UINT ballIndex)
{
	HICON hBall=LoadIcon(GetModuleHandle(IMAGENAME),ballName[ballIndex]);
	DrawIcon(hdc,g_hsBitmap[iconIndex].xBall,g_hsBitmap[iconIndex].yBall,hBall);
}

void DrawProgIcon(HDC hdc,UINT iconIndex)
{
	HICON hIcon=LoadIcon(GetModuleHandle(IMAGENAME),g_hsBitmap[iconIndex].iconName);
	DrawIcon(hdc,g_hsBitmap[iconIndex].xIcon,g_hsBitmap[iconIndex].yIcon,hIcon);
}

void DrawAllIcons(HDC hdc,bool bSelect)	
{
	//DrawBall(hdc,g_focusIconIndex,g_ballIndex);
	//g_ballIndex=0;
	if(COMPILE_FLAG==0)
	{
	    if(g_focusIconIndex<3&&bSelect)
	    {
			DrawBall(hdc,g_focusIconIndex,g_ballIndex);
	    }
		for(int i=0;i<3;i++)
		{
			DrawProgIcon(hdc,i);
		}
	}
	else if(COMPILE_FLAG==1)
	{
	    if((g_focusIconIndex==3||g_focusIconIndex==4)&&bSelect)
	    {
			DrawBall(hdc,g_focusIconIndex,g_ballIndex);
	    }
		for(int i=3;i<5;i++)
		{
			DrawProgIcon(hdc,i);
		}
	}
	else
	{
	    if((g_focusIconIndex>=5&&g_focusIconIndex<TOTALBITMAP)&&bSelect)
	    {
			DrawBall(hdc,g_focusIconIndex,g_ballIndex);
	    }
		for(int i=5;i<TOTALBITMAP;i++)
		{
			DrawProgIcon(hdc,i);
		}
	}
}

void CALLBACK iconTimerProc(
					HWND hwnd, 
					UINT uMsg, 
					UINT idEvent, 
					DWORD dwTime 
					)
{
	//if(hwnd==g_hHomeScreenWnd)
		//MessageBox(NULL,L"HOME",L"Hello",MB_OK);
		//return;
		
	if(g_ballIndex<TOTALBALLICON)
	{
		HDC hdc=GetDC(NULL);
		//HDC hdc=GetDC(FindWindow(L"MSStart",NULL));
		if(!g_ballIndex)
		{
			DrawBall(hdc, g_focusIconIndex,g_ballIndex);
			DrawProgIcon(hdc,g_focusIconIndex); 	
			ReleaseDC(NULL,hdc);
			//KillTimer(NULL,g_iconTimerID);
			//KillTimer(hwnd,g_iconTimerID);
			//g_iconTimerID=0;
			return;
		}
		DrawBall(hdc, g_focusIconIndex,g_ballIndex);
		DrawProgIcon(hdc,g_focusIconIndex);		
		ReleaseDC(NULL,hdc);
		//ReleaseDC(hwnd,hdc);
		g_ballIndex++;
		if(g_ballIndex>=TOTALBALLICON)
		{
			g_ballIndex=0;
		}
	}
}

VOID FAR PASCAL andylineCallbackFunc( 
  DWORD hDevice, 
  DWORD dwMsg, 
  DWORD dwCallbackInstance, 
  DWORD dwParam1, 
  DWORD dwParam2, 
  DWORD dwParam3
)
{
}

DWORD GetTSPLineDeviceID(const HLINEAPP hLineApp, const DWORD dwNumberDevices, const DWORD dwAPIVersionLow, const DWORD dwAPIVersionHigh, const TCHAR *const psTSPLineName)
{
  DWORD dwReturn = 0xffffffff;
  for(DWORD dwCurrentDevID = 0 ; dwCurrentDevID < dwNumberDevices ; dwCurrentDevID++)
  {
    DWORD dwAPIVersion;
    LINEEXTENSIONID LineExtensionID;
    if(0 == lineNegotiateAPIVersion(hLineApp, dwCurrentDevID, 
      dwAPIVersionLow, dwAPIVersionHigh, 
      &dwAPIVersion, &LineExtensionID)) 
    {
      LINEDEVCAPS LineDevCaps;
      LineDevCaps.dwTotalSize = sizeof(LineDevCaps);
      if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID, 
        dwAPIVersion, 0, &LineDevCaps)) 
      {
        BYTE* pLineDevCapsBytes = new BYTE[LineDevCaps.dwNeededSize];
        if(0 != pLineDevCapsBytes) 
        {
          LINEDEVCAPS* pLineDevCaps = (LINEDEVCAPS*)pLineDevCapsBytes;
          pLineDevCaps->dwTotalSize = LineDevCaps.dwNeededSize;
          if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID, 
            dwAPIVersion, 0, pLineDevCaps)) 
          {
            if(0 == _tcscmp((TCHAR*)((BYTE*)pLineDevCaps+pLineDevCaps->dwLineNameOffset), 
              psTSPLineName)) 
            {
              dwReturn = dwCurrentDevID;
            }
          }
          delete[]  pLineDevCapsBytes;
        }
      }
    }
  }
  return dwReturn;
}

DWORD WINAPI ThreadProcGetAsyncKeyState(LPVOID lpParameter)
{

	while(true)
	{
		SHORT result=GetAsyncKeyState(VK_UP);
		if(result&0x80)
		{
			switch(g_focusIconIndex)
			{
				case 0:
					g_focusIconIndex=5;
					break;
			    case 1:
					g_focusIconIndex=6;
					break;
				case 2:
					g_focusIconIndex=7;
					break;
				case 3:
					g_focusIconIndex=0;
					break;
				case 4:
					g_focusIconIndex=2;
					break;
				case 5:
					g_focusIconIndex=3;
					break;
				case 6:
					g_focusIconIndex=1;
					break;
				case 7:
					g_focusIconIndex=4;
					break;
				default:
					break;
			}			
			g_bSecondTurn=false;
			g_bFocusChange=true;		
			g_ballIndex=0;
		}
		result=GetAsyncKeyState(VK_DOWN);
		if(result&0x80)
		{
			switch(g_focusIconIndex)
			{
				case 0:
					g_focusIconIndex=3;
					break;
			    case 1:
					g_focusIconIndex=6;
					break;
				case 2:
					g_focusIconIndex=4;
					break;
				case 3:
					g_focusIconIndex=5;
					break;
				case 4:
					g_focusIconIndex=7;
					break;
				case 5:
					g_focusIconIndex=0;
					break;
				case 6:
					g_focusIconIndex=1;
					break;
				case 7:
					g_focusIconIndex=2;
					break;
				default:
					break;
			}			
			g_bSecondTurn=false;
			g_bFocusChange=true;		
			g_ballIndex=0;
			
		}
		Sleep(100);
	}
	return 0;
}

DWORD WINAPI ThreadProcGetOperatorName(LPVOID lpParameter)
{
	HLINEAPP hLineApp;
	HLINE hLine;
	LINEINITIALIZEEXPARAMS		  liep = {0};
	DWORD dwDevNum;
	DWORD dwAPIVersion=TAPI_API_HIGH_VERSION;
	LONG lResult;
	static LINEOPERATOR lineOperator;
	static LINEOPERATORSTATUS lineOperatorStatus;
	DWORD  dwTAPILineDeviceID = 0; 
	const DWORD   dwMediaMode = LINEMEDIAMODE_DATAMODEM | LINEMEDIAMODE_INTERACTIVEVOICE; 
	//RECT operatorRect;	
	
	while(true)
	{
		//WaitForSingleObject(g_hEvent,INFINITE); 
		
		// set the line init params 
		liep.dwTotalSize = sizeof(liep); 
		liep.dwOptions = LINEINITIALIZEEXOPTION_USEEVENT; 
		
		lResult=lineInitializeEx(
						  &hLineApp, 
						  GetModuleHandle(IMAGENAME), 
						  andylineCallbackFunc,//NULL, 
						  IMAGENAME, 

⌨️ 快捷键说明

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