Populating the clipboard
Populating the clipboard
In a previous case I learned that I can use clipboard: to search for whatever is on the clipboard.
Is it possible to set the clipboard?
I know I can assign f.x. File Copy to a key, but I would like to be able to set the clipboard to the value of any column or columns.
Also I would like to populate the clipboard at any change of selected row in Everything.
My use case would be:
First window of Everything with some search that populates custom column column-0: with some value
Second window of Everything that uses clipboard: to do a new search.
When I now select or use arrow keys in the first window, the second window will automatically update.
This is f.x. a more flexible solution to the siblings problem.
Is it possible to set the clipboard?
I know I can assign f.x. File Copy to a key, but I would like to be able to set the clipboard to the value of any column or columns.
Also I would like to populate the clipboard at any change of selected row in Everything.
My use case would be:
First window of Everything with some search that populates custom column column-0: with some value
Second window of Everything that uses clipboard: to do a new search.
When I now select or use arrow keys in the first window, the second window will automatically update.
This is f.x. a more flexible solution to the siblings problem.
Re: Populating the clipboard
I don't have an easy way to do this with Everything.
You would have to set one window to clipboard: then from the other window right click the cell and click Copy <property-name>
I'll look into adding commands to make this easier.
You would have to set one window to clipboard: then from the other window right click the cell and click Copy <property-name>
I'll look into adding commands to make this easier.
Re: Populating the clipboard
Maybe some form of direct communication to not disturb the clipboard...
https://learn.microsoft.com/en-us/windo ... unications
https://learn.microsoft.com/en-us/windo ... unications
Re: Populating the clipboard
The result list in Everything is an emulated SysListView32.
There's third party tools to pull data from a SysListView32 and perform actions.
Autohotkey comes to mind.
There's third party tools to pull data from a SysListView32 and perform actions.
Autohotkey comes to mind.
Re: Populating the clipboard
I am using AutoHotkey a lot! It is the second most useful app I have. (After Everything of cause)
But I have not used it to pull data from SysListView32 before. I will test....
But I have not used it to pull data from SysListView32 before. I will test....
Re: Populating the clipboard
Here is an example how to pull data from the SysListView32.
We use it to generate a text file which can be loaded into Total Commander and other 3rd party file managers.
We use it to generate a text file which can be loaded into Total Commander and other 3rd party file managers.
Code: Select all
; Transfer Everything GUI results to TC
; Authors: Horst.Epp & Ovg (based on a script from user Highend in XYplorer forum)
; Last modified: 04.10.2022 (Changed regex by Ovg)
; https://www.ghisler.ch/board/viewtopic.php?t=75439 ...... Open Everything GUI results with TC LOADLIST
; https://www.ghisler.ch/board/viewtopic.php?t=75417 ...... LOADLIST command and UTF8 file lists
; https://www.voidtools.com/forum/viewtopic.php?f=4&t=10594 Send ResultsList to Total Commander
; Build AutoHotkey_L
; Build x64
; Build Kill=true
; Build Zip=false
; Build Run=true
#NoEnv
;#Persistent
#SingleInstance Force
SetBatchLines, -1
; Create / read .ini file settings
SetTitleMatchMode, RegEx
iniFile := RegExReplace(A_ScriptFullPath, "(ahk|exe)$", "ini")
if not (FileExist(iniFile)) {
iniContent :="
(( LTrim
[General]
; DestinationFile
; Where to save the output (full path to DestinationFile.txt)
; EverythingColumnPositions (Default: 2,1)
; The columns 'Name' and 'Path' must be visible in the Everything GUI Window
; The first value is the position of the 'Path' column
; The second value is the position of the 'Name' column
; CloseEverything (Default 1 for yes)
; Should Everything GUI window be closed after transfering to TC
; UseInstance (Empty for default instance)
; Name of the Everything instance to be used for closing the GUI
; The contents of the following lines must be adjusted if necessary, e.g. path and parameter adjustments.
;********************************************************************************************************
DestinationFile = C:\Tools\Wincmd\Scripts\Results\Everything.txt
EverythingColumnPositions=2,1
AddEndSlash = 1
CloseEverything = 1
UseInstance =
Everything = C:\Tools\Everything\Everything64.exe
TotalCmd = C:\Tools\Wincmd\totalcmd64.exe
;********************************************************************************************************
)"
FileAppend, % iniContent, % iniFile, UTF-16
}
IniRead, DestinationFile, % iniFile, General, DestinationFile, %A_Space%
IniRead, EverythingColumnPositions, % iniFile, General, EverythingColumnPositions, 2`,1
IniRead, AddEndSlash, % iniFile, General, AddEndSlash, 1
IniWrite, %AddEndSlash%, % iniFile, General, AddEndSlash
IniRead, CloseEverything, % iniFile, General, CloseEverything, 1
IniWrite, %CloseEverything%, % iniFile, General, CloseEverything
IniRead, UseInstance, % iniFile, General, UseInstance, %A_Space%
IniWrite, %UseInstance%, % iniFile, General, UseInstance
IniRead, Everything, % iniFile, General, Everything, "C:\Tools\Everything\Everything64.exe"
IniRead, TotalCmd, % iniFile, General, TotalCmd, "C:\Tools\Wincmd\totalcmd64.exe"
DestinationFile := ResolveEnvVars(DestinationFile)
EverythingColumnPositions := StrReplace(EverythingColumnPositions, " ")
; Force error if none is given (or path doesn't exist)
SplitPath, DestinationFile, , dstPath
if (DestinationFile = "" || !InStr(FileExist(dstPath), "D")) {
Msgbox, 16, Fatal error, Destination file definition is missing or illegal named !
Return
}
if (EverythingColumnPositions = "" || !InStr(EverythingColumnPositions, ",")) {
EverythingColumnPositions := "2,1"
}
columnArray := StrSplit(EverythingColumnPositions, ",")
hWnd := WinExist("ahk_exe Everything(?:\d\d)*\.exe")
if hWnd
{
ControlGet, winContent, List, , SysListView321, % "ahk_id" hWnd
if (winContent)
{
fullContent := ""
; Loop over row(s)
Loop, Parse, winContent, `n
{
rowID := A_Index
path := ""
name := ""
full := ""
Bad := 2
; Loop over column(s)
Loop, Parse, A_LoopField, % A_Tab
{
colID := A_Index
content := A_LoopField
If (colID > columnArray[1] And colID > columnArray[2])
{
Break
}
Else
{
If (colID = columnArray[1])
{
; If !RegExMatch(content,"i)^[a-z]:|\\\.*?\\")
If !RegExMatch(content,"i)^(?:[a-z]:|\\\.*?\\)")
{
Break
}
path := content
Bad -= 1
If !RegExMatch(path,"\\$")
{
path := path . "\"
}
}
Else if (colID = columnArray[2])
{
If content is Space
{
Break
}
name := content
Bad -= 1
}
}
}
If (Bad == 0)
{
full := path . name
If InStr(FileExist(full), "D")
{
if (AddEndSlash == 1)
{
if !RegExMatch(full,"\\$")
{
full := full . "\"
}
}
Else
{
If RegExMatch(full,"\\$")
{
full := SubStr(full,1,StrLen(full)-1)
}
}
}
fullContent .= full "`n"
}
}
fullContent := RegExReplace(fullContent,"\R$","")
If (FileExist(DestinationFile))
FileDelete, % DestinationFile
FileAppend, % fullContent, % DestinationFile, UTF-16
DestinationDir := SubStr(DestinationFile,1,InStr(DestinationFile, "\",,-1))
Run %TotalCmd% /O /T /S LOADLIST:%DestinationFile%
If (CloseEverything) {
run %Everything% -instance "%UseInstance%" -close
}
}
Else
; Empty search result
{
Msgbox, 16,, Search result is Empty, Nothing to do ...
}
; No Everything window visible
} Else {
Msgbox, 16, Fatal error, Everything window does not exist!
}
SetTitleMatchMode, 1
return
; ==================================
; = GOTO: FUNCTIONS - ResolveEnvVars
; ==================================
; http://www.autohotkey.com/board/topic/40115-func-envvars-replace-environment-variables-in-text/#entry310601
ResolveEnvVars(str) {
if sz := DllCall("ExpandEnvironmentStrings", "uint", &str, "uint", 0, "uint", 0)
{
VarSetCapacity(dst, A_IsUnicode ? sz * 2 : sz)
if DllCall("ExpandEnvironmentStrings", "uint", &str, "str", dst, "uint", sz)
return dst
}
return str
}
Re: Populating the clipboard
From AutoHotkey I can call DLLs and use Windows SendMessage.
Is there a way to use this functionality to set the search criteria of a Everything window?
Today I have to move the cursor to the search bar and paste (type) my criteria.
Is there a way to use this functionality to set the search criteria of a Everything window?
Today I have to move the cursor to the search bar and paste (type) my criteria.
Re: Populating the clipboard
All UI commands are listed in the Everything SDK.
With these commands you can setup the window state, like match case, match regex etc...
After setting up the search state, just set the search box window text to your search.
All controls in Everything have a well defined ID.
The Everything Window has a class called "EVERYTHING"
The search box has a UI ID of: 10007
/copy is another option you might find useful for pulling data out of Everything 1.5.
Setup a bookmark to call:
/copy $fullpath:,$size:,$dm:
Customize the properties and formatting as needed.
Add a shortcut key and have your script send this key to Everything.
Copying as TSV is another option:
With these commands you can setup the window state, like match case, match regex etc...
After setting up the search state, just set the search box window text to your search.
All controls in Everything have a well defined ID.
The Everything Window has a class called "EVERYTHING"
The search box has a UI ID of: 10007
/copy is another option you might find useful for pulling data out of Everything 1.5.
Setup a bookmark to call:
/copy $fullpath:,$size:,$dm:
Customize the properties and formatting as needed.
Add a shortcut key and have your script send this key to Everything.
Copying as TSV is another option:
- In Everything 1.5, from the Tools menu, click Options.
- Click the Keyboard tab on the left.
- To the right of Show commands containing, search for:
tsv - Select Result List | Copy as TSV.
(there's also Copy as CSV) - Click Add....
- Press a new keyboard shortcut and click OK.
- Click OK.
Re: Populating the clipboard
Hmmm....
I am trying the following AHK script:
The message box shows: Hwnd: 2102228 Mod: 6442450944 Build: 0.0 Result: 0
Since I am not even getting a build number I am clearly missing something obvious...
Tips please?
I am running latest version Everything 1.5.0.1354a(x64)
(I am just trying to get "morten" to be the search text in my GUI)
I am trying the following AHK script:
Code: Select all
#Requires AutoHotkey v2.0+
#SingleInstance force
SetTitleMatchMode(2)
; Start GUI and get handle
Run('"C:\Program Files\Everything 1.5a\Everything64.exe" -newwindow -x 200 -y 150 -width ' A_ScreenWidth - 400 ' -height ' A_ScreenHeight - 600, , , &MainHwnd)
KeyWait("LButton", "D T5")
KeyWait("LButton")
MainHwnd := WinExist("A")
EverythingDll := "C:\Program Files\Everything 1.5a\Everything64.dll"
EverythingMod := DllCall("LoadLibrary", "Str", EverythingDll, "Ptr")
Build := DllCall(EverythingDll . "\Everything_GetBuildNumber", "Double")
DllCall(EverythingDll . "\Everything_SetReplyWindow", "Ptr", MainHwnd)
DllCall(EverythingDll . "\Everything_SetSearch", "Str", "morten")
DllCall(EverythingDll . "\Everything_Query", "Int", false)
Num := DllCall(EverythingDll . "\Everything_GetNumResults", "UInt")
; Show the results
MsgBox "Hwnd: " . MainHwnd . " Mod: " . EverythingMod . " Build: " . Build . " Result: " Num
DllCall("FreeLibrary", "Ptr", EverythingMod)
Since I am not even getting a build number I am clearly missing something obvious...
Tips please?
I am running latest version Everything 1.5.0.1354a(x64)
(I am just trying to get "morten" to be the search text in my GUI)
Re: Populating the clipboard
The Everything SDK DLL should not be used to set the search in an Everything Search Window.
The Everything SDK DLL is designed to search your Everything index without the UI.
The Everything SDK DLL is designed to search your Everything index without the UI.
Re: Populating the clipboard
Set search text on Ctrl + Shift + Z:
Code: Select all
#Ifwinactive ahk_class EVERYTHING
^+z::
{
ControlSetText, Edit1, "my search"
return
}
#Ifwinactive
Re: Populating the clipboard
That was exactly what I needed!!
AutoHotkey (like Everything) has an extreme amount of possibilities and even if I have used it for a long time, I did not know I could directly put text in other applications controls other then with key presses.
Now my duplicates finding mission is back on track and my three Everything GUI windows are working in perfect unison.
Thank you for your excellent help and immense patience! You (and your product) are the best!
AutoHotkey (like Everything) has an extreme amount of possibilities and even if I have used it for a long time, I did not know I could directly put text in other applications controls other then with key presses.
Now my duplicates finding mission is back on track and my three Everything GUI windows are working in perfect unison.
Thank you for your excellent help and immense patience! You (and your product) are the best!