最近幫朋友做乙個監控程式,需要知道當前系統的最前端程序。
搜了半天,一般出來的是下面這個。
[dllimport("user32", charset = charset.ansi, setlasterror = true)]
private
extern
static
intgetwindowlong(
system.intptr hwnd,
system.int32 nindex
);private
bool
iswndtopmost(intptr hwnd)
這段**的意思就是判斷是否有topmost屬性,也就是是否設定置頂屬性。
一般上所有程式都可以設定topmost屬性,如果你是最後乙個設定的,那很好,windows顯示的最前端的程式就你剛才設定的那個。如果不是,就不會是你想要的那個程式視窗。
事實上我想知道的是當前windows顯示的最前端的窗體程式,其實很簡單,下面的函式就可以了。
intptr getforegroundwindow();
具體的例子如下(c#實現), 通過定時器獲取當前的最前端窗體的控制代碼,然後通過process找到程序資訊。
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.diagnostics;
using system.drawing;
using system.runtime.interopservices;
using system.text;
using system.windows.forms;
[dllimport("user32.dll")]
private
static
extern intptr getforegroundwindow();
private
void
timer1_tick(object sender, eventargs e)}}
private
void
form1_load(object sender, eventargs e)
}}
獲取當前顯示的activity
用activitymanager裡面可以獲取到當前執行的所有任務,所有程序和所有服務,這是任務管理器的核心。仔細看getrunningtasks的文件,裡面說獲取的是系統中 running 的所有task,running 狀態包括已經被系統凍結的task。而且返回的這個列表是按照順序排列的,也就是說...
獲取當前顯示的ViewController
關於獲取當前viewcontroller的實現 上網查了很多,但是不全。自己整合了一下 思路通過過responder 來一步一步的找到最上層的viewcontroller uiviewcontroller result nil uiwindow window if window.windowleve...
史上最簡單的windows程式
一直想把mfc與sdk聯絡起來,似乎難以直接查到相應的資料.前不久,一位發布了乙個帖子,題為 書上例子也有錯誤嗎?更使得我這個想法變得明確.對於sdk來說,不必這麼複雜.以下是所給出的程式 cpp demo2 2.cpp a message box define win32 lean and mea...