Как спрятать курсор в Awesomium
Я попробовал это:
<awe:WebControl x:Name="webBrowser" Cursor="None" Source="http://example.com/"/>
но курсор все еще показывает.
Я решил, что могу изменить CSS страницы, добавив следующую строку:
*{
cursor: none;
}
Но есть ли решение, когда у меня нет доступа к реальной странице, которую я показываю?
1 ответ
Решение
Вы можете использовать ResouceInterceptor и манипулировать страницей на лету, чтобы вставить собственный CSS.
РЕДАКТИРОВАТЬ:
Следующая реализация должна сделать работу. (Предполагается, что есть файл text.css)
class ManipulatingResourceInterceptor : IResourceInterceptor
{
public ResourceResponse OnRequest(ResourceRequest request)
{
Stream stream = null;
//do stream manipulation
if (request.Url.ToString() == "http://your.web.url/test.css")
{
WebRequest myRequest;
myRequest = WebRequest.Create(request.Url);
Stream webStream = myRequest.GetResponse().GetResponseStream();
StreamReader webStreamReader = new StreamReader(webStream);
string webStreamContent = webStreamReader.ReadToEnd();
stream = webStream;
string extraContent = "*{cursor: none;}";
webStreamContent += extraContent;
byte[] responseBuffer = Encoding.UTF8.GetBytes(webStreamContent);
// Initialize unmanaged memory to hold the array.
int responseSize = Marshal.SizeOf(responseBuffer[0]) * responseBuffer.Length;
IntPtr pointer = Marshal.AllocHGlobal(responseSize);
try
{
// Copy the array to unmanaged memory.
Marshal.Copy(responseBuffer, 0, pointer, responseBuffer.Length);
return ResourceResponse.Create((uint)responseBuffer.Length, pointer, "text/css");
}
finally
{
// Data is not owned by the ResourceResponse. A copy is made
// of the supplied buffer. We can safely free the unmanaged memory.
Marshal.FreeHGlobal(pointer);
stream.Close();
}
}
return null;
}
public bool OnFilterNavigation(NavigationRequest request)
{
return false;
}
}