GTK+ 隐藏鼠标指针

GTK+ 支持对 GtkWindow 类型的对象设置个性化的鼠标指针(GdkCursor)对象,使用此方法我们就可以实现在指定的窗口隐藏鼠标指针功能。

直接看代码:

GdkColor color;
GdkPixmap *pixmap = NULL;
GdkCursor *cursor = NULL;
 
gdk_color_parse("#00000000", &color);
pixmap = gdk_pixmap_new(NULL, 1, 1, 1);
cursor = gdk_cursor_new_from_pixmap(pixmap, pixmap, &color, &color, 0, 0);
gdk_window_set_cursor(gtk_widget_get_window(window), cursor);

PS: 没有效果?将这段代码最后一行放至在 gtk_widget_show(window); 之后。

Over!

彻底解决 Android 平台不能访问 Google 服务问题

需要条件
* 一台在国内可正常访问的并且它也可以正常访问 Google 服务的 Linux 主机(美国VPS就可以了)
* Android 操作系统支持修改 /etc/hosts 和 iptables 支持(需要 NAT 表支持)

问题原因
原始 Android 里访问 Google 服务是通过三个Google服务器域名:android.clients.google.com,android.l.google.com, clients.google.com,可能会访问这三个域名的 80 和 443端口,由于非人为原因,这种看似非常正常的访问就不正常了。发现客户端 (Android) 和 Google 服务器之间的数据链路异常。

实现原理
android.clients.google.com|android.l.google.com|clients2.google.com:80–> vps:8129 –> google server:80
android.clients.googel.com|android.l.google.com|clients2.google.com:443–> vps:8130 –> google server:443
使用 8129 和 8130 端口是由于不和 VPS 上这两个端口的服务冲突,如实际情况无服务,可直接使用。

操作方法
VPS:

sudo sysctl net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -d VPS地址/32 -p tcp -m tcp --dport 8129 -j DNAT --to-destination 74.125.127.113:80
sudo iptables -t nat -A POSTROUTING -d 74.125.127.113/32 -p tcp -m tcp --dport 80 -j SNAT --to-source VPS地址
sudo iptables -t nat -A PREROUTING -d VPS地址/32 -p tcp -m tcp --dport 8130 -j DNAT --to-destination 74.125.127.113:443
sudo iptables -t nat -A POSTROUTING -d 74.125.127.113/32 -p tcp -m tcp --dport 443 -j SNAT --to-source VPS地址

Android:
/etc/hosts 增加如下三行

74.125.127.113    android.clients.google.com
74.125.127.113    android.l.google.com
74.125.127.113    clients2.google.com
iptables -t nat -A OUTPUT -d 74.125.127.113/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination VPS地址:8129
iptables -t nat -A OUTPUT -d 74.125.127.113/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination VPS地址:8130

这样就可以正常访问 Google 服务了。

Over!