В Windows/C# Как открыть трубку и получить от них йоханал?C#

Место общения программистов C#
Anonymous
В Windows/C# Как открыть трубку и получить от них йоханал?

Сообщение Anonymous »

Я хотел бы построить фальшивый хост Gimp в C# для запроса /запустить плагин Windows Gimp.

для справки, в конце этого сообщения вы найдете то, что я понял из протокола, чтобы поговорить с плагином Gimp. 3 вещи
  • Используйте CreatePipe из kernel32, затем ioChannel.fromhandle

    // сбои с системой. Iochannel (fd [0]);

    // не удастся после
    Некоторые секунды с (0xc0000409)
  • Использовать _pipe из msvcrt.dll then _get_osfhandle (fd [0]) ) ) ) ) ) ) )
    Программа собирается с использованием Visual Studio в качестве «любого ЦП» без «предпочтения 32 бита».
    Глиб ссылается через NUGET. < /p>
    ==== />
  • Open pipe;
  • Fork the program;
  • run '"C:\Program Files\GIMP 3\lib\gimp\3.0\plug-ins\fractal-explorer\fractal-explorer.exe" -gimp 277 5 4 -query 0' as the child
    ping/pong text in the трубы.ARG_PROGNAME, // self explaining
    ARG_GIMP, // string "-gimp"
    ARG_PROTOCOL_VERSION, // 277 looks strange but will pass it anyways
    ARG_READ_FD, // int that maps the file descriptor for reading; here 5
    ARG_WRITE_FD, // int that maps the file descriptor for reading; here 4
    ARG_MODE, // string '-run', '-query','-init'
    ARG_STACK_TRACE_MODE, // debug mode 0 = no debug
    [/code]
    Команды будут прочитаны в плагине

    см. https://gitlab.gnome.org/gnome/gimp/-/b ... imp/gimp.c строка 440

    Код: Выделить всё

    ...
    read_channel  = g_io_channel_win32_new_fd (atoi (argv[ARG_READ_FD]));
    write_channel = g_io_channel_win32_new_fd (atoi (argv[ARG_WRITE_FD]));
    ...
    
    = это создаст iochannel для общения с родительским процессом.>

    Подробнее здесь: https://stackoverflow.com/questions/797 ... -from-them

Вернуться в «C#»