建立一个公有的HANDLE ,如:信号量,事件,同步等,
有关请
有关请
解决方案 »
- 关于栈和程序入栈,懂的进
- 传送文件名
- 在CListCtrl里添加的图标只能是16×16的吗
- 用CAsyncSocket并使用udp协议时,如何得知消息发送端的ip和port?
- jennyvenus, oldworm来拿分,顺便继续讨论软件加密问题。
- datagrid的问题,help me help me
- 初学者问题:怎样将BSTR类型转化为CString类型?
- VC技术交流群 44319642
- 关于typedef BOOL 在.h文件中什么意思啊
- 用什么方法(最简单)可以区分从串口读来得数据啊,急急急
- 急!急!急!急!初学者求救:热键问题!!!
- 怎样获得CView::KeyDown事件中按下键的值,如为“A”、“1”等
后面那两个字符为ALT+255
GlobalFindAtom
GlobalAddAtom
GlobalDeleteAtom
在系统中建立一个你自己的标志,标志可取特别的,如“克林顿你这个混蛋,小布什你这个白痴,还有..."
再检测原子是否存在来决定下一步。
有关api:
GlobalFindAtom
GlobalAddAtom
GlobalDeleteAtom
if (myhandle!=NULL)
{
HWND hCurWnd = NULL;
DWORD dwMyID;
DWORD dwCurID; hCurWnd = ::GetForegroundWindow();
dwMyID = ::GetCurrentThreadId();
dwCurID = ::GetWindowThreadProcessId(hCurWnd, NULL);
::AttachThreadInput( dwMyID, dwCurID, TRUE);
::SetForegroundWindow( myhandle );
::AttachThreadInput( dwMyID, dwCurID, FALSE); }
BOOL CMyApp::InitInstance()
{
CString m_pTitle;
m_pTitle.LoadString(AFX_IDS_APP_TITLE);
//防止应用运行多个实例
::CreateMutex (NULL,TRUE,m_pszExeName);
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
CWnd* pPrevWnd=CWnd::FindWindow (NULL,m_pTitle);
if (pPrevWnd)
{
pPrevWnd->SetForegroundWindow ();
pPrevWnd->GetLastActivePopup ()->SetForegroundWindow ();
}
return FALSE;
}
......
}
if (GetLastError()==ERROR_ALREADY_EXISTS)
{
// find out the previous application's main window.
CWnd* pPrevWnd=CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);
while (pPrevWnd) {
// does this window have the previous instance tag'set?
if (::GetProp(pPrevWnd->GetSafeHwnd(),m_pszExeName)) {
if (GetWindowLong(pPrevWnd->m_hWnd,GWL_STYLE) & WS_MINIMIZE)
pPrevWnd->ShowWindow(SW_RESTORE);
CWnd* pWnd=pPrevWnd->GetLastActivePopup();
pWnd->SetForegroundWindow();
return FALSE; // terminate the current instance
}
// did not find window, get next window in list.
pPrevWnd=pPrevWnd->GetWindow(GW_HWNDNEXT);
}
TRACE("Could not find previous instance window!\n");
AfxMessageBox("请稍等几秒钟,再尝试重新运行.");
return FALSE;
}