Substitute AltTab in one key - autohotkey

Is it possible to substitute AltTab with only one key press ?
i tried this one but it doesn't work
`::AltTab

I use this, you may need to change the Sleep delay.
`::
Send {Alt Down}{Tab}
Sleep 100
Send {Alt Up}
return
I am running Windows 8.1 64-bit and AutoHotkey v1.1.16.05. And my C:\Program Files\AutoHotkey\AutoHotkeyU64.exe is digitally signed by running the script described here (EnableUIAccess.zip) so that Windows allows it to simulate Alt+Tab. The digital sign is required if you are using Windows Vista and onwards.
Download the zip file and extract it. Then run EnableUIAccess.ahk:
It will ask which AutoHotkey executable to sign. Pick one that you need (AutoHotkeyA32.exe, AutoHotkeyU32.exe, AutoHotkeyU64.exe or AutoHotkey.exe).
Then it will ask to save the new executable. You can choose to overwrite the original file or save as another executable.
Finally it will ask to create a "Run Script with UI Access" context menu item. If you choose 'Yes', then you can right-click a .ahk file and choose "Run Script with UI Access", which will use the digitally signed executable to run the .ahk file. But if you choose to overwrite the original file in step 2, then it is not necessary to create this context menu item.

From the docs:
Each Alt-Tab hotkey must be a combination of two keys, which is typically achieved via the ampersand symbol (&).
http://ahkscript.org/docs/Hotkeys.htm#AltTabDetail

You might even be able to avoid messing around with UIAccess and administrator privileges. This works for me on Windows 8.1:
`::Run "C:\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Window Switcher.lnk"
And for others who are struggling with getting a two-key combination working on Windows 8 or 10, here's an example using Ctrl-Tab to trigger the window switcher:
^Tab::
Run "C:\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Window Switcher.lnk"
SetTimer EnterOnKeyUp, -1
return
EnterOnKeyUp:
WinWaitActive ahk_class TaskSwitcherWnd
KeyWait Ctrl
Send {Enter}
SetTimer EnterOnKeyUp, Off
return
* Inspired by: Fully Working Alt Tab Win 8

Related

How do I add a keyboard shortcut to open VS Code on the folder from File Explorer?

I want to be able to press . in any folder that I'm in File Explorer and open Visual Studio Code on that folder. It is the same effect as right-clicking and clicking "Open with Code". Pressing . is just like I could do on the GitHub website.
It might not be officially possible, but are there any workarounds to make it work?
The biggest issue is getting the current location from windows explorer. This requires some reverse engineering to get the memory address where windows explorer stores the location. If for any reason this address changes, you will need to find it again.
Besides that, windows supports global keyboard hooks. So you'd like to set up a global keyboard hook for your . key. The windows API also provides methods to get the active window. So whenever the . key is pressed, you can check that the active window is an explorer window. Then you'd read the current folder from the explorer window's memory. After that you've got everyting you need to start visual studio code.
This is very hacky, but I guess it's the only choice you have. Topics to research are:
Keyloggers - These for instance use the global hooks I mentioned
Generic reverse engineering - To find the address of the current location in windows explorer
Edit: Autohotkey post about how to get the windows explorer location. If that works as people claim, autohotkey can also be used to register a hook for the . key and launch VS code.
Thank you #AdrAs and #SarvinR for the answers. I used Sarvin's solution for a while, while trying to google and make sense of Adr's solution. Sarvin's solution is very useful if you're not trying to download any external programs, but if you want the true solution to this question, I finally managed it here:
Download AutoHotKey. It's good if you're familiar with it. AHK basically creates hotkeys (or shortcuts) like Adr described.
(If you have an existing ahk that you use, you can skip these steps and copy the code block down below)
Create a new AutoHotKey script by right-clicking on your desktop or anywhere in file explorer (we're gonna move it later so it doesn't matter). Name it whatever you want. I'm going to call it MyScript.ahk for this answer (I actually used david.ahk for myself).
Now, open command prompt (win + r, cmd, enter) and look for where VSCode is by typing where code. It will probably give you two lines. Take note of one of the lines (I chose the top one).
Right-click the ahk script file that you just created and choose Edit Script (or you can open it with notepad++ or VSCode or any editor of your choice, it's just a normal text file). Delete everything and paste this in:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
GetActiveExplorerPath()
{
explorerHwnd := WinActive("ahk_class CabinetWClass")
if (explorerHwnd)
{
for window in ComObjCreate("Shell.Application").Windows
{
if (window.hwnd==explorerHwnd)
{
return window.Document.Folder.Self.Path
}
}
}
}
#IfWinActive ahk_exe Explorer.exe
.::
path := GetActiveExplorerPath()
run, "C:\Users\david\AppData\Local\Programs\Microsoft VS Code\bin\code" "%path%"
return
On the second last line, replace the VSCode location with what you just saw in cmd. You most likely have to just change the username from david to your name.
Now, save the file try opening it (double click the ahk). If it works, a green H icon should appear on your tray without any errors. Go into any file directory in Windows File Explorer and hit . like you would normally do in GitHub. (Do Not do this in large directories like your root C:. There will be too many files for VSCode to load). It should work like expected, and if it doesn't, you did something wrong (I did the exact same thing like I just described and it works).
Now, of course, you would want to run this script on startup. Copy/Move the .ahk file into C:\Windows\System32. It will ask you for administrator permissions, so click yes. Open the registry editor (win + r, regedit, enter). Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. On the right side pane, right click on the empty space then create a new String Value with any name (I used davidAHK) and set its value to your ahk file that you just copied/moved with quotes ("C:\Windows\System32\david.ahk" for my case). Close the Registry Editor and safely restart your computer. The ahk script should run on start up and you should be able to click . in any directory in file explorer to open VSCode.
Again, thank you #AdrAs and #SarvinR for your help!
I have an trick for this
Create vs.bat and write this code in that
#echo off
code %cd%
And Move this file to C:/Windows/System32/
Now All Set.
If you type vs on the address bar of explorer your vs code with current folder will open
open VSCode -> command+shift+p -> Enter shell command – > click the prompt "shell command: install 'code' command in path"
open directory -> code .
I wanted launch VS Code with the open folder OR the selected files, using AHK v2, and I wanted it to be plug & play for other users. Here's the result:
#Requires AutoHotkey v2.0
; This is the key combo.
#!.::
{
; Is the current window an Explorer window?
if (WinGetClass("A") == "CabinetWClass") {
; Cache the current clipboard contents.
clipboard := A_Clipboard
; Clear the clipboard & copy selected files.
A_Clipboard := ""
Send "^c"
ClipWait(0.5)
; If no files are selected...
if (A_Clipboard == "") {
; Get the current window's ID.
hwnd := WinGetID("A")
; Find the current window's COM object.
for window in ComObject("Shell.Application").Windows{
if (window && window.hwnd && window.hwnd == hwnd)
; Get the current folder's path.
path := window.Document.Folder.Self.Path
}
}
else {
; Quote & space-concatenate selected files.
path := '"' . StrReplace(A_Clipboard, "`n", '" "') . '"'
}
; Restore the clipboard.
A_Clipboard := clipboard
; Run code.
exe := '"' . StrReplace(A_AppData, "Roaming", "Local\Programs\Microsoft VS Code\code") . '"'
Run(exe . " " . path)
}
}
Works like a charm, and it's a piece of cake to install & run on your machine! Instructions at the repo.

AutoHotKey paste into win password prompts

I would like to use autohotkey to make a key binding that pastes my admin password into the admin prompts so I don't have to type it out 100 times a day. At the moment I have a AHK script that will paste text in most programs but it doesn't work in things like active directory or the windows admin prompt for credentials.
Can anyone help me with this?
here's my current script. When I press cntrl+J it pastes the testadminpass text but not into the password prompts
^j::
send, TestAdminPass
return
If the application, browser or terminal runs with elevated admin privileges and ahk script is not then you can't send strings or expand hotkeys.
To solve this, simply run your script.ahk as Run as administrator.

How to launch .ahk file when PC starts

^B::
Send, Hello World
return
This is my script-file made for AutoHotKey. How can I launch this file automatically when my PC starts? Now it is is all fine, but after reboot I've to launch it manually. Thanks!
You’re gonna have to add it to your startup programs
Press Windows key + R, paste this file path in there and press enter: %appdata%\Microsoft\Windows\Start Menu\Programs\Startup
Right click -> New -> Shortcut
In the shortcut window click on “Browse” and then select your AHK file
to do that:
1. press win+r
2. type shell:startup
3. copy paste your ahk file from the folder to the place which just opened
… and you‘re done!
You can Use the Windows Registry.
It Will Launch the .ahk File automatic after rebooting your System.
Try this AHK Code:
c:\examples\example1.ahk
^B::
Send, Hello World
return
^r::
RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Run,example1,"c:\examples\example1.ahk" /background
return
You can press (Ctrl + r) it will put the values into the Registry.
Now you are ready to go. Everytime if you Start your PC, it will Automatic run the example1.ahk File.

Run a program in debug mode in eclipse in command line

For several reasons I must test my program with multiple computer restart.
So I need at the computer startup, eclipse open and the tested program runs in eclipse (in debug mode if possible).
Can you give me a command line or another way to do that. I just need when I open eclipse or when I use the given command line, the program automatically start
Thank you
For Linux OS (not sure on Win, Mac), Eclipse (or other apps) can be automated with xdotool utility. Assuming your app has run at least once in debug mode within Eclipse so it exists an entry on Debug history, a Bash script could do the following actions
-Edit the script below to set the correct position value for the app.
-Launch Eclipse.
-Wait some time until is fully up.
-Execute the following command sequence:
#!/bin/bash
position=6
#find Eclipse app window IDs, keep the last one
e_wid=$(xdotool search --class Eclipse | gawk 'END{print $0}')
# Create basic command string
cmd="xdotool windowactivate --sync $e_wid"
# Send key strokes with some delay in between
# Open Run menu
$cmd key Alt+r
sleep 1
# select Debug option
$cmd key h
sleep 0.5
# pick the sixth option in that menu
$cmd key $position
It's recommended to mark the app as a favorite so it gets a constant order in the menu.
To see another example, check this mluis7 gist at Github.

create shortcut in cmd prompt using autohotkey

I am using python and virutal environment in windows7. Every time I need to go to the project folder, shift+right click to open command prompt and activate virtualenv.
Instead I can hit win+R them type cmd to open a command prompt.
Then type
C:\cd D:\path\to\project
D:
workon projectEnvironment
Can this be done to create a shortchut like 'work' from autohotkey ??
Your windows-R shortcut would work like this:
Start a cmd window and wait until it is active.
Then begin to send your commands.
#r::
Run, %comspec% /c cmd.exe
SetTitleMatchMode, 2
WinWaitActive, cmd.exe
SendInput, cd D:\projects\folder{enter}
SendInput, D:{enter}
SendInput, workon projectEnvironment{enter}
return
Although I was unable to create shortcut key combination in cmd, I created a shortcut key, i.e. windows button + space
#space::Send cd D:\projects\folder{enter} D:{enter} workon projectEnvironment {enter}
Edit
here's the real solution
::work::cd D:\projects\folder{enter} D:{enter} workon projectEnvironment {enter}
After an hour of researching why my script would write " instead of \ when Sending a path in cmd prompt, I realized that sometimes the cmd prompt will interpret some keys differently for AutoHotkey.
I used to write Send, cd C:\File\Path {Enter} and it returned:
C:"File"Path
You can use ASC codes for / = {ASC 47} and \ = {ASC 92}, which in the end you write:
Send, cd C:{ASC 92}File{ASC 92}Path {Enter}