亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > C > 正文

如何讓應(yīng)用程序只運(yùn)行一個(gè)

2020-02-24 14:24:35
字體:
供稿:網(wǎng)友

如何讓應(yīng)用程序只運(yùn)行一個(gè)?關(guān)于這個(gè)問題是不是有很多小伙伴們?cè)趯W(xué)習(xí)的過程中都覺得不解呢?那么下面的內(nèi)容中就讓武林小編為大家介紹讓應(yīng)用程序只運(yùn)行一個(gè)的實(shí)現(xiàn)方法吧。

在我們的程序當(dāng)中如果要實(shí)現(xiàn)類似《360軟件管家》的功能,就要解決兩個(gè)問題,首先是要判斷該程序已有一個(gè)實(shí)例在運(yùn)行,其次是要將已運(yùn)行的應(yīng)用程序?qū)嵗せ睿瑫r(shí)退出第二個(gè)應(yīng)用程序?qū)嵗?/p>

對(duì)于第一個(gè)問題,我們可以通過設(shè)置命名互斥對(duì)象或命名信標(biāo)對(duì)象,在程序啟動(dòng)的時(shí)候檢測(cè)互斥對(duì)象或信標(biāo)對(duì)象,如互斥對(duì)象或信標(biāo)對(duì)象已存在,則可以判斷此程序已有一個(gè)實(shí)例正在運(yùn)行。

第二個(gè)問題是如何找到已經(jīng)運(yùn)行的應(yīng)用程序?qū)嵗?,如果我們能夠找到已運(yùn)行實(shí)例主窗口的指針,即可調(diào)用SetForegroundWindow來激活該實(shí)例。我們可以通過兩種形式找到已運(yùn)行實(shí)例的主窗口,一種形式是通過調(diào)用FindWindowEx去查找正在運(yùn)行的窗口的句柄,這種方式用得比較多一些,而本文通過另一種形式去查找正在運(yùn)行的窗口的句柄。通過調(diào)用SetProp給應(yīng)用程序主窗口設(shè)置一個(gè)標(biāo)記,用GetDesktopWindow 可以獲取Windows環(huán)境下的桌面窗口的句柄,所有應(yīng)用程序的主窗口都可以看成該窗口的子窗口,接著我們就可以用GetWindow函數(shù)來獲得這些窗口的句柄。然后再用Win32 SDK函數(shù)GetProp查找每一個(gè)應(yīng)用程序的主窗口是否包含有我們?cè)O(shè)置的標(biāo)記,這樣就可以找到我們要找的第一個(gè)實(shí)例主窗口。

下面演示代碼是以一個(gè)單文檔應(yīng)用程序?yàn)槔こ堂质荕utex。

?

1、在應(yīng)用程序類InitInstance()函數(shù)中判斷是否已有一個(gè)應(yīng)用程序?qū)嵗谶\(yùn)行。

?

BOOL CMutexApp::InitInstance()

{

?????? //創(chuàng)建命名信標(biāo)對(duì)象。

?????? HANDLE hSem=CreateSemaphore(NULL,1,1,"維新");

?????? if(hSem)? //信標(biāo)對(duì)象創(chuàng)建成功。

?????? {

????????????? //信標(biāo)對(duì)象已經(jīng)存在,則程序已有一個(gè)實(shí)例在運(yùn)行。

????????????? if(ERROR_ALREADY_EXISTS==GetLastError())

????????????? {?????????????????

???????????????????? CloseHandle(hSem);????? //關(guān)閉信號(hào)量句柄。

?

//獲取桌面窗口的一個(gè)子窗口。

???????????????????? HWND hWndPrev=::GetWindow(::GetDesktopWindow(),GW_CHILD);??

?

???????????????????? while(::IsWindow(hWndPrev))

???????????????????? {

???????????????????? //判斷窗口是否有我們預(yù)先設(shè)置的標(biāo)記,如有,則是我們尋找的窗口,并將它激活。

??????????????????????????? if(::GetProp(hWndPrev,"維新"))??

??????????????????????????? {

??????????????????????????? //如果主窗口已最小化,則恢復(fù)其大小。

?????????????????????????????????? if (::IsIconic(hWndPrev))????

????????????????????????????????????????? ::ShowWindow(hWndPrev,SW_RESTORE);

?

?????????????????????????????????? //將應(yīng)用程序的主窗口激活。

?????????????????????????????????? ::SetForegroundWindow(hWndPrev);

?????????????????????????????????? return FALSE;????????????????????? //退出實(shí)例。

??????????????????????????? }

??????????????????????????? //繼續(xù)尋找下一個(gè)窗口。

??????????????????????????? hWndPrev = ::GetWindow(hWndPrev,GW_HWNDNEXT);

???????????????????? }

???????????????????

???????????????????? AfxMessageBox("已有一個(gè)實(shí)例在運(yùn)行,但找不到它的主窗口!");

????????????? }

?????? }

?????? else

?????? {

????????????? AfxMessageBox("創(chuàng)建信標(biāo)對(duì)象失敗,程序退出!");

????????????? return FALSE;

?????? }

?

?????? AfxEnableControlContainer();

?

?????? // Standard initialization

?????? // If you are not using these features and wish to reduce the size

?????? //? of your final executable, you should remove from the following

?????? //? the specific initialization routines you do not need.

?????

#ifdef _AFXDLL

?????? Enable3dControls();???????????????????? // Call this when using MFC in a shared DLL

#else

?????? Enable3dControlsStatic();????? // Call this when linking to MFC statically

#endif

?

?????? // Change the registry key under which our settings are stored.

?????? // TODO: You should modify this string to be something appropriate

?????? // such as the name of your company or organization.

?????? SetRegistryKey(_T("Local AppWizard-Generated Applications"));

?

?????? LoadStdProfileSettings();? // Load standard INI file options (including MRU)

?

?????? // Register the application's document templates.? Document templates

?????? //? serve as the connection between documents, frame windows and views.

?

?????? CSingleDocTemplate* pDocTemplate;

?????? pDocTemplate = new CSingleDocTemplate(

????????????? IDR_MAINFRAME,

????????????? RUNTIME_CLASS(CMutexDoc),

????????????? RUNTIME_CLASS(CMainFrame),?????? // main SDI frame window

????????????? RUNTIME_CLASS(CMutexView));

?????? AddDocTemplate(pDocTemplate);

?

?????? // Parse command line for standard shell commands, DDE, file open

?????? CCommandLineInfo cmdInfo;

?????? ParseCommandLine(cmdInfo);

?

?????? // Dispatch commands specified on the command line

?????? if (!ProcessShellCommand(cmdInfo))

????????????? return FALSE;

?

?????? // The one and only window has been initialized, so show and update it.

?????? m_pMainWnd->ShowWindow(SW_SHOW);

?????? m_pMainWnd->UpdateWindow();

?

?????? return TRUE;

}

2、在框架類的OnCreate()函數(shù)中設(shè)置查找標(biāo)記。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

?????? if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

????????????? return -1;

?????

?????? if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

????????????? | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

????????????? !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

?????? {

????????????? TRACE0("Failed to create toolbar/n");

????????????? return -1;????? // fail to create

?????? }

?

?????? if (!m_wndStatusBar.Create(this) ||

????????????? !m_wndStatusBar.SetIndicators(indicators,

??????????????? sizeof(indicators)/sizeof(UINT)))

?????? {

????????????? TRACE0("Failed to create status bar/n");

????????????? return -1;????? // fail to create

?????? }

?

?????? // TODO: Delete these three lines if you don't want the toolbar to

?????? //? be dockable

?

?????? m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

?????? EnableDocking(CBRS_ALIGN_ANY);

?????? DockControlBar(&m_wndToolBar);

?

?????

?????? //設(shè)置查找標(biāo)記。

?????? ::SetProp(m_hWnd,"維新",(HANDLE)1);

?

?????? return 0;

}

3、在程序退出是刪除設(shè)置的標(biāo)記,在框架類中響應(yīng)WM_DESTROY消息,進(jìn)行處理。

void CMainFrame::OnDestroy()

{

?????? CFrameWnd::OnDestroy();

?????

?????? // TODO: Add your message handler code here

?????? //刪除所設(shè)置的標(biāo)記。

?????? ::RemoveProp(m_hWnd,"維新");

}

至此,使應(yīng)用程序只運(yùn)行一個(gè)實(shí)例的功能就完成了。

?

看完后你知道如何讓應(yīng)用程序只運(yùn)行一個(gè)了嗎?希望這項(xiàng)技術(shù)對(duì)您會(huì)有幫助,并且不會(huì)顯得太難,謝謝大家的閱讀!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

有码一区二区三区| 国产欧美一区二区三区久久人妖| a级国产乱理论片在线观看99| 蜜桃一区二区三区在线观看| 亚洲.欧美.日本.国产综合在线| 三级欧美日韩| 日日夜夜操操操| 欧美日韩黑人| 亚洲天堂一区二区| 91蜜桃网站免费观看| 国产精品中文字幕亚洲欧美| 97福利电影| 丁香花免费高清完整在线播放| 蜜桃精品久久久久久久免费影院| 亚洲色图21p| 女人被狂躁c到高潮| 亚洲欧洲成人av每日更新| 国产精品免费视频一区一| 日本一区二区视频| 91精品国产色综合久久不8| 欧美色男人天堂| 欧美国产美女| 国产亚洲精品中文字幕| 一级日本免费的| 色哟哟入口国产精品| 九热爱视频精品视频| 免费一级大片| 正在播放一区二区| 国产在线乱码一区二区三区| 伊人www22综合色| 天天看天天干| 在线免费观看欧美| 中文字幕在线观看不卡| 五月天婷婷激情网| 一本色道久久综合狠狠躁篇怎么玩| 林ゆな中文字幕一区二区| 亚洲国产无线乱码在线观看| 欧在线一二三四区| 久草综合在线观看| 亚洲精品电影| 日韩**中文字幕毛片| 中文字幕一区三区久久女搜查官| 一区二区三区欧美精品| 日韩一级片免费看| 激情五月色综合亚洲小说| 国产精品羞羞答答| 日韩欧美国产一区二区三区| 性色av一区二区| 被男人吃奶添下面好舒服动态图| 日韩hd视频在线观看| 成人做爰高清视频网站| 久久精品盗摄| 亚洲小视频在线观看| 国产日韩欧美亚洲一区| 色老头在线视频| 日韩欧美激情一区二区| 久久久久久久爱| 国产乱子伦三级在线播放| 国产精品久久久久久免费| 亚洲a成v人在线观看| 精品人妻在线视频| 免费一区二区三区在线视频| 日韩美女在线观看| 黄网站免费观看| 亚洲国模精品一区| 99久久精品免费视频| 91麻豆精品秘密| 成人做爰视频www| 视频午夜在线| 99久久综合国产精品二区| 俄罗斯精品一区二区| gogo大尺度成人免费视频| 日本黄色电影网站| 毛片在线看网站| 亚洲一区导航| 国产精品美女一区二区在线观看| av在线一区二区| 国产又粗又硬视频| 小早川怜子影音先锋在线观看| 欧美草草影院在线视频| 99热这里只有精品免费| 操日韩av在线电影| 日韩视频免费大全中文字幕| 亚洲情侣在线| 日韩欧美a级片| 成人羞羞网站入口免费| 日韩精品免费一区二区夜夜嗨| 最近2019中文字幕第三页视频| 2020色愉拍亚洲偷自拍| 久久免费看少妇高潮v片特黄| 91精品国产高清久久久久久91| 99热免费在线观看| 尤物av一区二区| 久久精品久久99精品久久| 精品久久影视| 91在线观看欧美日韩| 国产精品亚洲午夜一区二区三区| 精品国产一区二区三区香蕉沈先生| 国产一级片在线| 亚洲激情自拍视频| 日本不卡高清视频| 不卡一卡二卡三乱码免费网站| 亚洲制服丝袜av| 日本精品视频在线| 99久久精品久久久久久清纯| 亚洲人成电影在在线观看网色| 日本午夜激情视频| 毛片毛片毛片毛片| 欧美日韩国产精品一区二区| 日韩中文有码在线视频| 亚洲免费资源在线播放| 国产传媒免费观看| 国产成人无码一区二区在线观看| 青草在线视频在线观看| av动漫在线播放| 蜜臀av一级做a爰片久久| 欧美gay男男猛男无套| jjzzjjzzjjzz| 欧洲亚洲成人| 免费成人网www| 中文字幕一区av| 91日韩精品视频| 自拍偷拍视频亚洲| 精品国自产在线观看| 欧美韩国日本精品一区二区三区| 国产99久久久久久免费看农村| 激情欧美日韩一区二区| 久久久久免费观看| 亚洲亚裔videos黑人hd| h版电影在线播放视频网站| 少妇激情综合网| 国产精伦一区二区三区| 无码精品一区二区三区在线播放| 国产成人一区二区三区电影| 92裸体在线视频网站| 免费做暖暖免费观看日本| 日本女优在线视频一区二区| 久久综合久久八八| 99精品视频播放| 日本欧美韩国一区三区| 国内久久视频| 欧美猛烈性xbxbxbxb| 在线播放黄色av| 91高潮精品免费porn| 绯色av一区二区| 久久久久久久久久99| 麻豆精品蜜桃视频网站| 国产精品久久久99| 触手亚洲一区二区三区| 亚欧精品视频一区二区三区| 日本污视频在线观看| 国产精品高清网站| 日本韩国精品一区二区在线观看| 91视频免费在线看| 三级亚洲高清视频| 日韩毛片免费观看| 国产精品区一区二区三在线播放| 国产亚洲成aⅴ人片在线观看| 一区二区国产欧美| 性生活免费在线观看| 亚洲精品乱码久久久久久久| 视频在线观看国产精品| 青青草原国产免费| 亚洲成成品网站| 欧美电影在线观看一区| 欧美猛交ⅹxxx乱大交视频| 色哦色哦哦色天天综合| 国产成人ay| 中文字幕第24页| 免费av在线一区| 三级毛片电影网站| 精品一二三区| 日产精品99久久久久久| 精品1区2区| 视频一区二区在线观看| 亚洲丁香日韩| 国产精品免费一区二区三区四区| 国产视频在线播放| 欧美久久久久久| 欧美日韩高清影院| 欧美一区综合| 97在线观看免费视频| www.99com| 姝姝窝人体www聚色窝| 中文字幕在线看视频国产欧美在线看完整| 精品女同一区二区三区在线播放| 在线中文字幕网站| 日韩欧美在线影院| 日韩中文字幕一区二区三区| 欧美人xxxx| 亚洲欧美国产另类首页| 浮力影院欧美三级日本三级| 欧美成人aaaaⅴ片在线看| 欧美中文字幕一二三四区| 免费羞羞视频网站| av一二三不卡影片| 最近2019中文免费高清视频观看www99| 日韩三级精品| 樱桃成人精品视频在线播放| 亚洲 日韩 国产第一区| 国产成人精品电影久久久| 久久精品欧美日韩| 欧美aaa在线| 美女日批视频在线观看| 黄网站视频在线观看| 国产成人看片| 黄网站免费在线| 91精品久久久久久综合乱菊| 不卡亚洲精品| 亚洲一区二区久久久| 欧美18免费视频| 99热这里只有精品7| 一区二区三区在线观看免费视频| 国产精品久久久久久婷婷天堂| 麻豆91精品91久久久| 日本一区二区三区视频在线看| 2色视频网站| 免费人成又黄又爽又色| www.蜜臀av.com| 欧美va在线播放| 日日夜夜精品视频免费| 国产51自产区| 超碰97在线人人| 成人免费在线观看网站| 久久中文字幕视频| 亚洲国产91精品在线观看| 68精品国产免费久久久久久婷婷| 阿v天堂2017| 欧美日韩精品区| 欧美日韩亚洲第一| www.-级毛片线天内射视视| 欧美h片在线观看| 国产在线播精品第三| 久久久久久久欧美精品| 亚洲精品日韩丝袜精品| 无码人妻精品一区二区三区99v| 亚洲国产日韩综合久久精品| 国产伦精品一区二区三区千人斩| free性欧美hd另类精品| 国产女同一区二区| 精品免费久久久| 日本精品一区| 91精品1区2区| 日韩精品福利网| 亚洲r级在线观看| 91九色视频在线| 亚洲狠狠丁香婷婷综合久久久| 亚洲成人av资源网| jizzjizzjizz亚洲日本| 亚洲精品无播放器在线播放| 无码人妻丰满熟妇区毛片18| 四虎影视最新网址| 中文在线аv在线| 美乳视频一区二区| 精品少妇一二三区| 欧美色欧美亚洲另类二区| 91精品久久久久久久久中文字幕| 小嫩嫩精品导航| 成人免费淫片视频软件| 亚洲经典视频在线观看| 免费h片在线| 国产一级一片免费播放| 久久久亚洲综合| 亚洲国产精品久久| 日韩网站中文字幕| 国产成人精品最新| 黑人精品xxx一区| 国产人妻人伦精品1国产丝袜| jizz在线免费观看| 久久精品成人欧美大片| 国产亚洲精品美女| 99久久婷婷国产综合精品电影√| 极品在线视频| 亚洲福利电影网| 91视频在线免费观看| 亚洲免费网站在线观看| 国产传媒在线看| 国产欧美精品一区aⅴ影院| 国产精品后入内射日本在线观看| 91国产一区在线| 亚洲一级av毛片| 老司机午夜性大片| 青青操在线观看视频| 日韩黄色网络| 中国女人特级毛片| 成人免费看片'免费看| 日韩高清国产一区在线| 国产精品v日韩精品v欧美精品网站| 影音先锋中文一区| 极品尤物一区二区| 国产免费美女视频| 九九九九精品| 国精产品一区一区三区视频| 久久精品国产亚洲av麻豆蜜芽| 综合婷婷亚洲小说| 色哟哟在线观看| 免费亚洲视频| 国产黄a三级三级| 一区二区三区精密机械公司| 日韩在线视频不卡| 色综合天天综合给合国产| 麻豆影院在线观看| 久久激情网站| 91精品久久久久久久久久久久久| 免费理论片在线观看播放老| aiai在线| 亚洲欧美在线aaa| 可以免费在线看黄的网站| 国产成人啪精品午夜在线观看| 麻豆精品在线看| 国产精品91免费在线| 亚洲乱码电影| 欧美另类高清videos的特点| 3p视频在线观看| 伊人久久大香伊蕉在人线观看热v| 国产精品久久免费看| 成人在线高清免费| 国产婷婷色一区二区三区在线| 欧洲亚洲女同hd| 中文字幕乱码在线观看| 亚洲精品成人天堂一二三| 日韩av成人在线观看| av电影在线观看一区二区三区| 综合一区av| 日韩av在线播放资源| 亚洲国产精品福利| 国产超碰精品| 一区二区三区四区乱视频|