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

為何抓桌面上圖示的座標都為(0,0)

尚未結案
beldandy
一般會員


發表:4
回覆:2
積分:1
註冊:2003-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-19 08:56:59 IP:210.67.xxx.xxx 未訂閱
我寫了一段程式如下 function TForm1.GetItemPosition(hwndLV: HWND; i: Integer; var ppt: TPoint): Bool; begin Result := Bool( SendMessage(hWndLV, LVM_GETITEMPOSITION, i, Longint(@ppt)) ); end; procedure TForm1.Button1Click(Sender: TObject); var iCount,i : integer; nowpo : TPoint; begin RichEdit1.Lines.Clear; hdesk := FindWindow('progman','Program Manager'); hdesk := FindWindowEx(hdesk,0,'SHELLDLL_DefView',nil); hdesk := FindWindowEx(hdesk,0,'SysListView32','FolderView'); huse := hdesk; iCount := SendMessage(hdesk, LVM_GETITEMCOUNT, 0, 0); ShowMessage(IntToStr(iCount)); For i := 0 to iCount - 1 Do If GetItemPosition(hdesk,i,nowpo) Then RichEdit1.Lines.Add('(' IntToStr(nowpo.X) ',' IntToStr(nowpo.Y) ')'); end; 為何我抓到的座標都為(0,0)?? 不知道我那裡寫錯了??
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-27 16:11:12 IP:211.23.xxx.xxx 未訂閱
主要的問題就是因為你的程式, 和 'progman' 並不是同一個行程.    所以SendMessage(hWndLV, LVM_GETITEMPOSITION, i, Longint(@ppt))    傳入的這個 ADDRESS, 沒有辦法被正確的 ACCESS 到, 因為你的主程式是另一個行程(PROCESS).    想要取得桌面 ICON 的座標, 必需先掛一個 SYSTEM HOOK 起來, 才能取得正確的座標.    因為程式碼還要分成 DLL 及 EXE , 所以就不寫範例了, 你自個兒試試吧!!.. ...
------
水瓶男的blog: http://791909.blogspot.com
系統時間:2024-05-04 22:26:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!