成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Visual C++應用程序實現方法

開發 后端
如果對Visual C++應用程序進行操作時,如果發現這些文件正在被其它程序使用,而且是被獨自打開,這時是沒法對文件進行操作的。

Visual C++是一個功能強大的可視化軟件開發工具,隨著時代的發展科技的發達,Visual C++應用程序已成為編程技術人員進行軟件開發的***工具,因為它不僅是一個C++編譯器,而且是一個基于Windows操作系統的可視化集成開發環境。

那么如何干凈地清除進程呢?其實,在Windows2000操作系統版本中有一個工具程序叫tskill.exe,用它就可以清除掉某個程序的進程,在輸入"tskill 程序名"后就可以清除其運行實例。但是如何要在代碼里實現tskill的功能該如何做呢?針對這一問題,本實例介紹了在Windows2000下實現的方法。

一、實現方法

Visual C++應用程序中,最安全的殺死進程的方法是向運行程序的主窗口發送WM_CLOSE消息,其實現代碼如下:

  1. HWND hwnd =this.m_hWnd; // 獲得主窗口  
  2. PostMessage(hwnd, WM_CLOSE, 0, 0); 

發送此消息后,通常應該等待直到進程確實終止,當進程終止時,它發出狀態信號,并且 WaitForSingleObject 返回WAIT_OBJECT_0。如果返回別的值,進程要么掛起了,要么仍然在進行處理。

在這種情況下,殺死這個進程的唯一方法是用功能更強大的API函數:TerminateProcess()。如果想干得漂亮一點,可以在關閉之前向主窗口發送一個WM_QUERYENDSESSION消息,當用戶結束會話(log out)或者調用ExitWindows()函數時,應用程序會收到這個消息。

然后準備退出進程,此時一般都會彈出一個確認對話框,告訴用戶:"程序要推出了,如果要保存修改的東西,現在是***時機,想保存嗎?"有三種選擇(Yes/No/Cancel)。此外,發送WM_QUERYENDSESSION消息可以拒絕推出進程(按下"Cancel鍵"),如果是這樣,進程將會延續。

如果想要關閉的進程被掛起,使用SendMessageTimeout()函數就非常重要,而不是用SendMessage()函數,其參數SMTO_NOTIMEOUTIFNOTHUNG是一個只有Windows 2000 和Windows XP才有的標志。#t#

其意義是"如果線程沒有掛起,不要超時",換句話說就是如果線程正在進行正常處理,那么永遠等待,以便用戶能看到對話框并決定做什么,當用戶最終做出決定后,SendMessageTimeout()將帶著相應的bOKToKill值返回。

本例為了增強代碼的可重用性,將實現細節都封裝在一個叫CFindKillProcess的類中,包括查找和殺死進程,詳情請參見EnumProc.h和EnumProc.cpp文件。文件中還有另外兩個可重用類,一個是CProcessIterator,另一個是CWindowIterator。

Visual C++應用程序的成員函數FindProcess()查找某個進程序,如果找到這個進程,它返回此進程的ID,然后將此ID傳給CFindKillProcess::KillProcess()函數,KillProcess()函數封裝了關閉窗口以及終止邏輯。

它利用CmainWindowIterator類對象來枚舉進程的主窗口(可能不止一個,見"如何獲取某個進程的主窗口以及創建進程的程序名?"),并發送WM_CLOSE到每一個窗口,然后等待進程死亡。它有一個布爾型參數用來指示當應用程序進程不愿意退出時是否執行TerminateProcess()函數。詳細細節請參見下載的代碼。

二、編程步驟

1、 啟動Visual C++應用程序,生成一個控制臺應用程序,將該程序命名為"kp";

2、 在程序代碼中添加CfindKillProcess、CProcessIterator類的定義;

3、 添加代碼,編譯運行程序。

責任編輯:chenqingxiang 來源: NET130
相關推薦

2010-01-18 14:41:52

Visual C++開

2010-01-12 14:45:32

Visual C++

2010-01-28 17:14:38

Visual C++應

2009-08-24 09:25:18

Visual C# ..NET應用程序

2010-01-25 16:58:15

C++程序

2011-06-21 10:28:17

Qt Visual C++

2010-12-30 16:22:28

Visual C++用戶訪問協議

2009-07-30 18:50:32

C#發送消息C#應用程序

2010-12-27 17:04:07

應用程序版本升級

2010-01-26 09:50:30

C++接口

2009-08-25 09:39:21

創建C# Window

2018-10-25 15:13:23

APP脫殼工具

2011-07-20 16:59:07

2022-12-25 18:03:13

Debug原理軟件

2010-01-28 09:44:08

C++應用程序

2009-07-10 17:24:07

Swing應用程序

2010-01-26 17:16:33

C++應用程序

2010-01-26 14:10:22

Visual C++

2010-01-14 14:17:20

Visual C++

2010-01-14 11:14:47

C++應用程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费艹逼视频 | 欧美综合一区二区 | 国产福利在线 | av久久 | 欧美在线综合 | 国产精品激情小视频 | 欧美激情一区二区三区 | 国产四虎 | 成人免费在线观看 | 精久久久久| 欧美xxxx性 | 精品日本中文字幕 | 亚洲综合在线一区 | 欧美日韩成人在线 | 久久久久久91 | 国产乱码久久久久久一区二区 | 国产精品国产精品国产专区不蜜 | 青青久视频| 九一国产精品 | 亚洲一区中文字幕在线观看 | 日韩在线免费 | 亚洲一区二区三区四区五区午夜 | 夜夜撸av | 国产精品视频一区二区三区 | 国产精品日产欧美久久久久 | 色综合久久久久 | 日韩在线一区二区 | 91aiai| 欧美在线 | 99只有精品| 97色在线视频 | 久久久久国产精品午夜一区 | 免费欧美视频 | 免费不卡视频 | 蜜桃精品视频在线 | 少妇无套高潮一二三区 | 欧美一区二区在线观看 | 欧美美女爱爱 | 超碰在线播 | 91麻豆精品国产91久久久久久久久 | 黄频免费 |