2013-08-04 3 views
1

나는이 간단한 AHK 스크립트를 작성했다. 그러나 rightclick systray 아이콘 - 일시 중지/일시 중지, 그냥 계속 작동합니다. 그것은 내 코드의 무언가 때문입니까? 또는 win7 x64에 대해?스크립트를 일시 중지/일시 중지 할 수없는 이유는 무엇입니까?

#Persistent 
return 

OnClipboardChange: 
WinGetActiveTitle, OutputVar 
IfWinExist, collect.doc 
{ 
    WinActivate  ; use the window found above 
    send,^v 
    send,{Enter} 
    winactivate,%Outputvar% 
} 
else 
    tooltip,need collect doc,400,400 
Sleep 100 
return 

답변

1

모두 PauseSuspendOnClipboardChange 또는 GuiClose 같은 자동으로 호출 서브 루틴을 차단하는 것은 아니다. Pause현재 스레드 인을 차단하기 만합니다. 즉, 새로 생성 된 모든 스레드가 계속 실행되며 클립 보드 변경으로 인해 새 스레드가 생성됩니다. Ergo, Pause은 차단할 수 없습니다.
그런 경우 어떤 종류의 상태 인을 검사하는 "이벤트 서브 루틴"내에 로직을 구현해야합니다. 기능을 할 당신의 전제가는
상태를 일시에 상당히 쉬운 방법을 확인하는 것입니다 의존 내장 A_IsPaused :

OnClipboardChange: 
    if(A_IsPaused) { 
     return 
    } 
    msgbox, 'sup? 
return 

이를 구현하기 확실히 여러 가지 방법이 있습니다. 또한 사용자 정의 상태를 활성화/비활성화/전환 할 수있는 자체 핫키를 정의 할 수 있습니다.

P.S : 일부 텍스트를 붙여 창을 활성화는
나에게 조금 불필요하고 귀찮은 것 같다; Control 명령 (예 : Control, EditPaste)을 보거나 을 통해 Word에 액세스하십시오. 당신이하는 일에 따라, 필자는 어쨌든 실행중인 Word 인스턴스 대신 텍스트 파일 및/또는 메모리 내 저장 장치에 직접 쓰는 것이 더 나은 대안이라고 생각합니다.

P.P.S : 당신은 같은 과실 클립 보드 로거에주의 할 수 있습니다
. 모든 유형의 데이터 (예 : 비밀번호)가 표시되는 것을 원하지 않는다고 가정합니다.

관련 문제