如何開啟『我的電腦』 |
答題得分者是:axsoft
|
hido
一般會員 發表:2 回覆:14 積分:3 註冊:2003-03-18 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
hido您好: 試試
#define NO_WIN32_LEAN_AND_MEAN #include < shlobj.hpp > void __fastcall TForm1::Button1Click(TObject *Sender) { int folder; switch (comboBox1->ItemIndex) { case 0: folder = CSIDL_BITBUCKET; break; case 1: folder = CSIDL_CONTROLS; break; case 2: folder = CSIDL_DESKTOP; break; case 3: folder = CSIDL_DRIVES; //我的電腦 break; case 4: folder = CSIDL_FONTS; break; case 5: folder = CSIDL_NETWORK; break; case 6: folder = CSIDL_PRINTERS; break; case 7: folder = CSIDL_PROGRAMS; break; case 8: folder = CSIDL_RECENT; break; case 9: folder = CSIDL_SENDTO; break; case 10: folder = CSIDL_STARTMENU; break; case 11: folder = CSIDL_STARTUP; break; case 12: folder = CSIDL_TEMPLATES; break; default: folder = -1; break; } if (folder >= 0) { LPITEMIDLIST pidl; if (SHGetSpecialFolderLocation(Handle,folder,&pidl) == NOERROR) { char buf[MAX_PATH]; SHGetPathFromIDList(pidl,buf); Label1->Caption = buf; } } }網路志工聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- 發表人 - axsoft 於 2003/04/23 13:26:05 |
integrand
一般會員 發表:8 回覆:27 積分:17 註冊:2002-10-22 發送簡訊給我 |
引言: 各位先進好 我想利用以下的程式去開啟『我的電腦』的視窗 PChar PATH = "c:\\WINNT\\explorer.exe"; ShellExecute(Handle,"open",PATH,"我的電腦",NULL,SW_SHOWNORMAL); 但是執行結果似乎"我的電腦"是不合法的參數,不知道說我該怎麼去找到我的電腦的參數去執行『我的電腦』的開啟 如果把"我的電腦"改成NULL,會直接啟動『我的文件』,不知道說我該去哪裡得到相關資訊?謝謝你可能想知道explorer的參數吧 那看看下面這個連結 http://www.cybraryn.com/support/resources/explorer.asp 我發現只要在參數的地方打個',' 就會開啟我的電腦 不知道為啥 |
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
啊!會錯意! 用這個方法沒錯絕對可以開啟< class="code">
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(NULL, "Open", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", NULL, NULL, SW_SHOWNORMAL);
} 或者
void __fastcall TForm1::Button1Click(TObject *Sender) { WinExec("explorer.exe ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} ",SW_SHOWMAXIMIZED); }網路志工聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- 發表人 - axsoft 於 2003/04/23 14:17:43 |
hido
一般會員 發表:2 回覆:14 積分:3 註冊:2003-03-18 發送簡訊給我 |
axsoft先進您好 我按照你說的方法作了,可是那些參數似乎未能定義,出現以下的錯誤碼
[C Error] Unit1.cpp(41): E2451 Undefined symbol 'CSIDL_DRIVES'
[C Error] Unit1.cpp(51): E2451 Undefined symbol 'CSIDL_BITBUCKET'
.................
[C Error] Unit1.cpp(94): E2451 Undefined symbol 'LPITEMIDLIST'
[C Error] Unit1.cpp(94): E2379 Statement missing ;
[C Error] Unit1.cpp(95): E2268 Call to undefined function 'SHGetSpecialFolderLocation'
[C Error] Unit1.cpp(95): E2451 Undefined symbol 'pidl'
[C Error] Unit1.cpp(98): E2268 Call to undefined function 'SHGetPathFromIDList'
不知道說我該INCLUDE什麼函式
再者,我發現我要是直接利用那些參數放到ShellExecute中一樣無法直接呼叫『我的電腦』啟動,我的目的是想要當如『我的電腦』的WINDOW被開啟時,能自動檢知『我的電腦』啟動,並於第二台電腦執行同樣的程式。所以我必須先知到如何開啟『我的電腦』的參數或路徑。謝謝
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
hido
一般會員 發表:2 回覆:14 積分:3 註冊:2003-03-18 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: taishyang大大您好 不知道說您說的程式是axsoft大大說的ShellExecute程式還是更先前的SWITCH CASE那部分?如果是ShellExecute部分是OK,我現在差的就剩下說:當『我的電腦』執行時,我該怎麼自動偵測出"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"這個參數。 那至於SWITCH CASE部分我剛又試過一次一樣不行ㄝ!! >>< face="Verdana, Arial, Helvetica"> 照你的錯誤訊息應該是沒有加入 #define NO_WIN32_LEAN_AND_MEAN #include < shlobj.hpp > 這兩行,"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"其實就是CSIDL_DRIVES的CLSID Number 我是在Windows XP BCB5 update1下試的! 這有幾篇相關的資訊您可以參考一下 http://bcbfans.363.net/bcb/cbuilder/english/vcl Controls and Classes/cb200006dc_f.asp.htm http://n76cd-01p05.ppp11.odn.ad.jp/old/a5300.html http://www.hidecnet.ne.jp/~sinzan/tips/win/win_tip24.htm 這個SpecialFolders給你參考看看 http://geoshell.sourceforge.net/GeoWiki/SpecialFoldersMy Documents explorer ::{450D8FBA-AD25-11D0-98A8-0800361B1103} Network Neighborhood explorer ::{208D2C60-3AEA-1069-A2D7-08002B30309D} Recycle Bin explorer ::{645FF040-5081-101B-9F08-00AA002F954E} My Computer explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} Control Panel explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D} Dial-Up Networking explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{992CFFA0-F557-101A-88EC-00DD010CCC48} Printers explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D} Scheduled Tasks explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{D6277990-4C6A-11CF-8D87-00AA0060F5BF} Fonts explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524152}網路志工聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- 發表人 - axsoft 於 2003/04/23 15:18:12 |
hido
一般會員 發表:2 回覆:14 積分:3 註冊:2003-03-18 發送簡訊給我 |
|
hido
一般會員 發表:2 回覆:14 積分:3 註冊:2003-03-18 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: axsoft大大您好 我有加上那兩行阿!可是一樣不行說! 我是在WIN2000PRO以及BCB6.0下執行的 再請問說CSID Number要怎麼去找出來ㄌㄟ??假設我今天開啟了『我的電腦』我該怎麼去查知他就是CSIDL_DRIVES,"::{20D04FE0-3AEA-069-A2D8-08002B30309D}",有相關函式可以去查詢視窗的參數嗎?謝謝可以在Registry中"Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\"找到相關資訊,至於視窗部分你可以用FindWindow這一類的API來試試! 搜尋看看站內的文章有許多篇再討論Hook Window的資訊 <>網><>路>志<>工>聯盟---- href="http://www.vista.org.tw">http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- |
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
|
hido
一般會員 發表:2 回覆:14 積分:3 註冊:2003-03-18 發送簡訊給我 |
|
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
引言: axsoft大大您好 有關於先前的說明漏貼了一小部分應該是要加在#include1. 何謂開啟任一視窗,不太懂您的意思,您一直沒說清楚您的用途,我只能用猜的...好累呦! >網><>路>志<>工>聯盟---- href="http://www.vista.org.tw">http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]--- 發表人 - axsoft 於 2003/04/23 16:49:09 |
hido
一般會員 發表:2 回覆:14 積分:3 註冊:2003-03-18 發送簡訊給我 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
hido 你好 我實在看的霧沙沙 可否再敘述清楚寫一下 才看的懂 好像 太深了 原本以為a sir的第一次回應就好像ok了 診會好像問題越來越糢糊 < >< > 實在是 霧沙沙
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
hido
一般會員 發表:2 回覆:14 積分:3 註冊:2003-03-18 發送簡訊給我 |
jackkcg大大您好 其實axsoft大大回答的答案也是一種解決方法!只是不是全然我要的!
我的目的是要在另一台電腦上重新執行程式(就是兩台電腦要維持一樣的畫面)
我想要的作法為
1.抓取電腦螢幕隨機開啟視窗的資訊(例如抓取『我的電腦』的檔名、路徑及
開啟參數)
2.用SHELLEXECUTE重新執行程式,以『我的電腦』為例
ShellExecute(NULL, "Open", "::{20D04FE0-3AEA-1069-A2D8-
08002B30309D}", NULL, NULL, SW_SHOWNORMAL);可以重新開啟
3.我想要知道的是如何去擷取隨機開啟視窗的參數(如『我的電腦』的"::
{20D04FE0-3AEA-1069-A2D8-08002B30309D}),否則我無法用SHELLEXECUTE
在別台電腦裡開啟一樣的視窗畫面。
不知道說這樣可以明瞭一點嗎? 對不起可能敘述的有點混亂,還是我先把這個主題結案了,在開一個新主題比較好?謝謝大家!!
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
其實axsoft大大回答的答案也是一種解決方法!只是不是全然我要的!
//這是你說明的不清楚
我的目的是要在另一台電腦上重新執行程式(就是兩台電腦要維持一樣的畫面)
我想要的作法為
1.抓取電腦螢幕隨機開啟視窗的資訊(例如抓取『我的電腦』的檔名、路徑及
開啟參數)
//請查詢 遠端抓圖 範圍或桌面抓圖
2.用SHELLEXECUTE重新執行程式,以『我的電腦』為例
ShellExecute(NULL, "Open", "::{20D04FE0-3AEA-1069-A2D8-
08002B30309D}", NULL, NULL, SW_SHOWNORMAL);可以重新開啟
3.我想要知道的是如何去擷取隨機開啟視窗的參數(如『我的電腦』的"::
{20D04FE0-3AEA-1069-A2D8-08002B30309D}),否則我無法用SHELLEXECUTE
在別台電腦裡開啟一樣的視窗畫面。
//請查尋 硬體資訊與軟體安裝偵測
//與重複執行的資料
不知道說這樣可以明瞭一點嗎? 對不起可能敘述的有點混亂,還是我先把這個主題結案了,在開一個新主題比較好?謝謝大家!!
//不用結案 直接問重點 不過請問 a sir 因為我不會寫程式 哈哈 *********************************************************
哈哈&兵燹
最會的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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |