В 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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