我想在Web瀏覽器上禁用F5。爲此,我可以使用Application.OnMessage。 但是我想強制這個規則,當世界銀行集中。德爾福:是webbrowser專注/或得到webbrowsers真正處理
但每樣都失敗:
1)獲取WB的HWND - 比較Msg.hwnd
2)獲取WB的聚焦狀態,或者查看時,它是專注
感謝您對此問題的每一個想法!
DD
我想在Web瀏覽器上禁用F5。爲此,我可以使用Application.OnMessage。 但是我想強制這個規則,當世界銀行集中。德爾福:是webbrowser專注/或得到webbrowsers真正處理
但每樣都失敗:
1)獲取WB的HWND - 比較Msg.hwnd
2)獲取WB的聚焦狀態,或者查看時,它是專注
感謝您對此問題的每一個想法!
DD
因爲我認爲最好的方法是檢查我在Application.Onmessage中得到的hwnd的ClassName。
這就像「禁用上下文菜單」基於「Internet_Explorer_Server」類名。
參見例如:
procedure TDDGoogleMapsObject.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var
szClassName: array[0..255] of Char;
const
ie_name = 'Internet Explorer_Server';
begin
if Msg.message = WM_KEYDOWN then
if Msg.wParam = VK_F5 then begin
GetClassName(Msg.HWND, szClassName, SizeOf(szClassName));
if lstrcmp(@szClassName[0], @ie_name[1]) = 0
then Handled := True;
if not Handled
then beep;
end;
end;
這可以檢查VK_F5密鑰的源。如果它來自IE窗口,那麼我們禁用它。 我們允許它推另一個案例......
感謝您的幫助: DD
一個TWebBrowser器(Internet Explorer)在您的應用程序或外部瀏覽器? –
在我的應用程序中。 – durumdara
您不需要在瀏覽器關注時禁用F5,而是需要攔截F5窗口消息。你不控制Windows中的鍵盤。您會收到郵件,您可以攔截郵件,然後「標記爲已處理」。這也是一樣的,但如果你明白你在做什麼,你就能更好地理解它。你不需要全局掛鉤F5,事實上這樣做是有問題的。 –