2011-11-28 89 views
3

沒有水平滾動,當我打電話在Delphi 3這個方法在Windows 7下:水平滾動不工作mouse_event(MOUSEEVENTF_HWHEEL)

const MOUSEEVENTF_HWHEEL = $1000; 
mouse_event(MOUSEEVENTF_HWHEEL, 0, 0, 120, 0);

垂直滾動與MOUSEEVENTF_WHEEL效果很好。結果與SendInput相同,返回值表示成功。我當前的鼠標支持水平傾斜,但沒有水平滾動條。

需要什麼使用MOUSEEVENTF_HWHEEL

SDK文檔:http://bit.ly/mouse_event

鼠標鉤子

我創建第二個32位的exe程序在Windows 7下只看到如果當水平車輪滾動鼠標發送消息。該鉤子接收VSCROLL,但沒有HSCROLL消息。

MouseHook := SetWindowsHookEx(WH_MOUSE_LL, @MouseProc, hInstance, 0); 
+0

由於這似乎是德爾福或其他一些帕斯卡方言,您應該添加另一個標籤。儘管在這個方言中沒有特殊的知識來回答API問題 – 0xC0000022L

+1

我在討論論壇和其他QA網站上搜索了幾個小時......許多人都有着相同的問題,使用衆所周知的編程語言:VB,C等。很快拒絕了這個假設。不過,我保留在懷疑列表我的exe頭文件,XML清單,常量和函數聲明。但我相信另一個X因素缺失。我在滾輪鼠標消息上設置了一個系統範圍的窗口鉤子。檢測到VSCROLL,但鉤子與HSCROLL無關。 – rjobidon

+0

順便說一句:是低水平還是低水平?你可以請你發佈你正在設置的鉤子類型......? ...... WH_MOUSE或WH_MOUSE_LL? ...還有,因爲這是一個鉤子,你在x64或x86 Windows上運行,並且是鉤子DLL 32位或64位......你甚至使用DLL嗎? – 0xC0000022L

回答

2
int main() 
{ 
    Sleep(20000); // enough time to switch windows and position the mouse pointer 
    mouse_event(MOUSEEVENTF_HWHEEL, 0, 0, 120, 0); 
    return 0; 
} 

滾動我選擇的Firefox頁面右側。該窗口必須被選中並且鼠標指針必須在頁面上。我是用鼠標啓用的。或者在測試時關閉鼠標(使用鼠標本身的開/關開關),結果是一樣的。 我的鼠標也有水平傾斜,沒有滾動條。 (Windows 7旗艦版)

編輯

有一點要注意:該程序本身需要處理的消息。例如Firefox。它顯示與傾斜鼠標滾輪相同的行爲:頁面相應地向左/向右滾動。 其他程序,如IE,似乎不處理這個消息,所以根本不滾動。即使使用鼠標(不帶任何附加軟件包的Logitech Performance MX)也不會滾動。 因此,通過發送mouse_event消息似乎沒有100%的解決方案。

+0

你的建議在我的代碼中沒有成功。我將嘗試一個新的空應用程序,像你的C++。你有微軟鼠標(Intellipoint驅動程序)還是羅技鼠標(SetPoint驅動程序)。如果Windows 7尚不支持HSCROLL,也許鼠標驅動程序直接將WM_HSCROLL消息發送到滾動條... – rjobidon

+0

我正在使用Microsoft鼠標。明天我會在我的筆記本電腦上試用此代碼,不附帶任何鼠標 – esskar

+0

我的原始代碼和您的工作在Chrome和Safari中,但不能在Internet Explorer或Adobe Acrobat閱讀器中使用。仍然缺少一個小黑客。 – rjobidon