Có một phím tắt trong Windows 7 để chỉ chuyển đổi giữa các cửa sổ trong một ứng dụng nhất định không? Tôi rất thích tính năng này trong OS X; Tương đương của nó trong Windows là gì?
Có một phím tắt trong Windows 7 để chỉ chuyển đổi giữa các cửa sổ trong một ứng dụng nhất định không? Tôi rất thích tính năng này trong OS X; Tương đương của nó trong Windows là gì?
Câu trả lời:
Nếu nó là một trong mười ứng dụng đầu tiên trên thanh tác vụ, thì (Win)+ n, trong đó n là số vị trí của nó, sẽ chọn nó và quay vòng qua các cửa sổ. (Sử dụng 0(zero) cho ứng dụng thứ mười.) Ví dụ, tôi có Windows Explorer và Internet Explorer được ghim làm hai điều đầu tiên trên thanh tác vụ của tôi, vì vậy tôi có thể sử dụng + 1để lướt qua danh bạ của tôi và + 2để chu kỳ thông qua trình duyệt của mình.
Một số lưu ý kỳ lạ:
Nếu bạn nhấn và giữ và nhập (và phát hành) một chữ số n, Windows sẽ mở ứng dụng thứ n trên thanh tác vụ. Liên tục khai thác n sẽ quay vòng qua các cửa sổ của chương trình đó, như đã thảo luận ở trên. Như được trình bày bởi TranslucentCloud , nếu bạn nhập Shift+ n, nó sẽ chuyển qua chúng theo thứ tự ngược lại, như với Alt+ Tab và Ctrl+ Tab, v.v.
Nếu ứng dụng thứ n trên thanh tác vụ được ghim nhưng không chạy, thì + nsẽ khởi động nó.
Trong Windows 7 và 8, mặc dù không có phím tắt mà tôi biết chỉ có sẵn từ bàn phím, bạn có thể giữ Ctrltrong khi nhấp vào biểu tượng trên thanh tác vụ của ứng dụng mà bạn quan tâm. Mỗi lần bạn làm điều này, một cửa sổ khác thuộc về ứng dụng đó sẽ đi đầu
Ngoài ra, chương trình VistaSwitcher thiết lập Win+ F11và Alt+ `để chuyển đổi giữa các cửa sổ của ứng dụng hiện tại. (BTW, trang web của nó cho biết Windows 8 không được hỗ trợ, nhưng tôi đã gặp may mắn với nó dưới 8.1; vấn đề duy nhất tôi thấy cho đến nay là đôi khi nó liệt kê những thứ như thanh bên tìm kiếm dưới dạng cửa sổ đang mở. điều đó, nhưng YMMV.)
alt-tab terminator
không còn có tính năng tab giữa cùng một ứng dụng nữa
Bạn có thể sử dụng AutoHotkey: www.autohotkey.com
Và đặt kịch bản này ở đó:
!`:: ; Next window
WinGetClass, ActiveClass, A
WinGet, WinClassCount, Count, ahk_class %ActiveClass%
IF WinClassCount = 1
Return
Else
WinGet, List, List, % "ahk_class " ActiveClass
Loop, % List
{
index := List - A_Index + 1
WinGet, State, MinMax, % "ahk_id " List%index%
if (State <> -1)
{
WinID := List%index%
break
}
}
WinActivate, % "ahk_id " WinID
return
!^`:: ; Last window
WinGetClass, ActiveClass, A
WinGet, WinClassCount, Count, ahk_class %ActiveClass%
IF WinClassCount = 1
Return
Else
WinGet, List, List, % "ahk_class " ActiveClass
Loop, % List
{
index := List - A_Index + 1
WinGet, State, MinMax, % "ahk_id " List%index%
if (State <> -1)
{
WinID := List%index%
break
}
}
WinActivate, % "ahk_id " WinID
return
Hoạt động rất tốt đối với tôi. Sử dụng Autohotkey, tôi cũng tạo các phím sao chép / dán / hoàn tác, ... như Mac. Hoạt động tuyệt vời!
Thời đại
WinGet, List
trả về số lượng cửa sổ trong List
biến (trái ngược với List%n%
giả hành trong đó các tay cầm được lưu trữ), vì vậy bạn có thể bỏ qua WinGet, WinClassCount
cuộc gọi và List
thay vào đó kiểm tra . Ngoài ra, mã dường như giống hệt nhau cho cả hai phím nóng.
Cảm ơn, Erasmose, nhưng phiên bản tập lệnh autohotkey của bạn sẽ thu nhỏ một cửa sổ nếu không có cửa sổ khác thuộc loại đó. Đôi khi bạn không biết và tối thiểu hóa là một cách khó chịu để tìm hiểu, vì vậy tôi đã sửa đổi tập lệnh của bạn như sau:
!`:: ; Next window
WinGetClass, ActiveClass, A
WinGet, WinClassCount, Count, ahk_class %ActiveClass%
IF WinClassCount = 1
Return
Else
WinSet, Bottom,, A
WinActivate, ahk_class %ActiveClass%
return
!+`:: ; Last window
WinGetClass, ActiveClass, A
WinActivateBottom, ahk_class %ActiveClass%
return
ồ, và tôi cũng đã thay đổi lớp cuối cùng để sử dụng shift thay vì ctrl vì tôi là công cụ sửa đổi để quay ngược với một số phím tắt khác. Tôi yêu autohotkey.
Một số ứng dụng triển khai MDI cung cấp Ctrl + Tab để chuyển giữa "Tài liệu" trong cùng một ứng dụng. vd: MS Office. Nhưng đây không phải là một tính năng của windows và phụ thuộc vào ứng dụng. Đối với các phần mềm khác có các lối tắt khác nhau. ví dụ: Firefox không cung cấp tính năng này nhưng có một tiện ích bổ sung thêm chức năng.
Ngoài ra, đây là danh sách các phím tắt được cung cấp trong windows.
Ngoài ra, có các cuộc thảo luận về bàn phím tắt trong Windows.
Mong rằng sẽ giúp.
Windows Switcher dễ dàng từ Neosmart thực hiện chính xác những gì bạn đang theo đuổi.
Dưới đây là mô tả từ trang web Easy Windows Switcher
Easy Window Switcher giúp chuyển đổi giữa các cửa sổ khác nhau dễ dàng như alt+`(đó là alt + backtick) như trên máy Mac. Quên phải có
alt+tab
một triệu cửa sổ mở khác nhau để tìm cửa sổ bạn đang tìm, với Easy Window Switcher, việc đặt tab giữa các cửa sổ của cùng một chương trình chỉ là một alt+`cách xa.
VistaSwitcher cho phép hoặc cho tính năng này. Nó tương thích với Windows 10, (mặc dù tên cho thấy khác). Trên Windows 8 trở lên, tôi khuyên bạn nên thêm một số ứng dụng metro nhất định vào danh sách loại trừ.
Câu trả lời hàng đầu là tốt, nhưng không hoạt động trên các thiết lập đa màn hình trong đó thanh tác vụ được đặt thành chỉ hiển thị các biểu tượng trên màn hình hoạt động.
Ngoài những gì Scott ( https://superuser.com/users/150988/scott ) đã chia sẻ:
ctrl+ repeatedly click qua biểu tượng ứng dụng trong thanh tác vụ cũng sẽ thực hiện công việc.
Với AutoHotkey cũng vậy, một hành vi tự nhiên hơn:
; Switch between windows of the same application with Alt+(key above Tab)
; Icon: made by Freepik (www.freepik.com), licence CC 3.0 BY
; from https://www.flaticon.com/free-icon/switch-window_71630
; Script Licence: CC0 (Public Domain)
; Source: https://framagit.org/dr4Ke/AutoHotkey_scripts
KeyName := GetKeyName("sc029")
Menu, Tray, Tip, Switch between windows of the same applications with 'Alt+%KeyName%'
*!SC029::
WinGetClass, ActiveClass, A
WinGet, WinClassCount, Count, ahk_class %ActiveClass%
If WinClassCount = 1
Return
WinGet, List, List, % "ahk_class " ActiveClass
index := 0
if not GetKeyState("Shift") {
index := 1
}
;MsgBox, Entering Loop
While GetKeyState("Alt") {
If GetKeyState("Shift") {
index := Mod(List + index - 2, List) + 1
} else {
index := Mod(List + index, List) + 1
}
WinGet, State, MinMax, % "ahk_id " List%index%
if (State == -1)
{
continue
}
WinID := List%index%
WinActivate, % "ahk_id " WinID
ErrorLevel := 1
sleep 50
While (ErrorLevel != 0) and GetKeyState("Alt") {
KeyWait, sc029, DT1
}
}
return
Tôi đã tạo tập lệnh AutoHotkey để chuyển đổi giữa các cửa sổ của cùng một ứng dụng hoạt động với Ứng dụng cửa sổ thông thường , Phím tắt Chrome và Ứng dụng Chrome .
Trong repo Github đó, có một tập lệnh AutoHotkey khác có thể hoạt động tốt cùng với tập lệnh này, bởi vì bạn sẽ có thể Mở, Khôi phục hoặc Thu nhỏ Ứng dụng của mình bằng các phím nóng bạn muốn.
Thí dụ:
F7:: OpenOrShowAppBasedOnExeName("C:\Windows\System32\SnippingTool.exe")
F8:: OpenOrShowAppBasedOnWindowTitle("Gmail", "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --app=https://mail.google.com/mail/")
Tôi đã tạo một tập lệnh AutoHotkey tích hợp độc đáo với Windows Task Switcher ( Alt+ Tab), cung cấp tất cả các lợi ích của nó: xem trước các cửa sổ ứng dụng, nhấp để chọn, điều hướng phím mũi tên, chỉ kích hoạt cửa sổ duy nhất mà bạn muốn. Gọi / điều hướng bằng Alt+ `và Alt+ Shift+ `(backtick) để xoay vòng giữa các cửa sổ có cùng tên quy trình với cửa sổ hiện tại. Tôi thấy điều này có thể sử dụng nhiều hơn Win+ numvì nó hoạt động cho bất kỳ ứng dụng nào (thay vì phải nhớ số vị trí được ghim), xem trước cửa sổ lớn hơn, nền không bị mờ và kết hợp hoàn hảo với Alt+ Tabđiều hướng. Đã thử nghiệm trên Windows 10.
Thủ thuật chính là tạm thời ẩn các cửa sổ ứng dụng không nhắm mục tiêu khỏi Trình chuyển đổi tác vụ bằng cách cài đặt WS_EX_TOOLWINDOW
và bỏ đặt WS_EX_APPWINDOW
. Để đặt các kiểu cửa sổ này trên các cửa sổ đang chạy với tư cách quản trị viên, AutoHotkey cần phải được ký hoặc chạy với tư cách quản trị viên . Tôi đã làm theo các hướng dẫn ký rất dễ dàng ở đây .
Một số chủ đề liên quan đã đóng góp:
!`::
{
WS_EX_TOOLWINDOW = 0x80
WS_EX_APPWINDOW = 0x40000
tw := []
aw := []
WinGet, processName, ProcessName, A
DetectHiddenWindows, Off
AltTab_window_list(1)
Loop, %AltTab_ID_List_0%
{
wid := AltTab_ID_List_%A_Index%
WinGet, processName2, ProcessName, ahk_id %wid%
if (processName2 != processName)
{
WinGet, exStyle2, ExStyle, ahk_id %wid%
if (!(exStyle2 & WS_EX_TOOLWINDOW))
{
tw.InsertAt(0, wid)
WinSet, ExStyle, ^0x80, ahk_id %wid%
}
if ((exStyle2 & WS_EX_APPWINDOW))
{
aw.InsertAt(0, wid)
WinSet, ExStyle, ^0x40000, ahk_id %wid%
}
}
}
Send {Alt Down}{Tab} ; Bring up switcher immediately
KeyWait, ``, T.25 ; Go to next window; wait .25s before looping
if (Errorlevel == 0)
{
While ( GetKeyState( "Alt","P" ) )
{
KeyWait, ``, D T.25
if (Errorlevel == 0)
{
if (GetKeyState( "Shift","P" ))
{
Send {Alt Down}{Shift Down}{Tab}
Sleep, 200
}
else
{
Send {Alt Down}{Tab}
Sleep, 200
}
}
}
}
Send {Alt Up} ; Close switcher on hotkey release
for index, wid in tw
{
WinSet, ExStyle, ^0x80, ahk_id %wid%
}
for index, wid in aw
{
WinSet, ExStyle, ^0x40000, ahk_id %wid%
}
}
return
AltTab_window_list(excludeToolWindows)
{
global
WS_EX_CONTROLPARENT =0x10000
WS_EX_APPWINDOW =0x40000
WS_EX_TOOLWINDOW =0x80
WS_DISABLED =0x8000000
WS_POPUP =0x80000000
AltTab_ID_List_ =0
WinGet, Window_List, List,,, Program Manager ; Gather a list of running programs
id_list =
Loop, %Window_List%
{
wid := Window_List%A_Index%
WinGetTitle, wid_Title, ahk_id %wid%
WinGet, Style, Style, ahk_id %wid%
If ((Style & WS_DISABLED) or ! (wid_Title)) ; skip unimportant windows
Continue
WinGet, es, ExStyle, ahk_id %wid%
Parent := Decimal_to_Hex( DllCall( "GetParent", "uint", wid ) )
WinGetClass, Win_Class, ahk_id %wid%
WinGet, Style_parent, Style, ahk_id %Parent%
If ((excludeToolWindows & (es & WS_EX_TOOLWINDOW))
or ((es & ws_ex_controlparent) and ! (Style & WS_POPUP) and !(Win_Class ="#32770") and ! (es & WS_EX_APPWINDOW)) ; pspad child window excluded
or ((Style & WS_POPUP) and (Parent) and ((Style_parent & WS_DISABLED) =0))) ; notepad find window excluded ; note - some windows result in blank value so must test for zero instead of using NOT operator!
continue
AltTab_ID_List_ ++
AltTab_ID_List_%AltTab_ID_List_% :=wid
}
AltTab_ID_List_0 := AltTab_ID_List_
}
Sử dụng Autohotkey, đây là phiên bản của tôi, hoạt động với ứng dụng Chrome và Electron. Nó đã được sửa đổi từ câu trả lời của @ user332861 , để nó phân biệt chính xác giữa các ứng dụng Chrome và Electron như Slack và Visual Studio Code. (Để làm điều đó, nó sử dụng ahk_exe
thay vì ahk_class
)
!`:: ; Next window if using alt-backtick
WinGet, ExeName, ProcessName , A
WinGet, ExeCount, Count, ahk_exe %ExeName%
If ExeCount = 1
Return
Else
WinSet, Bottom,, A
WinActivate, ahk_exe %ExeName%
return
!+`:: ; prev window, Alt+shift+backtick
WinGet, ExeName, ProcessName , A
WinActivateBottom, ahk_exe %ExeName%
return
!`::
#`::
WinGet, ExeName, ProcessName, A
WinActivateBottom, ahk_exe %ExeName%
return
Đơn giản hóa từ câu trả lời của @ otter.pro. Điều này chỉ đơn giản là chu kỳ ngược thông qua các cửa sổ ứng dụng hiện tại. Đạp xe về phía trước có thể khiến đèn flash ngắn của các cửa sổ khác xuất hiện. Vì không nhìn thấy đèn flash có lẽ quan trọng hơn so với đạp xe hai chiều, chỉ cần không đạp xe về phía trước. Hơn nữa, câu trả lời này cho phép # `thay thế cho!` Vì đó là tổ hợp phím cho phím tắt Mac.