[AHK] 바이두 넷 디스크 로그인 도우미
안녕하세요.
이번에 다른 아이디들을 로그인 하기가 번거로워서 오토핫키 스크립트를 만들어봤습니다.
일반적으로 다른 아이디를 사용하려면 현재 아이디를 로그아웃 한 다음 다른 아이디를 로그인 해야하죠.
근데 그걸 반복하다보면 아무리 비번이 기억되어 있다고 해도 번거롭게 느껴집니다.
특히 캡챠 문자를 입력하라고 하면 짜증나죠.
그래서 한번 로그인한 상태에서 현재 로그인한 아이디의 유저 정보를 저장하여 원하는 아이디로 변경하기 쉽게 오토핫키 스크립트를 만들어봤습니다.
작동하는 내용을 간략히 설명하겠습니다.
사용방법
오토핫키를 인스톨 합니다. (오토핫키 필요)
https://autohotkey.com/download/
다운로드 페이지에 있는 Download AutoHotkey Installer 를 눌러서 설치 파일을 저장합니다.
다운받은 설치파일로 설치를 합니다.
스크립트를 다운 받습니다.
압축을 풀어줍니다.
BaiduIDselector 폴더에
BaiduIDselector.ahk 파일 하나만 있습니다.
단순한 스크립트 파일이며 메모장이나 기타 텍스트 에디터로 내용을 확인 가능합니다.
오토핫키가 설치되어있으면 더블 클릭시 실행됩니다.
실행시 화면입니다.
바이두 넷 디스크가 실행 중이면 바로 바이두 넷 디스크가 설치된 경로와 현재 로그인된 아이디가 표시됩니다.
현재 로그인된 아이디 우측의 [저장]을 누르면 스크립트가 실행된 위치에 아이디별 폴더로 저장이 됩니다.
저장된 폴더를 인식하여 아이디가 드랍 다운 리스트로 표시됩니다.
원하는 아이디를 선택 후 [전환]을 하면 실행 중인 바이두 넷 디스크가 종료되며 로그인된 아이디가 바뀝니다.
[재시작] 버튼은 스크립트를 종료 후 다시 실행합니다.
아래는 스크립트 내용입니다.
#NoEnv
#SingleInstance Force
#Persistent
FileEncoding, UTF-8-RAW
global dropfile_dir,currentID,idsDir,userDir
gosub,Gui
gosub,DDLrefresh
getDir(GetProcessPath("BaiduNetdisk.exe"))
return
Gui:
Gui, New
Gui, add, text, w300, 실행 중인 바이두 넷 디스크를 인식합니다
Gui, add, edit, xs w300 vcmd_dir r2 ReadOnly, 설치된 경로
Gui, add, text, xs w120 h20 +center, 현재 로그인된 아이디
Gui, add, edit, xp+130 yp-3 w110 ReadOnly vCurrentIDgui +Center,아이디
Gui, add, button, xp+120 w50 vSave gSaveID,저장
Gui, add, DDL, xs w120 vGetIDgui hwndhcbx,
Gui, add, button, xp+130 w80 vRunGui gChangeID,전환
Gui, add, button, xp+90 w80 gResetGui, 재시작
PostMessage, 0x153, -1, 16,, ahk_id %hcbx% ; Set height of selection field.
PostMessage, 0x153, 0, 16,, ahk_id %hcbx% ; Set height of list items.
Gui, show
return
DDLrefresh:
GuiControl,,GetIDgui,|
ddlopt:=""
Loop,% A_WorkingDir "\*",2
{
if ( A_Index = 1 )
ddlopt.=A_LoopFileName "|"
else
ddlopt.="|" A_LoopFileName
}
GuiControl,,GetIDgui,%ddlopt%
return
SaveID:
IfNotExist, %A_WorkingDir%\%currentID%
FileCreateDir,%A_WorkingDir%\%currentID%
SplitPath,idsDir,uid
IfExist, %userDir%
FileCopy, %userDir%\*.*, %A_WorkingDir%\%currentID%, 1
IfExist, %idsDir%
FileCopyDir, %idsDir%, %A_WorkingDir%\%currentID%\%uid%, 1
gosub,DDLrefresh
return
ChangeID:
MsgBox,4 ,로그인 아이디 전환 ,바이두 넷 디스크 프로그램이 종료됩니다.`n계속 하시려면 Yes
IfMsgBox No
return
if ProcessExist("BaiduNetdisk.exe")
Process, Close, BaiduNetdisk.exe
Sleep,500
gui,submit,nohide
GuiControlGet,selectedID,,GetIDgui
if ( selectedID && FileExist(dropfile_dir) )
{
FileCopy,%A_WorkingDir%\%selectedID%\*,%userDir%,1
if ( ErrorLevel = 0 )
MsgBox, 성공! [%selectedID%]
else
MsgBox, 실패! [%selectedID%]
}
Run,% dropfile_dir "\BaiduNetdisk.exe",Hide
Loop
{
if ( ProcessExist("BaiduNetdisk.exe") )
break
else
Sleep,1000
}
Sleep,5000
getDir(GetProcessPath("BaiduNetdisk.exe"))
return
resetGui:
Reload
return
Exit:
GuiClose:
ExitApp
ProcessExist(Name){
Process,Exist,%Name%
return Errorlevel
}
GetProcessPath(exe) {
for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process where name ='" exe "'")
return process.ExecutablePath
}
getDir(OutTarget){
dropfile_dir:=RegExReplace(OutTarget,"\\BaiduNetdisk.exe","")
if ( dropfile_dir )
{
GuiControl,,cmd_dir, %dropfile_dir%
userDir:=dropfile_dir "\users"
Loop,Files,%userDir%\*.*,R
If ( A_LoopFileTimeModified >= Time )
Time := A_LoopFileTimeModified, File := A_LoopFileLongPath
if ( File )
{
SplitPath, File,, idsDir
Loop,% idsDir "\*", 2
{
IfNotEqual, A_LoopFileName, AutoBackupFileList
currentID:=A_LoopFileName
}
GuiControl,,CurrentIDgui, %currentID%
}
}
}