DonationCoder.com forum
 
Read-only archive. This is a static copy of the DonationCoder.com forum. Reading and searching work as before; logging in, posting and private messages do not.
Archive of 2026-10-21 · About this archive · Main site

Author Topic: FARR Plugin SDK 1.0 Released - Make a FARR plugin DLL - if you dare  (Read 15,964 times)

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,931
    • Gathering Badge
    • Plugin Coding Medal
    • Participated in NANY Challenge Seventeen Times
    • Cody Award
    • Coding Snacks
    • Volunteers/Staff
Ok the new downloads of FARR v2 now have the plugin SDK included (installed in FARR directory).  So programmers please do grab the FARR v2 alpha release and get to work!! (email me mouser@donationcoder.com for private link to FARR alpha download if you don't have it yet).

It's sorely lacking in documentation, but it does include full source code for the FarrFox plugin, plus sample projects for dev-c++ and visual studio.  However you should be prepared for some frustration as you try to figure out how to get it to all work right.. I'm here to help though.

If you do not intend to write your plugin in C++ your job is going to be 1000x more painful, since i've provided helper code for C++ but not for anything else.  I'm happy to add more features, so plugin coders feel free to request more abilities.

ps.
I will be giving out some DC Mugs to the first few real FARR plugins, and i'll be announcing a contest for best FARR plugins with some better prizes soon :)
« Last Edit: April 21, 2007, 04:33 AM by mouser »

TucknDar

  • Advanced coder of Nowt
  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 1,133
Oh, no... now I need to come up with an idea for a FARR plugin AND learn to code :'(

jk, I can't wait to see some cool plugins born :)

Ruffnekk

  • Uhm yeah...
  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 332
    • Programming School - Stage 1 Medal
    • Programming School - Deluxe Bonus Medal
    • Participated in NANY Challenge Once
    • Linux User
Excellent!!  ;D I was waiting for this every day  :Thmbsup:
Regards,
RuffNekk

Programming is an art form that fights back.

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,931
    • Gathering Badge
    • Plugin Coding Medal
    • Participated in NANY Challenge Seventeen Times
    • Cody Award
    • Coding Snacks
    • Volunteers/Staff
Here's the ReadMe from the download:

//---------------------------------------------------------------------------
Find and Run Robot (FARR) v2 Plugin SDK Documentation
http://www.donationcoder.com/Software/Mouser/findrun/index.html
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
Documentation v1.0 - Apr 5, 2007 - mouser@donationcoder.com
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
This document explains some basic information on how to program plugins for
the Find and Run Robot 2 tool for MS Windows.
//---------------------------------------------------------------------------



//---------------------------------------------------------------------------
WARNING

Please keep in mind that the plugin support for FARR is brand new as of
April 2007, and is still just in preliminary stages.  While it is working,
you should expect changes, bugfixes, and lackluster documentation until
things develop further.
Should you choose to continue developing a plugin for FARR at this early
stage, expect frustration and heartache, but lots of support from the author.
If there are features i can add to help you, just let me know.
-mouser (mouser@donationcoder.com)
//---------------------------------------------------------------------------



//---------------------------------------------------------------------------
OVERVIEW - What can you do with FARR plugins?

The basic things you can do with a FARR plugin are:

1. Present standard file/url results to the user based on what they type.

For example, the farrfox plugin that is included in the SDK shows how
to make a plugin that loads all firefox, opera, and IE bookmarks and
let's the user search them.  In this case, FARR's built in keyword filtering
is used to filter and sort and score the results, the plugin's job is
simply to return all possible matches.  If you prefer you can do the filtering
and scoring yourself.  You can provide custom descriptions and icons for
results.


2. Take over the launching of results.

Normally, FARR knows how to launch file results and URLs, but if you wish,
your plugin can takeover launching of all or some results.  Using this
functionality you can present arbitrary result lists which have whatever
meaning you want (not files or urls), and then decide how to react when
user selects from your list.  (Note FARR already has builtin funcionts to
copy stuff to clipboard or to the last window open before FARR was
triggered).


3. Replace the output window with richedit text.

This is sort of unusual, but you can choose to tell FARR to replace the
normal results with a long richtext (or plaintext) string.  This might be
useful if you wanted to show the user some help text or other text.  Right
now this text is readonly and nothing the user types gets sent back to the
plugin, but we could change this if coders want to do something more fancy.
Adding support to display HTML and react to it.


4. Adjusting item scores

This is less useful than you might think because it can slow down searching
significantly, but this allows you to simply modify the scores returned
by normal FARR or other plugins, or reject them, etc.


5. Show or Hide the FARR window.

This is useful if you want to take over triggering of FARR.
//---------------------------------------------------------------------------



//---------------------------------------------------------------------------
FUTURE POSSIBILITIES

1. Display any windows controls in the output

I think a good solution to having real flexibility is to allow the coder
to display any windows control in the output window (via activex or simply
by setting parent hwnd).  In this way you could really display any info.


2. Custom grid output

Short of taking over the output completely, plugins will soon be able to
ask FARR to display a table/grid of info with custom column header info.


3. Add custom info to files

You will soon be able to add info to results.  This would be useful for
doing things like adding mp3 tag info to the display of mp3 files.
//---------------------------------------------------------------------------



//---------------------------------------------------------------------------
WHAT DO I NEED TO MAKE A PLUGIN?

1. A FARR plugin is a DLL, and you should be able to make a plugin in any
language that can create windows DLLs.

2. All of the official samples are made in C++ (youll find samples for
dev-c++, ms visual c++, and borland c++ builder which is what the advanced
farrfox plugin is made in).  But you should be able to use any language
that can create DLLs.

3. Making your plugin in C++ will be much easier curently just because
i've already written a lot of helper code your c++ plugins.  If you are
writing a plugin in a language other than c++ then you are going to have
to study the C++ helper code in the Source directory to get a better idea
of what you have to do.
//---------------------------------------------------------------------------



//---------------------------------------------------------------------------
OK TEACH ME HOW TO MAKE A PLUGIN!

1. I have now yet written good documentation on how to code plugins. Sorry!!
I will try to add real walkthrough and documentation later.

2. But I have tried to thoroughly document the c++ helper files and the
simple sample plugins.  Please use those samples as your guide to
make a new plugin.  The C++ Builder FARRFOX plugin is a full plugin which
will show you lots of tricks.

3. Feel free to email me at mouser@donationcoder.com or find me on
irc (#donationcoder on efnet) for more help.

4. If anyone feels like making a walkthrough for plugin construction I
would be delighted to host it, and ditto for other language plugin code.
//---------------------------------------------------------------------------



//---------------------------------------------------------------------------
HOW DO I DEPLOY/TEST MY PLUGIN?

1. Just make a subdirectory for your plugin, and place the dll and any custom
icon for it in that subdirectory (see the myplugin.cpp file for how to
specify the info for your plugin and its icon file).

2. Then just copy that subdirectory into your FARR Plugins/ subdirectory and
restart FARR (or go to plugin options to rescan for new plugins).
//---------------------------------------------------------------------------

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,931
    • Gathering Badge
    • Plugin Coding Medal
    • Participated in NANY Challenge Seventeen Times
    • Cody Award
    • Coding Snacks
    • Volunteers/Staff
Hamradio has made some badges, that will be added under your name and in your profil if you write a plugin for any DC software (including FARR):

dcp_badge_plugin_writer.png dcp_badge_plugin_writer_tiny.png

DC Mugs+Badges.. gotta catch 'em all!

taichimaster

  • Charter Member
  • Joined in 2006
  • ***
  • Posts: 160
    • Plugin Coding Medal
Proud to be the First FARR Plugin Developer!!!!  This plugin is very simple and does not do much actually.  It searches your network connections and invoke its default verb upon triggering.  It took me about 2-3 hours to write it.  With this "proof of concept" plugin under my belt, hopefully I can move up to something more challenging.  I have to deal with VPN and PPPoA connections a lot at work, so this might actually useful for my personal use  :up:

Technical Note:
Initially I had problems with the "Status" verb which I traced it down to a windows shell bug where the "Status" verb cannot be invoked by any process other than "explorer.exe" (see HERE) >:(.  So for those PIDLs which have default verbs as "Status", I switched them to invoke "Properties" instead.  Normal RAS entries (VPN and dialup) and "New connection wizards" work fine though. 

Extract and put under the FARR plugin directory.

Type "nwconn $$$1" to search.

nwconn.png

Mouser, you did a great job on the Plugin SDK, thanks.  Can't wait to see the custom context menu and grid output support (with custom columns and stuff).  Docs could really use some improvement too.  Oh btw, you can now give me those beautiful badges and mug :)
« Last Edit: April 08, 2007, 11:10 AM by taichimaster »

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,931
    • Gathering Badge
    • Plugin Coding Medal
    • Participated in NANY Challenge Seventeen Times
    • Cody Award
    • Coding Snacks
    • Volunteers/Staff
Wonderfull !!!  :up: :up: :up: :up: :up: :up: :up: :up: :up: :up:

ps. you can customize the value to be filled in for "Location" (and i should make the "Type" column customizable too).
« Last Edit: April 08, 2007, 12:29 PM by mouser »

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,931
    • Gathering Badge
    • Plugin Coding Medal
    • Participated in NANY Challenge Seventeen Times
    • Cody Award
    • Coding Snacks
    • Volunteers/Staff
Btw, nwconn works great  :-* :-* :-* :-* :-*

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 40,931
    • Gathering Badge
    • Plugin Coding Medal
    • Participated in NANY Challenge Seventeen Times
    • Cody Award
    • Coding Snacks
    • Volunteers/Staff
The FARR plugin writing contest will begin soon.
Prizes will include Borland C++ Builder Turbo edition, VmWare, and a custom cody mug:

Mug (designed by nudone):
pdmug1.png
126877312v4_150x150_Back.jpg

Lashiec

  • Member
  • Joined in 2006
  • **
  • Posts: 2,374
What the mug! I'll send you a mail ASAP!
« Last Edit: April 23, 2007, 12:04 PM by Lashiec »

Original address: https://www.donationcoder.com/forum/index.php?topic=7998.0