VC6中創建一個MFC命令行工程,可以直接編譯,懂的,可以拿來用。
#include "stdafx.h"
#include "MediaCoder註冊機.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CWinApp theApp;
using namespace std;
int ok=0;
typedef struct ENUM_PARAM
{
CTreeCtrl* hTree;
HTREEITEM hParent;
}ENUM_WIN_PARAM;
BOOL __stdcall EnumWindowsProc(HWND hWnd, LPARAM lParam);
BOOL CaptureWindowToClipboard(HWND hWnd);
BOOL __stdcall ChildEnumWindowsProc(HWND hWnd, LPARAM lParam)
{
ENUM_WIN_PARAM* xParam=(ENUM_WIN_PARAM*)lParam;
TV_INSERTSTRUCT TCItem;
TCHAR m_strTitle[MAX_PATH];
TCHAR m_strClass[MAX_PATH];
TCHAR m_strDisplay[MAX_PATH*2+10];
ZeroMemory(&TCItem,sizeof(TV_INSERTSTRUCT));
if(::GetWindowLong(hWnd,GWL_STYLE)& WS_VISIBLE)
{
::GetWindowText(hWnd,m_strTitle,MAX_PATH-1);
if(strstr(m_strTitle,"做一個簡單算術題吧"))
{
CString str_title=m_strTitle;
int i_end1=str_title.Find(":",0);//查找:出現的位置
int i_end2=str_title.Find('+',0);//查找+出現的位置
int i_end3=str_title.Find('=',0);//查找=出現的位置
CString str_mid1=str_title.Mid(i_end1+2,i_end2-i_end1-2);
CString str_mid2=str_title.Mid(i_end2+1,i_end3-i_end2-1);
ok=atoi(str_mid1.LockBuffer())+atoi(str_mid2.LockBuffer());//計算結果
}
if(strstr(m_strTitle,"繼續"))
{
EnableWindow(hWnd,TRUE);
SendMessage(hWnd, 0x201, 0, 0); // Mouse button down
SendMessage(hWnd, 0x202, 0, 0); // Mouse button up
}
::GetClassName(hWnd,m_strClass,MAX_PATH-1);
if(strstr(m_strClass,"Edit"))
{
char str_ok[10]={0};
sprintf(str_ok,"%d",ok);
SendMessage(hWnd,WM_SETTEXT,10,(LPARAM )str_ok);//發送計算結果
}
ENUM_WIN_PARAM xEnumWinParam;
::EnumChildWindows(hWnd,ChildEnumWindowsProc,(LPARAM)(&xEnumWinParam));
}
return TRUE;
}
BOOL __stdcall EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
ENUM_WIN_PARAM* xParam=(ENUM_WIN_PARAM*)lParam;
TV_INSERTSTRUCT TCItem;
TCHAR m_strTitle[MAX_PATH];
TCHAR m_strClass[MAX_PATH];
TCHAR m_strDisplay[MAX_PATH*2+10];
ZeroMemory(&TCItem,sizeof(TV_INSERTSTRUCT));
if(::GetWindowLong(hWnd,GWL_STYLE)& WS_VISIBLE)
{
::GetWindowText(hWnd,m_strTitle,MAX_PATH-1);
if(strstr(m_strTitle,"分鐘後自動繼續")){//窗口關鍵字
::GetClassName(hWnd,m_strClass,MAX_PATH-1);
strcpy(m_strDisplay,m_strTitle);
strcat(m_strDisplay,":[");
strcat(m_strDisplay,m_strClass);
strcat(m_strDisplay,"]");
TCItem.hParent = xParam->hParent;
TCItem.hInsertAfter = TVI_LAST;
TCItem.item.mask = TVIF_TEXT|TVIF_STATE|TVIF_PARAM;
TCItem.item.lParam = (LPARAM)hWnd;
TCItem.item.pszText = m_strDisplay;
ENUM_WIN_PARAM xEnumWinParam;
::EnumChildWindows(hWnd,ChildEnumWindowsProc,(LPARAM)(&xEnumWinParam));
}
}
return TRUE;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
while(true)
{
printf("開始查找註冊窗口\r\n");
ENUM_WIN_PARAM xEnumWinParam;
::EnumWindows(EnumWindowsProc,(LPARAM)(&xEnumWinParam));
Sleep(1000*10);
}
return nRetCode;
}