Win8 1系統拖拽檔案得不到路徑的解決辦法

2021-06-30 16:50:46 字數 1387 閱讀 8503

vc6寫的乙個拖拽檔案得到路徑的**在win8上執行出錯,找到了這個例子。記錄備忘。

解決的辦法,使用changewindowmessagefilter註冊wm_dropfiles這個meessage。

changewindowmessagefilter是vista以後的乙個api,winxp下並沒有。

這個api在user32.dll中,使用時loadlibrary,getprocaddress得到函式位址就能使用。

1、在你的程式中新增以下函式:

[cpp]view plain

copy

//register global messages for vista win7 win8.1

typedef

bool

(winapi *_changewindowmessagefilter)(

uint

message, 

dword

dwflag);.  

bool

allowmeesageforvistaabove(

uint

umessageid, 

bool

ballow)  

_changewindowmessagefilter pchangewindowmessagefilter =  

(_changewindowmessagefilter)getprocaddress( husermod, "changewindowmessagefilter"

);  

if( null == pchangewindowmessagefilter )  

bresult = pchangewindowmessagefilter( umessageid, ballow ? 1 : 2 );//msgflt_add: 1, msgflt_remove: 2

if( null != husermod )  

return

bresult;  

}   

2、標頭檔案定義以下巨集 :

[cpp]view plain

copy

#define msgflt_add 1

#define msgflt_remove 2

3、在oninitdialog中新增函式呼叫: 

[cpp]view plain

copy

allowmeesageforvistaabove(spi_setanimation, msgflt_add);  

//allow drop files

allowmeesageforvistaabove(wm_dropfiles, msgflt_add);  

Win8 1系統 雙系統

10月18日更新 win8.1正式發布,其安裝方法與此前win8 win8預覽版完全相同,本文面向win8.1依舊有效。以下為it之家早前撰寫的 win8 rp版安裝方法彙總大全 含雙系統教程等 說明,如果在文中碰到 win8消費者預覽版 的字眼直接將其等同視為 win8 rp版 或者 win8 即...

64位win8 1系統安裝intelhaxm

引用可能是win8安裝了hyper v 安裝了hyper v後其他程序就無法使用虛擬化技術了。解決辦法 管理員執行cmd,輸入如下命令 bcdedit copy d windows 8 no hypervisor bcdedit set hypervisorlaunchtype off 現在重啟機器...

Win8 1應用開發之檔案操作

而通過檔案選取器則能訪問到整個系統的檔案。一 應用功能宣告 musiclibrary 許可範圍可提供對使用者 的程式設計訪問能力,讓應用無需使用者互動就可以列舉和訪問庫中的全部檔案。此許可範圍通經常使用在須要訪問整個 庫的自己主動唱片點唱機應用中。file picker 提供了一種強大的 ui 機制...