<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: Dmullet's Code Snippets</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 08 Aug 2008 13:14:21 GMT</pubDate>
    <description>DZone Snippets: Dmullet's Code Snippets</description>
    <item>
      <title>Creating Charts in Excel</title>
      <link>http://snippets.dzone.com/posts/show/5679</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com"&gt;Ruby on Windows&lt;/a&gt; blog...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#   creating a chart in excel&lt;br /&gt;require 'win32ole'&lt;br /&gt;&lt;br /&gt;#   set some parameter variables&lt;br /&gt;xlColumns = 2&lt;br /&gt;xlColumnClustered = 51&lt;br /&gt;xlWhite = 2&lt;br /&gt;xlRed = 3&lt;br /&gt;xlBlue = 5&lt;br /&gt;xlGray = 15&lt;br /&gt;&lt;br /&gt;#   connect to a running instance of excel&lt;br /&gt;xl = WIN32OLE.connect('Excel.Application')&lt;br /&gt;wb = xl.Workbooks('mlb_stats.xls')&lt;br /&gt;&lt;br /&gt;#   delete "MLB Scoring" chart if it already exists&lt;br /&gt;xl.DisplayAlerts = false&lt;br /&gt;    begin&lt;br /&gt;        wb.Charts("MLB Scoring").Delete&lt;br /&gt;    rescue&lt;br /&gt;    end&lt;br /&gt;xl.DisplayAlerts = true&lt;br /&gt;&lt;br /&gt;#   create a new chart&lt;br /&gt;mychart = wb.Charts.Add&lt;br /&gt;mychart.Name = "MLB Scoring"&lt;br /&gt;mychart.SetSourceData wb.Worksheets("Runs Scored and Allowed").Range("A1:C15"), xlColumns&lt;br /&gt;mychart.ChartType = xlColumnClustered&lt;br /&gt;&lt;br /&gt;#   set series names in the legend&lt;br /&gt;mychart.SeriesCollection(1).Name = "Runs Scored"&lt;br /&gt;mychart.SeriesCollection(2).Name = "Runs Allowed  "&lt;br /&gt;&lt;br /&gt;#   set colors&lt;br /&gt;mychart.SeriesCollection(1).Interior.ColorIndex = xlBlue&lt;br /&gt;mychart.SeriesCollection(2).Interior.ColorIndex = xlRed&lt;br /&gt;mychart.ChartArea.Interior.ColorIndex = xlWhite&lt;br /&gt;mychart.ChartArea.Border.ColorIndex = xlBlue&lt;br /&gt;mychart.PlotArea.Interior.ColorIndex = xlGray&lt;br /&gt;mychart.PlotArea.Border.ColorIndex = xlWhite&lt;br /&gt;&lt;br /&gt;#   set chart title properties&lt;br /&gt;mychart.HasTitle = true&lt;br /&gt;mychart.ChartTitle.Characters.Text = "American League - Runs Scored vs. Runs Allowed"&lt;br /&gt;mychart.ChartTitle.Font.Name = 'Verdana'&lt;br /&gt;mychart.ChartTitle.Font.Size = 16&lt;br /&gt;mychart.ChartTitle.Font.Bold = true&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Further details and discussion &lt;a href="http://rubyonwindows.blogspot.com/2008/06/automating-excel-creating-charts.html"&gt;here&lt;/a&gt;.&lt;br /&gt;</description>
      <pubDate>Sun, 22 Jun 2008 19:24:45 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5679</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Basic wxRuby Form Example</title>
      <link>http://snippets.dzone.com/posts/show/4752</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com"&gt;Ruby on Windows&lt;/a&gt; blog...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;require 'wx'&lt;br /&gt;include Wx&lt;br /&gt;&lt;br /&gt;class MyFrame &lt; Frame&lt;br /&gt;    def initialize()&lt;br /&gt;        super(nil, -1, 'My Frame Title')&lt;br /&gt;        # First create the controls&lt;br /&gt;        @my_panel = Panel.new(self)&lt;br /&gt;        @my_label = StaticText.new(@my_panel, -1, 'My Label Text', &lt;br /&gt;            DEFAULT_POSITION, DEFAULT_SIZE, ALIGN_CENTER)&lt;br /&gt;        @my_textbox = TextCtrl.new(@my_panel, -1, 'Default Textbox Value')&lt;br /&gt;        @my_combo = ComboBox.new(@my_panel, -1, 'Default Combo Text', &lt;br /&gt;            DEFAULT_POSITION, DEFAULT_SIZE, ['Item 1', 'Item 2', 'Item 3'])&lt;br /&gt;        @my_button = Button.new(@my_panel, -1, 'My Button Text')&lt;br /&gt;        # Bind controls to functions&lt;br /&gt;        evt_button(@my_button.get_id()) { |event| my_button_click(event)}&lt;br /&gt;        # Now do the layout&lt;br /&gt;        @my_panel_sizer = BoxSizer.new(VERTICAL)&lt;br /&gt;        @my_panel.set_sizer(@my_panel_sizer)&lt;br /&gt;        @my_panel_sizer.add(@my_label, 0, GROW|ALL, 2)&lt;br /&gt;        @my_panel_sizer.add(@my_textbox, 0, GROW|ALL, 2)&lt;br /&gt;        @my_panel_sizer.add(@my_combo, 0, GROW|ALL, 2)&lt;br /&gt;        @my_panel_sizer.add(@my_button, 0, GROW|ALL, 2)        &lt;br /&gt;        show()&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    def my_button_click(event)&lt;br /&gt;        # Your code here&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class MyApp &lt; App&lt;br /&gt;    def on_init&lt;br /&gt;        MyFrame.new&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;MyApp.new.main_loop()&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Further details and discussion &lt;a href="http://rubyonwindows.blogspot.com/2007/11/getting-started-with-wxruby-gui-toolkit.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Wed, 14 Nov 2007 03:13:58 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4752</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Automating Outlook with Ruby: Inbox &amp; Messages</title>
      <link>http://snippets.dzone.com/posts/show/4547</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com"&gt;Ruby on Windows&lt;/a&gt; blog.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'win32ole'&lt;br /&gt;outlook = WIN32OLE.new('Outlook.Application')&lt;br /&gt;mapi = outlook.GetNameSpace('MAPI')&lt;br /&gt;&lt;br /&gt;# Get a reference to the Inbox or other folder:&lt;br /&gt;inbox = mapi.GetDefaultFolder(6)&lt;br /&gt;personal_folders = mapi.Folders.Item('Personal Folders')&lt;br /&gt;baseball_folder = personal_folders.Folders.Item('Baseball')&lt;br /&gt;&lt;br /&gt;# Get a count of a folder's unread items:&lt;br /&gt;puts "#{inbox.UnreadItemCount} unread messages"&lt;br /&gt;&lt;br /&gt;# Iterate over messages in a folder:&lt;br /&gt;inbox.Items.each do |message|&lt;br /&gt;    # Your code here...&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;# Retrieve a single message:&lt;br /&gt;first_message = inbox.Items(1)&lt;br /&gt;&lt;br /&gt;# Delete a message:&lt;br /&gt;message.Delete&lt;br /&gt;&lt;br /&gt;# Move a message to another folder:&lt;br /&gt;baseball_folder = personal_folders.Folders.Item('Baseball')&lt;br /&gt;message.Move(baseball_folder)&lt;br /&gt;&lt;br /&gt;inbox.Items.Count.downto(1) do |i|&lt;br /&gt;    message = inbox.Items(i)&lt;br /&gt;    if message.Subject =~ /cardinals/i&lt;br /&gt;        message.Move(baseball_folder)&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Further details and discussion can be found &lt;a href="http://rubyonwindows.blogspot.com/2007/08/automating-outlook-with-ruby-inbox.html"&gt;here&lt;/a&gt;.&lt;br /&gt;</description>
      <pubDate>Sat, 15 Sep 2007 12:32:37 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4547</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Automating Outlook with Ruby: Address Books</title>
      <link>http://snippets.dzone.com/posts/show/4473</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com"&gt;Ruby on Windows&lt;/a&gt; blog...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'win32ole'&lt;br /&gt;&lt;br /&gt;outlook = WIN32OLE.new('Outlook.Application')&lt;br /&gt;mapi = outlook.GetNameSpace('MAPI')&lt;br /&gt;&lt;br /&gt;#   Get list of available Address Lists&lt;br /&gt;mapi.Session.AddressLists.each do |list|&lt;br /&gt;    puts list.Name&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   Access an Address List:&lt;br /&gt;address_list = mapi.Session.AddressLists('Contacts')&lt;br /&gt;address_list = mapi.Session.AddressLists('Personal Address Book')&lt;br /&gt;address_list = mapi.Session.AddressLists('Global Address List')&lt;br /&gt;&lt;br /&gt;#   Outlook security dialog will prompt to allow access to AddressEntries:&lt;br /&gt;address_entries = address_list.AddressEntries&lt;br /&gt;&lt;br /&gt;#   Iterate over the AddressEntries collection:&lt;br /&gt;address_entries.each do |address_entry|&lt;br /&gt;    if address_entry.Name =~ /Sinatra/&lt;br /&gt;        puts address_entry.Name, address_entry.Address&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   Search for an Address:&lt;br /&gt;address_entry = address_entries.Item("sinatra, frank")&lt;br /&gt;puts address_entry.Name&lt;br /&gt;puts address_entry.Address&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Further details can be found &lt;a href="http://rubyonwindows.blogspot.com/2007/08/automating-outlook-with-ruby-address.html"&gt;here&lt;/a&gt;.&lt;br /&gt;</description>
      <pubDate>Wed, 29 Aug 2007 00:49:23 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4473</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Automating Outlook with Ruby: Contacts</title>
      <link>http://snippets.dzone.com/posts/show/4426</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com"&gt;Ruby on Windows&lt;/a&gt; blog...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'win32ole'&lt;br /&gt;&lt;br /&gt;outlook = WIN32OLE.new('Outlook.Application')&lt;br /&gt;mapi = outlook.GetNameSpace('MAPI')&lt;br /&gt;&lt;br /&gt;#   Create a new Contact&lt;br /&gt;contact = outlook.CreateItem(2)&lt;br /&gt;    contact.FullName = 'Stan Musial'&lt;br /&gt;    contact.BusinessTelephoneNumber = '(314)555-1234'&lt;br /&gt;    contact.Email1Address = 'stan_the_man@stlcardinals.com'&lt;br /&gt;contact.Save&lt;br /&gt;&lt;br /&gt;#   Iterate over Contact Items and extract data&lt;br /&gt;contacts = mapi.GetDefaultFolder(10).Items&lt;br /&gt;contacts.each do |contact|&lt;br /&gt;    puts contact.FullName&lt;br /&gt;    puts contact.Email1Address&lt;br /&gt;    puts contact.BusinessTelephoneNumber&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Further details can be found &lt;a href="http://rubyonwindows.blogspot.com/2007/08/automating-outlook-with-ruby-contacts.html"&gt;here&lt;/a&gt;.&lt;br /&gt;</description>
      <pubDate>Fri, 17 Aug 2007 01:37:13 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4426</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Automating Windows Media Player with Ruby</title>
      <link>http://snippets.dzone.com/posts/show/4380</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com"&gt;Ruby on Windows&lt;/a&gt; blog.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'win32ole'&lt;br /&gt;player = WIN32OLE.new('WMPlayer.OCX')&lt;br /&gt;media_collection = player.mediaCollection&lt;br /&gt;playlists = player.PlaylistCollection&lt;br /&gt;&lt;br /&gt;#   Play a song&lt;br /&gt;player.OpenPlayer('c:\music\van halen\right now.wma')&lt;br /&gt;&lt;br /&gt;#   Select songs from the Media Collection&lt;br /&gt;all_media = media_collection.getAll()&lt;br /&gt;audio_media = media_collection.getByAttribute("MediaType", "Audio")&lt;br /&gt;sinatra_songs = media_collection.getByAuthor("Frank Sinatra")&lt;br /&gt;album = media_collection.getByAlbum('Come Fly with Me')&lt;br /&gt;jazz_tunes = media_collection.getByGenre('Jazz')&lt;br /&gt;songs = media_collection.getByName('Fly Me to the Moon')&lt;br /&gt;&lt;br /&gt;#   Play the first song&lt;br /&gt;first_song = songs.Item(0)&lt;br /&gt;player.OpenPlayer(first_song.sourceURL)&lt;br /&gt;&lt;br /&gt;#   Add a song to the Media Collection&lt;br /&gt;song = media_collection.Add('C:\music\Just in Time.wma')&lt;br /&gt;&lt;br /&gt;#   Remove a song from the Media Collection&lt;br /&gt;songs = media_collection.getByName('Fly Me to the Moon')&lt;br /&gt;media_collection.Remove(songs.Item(0), true)&lt;br /&gt;&lt;br /&gt;#   Select a playlist&lt;br /&gt;all_playlists = playlists.getAll()&lt;br /&gt;split_enz_playlist = playlists.getByName('Split Enz')&lt;br /&gt;&lt;br /&gt;#   Iterate over songs in a playlist&lt;br /&gt;(0..my_playlist.Count - 1).each do |i|&lt;br /&gt;    song = my_playlist.Item(i)&lt;br /&gt;    puts song.Name&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   Create a new playlist&lt;br /&gt;playlists = player.PlaylistCollection&lt;br /&gt;playlists.newPlaylist('New Playlist')&lt;br /&gt;media_collection.Add('D:\Music\My Playlists\New Playlist.wpl')&lt;br /&gt;&lt;br /&gt;#   Remove a playlist&lt;br /&gt;playlists = player.PlaylistCollection&lt;br /&gt;split_enz_playlist = playlists.getByName('Split Enz').Item(0)&lt;br /&gt;playlists.Remove(split_enz_playlist)&lt;br /&gt;&lt;br /&gt;#   Add a song to a playlist&lt;br /&gt;song = media_collection.getByName('Fly Me to the Moon').Item(0)&lt;br /&gt;playlist = playlists.getByName('Frank &amp; Dino').Item(0)&lt;br /&gt;playlist.appendItem(song)&lt;br /&gt;&lt;br /&gt;#   Remove a song from a playlist&lt;br /&gt;playlist.removeItem(song)&lt;br /&gt;&lt;br /&gt;#   Play a playlist&lt;br /&gt;playlist = playlists.getByName('Frank &amp; Dino').Item(0)&lt;br /&gt;player.OpenPlayer(playlist.sourceURL)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Further details can be found &lt;a href="http://rubyonwindows.blogspot.com/2007/07/automating-windows-media-player-with.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Thu, 02 Aug 2007 00:21:08 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4380</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Automating and Managing iTunes with Ruby</title>
      <link>http://snippets.dzone.com/posts/show/4351</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com"&gt;Ruby on Windows&lt;/a&gt; blog.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#   connect to the iTunes application object&lt;br /&gt;require 'win32ole'&lt;br /&gt;itunes = WIN32OLE.new('iTunes.Application')&lt;br /&gt;&lt;br /&gt;#   place iTunes into MiniPlayer mode&lt;br /&gt;itunes.BrowserWindow.MiniPlayer = true&lt;br /&gt;&lt;br /&gt;#   toggle the play/pause setting&lt;br /&gt;itunes.PlayPause&lt;br /&gt;&lt;br /&gt;#    increase or decrease volume&lt;br /&gt;itunes.SoundVolume = itunes.SoundVolume + 50&lt;br /&gt;itunes.SoundVolume = itunes.SoundVolume - 25&lt;br /&gt;&lt;br /&gt;#   go to previous or next track&lt;br /&gt;itunes.PreviousTrack&lt;br /&gt;itunes.NextTrack&lt;br /&gt;&lt;br /&gt;#   grab the entire library playlist&lt;br /&gt;library = itunes.LibraryPlaylist&lt;br /&gt;tracks = library.Tracks&lt;br /&gt;&lt;br /&gt;#   select and play a song by name&lt;br /&gt;song = tracks.ItemByName('At Long Last Love')&lt;br /&gt;song.Play&lt;br /&gt;&lt;br /&gt;#   search for tracks&lt;br /&gt;artist_tracks = library.Search('Sinatra', 2)&lt;br /&gt;album_tracks = library.Search('Come Fly With Me', 3)&lt;br /&gt;title_tracks = library.Search('Fly Me To The Moon', 5)&lt;br /&gt;&lt;br /&gt;#   add all track objects to a ruby array&lt;br /&gt;songs = []&lt;br /&gt;for track in tracks&lt;br /&gt;    songs &lt;&lt; track&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   sort the songs array&lt;br /&gt;songs = songs.sort_by{|song| [song.Artist, song.Year, song.Album, song.TrackNumber]}&lt;br /&gt;&lt;br /&gt;#   iterate over the songs collection&lt;br /&gt;songs.each do |song|&lt;br /&gt;    puts [song.Artist, song.Year, song.Album, song.TrackNumber, song.Name, song.Time].join("\t")&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   create a new playlist and add songs&lt;br /&gt;playlist = itunes.CreatePlaylist("My New Playlist")&lt;br /&gt;song = tracks.ItemByName('At Long Last Love')&lt;br /&gt;playlist.AddTrack(song)&lt;br /&gt;&lt;br /&gt;#   add all playlist objects to a ruby array&lt;br /&gt;playlists = []&lt;br /&gt;itunes.Sources.each do |source|&lt;br /&gt;    source.PlayLists.each do |playlist|&lt;br /&gt;        playlists &lt;&lt; playlist&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   iterate over the collection of playlist objects&lt;br /&gt;for playlist in playlists do&lt;br /&gt;    puts playlist.Name&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   select a playlist by name, and play the first track&lt;br /&gt;playlist = itunes.Sources.ItemByName('Library').Playlists.ItemByName('All Sinatra')&lt;br /&gt;playlist.PlayFirstTrack&lt;br /&gt;&lt;br /&gt;#   exit the iTunes application&lt;br /&gt;itunes.Quit&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Further details can be found &lt;a href="http://rubyonwindows.blogspot.com/2007/07/automating-and-managing-itunes-with.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Tue, 24 Jul 2007 12:01:26 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4351</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Automating Outlook with Ruby: Tasks</title>
      <link>http://snippets.dzone.com/posts/show/4342</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com/"&gt;Ruby on Windows&lt;/a&gt; blog...&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'win32ole'&lt;br /&gt;&lt;br /&gt;outlook = WIN32OLE.new('Outlook.Application')&lt;br /&gt;&lt;br /&gt;#   creating a new task&lt;br /&gt;task = outlook.CreateItem(3)&lt;br /&gt;task.Subject = 'Order Yankees Playoff Tickets'&lt;br /&gt;task.Body = 'Order first-round playoff tickets...'&lt;br /&gt;task.ReminderSet = true&lt;br /&gt;task.ReminderTime = '07/19/2007 9:00 AM'&lt;br /&gt;task.DueDate = '07/20/2007'&lt;br /&gt;task.ReminderPlaySound = true&lt;br /&gt;task.ReminderSoundFile = 'C:\Windows\Media\Ding.wav'&lt;br /&gt;task.Save&lt;br /&gt;&lt;br /&gt;#   getting tasks data&lt;br /&gt;mapi = outlook.GetNameSpace('MAPI')&lt;br /&gt;tasks = mapi.GetDefaultFolder(13)&lt;br /&gt;for task in tasks.Items.Restrict("[Status] = 'Waiting on someone else'")&lt;br /&gt;    puts task.Subject&lt;br /&gt;    puts task.DueDate&lt;br /&gt;    puts task.PercentComplete&lt;br /&gt;    puts task.Status&lt;br /&gt;    puts task.Importance&lt;br /&gt;    puts task.LastModificationTime&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   search for and delete tasks&lt;br /&gt;for task in tasks.Items.Restrict("[Subject] = 'Order Yankees Playoff Tickets'")&lt;br /&gt;    task.Delete&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Further details can be found &lt;a href="http://rubyonwindows.blogspot.com/2007/07/automating-outlook-with-ruby-tasks.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Sat, 21 Jul 2007 22:32:54 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4342</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Automating Outlook with Ruby: Calendar Appointments</title>
      <link>http://snippets.dzone.com/posts/show/4301</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com"&gt;Ruby on Windows&lt;/a&gt; blog.&lt;br /&gt;&lt;br /&gt;Use Ruby to extract appointments data from the Microsoft Outlook Calendar, delete an appointment, and create a new appointment.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'win32ole'&lt;br /&gt;&lt;br /&gt;outlook = WIN32OLE.new('Outlook.Application')&lt;br /&gt;mapi = outlook.GetNameSpace('MAPI')&lt;br /&gt;calendar = mapi.GetDefaultFolder(9)&lt;br /&gt;&lt;br /&gt;#   reading calendar data&lt;br /&gt;data = []&lt;br /&gt;calendar.Items.each do |appointment|&lt;br /&gt;    rec = []&lt;br /&gt;    rec &lt;&lt; appointment.Subject&lt;br /&gt;    rec &lt;&lt; appointment.Location&lt;br /&gt;    rec &lt;&lt; appointment.Start&lt;br /&gt;    rec &lt;&lt; appointment.Duration&lt;br /&gt;    rec &lt;&lt; appointment.End&lt;br /&gt;    rec &lt;&lt; appointment.Body&lt;br /&gt;    data &lt;&lt; rec&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   deleting an appointment&lt;br /&gt;calendar.Items.each do |appointment|&lt;br /&gt;    if appointment.Subject == 'Punch Bud Selig in the Nose'&lt;br /&gt;        appointment.Delete&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#   creating a new appointment&lt;br /&gt;appointment = outlook.CreateItem(1)&lt;br /&gt;appointment.Start = '7/29/2007 11:00 AM'&lt;br /&gt;appointment.Duration = 300&lt;br /&gt;appointment.Subject = 'Baseball Hall of Fame Induction'&lt;br /&gt;appointment.Body = 'Tony Gwynn and Cal Ripken Jr.'&lt;br /&gt;appointment.Location = 'Cooperstown, NY'&lt;br /&gt;appointment.ReminderMinutesBeforeStart = 15&lt;br /&gt;appointment.ReminderSet = true&lt;br /&gt;appointment.Save&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Further details and discussion can be found &lt;a href="http://rubyonwindows.blogspot.com/2007/07/automating-outlook-with-ruby-calendar.html"&gt;here&lt;/a&gt;.&lt;br /&gt;</description>
      <pubDate>Sun, 15 Jul 2007 20:06:49 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4301</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Using Ruby &amp; WMI to Get Win32 Process Information</title>
      <link>http://snippets.dzone.com/posts/show/4280</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com/"&gt;Ruby on Windows&lt;/a&gt; blog...&lt;br /&gt;&lt;br /&gt;Use Windows Management Instrumentation (WMI) to get information about the Win32 processes being run.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'win32ole'&lt;br /&gt;&lt;br /&gt;wmi = WIN32OLE.connect("winmgmts://")&lt;br /&gt;&lt;br /&gt;processes = wmi.ExecQuery("select * from win32_process")&lt;br /&gt;&lt;br /&gt;for process in processes do&lt;br /&gt;    puts "Name: #{process.Name}"&lt;br /&gt;    puts "CommandLine: #{process.CommandLine}"&lt;br /&gt;    puts "CreationDate: #{process.CreationDate}"&lt;br /&gt;    puts "WorkingSetSize: #{process.WorkingSetSize}"&lt;br /&gt;    puts&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Further details and discussion &lt;a href="http://rubyonwindows.blogspot.com/2007/07/using-ruby-wmi-to-get-win32-process.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Mon, 09 Jul 2007 03:03:32 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4280</guid>
      <author>dmullet (David Mullet)</author>
    </item>
  </channel>
</rss>
