<?xml version="1.0" encoding="windows-1252"?>
<node id="92404" title="Outlook/Palm/PocketMirror users, take note..." created="2001-06-28 18:23:52" updated="2005-07-20 22:23:22">
<type id="1042">
CUFP</type>
<author id="961">
Anonymous Monk</author>
<data>
<field name="doctext">
I'm a Palm Pilot user. At work we use Windows NT and use MS
Exchange/Outlook 97 for mail/PIM stuff. I like to copy files I am working
on into Palm memos for review, so I wrote this script to automate this:


&lt;CODE&gt;
#!/usr/bin/perl -w

# Takes the text file(s) specified on the command line and puts them
# into Outlook notes. If you have a Palm pilot and use Chapura's
# PocketMirror, then Outlook notes get copied into Palm memos when
# you synchronise.

use strict;
use diagnostics;
use Win32::OLE;
use Win32::OLE::Const;

die "This script is only good for Windows." unless ($^O eq "MSWin32");

my $Outlook;   # Generally sunny, and naively optomistic.

# Make sure we have Outlook, and that it is running. Chicken out if
# either of these is not the case.
eval {$Outlook = Win32::OLE-&gt;GetActiveObject('Outlook.Application')};
die "Outlook not installed." if $@;
die "Outlook needs to be running." unless defined $Outlook;

# Outlook OLE constants
my $olc = Win32::OLE::Const-&gt;Load($Outlook);

# We have to expand all wild-cards, because the Windows command shell
# doesn't. We only want plain, text files, and we want to read them
# whole, not a line at a time.
@ARGV = map { glob } @ARGV;
@ARGV = grep { -f &amp;&amp; -T } @ARGV;
undef $/;

while (&lt;&gt;) {
  # New note for each file.
  my $note = $Outlook-&gt;CreateItem($olc-&gt;{olNoteItem});

  # The Outlook note will consist of the filename followed by the file
  # contents.
  # The reason the note is prefixed with the filename is so that Palm
  # pilot can differentiate between them. If this wasn't done and, for
  # instance, this script was run on a group of Perl scripts (perl
  # txt2note.pl *.pl) then when these notes were synched to the Palm,
  # you would see a whole load of memos on your Palm entitled
  # "#!/usr/bin/perl -w".
  $note-&gt;{Body} = $ARGV . "\n" . $_;

  # Optional note properties.
  $note-&gt;{Categories} = "Business";
  $note-&gt;{Width} = 800;
  $note-&gt;{Height} = 600;
  $note-&gt;{Top} = 20;
  $note-&gt;{Left} = 20;

  # Close and save note.
  $note-&gt;close($olc-&gt;{olSave});
}
&lt;/CODE&gt;

I wrote the following Emacs lisp code in my _emacs file that runs the
script on the current buffer:

&lt;CODE&gt;
;; Make F9 key copy the entire buffer to a new MS Outlook note
(global-set-key [f9] ' copy-buffer-to-outlook-note)

; Copy entire buffer to MS Outlook note
(defun copy-buffer-to-outlook-note ()
  "Copy current buffer to MS Outlook note."
  (interactive)
  (shell-command-on-region (point-min) (point-max) "perl d:/perl/txt2note.pl")))
&lt;/CODE&gt;</field>
<field name="reputation">
33</field>
</data>
</node>
