选择屏幕相关

在这里插入图片描述

PARAMETERS show_all AS CHECKBOX USER-COMMAND flag.
PARAMETERS hide  RADIOBUTTON GROUP  rd USER-COMMAND flag2 DEFAULT 'X'.
PARAMETERS show  RADIOBUTTON GROUP  rd .
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME .
  PARAMETERS: p1 TYPE c LENGTH 10 ,
              p2 TYPE c LENGTH 10.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t.
  PARAMETERS: p3 TYPE c LENGTH 10 MODIF ID bl2,
              p4 TYPE c LENGTH 10 MODIF ID bl2.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME .
  PARAMETERS: p5 TYPE c LENGTH 10 MODIF ID bl3,
              p6 TYPE c LENGTH 10 MODIF ID bl3.
SELECTION-SCREEN END OF BLOCK b3.

INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF show_all = 'X'  AND screen-group1 = 'BL2'.
      screen-active = '1'."显示
      MODIFY SCREEN.
    ELSEIF screen-group1 = 'BL2'.
      screen-active = '0'."隐藏
      MODIFY SCREEN.
    ENDIF.
    IF  show = 'X'  AND screen-group1 = 'BL3'.
      screen-active = '1'.
      MODIFY SCREEN.
    ELSEIF  screen-group1 = 'BL3'.
      screen-active = '0'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现多屏选择录制屏幕某位置为gif,可以使用ffmpeg库的相关功能。 首先需要获取所有屏幕的信息,可以使用SDL库的相关功能,代码如下: ```c #include <stdio.h> #include <SDL2/SDL.h> int main(int argc, char *argv[]) { if (SDL_Init(SDL_INIT_VIDEO) != 0) { printf("SDL_Init Error: %s\n", SDL_GetError()); return 1; } int num_displays = SDL_GetNumVideoDisplays(); printf("%d displays found:\n", num_displays); for (int i = 0; i < num_displays; i++) { SDL_DisplayMode mode; SDL_GetDesktopDisplayMode(i, &mode); printf("Display %d: %dx%d\n", i, mode.w, mode.h); } SDL_Quit(); return 0; } ``` 然后可以使用ffmpeg库的AVFoundation输入设备来获取指定屏幕的视频流,代码如下: ```c #include <stdio.h> #include <SDL2/SDL.h> #include <libavdevice/avdevice.h> #include <libavformat/avformat.h> int main(int argc, char *argv[]) { if (SDL_Init(SDL_INIT_VIDEO) != 0) { printf("SDL_Init Error: %s\n", SDL_GetError()); return 1; } int screen_index = 0; // 指定屏幕的索引 SDL_DisplayMode mode; SDL_GetDesktopDisplayMode(screen_index, &mode); char screen_name[16]; snprintf(screen_name, sizeof(screen_name), "%dx%d:%d.%d", mode.w, mode.h, screen_index, 0); avdevice_register_all(); AVInputFormat *input_format = av_find_input_format("avfoundation"); AVFormatContext *format_context = NULL; int ret = avformat_open_input(&format_context, screen_name, input_format, NULL); if (ret != 0) { printf("avformat_open_input Error: %s\n", av_err2str(ret)); return 1; } ret = avformat_find_stream_info(format_context, NULL); if (ret < 0) { printf("avformat_find_stream_info Error: %s\n", av_err2str(ret)); return 1; } AVStream *video_stream = NULL; for (int i = 0; i < format_context->nb_streams; i++) { if (format_context->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { video_stream = format_context->streams[i]; break; } } if (video_stream == NULL) { printf("video stream not found\n"); return 1; } // ... // 这里可以使用ffmpeg库的相关功能来处理视频流并输出gif // ... avformat_close_input(&format_context); SDL_Quit(); return 0; } ``` 处理视频流并输出gif的具体方法可以参考ffmpeg库的相关文档和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值