2014-02-19 2 views
0

OS X에 문제가 있습니다. 전원이 꺼진 상태에서 드라이브를 꽂은 다음 전원을 켜면 새 디스크가 나왔다는 알림을받지 못합니다. 이미 전원이 켜져있는 드라이브를 연결하면 알림 메시지가 나타납니다.전원이 켜져 있음을 알리는 알림을 받으려면 어떻게합니까?

현재 디스크가 표시되거나 사라지거나 디스크 중재 (DARegisterDiskAppearedCallback 외)를 통해 설명이 변경되는 경우 콜백을 등록하고 있습니다. 나는 드라이브의 시나리오를 덮을 수있는 다른 콜백을 보지 못했다.

이미 플러그인 된 드라이브의 전원이 켜지면 어떻게 알림을 받습니까?

답변

2

NSWorkspace은 디스크가 마운트 될 때 NSWorkspaceDidMountNotification이라는 알림을 제공합니다.

- (void) mountNotify:(NSNotification *)notification 
{ 
    // extract details from notification 
    NSDictionary *userInfo = notification.userInfo; 
    NSString *volumeMounted = userInfo[@"NSDevicePath"]; 
    NSString *volumeDisplayName = userInfo[@"NSWorkspaceVolumeLocalizedNameKey"]; 

    if (volumeMounted != nil) 
    { 
     // volume has been mounted 
    } 
} 

및 알림을 등록 : 개요에서는 예를 들어, 알림 핸들러를 선언 또한 디스크가 마운트 해제되는 경우는 유사한 통지, NSWorkspaceDidUnmountNotification,이

[[[NSWorkspace sharedWorkspace] notificationCenter] 
    addObserver:self 
    selector:@selector(mountNotify:) 
    name:NSWorkspaceDidMountNotification 
    object:nil 
]; 

.

자세한 내용은 Apple NSWorkspace documentation을 참조하십시오.

HTH.

+0

C++에서이를 수행 할 수있는 방법이 있습니까? –

+0

@dauphic - Well Objective-C++은 분명히 하나의 대답입니다. C 함수 수준의 인터페이스를 원한다면 사용중인 것은 그 것처럼 보입니다. 그러나 당신은 이상한 오류가 발생합니다. 컴퓨터에 연결되어있을 때 디스크의 전원이 켜져 있는지 여부에 따라 아무런 차이가 없어야합니다. 두 장치는 일반적으로 연결되어 있지만 장치를 연결하고 장치를 장착하는 것과는 구분됩니다. 승인 또는 다른 콜백을 사용하여 테스트하지 않은 경우 해당 내용을 살펴볼 수 있습니다. – CRD

관련 문제