superdisplay 启动唯一化 + 命令行连续控制
superdisplay 启动唯一化
后来进行了修改,参见 《针对唯一化实例对话框程序,及其命令行操作方法》http://www.cnblogs.com/carl2380/archive/2012/08/28/2660817.html
ok--参照 SuperTools 13681612496
// 唯一化,运行一个实例
if (!FirstInstance())
{
if (m_pMainWnd!=NULL)
{
// 加入这句话,程序就可以连续执行部分命令行(但是注意不能实现连续操作,
// 如打开某个文件,指定到某页,这种操作最终还是必须用消息来实现),所以采用了方法2
// 方法1
// ::SendMessage(m_MainDlg->m_hWnd, WM_COMMAND, MAKELONG(IDOK,BN_CLICKED), NULL);
// m_MainDlg->OperCmd(strCmdLine);
// 方法2 -- 采用此方法就保证了将命令行,转化为消息传送,这样外部程序可以调用命令行,
// 也可以直接发送消息来控制 superdisplay',不过用命令行,不需要findwindow,
// 因为这个工作由superdisplay自己在FirstInstance这里做了
if (m_lpCmdLine[0] != _T('\0'))
{
CString strMsg(m_lpCmdLine);
COPYDATASTRUCT cpd;
cpd.dwData = 0;
cpd.cbData = strMsg.GetLength()*sizeof(TCHAR)+1;
cpd.lpData = (void*)(strMsg.GetBuffer(0));
::SendMessage(m_pMainWnd->m_hWnd,WM_COPYDATA,NULL,(LPARAM)&cpd);
}
}
return FALSE;
}