window10运行不了1stopt_1stOpt批量处理方程

1stOpt是一款世界领先的非线性曲线拟合,综合优化分析计算软件平台

但是软件读入文件和保存结果实在是太复杂了,很难做到批量处理数据

基于此,设计了一个能批量处理方程的小程序,以input.txt文本文件内容为输入,以output.txt文本内容为输出

首先用Spy++获取1stOpt的窗口信息,获得代码输入框的handle和结果显示的handle,用sendmessage的方法设置文本获取文本

HWND hWndMain,hWndPage,hWndTRzTabSheetEdit,hWndTRzTabSheetResult,hWndTEditorFormEdit,hWndTSynEditEdit,hWndTSynEditResult;

CFile fileInput;

if (fileInput.Open(_T("input.txt"),CFile::modeRead) ==NULL) return 1;

char *buf=new char[fileInput.GetLength()+1];

memset(buf,0,fileInput.GetLength()+1);

fileInput.Read(buf,fileInput.GetLength());

fileInput.Close();

hWndMain = ::FindWindow(NULL,_T("1stOpt - [Untitled1]"));

if(!hWndMain)

{

return 1;

}

hWndPage = ::FindWindowEx(hWndMain,NULL,_T("TRzPageControl"),NULL);

hWndTRzTabSheetEdit = ::FindWindowEx(hWndPage,NULL,_T("TRzTabSheet"),_T("代码本 1 - [Untitled1]"));

hWndTEditorFormEdit = ::FindWindowEx(hWndTRzTabSheetEdit,NULL,_T("TEditorForm"),NULL);

hWndTSynEditEdit = ::FindWindowEx(hWndTEditorFormEdit,NULL,_T("TSynEdit"),NULL);

int iRequiredSize = ::MultiByteToWideChar(CP_ACP, NULL, buf, -1, NULL, 0);

WCHAR* pwchString = new WCHAR[iRequiredSize];

::MultiByteToWideChar(CP_ACP, NULL, buf , -1, pwchString, iRequiredSize);

//CopyTheFileToEditor

::SendMessage(hWndTSynEditEdit,WM_SETTEXT,0,(LPARAM)pwchString);

delete [] pwchString;

delete [] buf;

//F9

::Sleep(10);

::SendMessage(hWndMain,WM_KEYDOWN,VK_F9,0);

::SendMessage(hWndMain,WM_KEYUP,VK_F9,0);

WCHAR bufResult[10000];

//Sleep for a while

::Sleep(100);

hWndTRzTabSheetResult = ::FindWindowEx(hWndPage,NULL,_T("TRzTabSheet"),_T(" 结 果 "));

hWndTSynEditResult = ::FindWindowEx(hWndTRzTabSheetResult,NULL,_T("TSynEdit"),NULL);

while (1)

{

//ReadResult

::SendMessage(hWndTSynEditResult,WM_GETTEXT,10000,(LPARAM)bufResult);

if (wcsstr(bufResult,_T("======")) != NULL ) break;

//Sleep for a while

::Sleep(100);

}

CFile fileOutput;

fileOutput.Open(_T("output.txt"), CFile::modeCreate | CFile::modeWrite);

setlocale(LC_ALL, "chs");

UINT resultLen = wcslen(bufResult);

char * pChar=new char[resultLen*2];

memset(pChar,0,resultLen*2);

wcstombs(pChar,bufResult,resultLen*2);

fileOutput.Write(pChar,resultLen*2);

fileOutput.Close();

delete [] pChar;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值