Everything Search Plugin

samintz

Scott Mintz
May 20, 2008
1,312
11
Solon, OH, USA
#1
I wrote a plugin for the Everything Search engine. You need to have Everything Search installed in order for it to work (obviously). It is incredibly fast. I have a minimum of debug time invested in this, so let me know if stuff blows up. I may have an issue with plugin unloading.

You can download Everything from http://www.voidtools.com

I have a single command: ES
ES [switches] searchstring
-r Search the database using a basic POSIX regular expression.
-i Does a case sensitive search.
-w Does a whole word search.
-p Does a full path search.
-h --help Display this help.
-n <num> Limit the amount of results shown to <num>.
-s Sort by full path.

Everything is a free search engine for Windows. Everything can quickly locate files and/or folders by name.
Small installation file.
Clean and simple user interface.
Quick file indexing.
Quick searching.
Quick startup.
Minimal resource usage.
Small database on disk.
real-time updating.

Did I mention it was fast?
-Scott
 

Attachments

#3
On Mon, 07 Jun 2010 16:46:34 -0400, samintz <> wrote:

|I wrote a plugin for the Everything Search engine.

Wildcards? Regular expressions? How do you interface it with TCC?
--
- Vince
 

samintz

Scott Mintz
May 20, 2008
1,312
11
Solon, OH, USA
#4
Both are supported. It uses IPC and a hidden window to talk to the
Everything engine.

-Scott




vefatica <>
06/07/2010 05:17 PM
Please respond to



To
[email protected]
cc

Subject
RE: [Plugins-t-2037] Everything Search Plugin






On Mon, 07 Jun 2010 16:46:34 -0400, samintz <> wrote:

|I wrote a plugin for the Everything Search engine.

Wildcards? Regular expressions? How do you interface it with TCC?
--
- Vince
 

samintz

Scott Mintz
May 20, 2008
1,312
11
Solon, OH, USA
#5
This is the regex syntax:

2.4 How do I use regex?
|
A vertical bar separates alternatives. For example, gray|grey can match "
gray" or "grey".
()
Parentheses are used to define the scope and precedence of the operators
(among other uses). For example, gray|grey and gr(a|e)y are equivalent
patterns which both describe the set of "gray" and "grey".
?
The question mark indicates there is zero or one of the preceding element.
For example, colou?r matches both "color" and "colour".
*
The asterisk indicates there are zero or more of the preceding element.
For example, ab*c matches "ac", "abc", "abbc", "abbbc", and so on.
+
The plus sign indicates that there is one or more of the preceding
element. For example, ab+c matches "abc", "abbc", "abbbc", and so on, but
not "ac".
.
Matches any single character except newlines (exactly which characters are
considered newlines is flavor, character encoding, and platform specific,
but it is safe to assume that the line feed character is included). Within
POSIX bracket expressions, the dot character matches a literal dot. For
example, a.c matches "abc", etc., but [a.c] matches only "a", ".", or "c".
[ ]
A bracket expression. Matches a single character that is contained within
the brackets. For example, [abc] matches "a", "b", or "c". [a-z] specifies
a range which matches any lowercase letter from "a" to "z". These forms
can be mixed: [abcx-z] matches "a", "b", "c", "x", "y", and "z", as does
[a-cx-z]
[^ ]
Matches a single character that is not contained within the brackets. For
example, [^abc] matches any character other than "a", "b", or "c". [^a-z]
matches any single character that is not a lowercase letter from "a" to "z
". As above, literal characters and ranges can be mixed.
^
Matches the starting position within the string. In line-based tools, it
matches the starting position of any line.
$
Matches the ending position of the string or the position just before a
string-ending newline. In line-based tools, it matches the ending position
of any line.
{m,n}
Matches the preceding element at least m and not more than n times. For
example, a{3,5} matches only "aaa", "aaaa", and "aaaaa". This is not found
in a few, older instances of regular expressions.

Check out the FAQ at http://www.voidtools.com/faq.php for additional
helpful hints.

-Scott


vefatica <> wrote on 06/07/2010 05:17:29 PM:


> On Mon, 07 Jun 2010 16:46:34 -0400, samintz <> wrote:
>
> |I wrote a plugin for the Everything Search engine.
>
> Wildcards? Regular expressions? How do you interface it with TCC?
> --
> - Vince
>
>
>
>
 
May 31, 2008
382
2
#6
I found my unload issue. I was failing to destroy the IPC window. Attached is an updated plugin.
Thank you very much! Here it works perfectly with TCCLE, but TCC crashes (no trace file). Everything.dll is the only loaded plugin. Versions:

TCC LE 10.00.74 Windows XP [Version 5.1.2600]
TCC LE Build 74 Windows XP Build 2600 Service Pack 3

TCC 9.02.157 Windows XP [Version 5.1.2600]
TCC Build 157 Windows XP Build 2600 Service Pack 3

I use multiple running instances of Everything.exe - each instance has a different database (a different set of disks). Can ES search through all instances at once? Or can a given instance be selected?
 

samintz

Scott Mintz
May 20, 2008
1,312
11
Solon, OH, USA
#7
I use the example code published on the Void Tools web site. It uses
Windows messaging to send a query and get a reply back. The query is sent
to a hidden window.

This is the way the query is sent:

Code:
everything_hwnd = FindWindow(EVERYTHING_IPC_WNDCLASS,0);
if (everything_hwnd)
{
        ...
        if 
(SendMessage(everything_hwnd,WM_COPYDATA,(WPARAM)hwnd,(LPARAM)&cds) == 
TRUE)
        ...
The FindWindow() call sets the window name argument to NULL so all window
names in that window class will match. The EVERYTHING_IPC_WNDCLASS is
named "EVERYTHING_TASKBAR_NOTIFICATION". And on my system with only 1
instance running, the window name is blank.

Theoretically, you could specify the window name in the FindWindow() call
to direct the query to a specific window.

What is the advantage of running separate instances? It seems blazingly
fast as it is. Your search criteria could include drive letters.

-Scott

Stefano Piccardi <> wrote on 06/30/2010 12:57:20 PM:


> ---Quote (Originally by samintz)---
> I found my unload issue. I was failing to destroy the IPC window.
> Attached is an updated plugin.
> ---End Quote---
> Thank you very much! Here it works perfectly with TCCLE, but TCC
> crashes (no trace file). Everything.dll is the only loaded plugin.
Versions:

>
> TCC LE 10.00.74 Windows XP [Version 5.1.2600]
> TCC LE Build 74 Windows XP Build 2600 Service Pack 3
>
> TCC 9.02.157 Windows XP [Version 5.1.2600]
> TCC Build 157 Windows XP Build 2600 Service Pack 3
>
> I use multiple running instances of Everything.exe - each instance
> has a different database (a different set of disks). Can ES search
> through all instances at once? Or can a given instance be selected?
>
>
>
>
 
#8
TCC 11.00.50 Windows 7 [Version 6.1.7600]
TCC Build 50 Windows 7 Build 7600

Even when I have Everything up and visible, your ES plugin and also the
es.exe supplied by Everything both say: "Everything IPC service not
running." Is there some goofy configuration, possibly relating to Windows 7,
that I've missed in Everything?



On Wed, Jun 30, 2010 at 9:57 AM, Stefano Piccardi <>wrote:


> ---Quote (Originally by samintz)---
> I found my unload issue. I was failing to destroy the IPC window.
> Attached is an updated plugin.
> ---End Quote---
> Thank you very much! Here it works perfectly with TCCLE, but TCC crashes
> (no trace file). Everything.dll is the only loaded plugin. Versions:
>
> TCC LE 10.00.74 Windows XP [Version 5.1.2600]
> TCC LE Build 74 Windows XP Build 2600 Service Pack 3
>
> TCC 9.02.157 Windows XP [Version 5.1.2600]
> TCC Build 157 Windows XP Build 2600 Service Pack 3
>
> I use multiple running instances of Everything.exe - each instance has a
> different database (a different set of disks). Can ES search through all
> instances at once? Or can a given instance be selected?
>
>
>
>
>


--
Jim Cook
2010 Sundays: 4/4, 6/6, 8/8, 10/10, 12/12 and 5/9, 9/5, 7/11, 11/7.
Next year they're Monday.
 

samintz

Scott Mintz
May 20, 2008
1,312
11
Solon, OH, USA
#9
I don't know. My Win7 machine is at home. I'll have to experiment a
little later.

Do you have access to Spy++ or some other utility that enumerates windows?
Spy++ lets you list all the processes and then display which windows that
process is using. So you can see the window class names as well as the
window names.

-Scott

Jim Cook <> wrote on 06/30/2010 02:05:21 PM:


> TCC 11.00.50 Windows 7 [Version 6.1.7600]
> TCC Build 50 Windows 7 Build 7600
>
> Even when I have Everything up and visible, your ES plugin and also the
> es.exe supplied by Everything both say: "Everything IPC service not
> running." Is there some goofy configuration, possibly relating to
Windows 7,

> that I've missed in Everything?
>
>
>
> On Wed, Jun 30, 2010 at 9:57 AM, Stefano Piccardi <>wrote:
>
>
>
> ---Quote---
> > ---Quote (Originally by samintz)---
> > I found my unload issue. I was failing to destroy the IPC window.
> > Attached is an updated plugin.
> > ---End Quote---
> > Thank you very much! Here it works perfectly with TCCLE, but TCC
crashes

> > (no trace file). Everything.dll is the only loaded plugin. Versions:
> >
> > TCC LE 10.00.74 Windows XP [Version 5.1.2600]
> > TCC LE Build 74 Windows XP Build 2600 Service Pack 3
> >
> > TCC 9.02.157 Windows XP [Version 5.1.2600]
> > TCC Build 157 Windows XP Build 2600 Service Pack 3
> >
> > I use multiple running instances of Everything.exe - each instance has
a

> > different database (a different set of disks). Can ES search through
all

> > instances at once? Or can a given instance be selected?
> >
> >
> >
> >
> >
> ---End Quote---
>
>
> --
> Jim Cook
> 2010 Sundays: 4/4, 6/6, 8/8, 10/10, 12/12 and 5/9, 9/5, 7/11, 11/7.
> Next year they're Monday.
>
>
>
>
 
May 31, 2008
382
2
#10
Theoretically, you could specify the window name in the FindWindow() call
to direct the query to a specific window.

What is the advantage of running separate instances? It seems blazingly
fast as it is. Your search criteria could include drive letters.
I use 7 removable, large USB disks on different systems. Each disk has its own copy of Everything, and its INI file excludes all other drive letters. When the disk gets connected, Everything autoruns. If I had one single database for all the disks it would take a long time to update it, and I wouldn't know on which disks to place the database.

Since Everything doesn't seem to allow changing its window title, I guess it isn't possible to use FindWindow() to direct the query to a specific instance.