지금 사용중인 솔루션이 있습니다. 나는 이것을 코딩하는 데 몇 시간을 보냈고 그것이 나를 위해 완벽하게 작동한다는 것에 매우 만족합니다. 포럼에서이 코드를 온라인으로 게시하려면 저에게 크레딧을주십시오 (drange17). 또한 LexSinos의 ConsoleSend 코드에 대한 크레딧을 제공하고 싶습니다 .
먼저 C : \ Program Files에 "cmd.lnk"라는 명령 프롬프트 바로 가기를 배치했습니다. 이 바로 가기 속성 >> 바로 가기 탭 >> 고급 >> 관리자로 실행 가능으로 이동합니다.
둘째, AutoHotkey를 다운로드하여 시작시 시작 메뉴 시작 폴더에 AutoHotkey 바로 가기를 배치하여 다음 코드와 함께 실행되도록했습니다. 나를 위해 수직 작업 표시 줄을 좁히는 작업) :
Sleep, 15000
SendInput {LWin Down}r{LWin Up}
IfWinExist, Run
WinActivate
Sleep, 500
SendInput {Raw}RunDll32.exe shell32.dll,Options_RunDLL 1
SendInput {Enter}
WinWait, Taskbar and Start Menu Properties
SendInput {Tab}{Space}{Enter}
WinWaitClose
Run C:\Program Files\cmd.lnk
WinWait, Administrator: cmd ahk_class ConsoleWindowClass
winwaitactive Administrator: cmd ahk_class ConsoleWindowClass
ConsoleSend("net stop uxsms", "ahk_class ConsoleWindowClass")
ConsoleSend("`r", "ahk_class ConsoleWindowClass")
Sleep, 3000
ConsoleSend("net start uxsms", "ahk_class ConsoleWindowClass")
ConsoleSend("`r", "ahk_class ConsoleWindowClass")
Sleep, 3000
ConsoleSend("exit", "ahk_class ConsoleWindowClass")
ConsoleSend("`r", "ahk_class ConsoleWindowClass")
WinWaitClose
SendInput {LWin Down}r{LWin Up}
IfWinExist, Run
WinActivate
Sleep, 500
SendInput {Raw}RunDll32.exe shell32.dll,Options_RunDLL 1
SendInput {Enter}
WinWait, Taskbar and Start Menu Properties
SendInput {Tab}{Space}{Enter}
Run outlook.exe
ConsoleSend(text, WinTitle="", WinText="", ExcludeTitle="", ExcludeText="")
{
WinGet, pid, PID, %WinTitle%, %WinText%, %ExcludeTitle%, %ExcludeText%
if !pid
return false, ErrorLevel:="window"
if !DllCall("AttachConsole", "uint", pid)
return false, ErrorLevel:="AttachConsole"
hConIn := DllCall("CreateFile", "str", "CONIN$", "uint", 0xC0000000
, "uint", 0x3, "uint", 0, "uint", 0x3, "uint", 0, "uint", 0)
if hConIn = -1
return false, ErrorLevel:="CreateFile"
VarSetCapacity(ir, 24, 0) ; ir := new INPUT_RECORD
NumPut(1, ir, 0, "UShort") ; ir.EventType := KEY_EVENT
NumPut(1, ir, 8, "UShort") ; ir.KeyEvent.wRepeatCount := 1
Loop, Parse, text ; for each character in text
{
NumPut(Asc(A_LoopField), ir, 14, "UShort")
NumPut(true, ir, 4, "Int") ; ir.KeyEvent.bKeyDown := true
gosub ConsoleSendWrite
NumPut(false, ir, 4, "Int") ; ir.KeyEvent.bKeyDown := false
gosub ConsoleSendWrite
Sleep, 10
}
gosub ConsoleSendCleanup
return true
ConsoleSendWrite:
if ! DllCall("WriteConsoleInput", "uint", hconin, "uint", &ir, "uint", 1, "uint*", 0)
{
gosub ConsoleSendCleanup
return false, ErrorLevel:="WriteConsoleInput"
}
return
ConsoleSendCleanup:
if (hConIn!="" && hConIn!=-1)
DllCall("CloseHandle", "uint", hConIn)
DllCall("FreeConsole")
return
}
결과적으로 나타나는 세로 형 작업 표시 줄은 다음과 같습니다.