Welcome, guest | Sign In | My Account | Store | Cart
require 'mscorlib'
require 'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
require 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

Application        = System::Windows::Forms::Application
Button             = System::Windows::Forms::Button
ColumnHeader       = System::Windows::Forms::ColumnHeader
DockStyle          = System::Windows::Forms::DockStyle
Font               = System::Drawing::Font
FontStyle          = System::Drawing::FontStyle
Form               = System::Windows::Forms::Form
FormBorderStyle    = System::Windows::Forms::FormBorderStyle
FormStartPosition  = System::Windows::Forms::FormStartPosition
Icon               = System::Drawing::Icon
Label              = System::Windows::Forms::Label
ListView           = System::Windows::Forms::ListView
MainMenu           = System::Windows::Forms::MainMenu
MenuItem           = System::Windows::Forms::MenuItem
MessageBox         = System::Windows::Forms::MessageBox
MessageBoxBittons  = System::Windows::Forms::MessageBoxButtons
MessageBoxIcon     = System::Windows::Forms::MessageBoxIcon
PictureBox         = System::Windows::Forms::PictureBox
PictureBoxSizeMode = System::Windows::Forms::PictureBoxSizeMode
Point              = System::Drawing::Point
Registry           = Microsoft::Win32::Registry
Shortcut           = System::Windows::Forms::Shortcut
Size               = System::Drawing::Size
SortOrder          = System::Windows::Forms::SortOrder
StatusBar          = System::Windows::Forms::StatusBar
View               = System::Windows::Forms::View

class Frm < Form
 
def initialize
   
#this path keeps codecs CLSIDs and names
   
@reg = 'CLSID\{083863F1-70DE-11d0-BD40-00A0C911CE86}\Instance'
   
self.InitializeComponent()
 
end

 
def InitializeComponent()
   
@mnuMain = MainMenu.new()
   
@mnuFile = MenuItem.new()
   
@mnuScan = MenuItem.new()
   
@mnuExit = MenuItem.new()
   
@mnuView = MenuItem.new()
   
@mnuSBar = MenuItem.new()
   
@mnuHelp = MenuItem.new()
   
@mnuInfo = MenuItem.new()
   
@lvCodec = ListView.new()
   
@chNames = ColumnHeader.new()
   
@chClsid = ColumnHeader.new()
   
@chItems = ColumnHeader.new()
   
@sbCount = StatusBar.new()
   
#
   
#mnuMain
   
#
   
[@mnuFile, @mnuView, @mnuHelp].each {|item| @mnuMain.MenuItems.Add item}
   
#
   
#mnuFile
   
#
   
[@mnuScan, @mnuExit].each {|item| @mnuFile.MenuItems.Add item}
   
@mnuFile.Text = '&File'
   
#
   
#mnuScan
   
#
   
@mnuScan.Shortcut = Shortcut.F5
   
@mnuScan.Text = '&Scan...'
   
@mnuScan.Click {|sender, e| mnuScan_Click(sender, e)}
   
#
   
#mnuExit
   
#
   
@mnuExit.Shortcut = Shortcut.CtrlX
   
@mnuExit.Text = 'E&xit'
   
@mnuExit.Click {|sender, e| mnuExit_Click(sender, e)}
   
#
   
#mnuView
   
#
   
@mnuView.MenuItems.Add @mnuSBar
   
@mnuView.Text = '&View'
   
#
   
#mnuSBar
   
#
   
@mnuSBar.Checked = true
   
@mnuSBar.Text = '&Show Status Bar'
   
@mnuSBar.Click {|sender, e| mnuSBar_Click(sender, e)}
   
#
   
#mnuHelp
   
#
   
@mnuHelp.MenuItems.Add @mnuInfo
   
@mnuHelp.Text = '&Help'
   
#
   
#mnuInfo
   
#
   
@mnuInfo.Text = 'About'
   
@mnuInfo.Click {|sender, e| mnuInfo_Click(sender, e)}
   
#
   
#lvCodec
   
#
   
@lvCodec.AllowColumnReorder = true
   
[@chNames, @chClsid, @chItems].each {|item| @lvCodec.Columns.Add item}
   
@lvCodec.Dock = DockStyle.Fill
   
@lvCodec.FullRowSelect = true
   
@lvCodec.GridLines = true
   
@lvCodec.MultiSelect = false
   
@lvCodec.Sorting = SortOrder.Ascending
   
@lvCodec.View = View.Details
   
#
   
#chNames
   
#
   
@chNames.Text = 'Name'
   
@chNames.Width = 183
   
#
   
#chClsid
   
#
   
@chClsid.Text = 'CLSID'
   
@chClsid.Width = 239
   
#
   
#chItems
   
#
   
@chItems.Text = 'Module'
   
@chItems.Width = 250
   
#
   
#sbCount
   
#
   
@sbCount.SizingGrip = false
   
#
   
#Frm
   
#
   
self.ClientSize = Size.new(573, 217)
   
[@lvCodec, @sbCount].each {|item| self.Controls.Add item}
   
self.Menu = @mnuMain
   
self.StartPosition = FormStartPosition.CenterScreen
   
self.Text = 'Codecs'
   
self.Load {|sender, e| frmMain_Load(sender, e)}
 
end

 
def mnuScan_Click(sender, e)
   
#clear before each scanning
   
@lvCodec.Items.Clear()
   
#loading info
    rk
= Registry.ClassesRoot
    rk
.OpenSubKey(@reg).GetSubKeyNames().each do |sub|
     
#name(s) of codec(s)
      item
= @lvCodec.Items.Add(rk.OpenSubKey(@reg + '\\' + sub).GetValue('FriendlyName'))
     
#CLSID
      item
.SubItems.Add(sub)
     
#looking for module(s) of codec(s)
      item
.SubItems.Add(rk.OpenSubKey('CLSID\\' + sub + '\\InprocServer32').GetValue(''))
   
end
   
#totaly
   
@sbCount.Text = @lvCodec.Items.Count.ToString() + ' item(s)'
 
end

 
def mnuExit_Click(sender, e)
   
Application.exit
 
end

 
def mnuSBar_Click(sender, e)
    bln
=! @mnuSBar.Checked
   
@mnuSBar.Checked = bln
   
@sbCount.Visible = bln
 
end

 
def mnuInfo_Click(sender, e)
   
FrmA.new().ShowDialog()
 
end

 
def frmMain_Load(sender, e)
   
@sbCount.Text = '0 item(s)'
 
end
end

class FrmA < Form
 
def initialize
   
self.InitializeComponent()
 
end

 
def InitializeComponent()
   
@pbImage = PictureBox.new()
   
@lblName = Label.new()
   
@lblCopy = Label.new()
   
@btnExit = Button.new()
   
#
   
#pbImage
   
#
   
@pbImage.Location = Point.new(16, 16)
   
@pbImage.Size = Size.new(32, 32)
   
@pbImage.SizeMode = PictureBoxSizeMode.StretchImage
   
#
   
#lblName
   
#
   
@lblName.Font = Font.new('Microsoft Sans Serif', 9, FontStyle.Bold)
   
@lblName.Location = Point.new(53, 19)
   
@lblName.Size = Size.new(360, 18)
   
@lblName.Text = 'Codecs v1.00'
   
#
   
#lblCopy
   
#
   
@lblCopy.Location = Point.new(55, 37)
   
@lblCopy.Size = Size.new(360, 23)
   
@lblCopy.Text = '(C) 2012 Grigori Zakharov gregzakh@gmail.com'
   
#
   
#btnExit
   
#
   
@btnExit.Location = Point.new(135, 67)
   
@btnExit.Text = 'OK'
   
#
   
#FrmA
   
#
   
self.AcceptButton = @btnExit
   
self.CancelButton = @btnExit
   
self.ClientSize = Size.new(350, 110)
   
[@pbImage, @lblName, @lblCopy, @btnExit].each {|item| self.Controls.Add item}
   
self.ControlBox = false
   
self.FormBorderStyle = FormBorderStyle.FixedSingle
   
self.ShowInTaskbar = false
   
self.StartPosition = FormStartPosition.CenterParent
   
self.Text = 'About...'
   
self.Load {|sender, e| frmAbout_Load(sender, e)}
 
end

 
def frmAbout_Load(sender, e)
   
begin
      icon
= Icon
     
@pbImage.Image = self.icon.ToBitmap()
   
rescue Exception => e
     
MessageBox.Show(e.Message, self.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop)
   
end
 
end
end

Application.enable_visual_styles
Application.run Frm.new()

History