四:调用dll
1:dll 在不同目录:
typedef DWORD (WINAPI* SETINFO)(LPCTSTR, LPCTSTR, LPCTSTR, DWORD, LPCTSTR, DWORD, DWORD);
HMODULE hSetCom =NULL;
SETINFO SetInfo =NULL;
hSetCom = LoadLibrary(strComPath);
SetInfo = (SETINFO)GetProcAddress(hSetCom,FUNC_SETMAILINFO);
SetInfo(,,,,,,);
FreeLibrary(hSetCom);
五:线程
ON_MESSAGE(WM_SETUP_THREAD_MSG, OnThreadMessage);
SetupInfo *m_lSetupInfo;
AfxBeginThread(Setup_GetThread,m_lSetupInfo);
UINTSetup_GetThread(LPVOID pParam)
{
//处理过程
::SendMessage(lFax->hWnd, WM_SETUP_THREAD_MSG, GET_INFO, (LPARAM)lset);//消息处理
}
LRESULT FaxSetupPage::OnThreadMessage(WPARAM wParam, LPARAM lParam)
{
switch(wParam)
{
case GET_INFO:
{
//处理
}
}
五、进程
STARTUPINFO st;
ZeroMemory ((void *)& st, sizeof (STARTUPINFO));
st.cb = sizeof (STARTUPINFO);
st.dwXSize= 10;
st.dwYSize= 10;
CString szPath;
szPath = pSetupPath;
CString szCommandLine;
szCommandLine = _T(" /s");
PROCESS_INFORMATION pret;
if (! CreateProcess ((LPTSTR) (LPCTSTR)szPath, (LPTSTR) (LPCTSTR) szCommandLine, NULL, NULL,
TRUE, CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP | NORMAL_PRIORITY_CLASS,
NULL, NULL, & st, & pret))
{
return 0;
}
CloseHandle(pret.hThread);
while (1)
{
MSG msg;
if (MsgWaitForMultipleObjects (1, & pret.hProcess, FALSE, INFINITE, QS_ALLINPUT) == WAIT_OBJECT_0)
break;
while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(& msg);
DispatchMessage (& msg);
}
}
CloseHandle(pret.hProcess);