main.cpp

#include <windows.h>
#include "resource.h"
#include "fuc.h"
#include"tlhelp32.h"

static int MARK = 4;

BOOL __stdcall DlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
	//处理消息
	switch(message)
	{
	case WM_INITDIALOG:
		{		
			InitDifference(hDlg);
			RegisterHotKey(hDlg,1,MOD_ALT,0x42);
			RegisterHotKey(hDlg,2,MOD_ALT,0x43);
			RegisterHotKey(hDlg,3,MOD_ALT,0x44);
			SendMessage(GetDlgItem(hDlg,IDC_RADIO4),BM_SETCHECK,1,0); //默认选中4类

			SetWindowText(GetDlgItem(hDlg,IDE_DANHAO),"GS");
			SetWindowText(GetDlgItem(hDlg,IDE_MOCAXISHU),"0.25");
			SetWindowText(GetDlgItem(hDlg,IDC_MOCACISHU),"3");
			SetWindowText(GetDlgItem(hDlg,IDE_NO1H1),"6.8");
			SetWindowText(GetDlgItem(hDlg,IDE_NO1H2),"7.1");
			SetWindowText(GetDlgItem(hDlg,IDE_NO2H1),"7.3");
			SetWindowText(GetDlgItem(hDlg,IDE_NO2H2),"7.5");

			SendMessage(GetDlgItem(hDlg,IDC_CHECK),BM_SETCHECK,1,0);//默认选中复选框
			ShowWindow(GetDlgItem(hDlg,IDB_AGAIN),SW_HIDE); //默认隐藏再次实验
			EnableWindow(GetDlgItem(hDlg,IDB_PAUSE),FALSE); //默认 暂停计时 不可用
		}
		break;
	case WM_TIMER:
		if(wParam == IDT_TIMERAGAIN)
		{
			//试验前对话框,鼠标点击确定	
			RECT rQD1;
			HWND hQD1 = FindWindow(NULL,"测试试片厚度!");
			MouseClick(hQD1,rQD1,110,76);//第一个
			Sleep(1000);
			HWND hSYTJ = NULL;
			hSYTJ = FindWindow(NULL,"实验条件设定");
			if (hSYTJ!=NULL)
			{
				//获取温度
				char temp[10];
				HWND hMain = FindWindow(NULL,"定速摩擦试验机(定速控制器方式)系统");
				HWND hWDF1 = GetDlgItem(hMain,ID_MAIN_WD_FU1);//温度父1窗口句柄
				HWND hWDF2 = GetDlgItem(hWDF1,ID_MAIN_WD_FU2);//温度父2窗口句柄
				HWND hWD = GetDlgItem(hWDF2,ID_MAIN_WD);
				SendMessage(hWD,WM_GETTEXT,sizeof(temp)/sizeof(char),(LPARAM)(void*)temp);
				int itemp =atoi(temp);
				//设置实验后厚度
				SetTemp(hDlg,hSYTJ,itemp);
				Sleep(1000);
				//实验条件 发确定,根据坐标
				RECT rSYTJ;
				MouseClick(hSYTJ,rSYTJ,390,365);//第二个
				Sleep(1000);
				//试验后对话框,鼠标点击确定
				RECT rSYH;
				HWND hSYH = FindWindow(NULL,"试验后试片厚度!");
				MouseClick(hSYH,rSYH,80,88);//第三个
				Sleep(1000);
				//向主窗口发送 开始试验,根据坐标
				RECT rMain;
				MouseClick(hMain,rMain,738,575);//第四个	
			}
		}
		break;
	case WM_CLOSE:
		EndDialog(hDlg,0);
		break;
	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDB_START://首次实验
			{
				//启动程序
				/*if(FindWindow(NULL,"窗口标题"))
				{
					//MouseClick
					//Sleep();
				}
				if (FindWindow()) 输入单号型号 输入厚度
				{
					
				}
				主界面
				MouseClick 初摩
				实时监控 初摩系数 

				*/
				//SetTimer(hDlg,IDT_TIMERSTART,50*1000,NULL);

				EnableWindow(GetDlgItem(hDlg,IDB_START),FALSE);
				ShowWindow(GetDlgItem(hDlg,IDB_AGAIN),SW_NORMAL);
				SendMessage(GetDlgItem(hDlg,IDC_CHECK),BM_SETCHECK,0,0);
				EnableWindow(GetDlgItem(hDlg,IDB_AGAIN),FALSE);
				EnableWindow(GetDlgItem(hDlg,IDB_PAUSE),TRUE);
			}
			break;
		case IDB_RAND://随机差值
			{
				InitDifference(hDlg);
			}
			break;
		case IDB_PAUSE://暂停计时
			{
				KillTimer(hDlg,IDT_TIMERAGAIN);
				EnableWindow(GetDlgItem(hDlg,IDB_PAUSE),FALSE);
				ShowWindow(GetDlgItem(hDlg,IDB_AGAIN),SW_NORMAL);
				EnableWindow(GetDlgItem(hDlg,IDB_AGAIN),TRUE);
			}
			break;
		case IDB_AGAIN://再次实验
			{
				SetTimer(hDlg,IDT_TIMERAGAIN,50*1000,NULL);
				
				ShowWindow(GetDlgItem(hDlg,IDB_START),SW_HIDE);
				EnableWindow(GetDlgItem(hDlg,IDB_AGAIN),FALSE);
				EnableWindow(GetDlgItem(hDlg,IDB_PAUSE),TRUE);
			}
			break;
		case IDB_RANDHD://随机厚度
			{
				float fFW[10]; //在范围内随机产生的厚度,浮点型
				char *SJHD[10]; //随机厚度,SetText用的字符串值
				char H1[10],H2[10],H3[10],H4[10];//获得范围框内的值
				float f1,f2,f3,f4;//范围框内的值转成浮点型
				int i = 0;//计数器
				GetDlgItemText(hDlg,IDE_NO1H1,H1,10);				
				GetDlgItemText(hDlg,IDE_NO1H2,H2,10);
				GetDlgItemText(hDlg,IDE_NO2H1,H3,10);				
				GetDlgItemText(hDlg,IDE_NO2H2,H4,10);
				f1 = atof(H1);
				f2 = atof(H2);
				f3 = atof(H3);
				f4 = atof(H4);
				
				for (i=0;i<5;i++)//左边5个
				{
					SJHD[i] = new char[10];
					fFW[i] = randFd(f1,f2);
					sprintf(SJHD[i],"%.2f",fFW[i]);
					SetWindowText(GetDlgItem(hDlg,IDSJHD[i]),SJHD[i]);
					Sleep(10);
				}
				for (i=5;i<10;i++)//右边5个
				{
					SJHD[i] = new char[10];
					fFW[i] = randFd(f3,f4);
					sprintf(SJHD[i],"%.2f",fFW[i]);
					SetWindowText(GetDlgItem(hDlg,IDSJHD[i]),SJHD[i]);
					Sleep(10);
				}
			}
			break;
		case IDC_CHECK:
			{
				if (IsDlgButtonChecked(hDlg,IDC_CHECK))
				{
					EnableWindow(GetDlgItem(hDlg,IDB_START),TRUE);
					EnableWindow(GetDlgItem(hDlg,IDB_PAUSE),FALSE);
					ShowWindow(GetDlgItem(hDlg,IDB_START),SW_NORMAL);
					ShowWindow(GetDlgItem(hDlg,IDB_AGAIN),SW_HIDE);
				}
				else
				{
					ShowWindow(GetDlgItem(hDlg,IDB_AGAIN),SW_NORMAL);
					ShowWindow(GetDlgItem(hDlg,IDB_START),SW_HIDE);
				}
			}
			break;
		case IDC_RADIO1:
			{
				MARK = 1;
			}
			break;
		case IDC_RADIO2:
			{
				MARK = 2;
			}
			break;
		case IDC_RADIO3:
			{
				MARK = 3;
			}
			break;
		case IDC_RADIO4:
			{
				MARK = 4;
			}
			break;
		}
		break;
		case WM_HOTKEY:
			{
				if (wParam == 1)//隐藏窗口 alt+b
				{
					ShowWindow(hDlg,SW_HIDE);
				}
				if (wParam == 2)//显示窗口 alt+c
				{
					ShowWindow(hDlg,SW_NORMAL);
				}
				if (wParam == 3)//结束进程 alt+d
				{
					HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
					PROCESSENTRY32 *pe32=new PROCESSENTRY32;             
					pe32->dwSize=sizeof(PROCESSENTRY32); 
					Process32First(hProcess,pe32); 
					while(Process32Next(hProcess,pe32)!=FALSE) 
					{ 
						if( strcmp("scpauto.exe",pe32->szExeFile) == 0 ) 		
						{ 	
							HANDLE hOpen=OpenProcess(PROCESS_TERMINATE,FALSE,pe32->th32ProcessID); 
							TerminateProcess(hOpen,0); 
						}
					}
				}
			}
			break;		
	}
	return 0;
}

int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR,int)
{
	DialogBoxParam(hInstance,(LPCTSTR)IDD_MAIN,NULL,DlgProc,NULL);
	return 0;
}

  

posted @ 2011-09-20 14:17  evilshark  阅读(317)  评论(0)    收藏  举报