<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-AU">
  <id>https://david.gardiner.net.au/tags/Google.xml</id>
  <title type="html">David Gardiner - Google</title>
  <updated>2026-07-13T00:27:33.294Z</updated>
  <subtitle>Blog posts tagged with &apos;Google&apos; - A blog of software development, .NET and other interesting things</subtitle>
  <rights>Copyright 2026 David Gardiner</rights>
  <icon>https://www.gravatar.com/avatar/37edf2567185071646d62ba28b868fab?s=64</icon>
  <logo>https://www.gravatar.com/avatar/37edf2567185071646d62ba28b868fab?s=256</logo>
  <generator uri="https://github.com/flcdrg/astrojs-atom" version="3">astrojs-atom</generator>
  <author>
    <name>David Gardiner</name>
  </author>
  <link href="https://david.gardiner.net.au/tags/Google.xml" rel="self" type="application/atom+xml"/>
  <link href="https://david.gardiner.net.au/tags/Google" rel="alternate" type="text/html" hreflang="en-AU"/>
  <category term="Google"/>
  <category term="Software Development"/>
  <entry>
    <id>https://david.gardiner.net.au/2007/02/calendar-cross-publishing-concepts-jon</id>
    <updated>2007-02-02T11:19:00.001+10:30</updated>
    <title>Calendar cross-publishing concepts « Jon Udell</title>
    <link href="https://david.gardiner.net.au/2007/02/calendar-cross-publishing-concepts-jon" rel="alternate" type="text/html" title="Calendar cross-publishing concepts « Jon Udell"/>
    <category term="Blogging"/>
    <category term="Google"/>
    <published>2007-02-02T11:19:00.001+10:30</published>
    <summary type="html">I have this dream, that one day our calendar that (usually) hangs on the kitchen wall at home will be replaced by an electronic version.</summary>
    <content type="html">&lt;p&gt;I have this dream, that one day our calendar that (usually) hangs on the kitchen wall at home will be replaced by an electronic version.&lt;/p&gt;
&lt;p&gt;Then I would be able to view our home calendar from work, and using something like Outlook 2007, overlay my work calendar with our home one.&lt;/p&gt;
&lt;p&gt;I&apos;d prefer that the home calendar be secure, in that there would be restrictions as to who could view it (eg. I wouldn&apos;t want robbers seeing that we&apos;re out for the evening!)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.jonudell.net/2007/01/31/calendar-cross-publishing-concepts/&quot;&gt;Jon Udell&lt;/a&gt; outlines how far he&apos;s managed to get with sharing calendars between different systems (Outlook and Google in his case).&lt;/p&gt;
&lt;p&gt;The final missing piece is to have some kind of flat-screen, light-weight PC that we can hang on the kitchen wall to replace the paper calendar. This is probably the tricky bit, as I&apos;m guessing at the moment this would be pretty expensive.&lt;/p&gt;
&lt;p&gt;I think it will happen eventually when components get cheaper, but we&apos;re not there yet.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2006/05/google-notebook</id>
    <updated>2006-05-18T19:07:00.000+09:30</updated>
    <title>Google Notebook</title>
    <link href="https://david.gardiner.net.au/2006/05/google-notebook" rel="alternate" type="text/html" title="Google Notebook"/>
    <category term="Google"/>
    <category term="Mozilla"/>
    <category term="Office"/>
    <published>2006-05-18T19:07:00.000+09:30</published>
    <summary type="html">I&apos;ve been using Microsoft OneNote for a few years now, and find it quite useful for storing all sorts of useful things.</summary>
    <content type="html">&lt;p&gt;I&apos;ve been using &lt;a href=&quot;https://www.microsoft.com/en-us/microsoft-365?legRedir=true&quot;&gt;Microsoft OneNote&lt;/a&gt; for a few years now, and find it quite useful for storing all sorts of useful things. We&apos;re also using it at home as a way of recording recipes too, instead of having countless slips of scrap paper flying around. Now along comes Google Notebook - a free web-based service that sounds like a pretty similar idea. It only works for Firefox (and IE) at the moment.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2006/04/notifying-webmasters-of-penalties</id>
    <updated>2006-04-27T19:48:00.000+09:30</updated>
    <title>Notifying webmasters of penalties</title>
    <link href="https://david.gardiner.net.au/2006/04/notifying-webmasters-of-penalties" rel="alternate" type="text/html" title="Notifying webmasters of penalties"/>
    <category term="Blogging"/>
    <category term="Google"/>
    <published>2006-04-27T19:48:00.000+09:30</published>
    <summary type="html">Google are making it a bit easier to find out how they are indexing your site and any problems they are finding along the way.</summary>
    <content type="html">&lt;p&gt;Google are making it a bit easier to find out how they are indexing your site and any problems they are finding along the way.&lt;/p&gt;
&lt;p&gt;Because I use Blogger&apos;s BlogSpot domain, I can only customise the template for the page - not add any extra files to the site. However the &lt;a href=&quot;https://accounts.google.com/v3/signin/identifier?continue=https%3A%2F%2Fwww.google.com%2Fwebmasters%2Ftools%2Fsiteoverview&amp;amp;dsh=S1073836979%3A1773297471609759&amp;amp;followup=https%3A%2F%2Fwww.google.com%2Fwebmasters%2Ftools%2Fsiteoverview&amp;amp;ifkv=ASfE1-rkme3manEkNdxoDfH0gjYOypoUgwvt_v4J7kgLrwYJtnhNOvIL3DF_778E0gqAAPbAxdGJNA&amp;amp;passive=1209600&amp;amp;service=sitemaps&amp;amp;flowName=GlifWebSignIn&amp;amp;flowEntry=ServiceLogin&quot;&gt;sitemap facility&lt;/a&gt; does support Atom 0.3 feeds, which my blog does have, so I&apos;ve pointed it to that feed. It says it will take a few hours to update, but it will be interesting to see what it says about my blog once it is finished.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2005/09/mailinatorspam-map</id>
    <updated>2005-09-21T07:49:00.000+09:30</updated>
    <title>Mailinator:Spam Map</title>
    <link href="https://david.gardiner.net.au/2005/09/mailinatorspam-map" rel="alternate" type="text/html" title="Mailinator:Spam Map"/>
    <category term="Google"/>
    <category term="WWW"/>
    <published>2005-09-21T07:49:00.000+09:30</published>
    <summary type="html">I was only reading in The Australian yesterday about websites (&quot;Mash-ups&quot;) that combine services from a number of other websites.</summary>
    <content type="html">&lt;p&gt;I was only reading in &lt;a href=&quot;https://web.archive.org/web/20040125234750/http://www.australianit.com.au:80/&quot;&gt;The Australian&lt;/a&gt; yesterday about websites (&quot;Mash-ups&quot;) that combine services from a number of other websites.&lt;/p&gt;
&lt;p&gt;I found a reference to &lt;a href=&quot;https://web.archive.org/web/20250303205830/https://www.mailinator.com/mailinator/map.html&quot;&gt;Mailinator&lt;/a&gt; on &lt;a href=&quot;http://http//www.theregister.co.uk/2005/09/20/spam_map/&quot;&gt;The Register&lt;/a&gt; today. It&apos;s a page that maps incoming spam against the &lt;a href=&quot;http://hostip.info/&quot;&gt;source IP address&lt;/a&gt; and uses &lt;a href=&quot;https://www.google.com/maps&quot;&gt;Google Maps&lt;/a&gt; to generate a geographical map of where the spam is coming from. Makes you wonder how else you could make use of this kind of info.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2005/08/getting-name-of-windows-control-panel</id>
    <updated>2005-08-17T17:30:00.000+09:30</updated>
    <title>Getting the name of a Windows Control Panel Applet</title>
    <link href="https://david.gardiner.net.au/2005/08/getting-name-of-windows-control-panel" rel="alternate" type="text/html" title="Getting the name of a Windows Control Panel Applet"/>
    <category term="Google"/>
    <published>2005-08-17T17:30:00.000+09:30</published>
    <summary type="html">I&apos;ve been working on a program that needs to enumerate all the Control Panel applets in Windows, and ideally get the proper display name (rather than the .cpl filename).</summary>
    <content type="html">&lt;p&gt;I&apos;ve been working on a program that needs to enumerate all the Control Panel applets in Windows, and ideally get the proper display name (rather than the .cpl filename). You can do this for a specific applet by using the DllImport Attribute to access the CPlApplet function that every applet implements:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;DllImport(&quot;timedate.cpl&quot;, CharSet:=CharSet.Unicode)&amp;gt; \_
Private Function CPlApplet(ByVal hwnd As IntPtr, ByVal uMsg As Integer, ByVal lParam1 As Integer, ByVal lparam2 As IntPtr) As Integer
End Function
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;My problem is that I needed to call this function for all applets (including non-Microsoft ones). .NET allows you to do dynamic P/Invoke code, but the only post I found in Google was from someone who was unable to get it to work. After using ildasm.exe to study what IL was generated by the static version, I noticed that the once major difference was that the dynamic version lacked the &quot;preservesig&quot; statement. The way to add this in is to use a custom attribute - you can&apos;t do it via a parameter for any of the methods. The final version in VB.NET is based on the sample code from &lt;em&gt;broken link, was originally &lt;a href=&quot;http://www.thecodeproject.com/csharp/dynamicinvokedll.asp&quot;&gt;www.thecodeproject.com/csharp/dynamicinvokedll.asp&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Imports System
Imports System.Runtime.InteropServices
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Runtime.CompilerServices

Module Module1
  Public Function DynamicDllFunctionInvoke(ByVal DllPath As String, ByVal EntryPoint As String, ByVal message As Int32) As Object
  Dim returnType As Type = GetType(Int32)
  Dim parameterTypes As Type() = {GetType(IntPtr), GetType(Int32), GetType(Int32), GetType(IntPtr)}
  Dim parameterValues As Object() = {IntPtr.Zero, message, 0, IntPtr.Zero}
  Dim asmName As AssemblyName = New AssemblyName asmName.Name = &quot;tempDll&quot;
  Dim dynamicAsm As AssemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.RunAndSave)

  Dim dynamicMod As ModuleBuilder = dynamicAsm.DefineDynamicModule(&quot;tempModule&quot;) &apos;, &quot;tempModule.dll&quot;, True)
  Dim dynamicMethod As MethodBuilder = dynamicMod.DefinePInvokeMethod(EntryPoint, DllPath, MethodAttributes.Static Or MethodAttributes.Public Or MethodAttributes.PinvokeImpl, CallingConventions.Standard, returnType, parameterTypes, CallingConvention.Winapi, CharSet.Auto)
  Dim myAttributeType As Type = GetType(MethodImplAttribute)
  Dim myConstructorInfo As ConstructorInfo = myAttributeType.GetConstructor(New Type(0) \_
  {GetType(MethodImplOptions)})
  Dim myAttributeBuilder As New CustomAttributeBuilder(myConstructorInfo, \_ New Object(0) {MethodImplOptions.PreserveSig}) dynamicMethod.SetCustomAttribute(myAttributeBuilder) dynamicMod.CreateGlobalFunctions()
  Dim mi As MethodInfo = dynamicMod.GetMethod(EntryPoint)
  Dim retval As Object = mi.Invoke(Nothing, parameterValues)
  Debug.WriteLine(retval)
  Return retval
  End Function

  Sub Main()
    DynamicDllFunctionInvoke(&quot;c:\\WINDOWS\\system32\\timedate.cpl&quot;, &quot;CPlApplet&quot;, 1) DynamicDllFunctionInvoke(&quot;c:\\WINDOWS\\system32\\timedate.cpl&quot;, &quot;CPlApplet&quot;, 2)
  End Sub
End Module
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <id>https://david.gardiner.net.au/2005/06/google-earth</id>
    <updated>2005-06-29T16:06:00.000+09:30</updated>
    <title>Google Earth</title>
    <link href="https://david.gardiner.net.au/2005/06/google-earth" rel="alternate" type="text/html" title="Google Earth"/>
    <category term="Google"/>
    <category term="Adelaide"/>
    <published>2005-06-29T16:06:00.000+09:30</published>
    <summary type="html">Google Earth - Home: &quot; Google Earth – Explore, Search and Discover&quot; Adelaide is around 34°55&apos;47.79&quot;S 138°35&apos;59.13&quot;E</summary>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://earth.google.com/web/&quot;&gt;Google Earth - Home&lt;/a&gt;: &quot; Google Earth – Explore, Search and Discover&quot; Adelaide is around 34°55&apos;47.79&quot;S 138°35&apos;59.13&quot;E&lt;/p&gt;
</content>
  </entry>
</feed>
