/
Scrivener-picker.ps1
57 lines (40 loc) · 1.33 KB
/
Scrivener-picker.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[CmdletBinding()]
Param(
)
add-type -AssemblyName microsoft.VisualBasic
import-module $PsScriptRoot\AutoItX.psd1
#Get handle of active window (Scrivener)
$Activewindow = Get-AU3WinHandle -Title ''
# Check if Zotero is running. If not, launch the program and wait until BBT plugin is ready
if ((get-process "zotero" -ErrorAction SilentlyContinue) -eq $Null)
{
Start-Process -filepath zotero.exe -WindowStyle Minimized
$probe = "starting"
while ($probe -notmatch "ready")
{
start-sleep -Seconds 1
try
{
$probe = invoke-webrequest 'http://localhost:23119/better-bibtex/cayw?probe=true' -usebasicparsing -userAgent 'USER'
echo $probe.Content
}
catch
{
echo "waiting"
}
}
}
else
{
echo "Zotero is running"
}
# Activate Zotero to ensure picker comes to the front
[Microsoft.VisualBasic.Interaction]::AppActivate((Get-Process Zotero).ID)
# Call CAYW picker
$ref = invoke-webrequest 'http://localhost:23119/better-bibtex/cayw?format=scannable-cite' -usebasicparsing -userAgent 'USER'
# Set Scrivener as foreground window
Show-AU3WinActivate($Activewindow)
Wait-AU3WinActive($Activewindow)
echo $ref
# Send result to Scrivener window
Send-AU3Key -key $ref -mode 2