我在开发一个防盗软件来确定电脑的确切位置。内置全球定位系统的笔记本电脑在我的国家非常少见,所以我不得不在我的应用程序中使用HTML5 Geolocation。
对于Internet Explorer 9+,有一个注册表项,您可以添加url以允许url,而无需用户验证。如果您在REG_DWORD
路径下添加一个名为domain.com的HKCU\Software\Microsoft\Internet Explorer\Geolocation\HostConsent
值,浏览器将自动允许地理位置请求。然而,我不能运行Internet Explorer隐藏,所以这对我不起作用,因为小偷不应该意识到和看到发生了什么。
我更喜欢第二种方式,因为Internet Explorer现在被微软终止了,我认为下一个版本将有不同的结构。
如何在我的应用程序中嵌入和使用Webkit或GeckoFX?如何在此应用程序中以编程方式允许地理位置请求?
发布于 2015-03-26 05:03:53
依赖隐藏的浏览器是一个有风险的解决方案,而且在未来的某个时候它将不可避免地崩溃。
相反,您希望在自己的应用程序中构建地理定位功能。位置信息的两个主要来源是你的IP地址(然后输入到任何GeoIP providers中)和可见的蜂窝/Wi-Fi站(输入到Google geolocation API中)。
发布于 2015-05-20 16:56:11
看一下在System.Device
程序集中定义的GeoCoordinateWatcher
类
GeoCoordinateWatcher类从当前位置提供程序提供基于坐标的位置数据。基于多个因素,例如来自所有提供商的数据的年龄和准确性、位置应用程序所请求的准确性以及与位置提供商相关联的功耗和性能影响,将当前位置提供商确定为计算机上最高的位置提供商。当前的位置提供商可能会随着时间的推移而变化,例如,当GPS设备在室内失去卫星信号时,Wi-Fi三角测量提供商成为计算机上最准确的提供商。
使用示例:
static void Main(string[] args)
{
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();
watcher.StatusChanged += (sender, e) =>
{
Console.WriteLine("new Status : {0}", e.Status);
};
watcher.PositionChanged += (sender, e) =>
{
Console.WriteLine("position changed. Location : {0}, Timestamp : {1}",
e.Position.Location, e.Position.Timestamp);
};
if(!watcher.TryStart(false, TimeSpan.FromMilliseconds(5000)))
{
throw new Exception("Can't access location");
}
Console.ReadLine();
}
我认为这个类所依赖的机制与Internet Explorer所使用的机制相同。
当您使用它时,您的系统通知托盘中会有一个图标,告诉您该位置最近被访问过。
您还将在windows日志中添加一个条目。
发布于 2015-05-24 03:26:41
如果要部署到最新版本的Windows,则可以使用.NET System.Device.Location
的本地库,该库允许您获取设备位置信息。
在MSDN上有一个如何使用GeoCoordinate Class的链接
如果使用XAML,您也可以尝试此方法。Detect Users Location using XAML
https://stackoverflow.com/questions/29211640
复制相似问题