線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5833
推到 Plurk!
推到 Facebook!

列出所有視窗及視窗內所有子視窗資料

 
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-15 12:06:22 IP:61.231.xxx.xxx 未訂閱
// 參考資料:
// ■ timhuang
//   【Delphi】【發表】利用FindWindow將其他form物件下所有的資料取出來
//    http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30409
// ■ GaryKao99
//   【BCB】【分享】利用FindWindow將其他form物件下所有的資料取出來(BCB版)
//    http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30432
//
// 增加:1. 找出所有視窗名稱,省 KeyIn 時間及 KeyIn 錯誤
//       2. 將子視窗分層顯示,可以清楚看出父子關係。
沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
附加檔案:30489_GetWinAndSubWin.zip
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-15 12:10:35 IP:61.231.xxx.xxx 未訂閱
執行後先按一下 [GetWindowsList] 、選要看那個 window 、再按下 [GetSubWin] 即可。    用了 EnumWindows() 才發現系統內有一大堆不知名的 Windows...    沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-15 12:22:59 IP:61.221.xxx.xxx 未訂閱
請問 dllee 如何把 正常程序 改為 隱藏程序 除了service還有他法嗎? 哈哈 粉神粉神 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-15 13:11:33 IP:61.231.xxx.xxx 未訂閱
引言: 請問 dllee 如何把 正常程序 改為 隱藏程序 除了service還有他法嗎? 哈哈 粉神粉神 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
關於這點... 我還沒研究到... < > >< > 不知道 >geOShell::Invisible Hotkey Service 才會問這樣的問題呢?如果是... 那個 geOShell 是可以從 http:\\www.geOShell.com 下載的免費開放原始碼的 Shell。 而我自己還不會任何的「隱藏技術」,如果真的需要的話,我會使用「偽裝技術」,即將自己的程式名稱、視窗名稱這類的東西都變成像是 Windows 「內建」的東西或是一般常用的東西,再利用自定的熱鍵或複合熱鍵,叫出自己想要的功能。 我沒研究這方面資訊主要原因是目前所寫的大部分是機台自動化的程式,全部的系統資源都歸我程式使用,她會占用整個畫面,而工作列、Windows Key 、程式集通通都隱藏不能用,因為我的程式已取代了 Explorer Shell ,除非操作者有權限,否則連記事本都不給他用 <>沒空更新的網頁... href="http://dllee.adsldns.org">http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-15 13:29:36 IP:61.221.xxx.xxx 未訂閱
除非操作者有權限,否則連記事本都不給他用 就是這個光 就是這個光 哈哈 配服配服 dllee 大仔 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-15 22:45:20 IP:61.224.xxx.xxx 未訂閱
引言: 除非操作者有權限,否則連記事本都不給他用 就是這個光 就是這個光 哈哈 配服配服 dllee 大仔 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
沒辨法... 之前就有發生大夜班操作員太空了,把機台玩到當機!不得以,只好全鎖了 <>沒空更新的網頁... href="http://dllee.adsldns.org">http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
GaryKao99
中階會員


發表:46
回覆:102
積分:54
註冊:2002-08-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-16 16:14:27 IP:211.78.xxx.xxx 未訂閱
帥氣... 好ㄟ... 讚啦.... 是BCB... 哇哈哈哈哈哈
datalazy
一般會員


發表:4
回覆:3
積分:1
註冊:2004-09-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-07-28 22:16:16 IP:218.169.xxx.xxx 未訂閱
引言:
// 參考資料:
// ■ timhuang
//   【Delphi】【發表】利用FindWindow將其他form物件下所有的資料取出來
//    http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30409
// ■ GaryKao99
//   【BCB】【分享】利用FindWindow將其他form物件下所有的資料取出來(BCB版)
//    http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30432
//
// 增加:1. 找出所有視窗名稱,省 KeyIn 時間及 KeyIn 錯誤
//       2. 將子視窗分層顯示,可以清楚看出父子關係。
沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
如果我只要列出"工作列"上的程式,要如何修改?? 謝謝
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-07-28 23:02:13 IP:211.76.xxx.xxx 未訂閱
引言:如果我只要列出"工作列"上的程式,要如何修改?? 謝謝
不是用此方式能得到的,您可以使用 MS 的 Spy 查看,整個工作列上的程式是在同一個視窗內 Class 為 ToolbarWindows32 (我是XP,不同作業系統名稱可能不同),用此工具最多只能找到工作列中已開啟程式部分整個算是一個 Window 的 Handle,因為此程式利用的是 Windows Handle 去操作,而 Windows 的內容,則不一定可操作。 理論上,已得到 ToolbarWindows32 的 Windows Handle 應該可以進一步去取得 ToolbarWindows32 Class 內的資料,只要有 ToolbarWindows32 的相關資料。這個部分,就只有請您自行去發掘了,因為 Class 實在是太多,我也沒空一個一個去解,程式中只解出簡單的 Class。 C# 初學者請多指教 < href="http://free.greenworld.com.tw/~dllee/" target="blank">吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ KTOP FieldBus(CAN Open, EtherCAT, ...)
------
http://www.ViewMove.com
Skyer
高階會員


發表:43
回覆:111
積分:120
註冊:2002-04-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-07-29 11:07:11 IP:220.139.xxx.xxx 未訂閱
我的話,是使用 EnumDesktopWindows 這個 API 來找桌面上所有 Window 然後再 callback function 用 IsWindow & IsWindowVisible 來過濾..    以下是 VC code (因為在學 MFC, 把我一個小工具轉寫.. 重寫 enum window 部分), 出來結果還滿意..    
bool CProcesses::Refresh(void)
{
    ClearAll();
    ::EnumDesktopWindows((HDESK)0, (WNDENUMPROC)enumCallback, (LPARAM)this);
    return false;
}    BOOL __stdcall CProcesses::enumCallback(HWND hwnd, LPARAM lParam)
{
    // 檢查是否為可視視窗
    if (!IsWindow(hwnd) || !IsWindowVisible(hwnd))// || GetParent(hwnd)!=0)
        return 1;
    // 取得 PID
    DWORD pid;
    ::GetWindowThreadProcessId(hwnd, &pid);
    if (pid == 0)
        return 1;
    // 取得 Title Name
    CString wname;
    LPTSTR buf = wname.GetBufferSetLength(256);
    ::GetWindowText(hwnd, buf, 256);
    if (buf[0] == 0)
        return 1;
    CProcesses *p = (CProcesses *) lParam;
    for (int i=0; im_windows.GetCount(); i++)
        if (pid == ((WRecord *) p->m_windows.ElementAt(i))->dPid)
            return 1;
    // 取得 Exe Filename
    HANDLE hp = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
    if (hp == NULL)
        return 1;
    HMODULE hmod[255];
    DWORD cb;
    CString spath;
    LPTSTR buf2 = spath.GetBufferSetLength(256);
    EnumProcessModules(hp, hmod, 255, &cb);
    GetModuleFileNameEx(hp, hmod[0], buf2, 256);
    CloseHandle(hp);
    // Add to the list
    WRecord *wnd = new WRecord;
    wnd->dPid = pid;
    wnd->sWName = buf;
    wnd->sPath = buf2;
    p->m_windows.Add((CObject *)wnd);
    return 1;
}
-- Regards, Skyer 發表人 - Skyer 於 2005/07/29 11:10:51
------
--
Regards,
Skyer
系統時間:2024-11-24 13:25:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!