gtk2 gem を使用してシステム トレイ アイコンを起動する小さな例を貼り付けます。
#!/usr/bin/env ruby
# encoding: UTF-8
require 'gtk2'
si=Gtk::StatusIcon.new
si.stock=Gtk::Stock::DIALOG_INFO
si.tooltip='StatusIcon'
si.signal_connect('activate'){|icon| icon.blinking=!(icon.blinking?)}
info=Gtk::ImageMenuItem.new(Gtk::Stock::INFO)
info.signal_connect('activate'){p "Embedded: #{si.embedded?}"; p "Visible: #{si.visible?}"; p "Blinking: #{si.blinking?}"}
quit=Gtk::ImageMenuItem.new(Gtk::Stock::QUIT)
quit.signal_connect('activate'){Gtk.main_quit}
menu=Gtk::Menu.new
menu.append(info)
menu.append(Gtk::SeparatorMenuItem.new)
menu.append(quit)
menu.show_all
si.signal_connect('popup-menu'){|tray, button, time| menu.popup(nil, nil, button, time)}
si.signal_connect('scroll-event'){|icon, event|
modifier=event.state#A GdkModifierType indicating the state of modifier keys and mouse buttons
##Handle only control and shift key
ctrl_shift=(Gdk::Window::CONTROL_MASK|Gdk::Window::SHIFT_MASK)
mod=modifier&ctrl_shift
case mod
when 0
print "(None)"
when Gdk::Window::CONTROL_MASK
print "Control+"
when Gdk::Window::SHIFT_MASK
print "Shift+"
when (Gdk::Window::CONTROL_MASK|Gdk::Window::SHIFT_MASK)
print "Control+Shift+"
end
##Check for direction
case event.direction
when Gdk::EventScroll::UP
print "up\n"
when Gdk::EventScroll::DOWN
print "down\n"
end
}
exit if defined?(Ocra)
Gtk.main
Rubyスクリプトとして実行すると、これはすぐに機能します。つまり、ruby my_program.rb
しかし、私はそれを配布したいので、ユーザーがルビーやそのパッケージをインストールしなくても実行できるように、exeファイルを作成するOCRAを選択しました。
実行するocra my_program.rb --windows
と、my_program.exe
.
問題 :起動my_program.exe
すると、プログラムのロードに 25 ~ 30 秒かかります。
システム トレイ アイコンは 1 秒かかり、exe ファイルとしてパッケージ化されている場合は起動に 30 倍以上かかります。
このロード時間を短縮する方法はありますか。事前にどうもありがとうございました。
編集:頭を上げた後、ocra exeの作成をに変更しましたocra my_program.rb --windows --no-lzma
。この解決策により 10 秒節約でき、現在はプログラムの読み込みに約 18 ~ 20 秒かかります。
ロード時間を短縮するために、さらに最適化できますか? 助けてください。