#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;
}