全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5292
推到 Plurk!
推到 Facebook!

找不到視窗的Hwnd值?

尚未結案
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-10 17:30:27 IP:61.63.xxx.xxx 未訂閱
前言:   最近幫同事寫天堂II自動登入的小程式,之前用的是模疑鍵盤的方式,很不穩,想跳回原本想要做的做法(送Message),但是有些問題! 模疑圖示: < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=13968577&CC=312403"> 描述: 見上方圖示 就是這個遊戲進入後,遊戲的視窗會變成全螢幕(如圖示(模疑的)後面的那個大視窗),這個大視窗右下角有兩個button,然後大視窗前面有一個小視窗給使用者登入用! 我的目的就是送一些WM_SETTEXT、BM_CLICK之類的訊息去控制這些控制項而已! 問題: 實作發現一些視窗的hwnd值都抓不到: 1. 用FindWindow(NULL,"登入")找不到小視窗的hwnd值(return 0) 2. 把小視窗setfocus,再用GetForegroundWindow去找hwnd值,找到一個怪怪的hwnd值,好像是整個ap的 3. 用EnumChildWindow去列舉上面2.中得到的hwnd值,發現列舉不到任何子視窗 嗯,大致是這樣,感覺只抓得到整個ap的hwnd值而已,裏面的視窗都找不到!想問問可能是什麼問題,這類型的任何視窗hwnd值要怎麼抓< >? 當然有試過這遊戲的應該比較瞭解這問題啦< >< >< >!
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-10 20:03:01 IP:61.63.xxx.xxx 未訂閱
m8815010你好: 看到你的問題突然使我想到一個方法,請試試看,有問題再討論!
* 記得先把小視窗的 TEdit Component SetFocus() 即可取得窗口的 HWND *    HWND hWnd = GetFocus();  //得到目前游標所在的窗口
發表人 - kwu 於 2004/02/10 23:51:39
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-11 00:03:02 IP:61.226.xxx.xxx 未訂閱
m8815010你好: 試試另一個方法,應該是你所要的! < class="code"> HWND hWnd = FindWindow(NULL,"天堂II主畫面"); if (hWnd) { HWND hWndFirst = GetWindow(hWnd,GW_HWNDFIRST); if (hWndFirst) { ShowWindow(hWnd,SW_SHOWNORMAL); SetForegroundWindow(hWnd); //在此寫你要做的事情 //.................. } }
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-11 11:37:30 IP:61.63.xxx.xxx 未訂閱
引言: m8815010你好: 看到你的問題突然使我想到一個方法,請試試看,有問題再討論!
* 記得先把小視窗的 TEdit Component SetFocus() 即可取得窗口的 HWND *    HWND hWnd = GetFocus();  //得到目前游標所在的窗口
嗯,kwu兄這個方法應該是不太妥的< >,經過實測也如此< >,就是用GetFocus找自已Form內的元件的Hwnd值是ok的,而找其它視窗內的子視窗的Hwnd值就會return NULL,查了一下說明,寫的還滿清楚的,應是不能跨thread的樣子,要跨就要再用AttachThreadInput……的,嗯,那可能就比較離題了! < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=13978906&CC=312634">
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-11 12:08:07 IP:61.63.xxx.xxx 未訂閱
引言: m8815010你好: 試試另一個方法,應該是你所要的! < class="code"> HWND hWnd = FindWindow(NULL,"天堂II主畫面"); <-----無法做到 if (hWnd) { HWND hWndFirst = GetWindow(hWnd,GW_HWNDFIRST); if (hWndFirst) { ShowWindow(hWnd,SW_SHOWNORMAL); SetForegroundWindow(hWnd); //在此寫你要做的事情 //.................. } }
kwu兄首先先感謝您的熱心幫忙< >。對於你上面所提(我標紅色部份)是我沒辦法做的,因為在我的<>模疑圖示中下面這個大視窗它並沒有> >! 嗯,目前為止還是只有>不管>),但是這應該是天堂 >< >< >),所以光馮我的敘述可能會有落差的, >< >< >!
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-11 12:19:39 IP:211.75.xxx.xxx 未訂閱
我想你先要確定一下那個輸入登入資料的畫面確實是EditBox? 因為我知道在某些情況下,遊戲的EditBox都是自己畫的,然後攔截鍵盤,再將字Draw上去,在那種狀態下,那個EditBox也只是一張圖,你打死也找不到HWND
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-11 13:36:01 IP:61.63.xxx.xxx 未訂閱
引言: kwu兄首先先感謝您的熱心幫忙< >。對於你上面所提(我標紅色部份)是我沒辦法做的,因為在我的<>模疑圖示中下面這個大視窗它並沒有> >! 嗯,目前為止還是只有>不管>),但是這應該是天堂 >< >< >),所以光馮我的敘述可能會有落差的, >< >< >! < face="Verdana, Arial, Helvetica"> m8815010你好: 是的!我的確是沒玩天堂所以沒有環境來測試 可以試試看從命令列上的應用程式名稱來 FindWindow(NULL,"未命名 - 記事本") 取得此AP的hwnd值
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-11 15:31:04 IP:61.63.xxx.xxx 未訂閱
引言: 我想你先要確定一下那個輸入登入資料的畫面確實是EditBox? 因為我知道在某些情況下,遊戲的EditBox都是自己畫的,然後攔截鍵盤,再將字Draw上去,在那種狀態下,那個EditBox也只是一張圖,你打死也找不到HWND
是啊是啊,萬一是這樣就被耍了呢! 那我要怎麼確定這個登入Form(或EditBox or sth else...)是不是它自已搞的呢? 那如果是它自已搞的是不是就沒辦法控制它了呢< >< >!
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-02-11 18:30:14 IP:211.75.xxx.xxx 未訂閱
用Spy 去看不就得了
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-02-12 10:57:47 IP:61.63.xxx.xxx 未訂閱
引言: m8815010你好: 是的!我的確是沒玩天堂所以沒有環境來測試 可以試試看從命令列上的應用程式名稱來 FindWindow(NULL,"未命名 - 記事本") 取得此AP的hwnd值
嗯,kwu兄我瞭解你的意思,在當〝天堂II〞它縮到tool bar時去找它的hwnd值,這個值也就=GetForegroundWindow()這個 方法我所得到的值。目前就只做到這,再來就卡住了
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-02-12 11:20:42 IP:61.63.xxx.xxx 未訂閱
引言: 用Spy 去看不就得了
嗯,果然用〝間諜加一加〞多得到了一些東東: <> > 用 >!
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-02-12 14:39:57 IP:61.63.xxx.xxx 未訂閱
引言: 嗯,kwu兄我瞭解你的意思,在當〝天堂II〞它縮到tool bar時去找它的hwnd值,這個值也就=GetForegroundWindow()這個 方法我所得到的值。目前就只做到這,再來就卡住了。 < face="Verdana, Arial, Helvetica"> m8815010你好: 即然可以取得〝天堂II〞的 HWND 就可以用此 HWND 去取得目前 AP 的最上層視窗 試試看下面的方法
HWND hWnd = GetForegroundWindow();
HWND hWndFirst = GetWindow(hWnd,GW_HWNDFIRST);    //取得目前 HWND 最上層的小視窗
chimera
初階會員


發表:62
回覆:78
積分:28
註冊:2003-03-22

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-02-15 22:51:19 IP:211.76.xxx.xxx 未訂閱
真巧,我也正為了天堂2的自動登入而煩擾,也是找不到登入的hwnd值 >"< 而且L2的hwnd值有兩個,有一個是主程式的進入點吧,另外一個才是主畫面form的hwnd,如下面兩張圖 我用之前某一位前輩輸入main form的caption去列舉出他所有子視窗的hwnd值, 結果去找Lineage II (running)一個hwnd也找不到....... 這........要如何解決啊?? @_@ 發表人 - chimera 於 2004/02/15 22:52:56
chimera
初階會員


發表:62
回覆:78
積分:28
註冊:2003-03-22

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-02-15 23:52:55 IP:211.76.xxx.xxx 未訂閱
引言: m8815010你好: 即然可以取得〝天堂II〞的 HWND 就可以用此 HWND 去取得目前 AP 的最上層視窗 試試看下面的方法
HWND hWnd = GetForegroundWindow();
HWND hWndFirst = GetWindow(hWnd,GW_HWNDFIRST);    //取得目前 HWND 最上層的小視窗
用了kwu兄的方式找到一個hwnd,也在spy 中找到那個視窗了,只是我還來不及測試是否可sendmessage到那個hwnd中的edit.....
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-02-16 01:08:24 IP:61.64.xxx.xxx 未訂閱
引言: 我用之前某一位前輩輸入main form的caption去列舉出他所有子視窗的hwnd值,
請問一下是用此範圍嗎 【BCB】【發表】取得視窗列表 + 視窗內所有子視窗元件列表(分層顯示)+ 顯示 / 隱藏 / 改文字 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30743 天堂2 真的這樣硬阿 呵呵
引言:之前用的是模疑鍵盤的方式,很不穩,想跳回原本想要做的做法(送Message),但是有些問題
喔 虛擬鍵應該 也是很穩阿 只不過時間與其他因素要掌握好
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-02-16 15:24:12 IP:61.63.xxx.xxx 未訂閱
引言: m8815010你好: 即然可以取得〝天堂II〞的 HWND 就可以用此 HWND 去取得目前 AP 的最上層視窗 試試看下面的方法
HWND hWnd = GetForegroundWindow();
HWND hWndFirst = GetWindow(hWnd,GW_HWNDFIRST);    //取得目前 HWND 最上層的小視窗
kwu兄你好: 方法我都試過(如過我沒試錯的話)!唉,就是不行(很難相信吧!),所以我才會覺得這類的視窗 >! <>< face="Verdana, Arial, Helvetica">引言: 用了kwu兄的方式找到一個hwnd,也在spy 中找到那個視窗了,只是我還來不及測試是否可sendmessage到那個hwnd中的edit..... 嗯,如果〝登入〞是一個Form,而上面那些也是一般正常的元件的話(TButton、TEdit或Button、Edit)!那一定是先找〝登入〞這個 >,真無力! >!
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-02-16 15:41:07 IP:61.63.xxx.xxx 未訂閱
引言: 天堂2 真的這樣硬阿 呵呵
哈哈,也不能說它硬啦,只是以前沒試過抓這類比較特別視窗的hwnd值(比如說它是全螢幕…等等),不知道還有問題呢! <>< face="Verdana, Arial, Helvetica">引言: 喔 虛擬鍵應該 也是很穩阿 只不過時間與其他因素要掌握好 嗯,我自已用是還不錯!可是給同事用就有的有問題啦(不贅述了)!明顯的跟個人的網路情況及 >!所以我覺得 >!
chimera
初階會員


發表:62
回覆:78
積分:28
註冊:2003-03-22

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-02-16 21:09:45 IP:211.76.xxx.xxx 未訂閱
引言: 嗯,我自已用是還不錯!可是給同事用就有的有問題啦(不贅述了)!明顯的跟個人的網路情況及 >!所以我覺得 >! < face="Verdana, Arial, Helvetica"> 1.這樣做最糟糕的情形是:因為server擁擠無法進入時會跳回到登入帳號密碼的視窗, 如果只是模擬keybd event的話,因為沒有視窗hWnd可以做判斷到底有沒有進入到server, 就會搞不清楚到底是要重新輸入帳號,還是該選擇人物 @@ 2.我忽然想到會不會是因為是用directx的去繪製的,那有沒有可能用directx去繪製的話會有不同的方式繪製視窗, 導致一般的方法抓不到??
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#19 引用回覆 回覆 發表時間:2004-02-16 21:27:31 IP:61.64.xxx.xxx 未訂閱
本人不會玩 天堂 所以只能亂說 一說    不過 這樣說明把 IE可以啟用坎入Media Player 當此時 工作管理員應該只看到IE 不會顯示 Media Player 同理可證 也就是下一層    是可以使用送Message 控制 不過我不認為他就很穩 因為其他因素也不少 因為這樣的方式 帶參數傳送 記的好像有限制 至於 是否為directx的去繪製的 並不是問題的重點 因為 那EdIT才是把 輸入的地方     想不到 我的pc居然太老舊 向朋友借來的天堂2 run不啟來 上圖的 L2.exe 居然跑到99 想不到 自認的無敵pc遇到 天堂2 當機連連 看來沒p4 顯示卡128很難跑 無法度玩了 發表人 - conundrum 於 2004/02/17 00:38:35
chimera
初階會員


發表:62
回覆:78
積分:28
註冊:2003-03-22

發送簡訊給我
#20 引用回覆 回覆 發表時間:2004-02-16 22:44:17 IP:211.76.xxx.xxx 未訂閱
引言: 本人不會玩 天堂 所以只能亂說 一說 不過 這樣說明把 IE可以啟用坎入Media Player 當此時 工作管理員應該只看到IE 不會顯示 Media Player 同理可證 也就是下一層 是可以使用送Message 控制 不過我不認為他就很穩 因為其他因素也不少 因為這樣的方式 帶參數傳送 記的好像有限制 至於 是否為directx的去繪製的 並不是問題的重點 因為 那EdIT才是把 輸入的地方
這種需要下參數傳遞的方式,有沒有特有名詞或例子可供參考??
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#21 引用回覆 回覆 發表時間:2004-02-17 00:51:03 IP:61.64.xxx.xxx 未訂閱
下列文章 不代表能解決 參考 純粹亂po之文 ---------------------------------------------------------------------- 前季節陳述了通過、復雜的動作擴張優剖祖o、「擴張優剖祖o對象」與被呼喚 COM對象根據被實現。 夜裡正確的解釋說、首先、用途相稱了國際huェ以色列安裝底下擴張優剖祖o對象編制、翹曲 Windows登記事被實現。 擴展張優剖祖o對象的 Windows往的登記方法關於更前季節解釋了因為、這裡、擴張優剖祖o對象的地基成為國際huェ以色列群到那個各成員函數關於更解釋特別使安靜下來。 稻田出、全部的 COM對象的基礎國際huェ以色列是 IUnknown國際huェ以色列關於更、數量多的的書籍被拿起有事也有這裡解釋減少正下面。 跟隨、IUnknown國際huェ以色列關於更這些的關聯書籍參照象請。 真實稻田、特別是拒絕還未放入時、相當國際huェ以色列的宣言 shlobj.pas(C系列語言假如是 shilobj.h)存在者徐娘底下因為注意請給我。 的、擴張優剖祖o對象的具體的常例關於更下一章煮解釋預定作為有因為那邊參照請。 2.2.1 IContextMenu國際huェ以色列 IContextMenu國際huェ以色列對象被建立關系的上下文菜單生長了裡、合並又使安靜下來時候被使用。 真實稻田、IContextMenu國際huェ以色列根據擴張優剖祖oIShellExtInit國際huェ以色列根據初始化れ不れ傻的裡籬笆。 siェru以下的3機箱(事情)關於IContextMenu國際huェ以色列使用。 1.擴張上下文菜單含時 擴張上下文菜單正在包含時、優剖祖o的姓名空地關於項(文件等)按鼠標右鍵做首先那個項類型合了默認上下文菜單被生長以後那個項類型被登記有擴張上下文菜單讀被擁擠被生長。 2.擴展名前空地關於子文件夾的上下文菜單檢索時 優剖祖o資源管理器的擴展名前空地…情況之下的文件夾面對上下文菜單生長時候IShellFolder.GetUIObjectOf呼吸拿出(提出)相當IContextMenu對象生長。 3.錯誤默認的拖拉和放下動作含時 文件系統折紙機(目錄)對於錯誤默認的拖拉和放下動作舉行時、優剖祖o擴張優剖祖o呼吸拿出。 表示數量、時間、惡劣 IContextMenu國際huェ以色列的 Delphi的宣言出示。 另外、繼續各成員函數的解釋也行為。 const SID_IContextMenu = '{000214E4-0000-0000-C000-000000000046}'; IContextMenu = interface(IUnknown) [SID_IContextMenu] function QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst, idCmdLast, uFlags: UINT): HResult; stdcall; function InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult; stdcall; function GetCommandString(idCmd, uType: UINT; pwReserved: PUINT; pszName: LPSTR; cchMax: UINT): HResult; stdcall; end; [成員函數](全3函數) -------------------------------------------------------------------------------- QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst, idCmdLast, uFlags: UINT) kon文本菜單一個以上的菜單項插入。(插入物品撫養也不管) 插浸染次數做菜單的項ID idCmdFirst以上 idCmdLast以下的范圍內在的不れ加倍毛馬千。 { 參數 } Menu: 菜單駕駛盤 indexMenu: 開頭的菜單項的插入位置(0基礎) idCmdFirst: 插入了菜單項ID的下限 idCmdLast: 插入了菜單項ID的上限 uFlags: 零或者以下的旗的配合 ﹒CMF_DEFAULTONLY..... 用戶雙擊疏忽默認的動作啟動正在特別的事出示。這時菜單項追加作為不結。 ﹒CMF_EXPLORER..... 被選擇有項左側疼痛擁有(拿)事出示。上下文菜單馴狗師箱子的旗無視。 ﹒CMF_NORMAL..... 通常的動作是事出示。菜單項追加事能。 ﹒CMF_VERBSONLY..... 被選擇有項快捷方式是事出示。上下文菜單馴狗師箱子的旗無視。 { 返價 } 函數假如成功的話、HRESULT歸還。改正、那個CODE人們ba(low word)追加了菜單項的ID的最大值(idCmdFirst - 1)從的膠印表面。 -------------------------------------------------------------------------------- InvokeCommand( var lpici: TCMInvokeCommandInfo) QueryContextMenu根據被追加的菜單項被選擇的偶爾呼吸被拿出。 LoWord( integer( lpici.lpVerb ) ) [in C , LOWORD( lpici->lpVerb)]被選擇的菜單項的膠印(MenuItem ID - idCmdFirst)容納正在做。 { 參數 } lpici: 被選擇的命令關於情報容納正在做TCMInvokeCommandInfo構造身體 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 微型解釋: TCMInvokeCommandInfo構造身體 kon文本菜單的命令關於情報容納底下構造身體。 TCMInvokeCommandInfo = packed record cbSize: DWORD; fMask: DWORD; hwnd: HWND; lpVerb: LPCSTR; lpParameters: LPCSTR; lpDirectory: LPCSTR; nShow: Integer; dwHotKey: DWORD; hIcon: THandle; end; [成員] cbSize.....sizeof( TCMInvokeCommandInfo)如果不是不結 fMask.....零或者以下的旗的配合 ﹒CMIC_MASK_HOTKEY---dwHotKey人們ba有效是事出示 ﹒CMIC_MASK_ICON---hIcon人們ba有效是事出示 ﹒CMIC_MASK_FLAG_NO_UI---命令實行中央、系統UI要素表示不能事出示 hwnd.....上下文菜單的所有人窗口的駕駛盤 lpVerb.....HiWord( integer( lpVerb))=0的時、LoWord( integer( lpVerb))被選擇的菜單項ID的 idCmdFirst從的膠印。HiWord( integer( lpVerb))<> 0的時(應用軟件從呼吸被拿出的時典型關於)、實行命令的姓名(命令字符串)上漲零最後頭兒字符串往的指標 CMDSTR_NEWFOLDER( = 'NewFolder')、CMDSTR_VIEWLIST( = 'ViewList')、CMDSTR_VIEWDETAILS( = 'ViewDetails')系統根據定義過的成為 lpParameters.....參數選項 (擴張優剖祖o根據被追加的菜單項的時總是0) lpDirectory.....工作目錄選項 (擴張優剖祖o根據被追加的菜單項的時總是0) nShow.....命令窗口表示了裡應用軟件啟動特別的時ShowWindow被渡旗(SW_*) dwHotKey.....命令根據被啟動的應用軟件分配能貼近熱鍵(fMask參照) hIcon.....命令根據被啟動的應用軟件分配能貼近圖標駕駛盤(fMask參照) -------------------------------------------------------------------------------- GetCommandString(idCmd, uType: UINT; pwReserved: PUINT; pszName: LPSTR; cchMax: UINT) kon文本菜單面對命令字符串或幫助字符串歸還。 herupu字符串資源管理器的狀態欄被表示。 { 參數 } idCmd: 被選擇有菜單項ID的 idCmdFirst從的膠印 uType: 返價的種類指定參數(以下嚥喉れ嗎一個) ﹒GCS_HELPTEXT..... 幫助字符串(零最後頭兒字符串)歸還事出示 ﹒GCS_VALIDATE..... 菜單項目存在事確認正在做隻有是事出示 ﹒GCS_VERB..... 命令字符串(零最後頭兒字符串)歸還事出示 pwReserved: 預約過的(呼吸拿出時一定0) pszName: 返價容納緩沖的地址 cchMax: 上述緩沖的大小 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 2.2.2 IShellExtInit國際huェ以色列 IShellExtInit國際huェ以色列、資源管理器擴張優剖祖o對象初始化時候使用。IContextMenu或IPropSheetExt使用時候IShellExtInit國際huェ以色列安裝物品撫養花裡籬笆。 e樟職業一ra擴張優剖祖o對象使用時候、 (1)CoCreateInstance被登記的CLSID與IID_IShellExtInit呼吸拿出、 (2)那個Initialize人們ba函數呼吸拿出、 (3)那個QueryInterface人們ba函數呼吸拿出(提出)特定的國際huェ以色列(IContextMenu或IPropSheetExt等)得、叫做順序動作使安靜下來。 表示數量、時間、惡劣 IShellExtInit國際huェ以色列的 Delphi的宣言出示。 另外、繼續各成員函數的解釋也行為。 const SID_IShellExtInit = '{000214E8-0000-0000-C000-000000000046}'; IShellExtInit = interface( IUnknown) [SID_IShellExtInit] function Initialize(pidlFolder: PItemIDList; lpdobj: IDataObject; hKeyProgID: HKEY): HResult; stdcall; end; [成員函數](全1函數) -------------------------------------------------------------------------------- Initialize(pidlFolder: PItemIDList; lpdobj: IDataObject; hKeyProgID: HKEY) e樟職業一ra擴張上下文菜單、擴張屬性座、錯誤默認拖拉和放下初始化時候呼吸被拿出。 { 參數 } pidlFolder: 擴張上下文菜單、擴張屬性座對於父母文件夾、錯誤默認拖拉和放下對於目標文件夾出示TItemIDList構造身體往的指標 lpdobj: 一個以上的被選擇的(放下做了)項歸還IDataObject對象往的指標 hkeyProgID: 擴張上下文菜單、擴張屬性座對於焦點的某(有)文件項的法律學家利克酒(文件班級)、錯誤默認拖拉和放下對於目標文件夾的法律學家利克酒(文件班級)出示 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 微型解釋: TItemIDList構造身體 aItemuID的排列。 PItemIDList = ^TItemIDList; TItemIDList = packed record mkid: TSHItemID; end; TSHItemID = packed record cb: Word; abID: array[0..0] of Byte; end; [成員] cb.....項ID的大小(cb自身也含) abID.....項ID(可變長) 2.2.3 IShellPropSheetExt國際huェ以色列 擴展張屬性座或擴張控制盤屬性座頁追加或調換水灣舉行時候、資源管理器 IShellPropSheetExt國際huェ以色列使用。 表示數量、時間、惡劣 IShellPropSheetExt國際huェ以色列的 Delphi的宣言出示。 另外、繼續各成員函數的解釋也行為。 const SID_IShellPropSheetExt = '{000214E9-0000-0000-C000-000000000046}'; IShellPropSheetExt = interface(IUnknown) [SID_IShellPropSheetExt] function AddPages(lpfnAddPage: TFNAddPropSheetPage; lParam: LPARAM) : HResult; stdcall; function ReplacePage(uPageID: UINT; lpfnReplaceWith: TFNAddPropSheetPage; lParam: LPARAM): HResult; stdcall; end; [成員函數](全2函數) -------------------------------------------------------------------------------- AddPages(lpfnAddPage: TFNAddPropSheetPage; lParam: LPARAM) e樟職業一ra屬性座表示特別的時候、那個對象擴張屬性座被登記有與IShellPropSheetExt.AddPages呼吸拿出。 { 參數 } lpfnAddPage: 屬性座頁追加因此呼吸被拿出TFNAddPropSheetPage模具的叫回函數 lParam: lpfnAddPage呼吸拿出時候能立應用軟件利用任意的參數 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 微型解釋: TFNAddPropSheetPage函數模具 puro餡餅ィ座頁的追加關於叫回函數的模具。論理模具歸還。 TFNAddPropSheetPage = function( hPSP: HPropSheetPage; lParam: Longint): BOOL stdcall; [參數] hPSP:CreatePropertySheetPage函數(Commctrl.pas)根據好處們れ稻田屬性座的駕駛盤 lParam:任意的參數 -------------------------------------------------------------------------------- ReplacePage( uPageID: UINT; lpfnReplaceWith: TFNAddPropSheetPage; lParam: LPARAM) 擴展張控制盤的屬性座頁換到。 { 參數 } uPageID: 換到頁ID(CPLEXT.H頁眉文件記述) lpfnReplaceWith: 屬性座的頁調換凍僵因此呼吸被拿出TFNAddPropSheetPage模具的叫回函數 lParam: lpfnReplaceWidth呼吸拿出時候能立(應用軟件利用)任意的參數 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 2.2.4 IPersistFolder國際huェ以色列 siェru文件夾對象初始化使安靜下來。 IShellFolder.BindToObject煮被使用。 siェru的擴展名前空地(IShellFolder國際huェ以色列)安裝時候安裝物品假如踢不結國際huェ以色列。 表示數量、時間、惡劣 IPersistFolder國際huェ以色列的 Delphi的宣言出示。 另外、繼續各成員函數的解釋也行為。 [ 繼承 ] 各種持入的存儲(文件等的持久關於記憶班級)的根本班級 IPersist國際huェ以色列( In Delphi, ActiveX.pas. In C , ActiveX.h煮宣言)繼承。 const SID_IPersistFolder = '{000214EA-0000-0000-C000-000000000046}'; IPersistFolder = interface( IPersist) [SID_IPersistFolder] function Initialize(pidl: PItemIDList): HResult; stdcall; end; -------------------------------------------------------------------------------- In ActiveX.pas IPersist = interface( IUnknown) ['{0000010C-0000-0000-C000-000000000046}'] function GetClassID(out classID: TCLSID): HResult; stdcall; end; [成員函數](全2函數) -------------------------------------------------------------------------------- Initialize(pidl: PItemIDList) e樟職業一ra架子ォruda對象初始化時候呼吸被拿出。 { 參數 } pidl: 文件夾的絕對位置指定TItemIDList構造身體 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- GetClassID(out classID: TCLSID) o布隆迪ェkuto的班級ID歸還。 { 參數 } classID: 對象的班級ID { 返價 } 以下的哪一方面嗎歸還。 ﹒S_OK.....成功 ﹒E_FAIL.....失敗 2.2.5 IExtractIcon國際huェ以色列 IExtractIcon國際huェ以色列、對象的圖標歸還。 IShellFolder國際huェ以色列安裝時候 IShellFolder.GetUIObjectOf應答能夠象 IExtractIcon國際huェ以色列也安裝物品撫養花裡籬笆。 子女的國際huェ以色列根據擴張優剖祖o IPersistFile.Load根據初始化做。 稻田變速的時關於這國際huェ以色列直接連接手段必要飛螞蟻籬笆、某(有)對象另外的對象的圖標想送時等在……中直接利用事有。 e樟職業一ra的范圍疼痛文件夾被展現與、 (1)資源管理器那個IShellFolder好處文件夾結合、 (2)EnumObjects呼吸拿出(提出)子文件夾列舉、 (3)GetUIObjectOf呼吸拿出(提出)子文件夾各個的 IExtractIcon國際huェ以色列得、 叫做順序動作使安靜下來。 真實稻田、優剖祖o文件從圖標取拿出時、 (1)圖標抽出手ra生長(法律學家ri「{ AppID } \shell \ExtractIconHandler」從CLSID到手 CoCreateInstance呼吸拿出。)、 (2)GetIconLocation呼吸拿出圖標的位置情報好處、 (3)那個圖標的位置情報與 Index Extract呼吸拿出。 子女的時、焚燒 NOERROR以外復原北時、位置情報限定確切的路徑被出示有叫做前提相同邏輯(學)反復。 子女的、優剖祖o文件從圖標抽出時再稍微詳細看看出神與、(1)ProgID、ClassID找到、 (2)文件 ClassID挺義齒那個正下方的法律學家利克酒"DefaultIcon"從圖標的位置情報好處、(位置情報班級每的圖標或者例証每的圖標野母的表面正在做。)那個位置情報例証每的圖標表面正在做時、 (3)優剖祖o圖標抽出手ra生長文件從圖標取拿出、 叫做動作使……有。 siェru、首先 IExtractIcon.GetIconLocation呼吸拿出(提出)從、以後 IExtractIcon.Extract呼吸拿出說...的事重要。大帝的應用軟件圖標文件內在的圖像(心像)直接保存因為花九位置情報保存。這時、編程員 GetIconLocation喝安裝沙灘れば好變成。( Extract僅S_FALSE歸還種種使安靜下來。)跟隨、Extract圖標圖像(心像)文件內部或另外的數據庫保存時喝安裝使安靜下來。 表示數量、時間、惡劣 IExtractIcon國際huェ以色列的 Delphi的宣言出示。 另外、繼續各成員函數的解釋也行為。 const SID_IExtractIconA = '{000214EB-0000-0000-C000-000000000046}'; IExtractIconA = interface(IUnknown) [SID_IExtractIconA] function GetIconLocation(uFlags: UINT; szIconFile: PAnsiChar; cchMax: UINT; out piIndex: Integer; out pwFlags: UINT): HResult; stdcall; function Extract(pszFile: PAnsiChar; nIconIndex: UINT; out phiconLarge, phiconSmall: HICON; nIconSize: UINT): HResult; stdcall; end; IExtractIcon = IExtractIconA; [成員函數](全2函數) -------------------------------------------------------------------------------- GetIconLocation(uFlags: UINT; szIconFile: PAnsiChar; cchMax: UINT; out piIndex: Integer; out pwFlags: UINT) a肖像的位置情報歸還。 { 參數 } uFlags(in): 零或者以下的旗的配合 ﹒GIL_FORSHELL..... 圖標架子ォruda被表示 ﹒GIL_OPENICON..... 圖標打開變速爐缸文件夾面對的東西 szIconFile(out): 圖標的位置情報(零最後頭兒字符串)被歸還緩沖區往的指標 cchMax(in): 緩沖區的最大大小 piIndex(out): 圖標的索引 pwFlags(out): 被歸還零或者以下的旗的配合 ﹒GIL_DONTCACHE..... 圖標cache還未做 ﹒GIL_NOTFILENAME..... 位置情報文件名不是、圖標抽出因此 IExtractIcon.Extract方法呼吸拿出有必要 ﹒GIL_PERCLASS..... 這班級留下辦完的文件對象相同圖標使用 ﹒GIL_PERINSTANCE..... 這班級的文件對象各個自身(例証每)的圖標保持正在做 ﹒GIL_SIMULATEDOC..... 文檔圖標生長 { 返價 } 函數假如成功的話、NOERROR歸還。默認圖標使用時S_FALSE歸還。 -------------------------------------------------------------------------------- Extract(pszFile: PAnsiChar; nIconIndex: UINT; out phiconLarge, phiconSmall: HICON; nIconSize: UINT) huァ壞從圖標圖像(心像)抽出。 { 參數 } pszFile(in): 圖標的位置情報(典型確切文件往的路徑) nIconIndex(in): 圖標索引 phiconLarge(out): 圖標(大)的駕駛盤 phiconSmall(out): 圖標(細小)的駕駛盤 nIconSize(in): 圖標(大)的大小(象素) { 返價 } 函數假如成功的話、NOERROR歸還。S_FALSE歸還了時呼吸拿出了應用軟件旁邊( pszFile、nIconIndex台)圖標抽出物品假如踢不結。 2.2.6 IShellIcon國際huェ以色列 IShellFolder對象的圖標索引得因此被使用國際huェ以色列。文件夾內的對象面對圖標歸還麻利方法作為……來說、IShellIcon國際huェ以色列 IShellFolder國際huェ以色列用安裝、叫做手有。 子女的國際huェ以色列圖標文件夾對於一次隻有被生長。而且比 IExtractIcon國際huェ以色列對象每圖標被生長。 IShellFolder國際huェ以色列這國際huェ以色列安裝物品假如踢、一切的對象面對圖標得時候在……中 IShellfolder.GetUIObject被使用。 表示數量、時間、惡劣 IShellIcon國際huェ以色列的 Delphi的宣言出示。 另外、繼續各成員函數的解釋也行為。 const SID_IShellIcon = '{000214E5-0000-0000-C000-000000000046}'; IShellIcon = interface(IUnknown) [SID_IShellIcon] function GetIconOf(pidl: PItemIDList; flags: UINT; out IconIndex: Integer): HResult; stdcall; end; [成員函數](全1函數) -------------------------------------------------------------------------------- GetIconOf(pidl: PItemIDList; flags: UINT; out IconIndex: Integer) huォruda內的對象面對圖標歸還。 { 參數 } pidl: 文件夾的相對位置指定TItemIDList構造身體往的指標 flags: 零或者以下的旗的配合 ﹒GIL_FORSHELL..... 圖標架子ォruda被表示 ﹒GIL_OPENICON..... 圖標打開變速爐缸文件夾面對的東西(「打開木板(有的)狀態」「閉了狀態」兩方的圖像(心像)設置正在做時、圖標「打開木板(有的)狀態」如果不是不結。) IconIndex: 圖標的索引 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時S_FALSE歸還。 另外、以下的索引歸還事也可能。 ﹒0.....文檔(空白) ﹒1.....文檔(數據有) ﹒2.....應用軟件(擴展名一定".exe"、".com"、".bat") ﹒3.....文件夾(關閉字) ﹒4.....文件夾(開) 2.2.7 IShellLink國際huェ以色列 siェru鏈接所謂、優剖祖o的姓名空地上部的對象(總之資源管理器上部的對象)關於情報保持了對象的事說。 siェru鏈接對象的「e腸梗阻(別名)」的象管因為、用戶或應用軟件、對象的現在的姓名或位置不知道也(姓名空地嚥喉古歌們但)對象連接手段能夠。 表示數量、時間、惡劣 IShellLink國際huェ以色列的 Delphi的宣言出示。 另外、繼續各成員函數的解釋也行為。 const SID_IShellLinkA = '{000214EE-0000-0000-C000-000000000046}'; IShellLinkA = interface(IUnknown) [SID_IShellLinkA] function GetPath(pszFile: PAnsiChar; cchMaxPath: Integer; var pfd: TWin32FindData; fFlags: DWORD): HResult; stdcall; function GetIDList(var ppidl: PItemIDList): HResult; stdcall; function SetIDList(pidl: PItemIDList): HResult; stdcall; function GetDescription(pszName: PAnsiChar; cchMaxName: Integer): HResult; stdcall; function SetDescription(pszName: PAnsiChar): HResult; stdcall; function GetWorkingDirectory(pszDir: PAnsiChar; cchMaxPath: Integer): HResult; stdcall; function SetWorkingDirectory(pszDir: PAnsiChar): HResult; stdcall; function GetArguments(pszArgs: PAnsiChar; cchMaxPath: Integer): HResult; stdcall; function SetArguments(pszArgs: PAnsiChar): HResult; stdcall; function GetHotkey(var pwHotkey: Word): HResult; stdcall; function SetHotkey(wHotkey: Word): HResult; stdcall; function GetShowCmd(out piShowCmd: Integer): HResult; stdcall; function SetShowCmd(iShowCmd: Integer): HResult; stdcall; function GetIconLocation(pszIconPath: PAnsiChar; cchIconPath: Integer; out piIcon: Integer): HResult; stdcall; function SetIconLocation(pszIconPath: PAnsiChar; iIcon: Integer): HResult; stdcall; function SetRelativePath(pszPathRel: PAnsiChar; dwReserved: DWORD): HResult; stdcall; function Resolve(Wnd: HWND; fFlags: DWORD): HResult; stdcall; function SetPath(pszFile: PAnsiChar): HResult; stdcall; end; IShellLink = IShellLinkA; [成員函數](全18函數) -------------------------------------------------------------------------------- GetPath(pszFile: PAnsiChar; cchMaxPath: Integer; var pfd: TWin32FindData; fFlags: DWORD) siェru鏈接對象的路徑與文件名歸還。 { 參數 } pszFile: 優剖祖o鏈接對象的路徑與文件名被歸還緩沖區往的指標 cchMaxPath: 緩沖區的最大大小 pfd: 優剖祖o鏈接對象關於情報容納底下TWin32FindData構造身體 fFlags: 被歸還路徑情報的類型(以下的旗的組合早稻) ﹒SLGP_SHORTPATH..... 標準短的文件名(8.3手續) ﹒SLGP_UNCPRIORITY..... 文件的UNC路徑名字 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 微型解釋: TWin32FindData構造身體 FindFirstFile、FindNextFile函數根據被歸還文件情報。 huァ壞長文件名挺義齒、cFileName那個容納做。短的文件名cAlternateFileName容納做。 也下邊cAlternateFileName空洞那個ば、GetShortPathName函數短的文件名得事能。 TWin32FindDataA = record dwFileAttributes: DWORD; ftCreationTime: TFileTime; ftLastAccessTime: TFileTime; ftLastWriteTime: TFileTime; nFileSizeHigh: DWORD; nFileSizeLow: DWORD; dwReserved0: DWORD; dwReserved1: DWORD; cFileName: array[0..MAX_PATH - 1] of AnsiChar; cAlternateFileName: array[0..13] of AnsiChar; end; TWin32FindData = TWin32FindDataA; [成員] dwFileAttributes.....被發現文件的屬性(以下的旗的組合) ﹒FILE_ATTRIBUTE_ARCHIVE---a一個夏娃文件 (應用軟件箱子的旗備份文件或刪除文件對於給予) ﹒FILE_ATTRIBUTE_COMPRESSED---壓縮文件(壓縮文件夾) ﹒FILE_ATTRIBUTE_DIRECTORY---目錄 ﹒FILE_ATTRIBUTE_HIDDEN---隱含文件 ﹒FILE_ATTRIBUTE_NORMAL---屬性沒有(這旗單獨被使用) ﹒FILE_ATTRIBUTE_OFFLINE---文件的數據馬上利用不能 (文件數據離線存儲物理的被移動的事出示) ﹒FILE_ATTRIBUTE_READONLY---讀擁擠專用 ﹒FILE_ATTRIBUTE_SYSTEM---系統文件 (OS的部分嗎或OS根據排他確切被使用文件) ﹒FILE_ATTRIBUTE_TEMPORARY---臨時文件 (媒體閃光不做限定數據的幾乎內存上乘存在) ftCreationTime.....文件的編制日期和時間容納做了TFileTime構造身體 ftLastAccessTime.....文件的最後連接手段日期和時間容納做了TFileTime構造身體 ftLastWriteTime.....文件的最後更新日期和時間容納做了TFileTime構造身體 nFileSizeHigh.....文件大小的上位4字節 (正確的解釋的文件大小 = ( nFileSizeHigh * MAXDWORD) nFileSizeLow ) nFileSizeLow.....文件大小的下位4字節 (正確的解釋的文件大小 = ( nFileSizeHigh * MAXDWORD) nFileSizeLow ) dwReserved0.....已預約過 dwReserved1.....已預約過 cFileName.....長文件名(零最後頭兒字符串) cAlternateFileName.....短的文件名(零最後頭兒字符串) 微型解釋: TFileTime構造身體 100毫微秒單位戶下1601年1月1日從的過去時間64位表面使安靜下來。(UTC格式化) FindFirstFile、FindNextFile函數、這UTC格式化還未含文件系統對於TFileTime構造身體零設置使安靜下來。當場合、FileTimeToLocalFileTime函數用UTC從當地時間生長能。 真實稻田、FileTimeToSystemTime函數用當地時間從TSystemTime構造身體生長成果。 TFileTime = record dwLowDateTime: DWORD; dwHighDateTime: DWORD; end; [成員] dwLowDateTime.....…情況之下32位 dwHighDateTime.....上部32位 -------------------------------------------------------------------------------- GetIDList(var ppidl: PItemIDList) siェru鏈接對象面對項目ID清單(TItemIDList構造身體)歸還。 { 參數 } ppidl: 項目ID清單(TItemIDList構造身體)往的指標 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- SetIDList(pidl: PItemIDList) siェru鏈接對象對於項目ID清單(TItemIDList構造身體)設置使安靜下來。 子女的函數、文件不是對象(控制盤、打印機、其他的計算機等)優剖祖o鏈接設置有必要時有用。 { 參數 } pidl: 項目ID清單(TItemIDList構造身體)往的指標 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- GetDescription(pszName: PAnsiChar; cchMaxName: Integer) siェru鏈接對象關於記述(評論)歸還。 { 參數 } pszName: 記述被歸還緩沖區往的指標 cchMaxName: 緩沖區的最大大小 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- SetDescription(pszName: PAnsiChar) siェru鏈接對象記述(評論)設置使安靜下來。 { 參數 } pszName: 設置記述指指標 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- GetWorkingDirectory(pszDir: PAnsiChar; cchMaxPath: Integer) siェru鏈接對象對於工作目錄名稱歸還。 { 參數 } pszDir: 工作目錄名稱被歸還緩沖區往的指標 cchMaxPath: :緩沖區的最大大小 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- SetWorkingDirectory(pszDir: PAnsiChar) siェru鏈接對象對於工作目錄設置使安靜下來。 作品業目錄設置做表面被要求有時喝設置必要有。譬如、另外的目錄有樣板使用正在做文字處理機文書文件往優剖祖o鏈接設置時等工作目錄的設置必要。 { 參數 } pszDir: 工作目錄名稱指指標 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- GetArguments(pszArgs: PAnsiChar; cchMaxPath: Integer) siェru鏈接對象關聯命令線參數歸還。 { 參數 } pszArgs: 命令線參數被歸還緩沖區往的指標 cchMaxPath: 緩沖區的最大大小 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- SetArguments(pszArgs: PAnsiChar) siェru鏈接對象命令線參數設置使安靜下來。 kon響導那樣的特別的參數(旗)拿應用軟件往優剖祖o鏈接設置時疏忽有用。 { 參數 } pszArgs: 命令線參數指指標 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- GetHotkey(var pwHotkey: Word) siェru鏈接對象面對熱鍵歸還。 { 參數 } pwHotkey: 熱鍵(下位字節虛擬關鍵字、上位字節以下的旗的組合) ﹒HOTKEYF_ALT..... ALT鍵 ﹒HOTKEYF_CONTROL..... CTRL鍵 ﹒HOTKEYF_EXT..... Extended鍵 ﹒HOTKEYF_SHIFT..... SHIFT鍵 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- SetHotkey(wHotkey: Word) siェru鏈接對象熱鍵設置使安靜下來。 o布隆迪ェkuto特定的鍵的組合啟動想特別的時使用。 { 參數 } wHotkey: 熱鍵(GetHotkey參照) { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- GetShowCmd(out piShowCmd: Integer) siェru鏈接對象面對Show命令歸還。 { 參數 } piShowCmd: Show命令(以下嚥喉れ嗎一個) ﹒SW_SHOWDEFAULT..... 應用軟件啟動特別的了程序根據CreateProcess函數被渡的TStartupInfo構造身體被指定的? SW_旗台也是表示狀態設置使安靜下來。應用軟件箱子的旗同時ShowWindow叫出來? 自身的主要的 窗口的初期表示狀態設置物品假如踢不結。 ﹒SW_HIDE..... 窗口錯誤表示西文? 別處的窗口積極號化使安靜下來。 ﹒SW_MINIMIZE..... 被指定的窗口圖標化? Z順序其次的首位(最高的領導幹部) 水平 窗口積極號化使安靜下來。 ﹒SW_RESTORE..... 窗口積極號化表示。窗口圖標化正在做裡最大化正在做偶爾? Windows元(原來)的大小與位置復原。應用軟件? 圖標化正在做窗口復原偶爾這旗指定。 ﹒SW_SHOW..... 窗口積極號化? 現在的大小與位置表示。 ﹒SW_SHOWMAXIMIZED..... 窗口積極號化? 最大表示窗口作為表示。 ﹒SW_SHOWMINIMIZED..... 窗口積極號化? 圖標表示。 ﹒SW_SHOWMINNOACTIVE..... 窗口圖標表示。積極號 窗口活動狀態乃萬少見。 ﹒SW_SHOWNA..... 窗口現在的狀態表示。積極號 窗口活動狀態乃萬少見。 ﹒SW_SHOWNOACTIVATE..... 臨…之前的大小與位置窗口表示。積極號 窗口活動狀態乃萬少見。 ﹒SW_SHOWNORMAL..... 窗口積極號化表示。窗口圖標化正在做裡最大化正在做偶爾? Windows元(原來)的大小與位置復原。應用軟件? 開頭窗口表示於是奇怪這旗指定。 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- SetShowCmd(iShowCmd: Integer) siェru鏈接對象對於Show命令設置使安靜下來。捆根據、對象啟動時的狀態設置做。 { 參數 } iShowCmd: Show命令(GetShowCmd參照) { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- GetIconLocation(pszIconPath: PAnsiChar; cchIconPath: Integer; out piIcon: Integer) siェru鏈接對象面對圖標的路徑、索引歸還。 { 參數 } pszIconPath: 圖標含文件的路徑被歸還緩沖區往的指標 cchIconPath: 緩沖區的最大大小 piIcon: 圖標的索引 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- SetIconLocation(pszIconPath: PAnsiChar; iIcon: Integer) siェru鏈接對象面對圖標的路徑、索引設置使安靜下來。 { 參數 } pszIconPath: 圖標含文件的路徑往的指標 iIcon: 圖標的索引 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- SetRelativePath(pszPathRel: PAnsiChar; dwReserved: DWORD) siェru鏈接對象往的相對路徑設置使安靜下來。 { 參數 } pszPathRel: 新相對路徑往的指標 dwReserved: 對象識別項目ID清單(TItemIDList構造身體) { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- Resolve(Wnd: HWND; fFlags: DWORD) siェru鏈接解決。系統優剖祖o鏈接對象找到、必要那個ば那個路徑與項目ID清單(TItemIDList構造身體)更新。 子女的方法被稱為、系統現在的鏈接對象關聯被靠的路徑歸還、那個路徑有對象找到。系統對象看到鏈接解決、焚燒對象看四指並排的長度們不れば、相同目錄的文件名不同生長日期和時間與屬性相同文件找到。 祖先れ但看四指並排的長度們不れば、輔助銀行目錄對於也重新返回確切同樣的動作使安靜下來。 最最後確切對象看四指並排的長度們不れば、用戶對象的位置指定特別的對話框表示。應用軟件SLR_NO_UI旗根據這對話框錯誤表示事能。 { 參數 } Wnd: :最終優剖祖o鏈接的解決失敗了時表示對話框的父母窗口作為使用窗口駕駛盤 fFlags: 以下出示旗的組合 ﹒SLR_ANY_MATCH..... 鏈接解決、用戶從的情報必要的時在……中對話框表示 ﹒SLR_NO_UI..... 用戶從的情報必要的時但對話框不表示(這旗被指定的時、fFlags的上位字暫停到的時間毫克秒單位指定。捆零的時、默認作為3秒暫停時間鄰。暫停時間公允(在~~中)對象沒被發現時、就那樣函數從返回。) ﹒SLR_UPDATE..... 鏈接對象被變更木板(有的)時、鏈接往的路徑與項目ID清單更新 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 -------------------------------------------------------------------------------- SetPath(pszFile: PAnsiChar) siェru鏈接對象的路徑與文件名設置使安靜下來。 { 參數 } pszFile: 新路徑往的指標 { 返價 } 函數假如成功的話、NOERROR歸還。失敗了時OLE被定義的錯誤代碼歸還。 2.2.8 IShellExecuteHook國際huェ以色列 ShellExecute、ShellExecuteEx的動作擴張國際huェ以色列。 表示數量、時間、惡劣 IShellExecuteHook國際huェ以色列的 Delphi的宣言出示。 另外、繼續各成員函數的解釋也行為。 const SID_IShellExecuteHookA = '{000214F5-0000-0000-C000-000000000046}'; IShellExecuteHookA = interface(IUnknown) [SID_IShellExecuteHookA] function Execute(var ShellExecuteInfo: TShellExecuteInfo): HResult; stdcall; end; IShellExecuteHook = IShellExecuteHookA; [成員函數](全1函數) -------------------------------------------------------------------------------- Execute(var ShellExecuteInfo: TShellExecuteInfo) ko男人do搶奪、另外的動作特別的鉤提供。 { 參數 } ShellExecuteInfo: ShellExecuteEx函數渡TShellExecuteInfo構造身體 { 返價 } 鉤安裝做義齒NOERROR、安裝做摟的假如踢S_FALSE被歸還。這些以外的錯誤的時OLE被定義的錯誤代碼歸還。 2.2.9 ICopyHook國際huェ以色列 ko棒球鉤、優剖祖o通過文件系統目錄或者印刷商對象復制、移動、刪除、ri名字使安靜下來作為時呼吸被拿出。 子女れ優剖祖o的操縱前呼吸被拿出因為、那個操縱不如實行、取消事能。 真實稻田、一的文件夾對於復數的復制鉤設置事能。 的、優剖祖o復制鉤直接初始化使安靜下來因為、IShellExtInit國際huェ以色列等必要沒有。 表示數量、時間、惡劣 ICopyHook國際huェ以色列的 Delphi的宣言出示。 另外、繼續各成員函數的解釋也行為。 const SID_IShellCopyHookA = '{000214EF-0000-0000-C000-000000000046}'; ICopyHookA = interface(IUnknown) [SID_IShellCopyHookA] function CopyCallback(Wnd: HWND; wFunc, wFlags: UINT; pszSrcFile: PAnsiChar; dwSrcAttribs: DWORD; pszDestFile: PAnsiChar; dwDestAttribs: DWORD): UINT; stdcall; end; ICopyHook = ICopyHookA; [成員函數](全1函數) -------------------------------------------------------------------------------- CopyCallback(Wnd: HWND; wFunc, wFlags: UINT; pszSrcFile: PAnsiChar; dwSrcAttribs: DWORD; pszDestFile: PAnsiChar; dwDestAttribs: DWORD) siェru根據目錄或者打印機對象的復制、移動、刪除、ri名字操縱的是否得當歸還。 { 參數 } Wnd: 用戶國際huェ以色列表示有必要時的那個父母窗口的駕駛盤 wFunc: 操縱的種類(以下嚥喉れ嗎一個) ﹒FO_COPY..... pszSrcFile的文件pszDestFile的位置往復制 ﹒FO_DELETE..... pszSrcFile的文件刪除 ﹒FO_MOVE..... pszSrcFile的文件pszDestFile的位置往移動 ﹒FO_RENAME..... pszSrcFile的文件ri名字 ﹒PO_DELETE..... pszSrcFile的打印機刪除 ﹒PO_PORTCHANGE..... 打印機接口變更(pszSrcFile到pszDestFile2重零最後頭兒字符串、打印機名稱繼續接口名稱正在包T
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#22 引用回覆 回覆 發表時間:2004-02-17 08:56:42 IP:61.63.xxx.xxx 未訂閱
引言: 1.這樣做最糟糕的情形是:因為server擁擠無法進入時會跳回到登入帳號密碼的視窗, 如果只是模擬keybd event的話,因為沒有視窗hWnd可以做判斷到底有沒有進入到server, 就會搞不清楚到底是要重新輸入帳號,還是該選擇人物 @@
哈哈哈,對呀對呀!這是其中的一項重點,雖然它的登入過程可以剛好完全用keyboard控制達成round by round的自動登入(多半設為無限次數),但由於無法知道什麼時候停止,所以要手動停止。 chimera如果有玩過一定知道,這也是為什麼很多人會〝喊出〞帳號密碼的原因了! <>< face="Verdana, Arial, Helvetica">引言: 2.我忽然想到會不會是因為是用directx的去繪製的,那有沒有可能用directx去繪製的話會有不同的方式繪製視窗, 導致一般的方法抓不到?? 嗯,這jcjroc兄之前有談到,我也開始有點相信這可能真的,只是也沒玩過directx,have no idea!
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#23 引用回覆 回覆 發表時間:2004-03-03 13:32:17 IP:61.63.xxx.xxx 未訂閱
嗯,時光飛逝,已經不需要自登程式了< >!不過問題似乎還沒有解決! 先就此打住了< >!本題的回應皆給我莫大的思索空間,但conundrum提供的方向比較可以嘗試,有機會會再試試的!
系統時間:2024-05-06 1:06:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!