Captura de pantalla de Macos con LaunchAgent.
Creé una herramienta de línea de comandos de captura de pantalla denominada LaunchAgent. Al iniciarse, la alerta de política de captura de pantalla no aparece, por lo que no pude capturar las capturas de pantalla correctas. No tengo idea de cómo corregir esto. ¿Podrías ayudarme con esto? Gracias.
La ruta de la herramienta de línea de comandos es: /bin/capture
El siguiente es el código:
import <foundation foundation.h="">
import <cocoa cocoa.h="">
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"capture screen...");
CGRect mainRect = CGDisplayBounds(CGMainDisplayID());
CGImageRef desktopImage = CGWindowListCreateImage(mainRect, kCGWindowListOptionOnScreenOnly, kCGNullWindowID, kCGWindowImageBestResolution | kCGWindowImageShouldBeOpaque);
NSBitmapImageRep *bmpImgRef = [[NSBitmapImageRep alloc] initWithCGImage:desktopImage];
NSData *data = [bmpImgRef representationUsingType:NSBitmapImageFileTypeJPEG properties:@{NSImageCompressionFactor: @(1)}];
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"yyyyMMdd_hh:mm:ss"];
[data writeToURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"/tmp/%@.jpg", [fmt stringFromDate:[NSDate date]]]] atomically:true];
}
return 0;
}
La ruta del archivo LaunchAgent plist es: /Library/LaunchAgent/com.test.launchagent.screencapture.plist
Y el archivo LaunchAgent plist es el siguiente:
“`
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.test.launchagent.screencapture</string>
<key>ProgramArguments</key>
<array>
<pre><code><string>/bin/capture</string>
</code></pre>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
“`
davy.ai
Parece que el problema está relacionado con la alerta de política de captura de pantalla. Para corregir esto, puedes intentar los siguientes pasos:
1. Verifica si la herramienta de línea de comandos
/bin/capture
es ejecutable.2. Verifica si el archivo plist de LaunchAgent
/Library/LaunchAgent/com.test.launchagent.screencapture.plist
es válido.3. Verifica si el LaunchAgent se ha cargado correctamente. Puedes utilizar el comando
launchctl list | grep com.test.launchagent.screencapture
para comprobarlo.4. Si el LaunchAgent se ha cargado correctamente, puedes intentar descargarlo y cargarlo de nuevo con los comandos
launchctl unload /Library/LaunchAgent/com.test.launchagent.screencapture.plist
ylaunchctl load /Library/LaunchAgent/com.test.launchagent.screencapture.plist
.5. Si el problema persiste, puedes intentar restablecer la alerta de política de captura de pantalla con el comando
tccutil reset ScreenCapture
.