Pregunta

Estoy automatización de un comando de copia para colocar un texto sobre la mesa de trabajo cada segundo más o menos - por desgracia, esta es mi única forma de acceder al texto, que se encuentra en otra aplicación. Después de copiar, accedo al texto de la mesa de trabajo y el proceso de la misma.

A veces, el comando de copia se enviará cuando no hay nada seleccionado - por ejemplo en textEdit, si el cursor está al final de una línea (en lugar de resaltar un texto) y choca contra copia, se obtiene un sonido de sistema porque hay es nada seleccionado para copiar. La mesa de trabajo no se actualiza y mantiene sus datos anteriores.

No se puede pensar en una manera creativa para identificar cuando esto sucede. Si envío un comando de copia y la mesa de trabajo no se actualiza, ¿hay algún tipo de marca de tiempo en la mesa de trabajo que puedo tener acceso que confirmará que algo tiene o no ha sido capturado?

Yo estaba mirando el ChangeCount, pero no estoy seguro de lo que es exactamente, y la documentación no me ayuda mucho - cortina de humo

Cualquier simples y eficaces las ideas recibidas con gratitud!

¿Fue útil?

Solución

No creo que existe una notificación de esto, sin embargo puede sondear la mesa de trabajo.

pasteboard = [[NSPasteboard generalPasteboard] retain];
[NSTimer scheduledTimerWithTimeInterval:0.25 target:self
                               selector:@selector(pollPasteboard:)
                               userInfo:nil repeats:YES];

- (void)pollPasteboard:(NSTimer *)timer {
    NSInteger currentChangeCount = [pasteboard changeCount];
    if (currentChangeCount == previousChangeCount)
        return;
    NSLog(@"Pasteboard updated: %@", [pasteboard types]);
    previousChangeCount = currentChangeCount;
}

Otros consejos

Sólo tienes que copiar el mismo archivo JPEG desde múltiples veces escritorio y verá el trabajo no exactamente con

NSLog(@"Pasteboard updated: %@", [pasteboard types]); (

veces:

2014-05-25 12:14:20.014 PB1[65771:303] (
    "public.file-url",
    "CorePasteboardFlavorType 0x6675726C",
    "dyn.ah62d4rv4gu8y6y4grf0gn5xbrzw1gydcr7u1e3cytf2gn",
    NSFilenamesPboardType,
    "dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu",
    "Apple URL pasteboard type"
)

veces:

2014-05-25 12:14:25.482 PB1[65771:303] (
    "public.file-url",
    "CorePasteboardFlavorType 0x6675726C",
    "dyn.ah62d4rv4gu8y6y4grf0gn5xbrzw1gydcr7u1e3cytf2gn",
    NSFilenamesPboardType,
    "dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu",
    "Apple URL pasteboard type",
    "com.apple.icns",
    "CorePasteboardFlavorType 0x69636E73",
    fccc,
    "public.utf16-external-plain-text",
    "CorePasteboardFlavorType 0x75743136",
    "public.utf8-plain-text",
    NSStringPboardType,
    "public.tiff",
    "NeXT TIFF v4.0 pasteboard type"
)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top