elleryq
2/4/2015 - 8:59 AM

試著存取剪貼簿的小程式,會在通知欄裡顯示小圖示以利存取。

試著存取剪貼簿的小程式,會在通知欄裡顯示小圖示以利存取。

// Build:
// "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe" /target:exe /r:"C:\Program Files\GtkSharp\2.12\lib\gtk-sharp-2.0\gtk-sharp.dll" /r:"C:\Program Files\GtkSharp\2.12\lib\gtk-sharp-2.0\atk-sharp.dll" /r:"C:\Program Files\GtkSharp\2.12\lib\gtk-sharp-2.0\glib-sharp.dll" /r:"C:\Program Files\GtkSharp\2.12\lib\gtk-sharp-2.0\gdk-sharp.dll" GtkSharpClipboardIndicator.cs
using System;
using Gtk;

public class MainWindow: Gtk.Window {
	private Gtk.Clipboard m_clipboard;
	private Gtk.StatusIcon m_icon;

	public MainWindow (): base (Gtk.WindowType.Toplevel)
	{
		// Clipboard
		//m_clipboard = Gtk.Clipboard.Get( Gdk.Selection.Clipboard );
		m_clipboard = Gtk.Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));
		m_clipboard.OwnerChange += new OwnerChangeHandler( delegate( object o, OwnerChangeArgs args ) {
			m_clipboard.RequestText( delegate(Gtk.Clipboard clipboard, string text) {
				Console.WriteLine( "text={0}", text );
			} );
		} );

		// Status Icon
		m_icon = new Gtk.StatusIcon();
		m_icon.File = "./mono-logo.png";
		m_icon.PopupMenu += new PopupMenuHandler( delegate( object o, PopupMenuArgs args ) {
			Console.WriteLine( "click" );
			m_clipboard.RequestText( delegate(Gtk.Clipboard clipboard, string text) {
				Console.WriteLine( "text={0}", text );
			} );
		} );

		this.DeleteEvent += new DeleteEventHandler( delegate( object o, DeleteEventArgs e ) {
				Application.Quit();
			}
		);
	}

	public static void Main( string[] args ) {
		Application.Init ();
		Gtk.Window window = new MainWindow();
		window.Show();
		Application.Run ();
	}
}