У меня есть собственное приложение для Windows, которое неожиданно ведет себя по-разному в системе с несколькими мониторами, в зависимости от того, как оно было запущено. Я ожидаю, что он должен вести себя одинаково для каждого метода запуска. Каждый метод включает в себя открытие файла, который был связан с приложением.

Вот методы запуска, которые я пробовал, и получающееся в результате поведение:

  1. Дважды щелкните связанный файл в проводнике:

    Приложение запускается, но пользовательский интерфейс открывается на любом мониторе, который включен, а не на основном дисплее, как было написано ранее. Части пользовательского интерфейса также отсутствуют при попытке взаимодействия с приложением.

  2. Перетащите связанный файл в исполняемый файл приложения в проводнике:

    Приложение открывается на правильном дисплее и ведет себя нормально.

  3. Запустите приложение из командной строки, запустив name_of_application.exe "file_to_open":

    Приложение открывается на правильном дисплее и ведет себя нормально.

  4. Щелкните правой кнопкой мыши соответствующий файл в проводнике и выберите «Открыть с помощью ...». Перейдите к установленному приложению и выберите его:

    Сначала вообще ничего не происходит. Затем примерно через 5 минут приложение открывается на правильном дисплее и ведет себя нормально. После этого повторное открытие того же связанного файла приводит к тому же поведению, описанному в методах 1-3, еще раз в зависимости от того, как файл открывается.

Я не уверен, имеет ли это значение, но это приложение .NET, написанное с использованием инфраструктуры WPF, предназначенной для .NET 4.7.2. Это 64-битное приложение. Код запрашивает основной монитор из .NET, который соответствует настройкам отображения системы пользователя.

Я проверил соответствующие записи реестра для ассоциации файлов, и ничто не кажется необычным. Смотрите следующие снимки экрана (связанный тип файла .sejs):

Тип файла ассоциации в реестре

Ассоциация приложений в реестре

Я также попытался удалить значение "Command", показанное на втором изображении, из реестра, что никак не повлияло. Насколько я могу судить, нет ничего необычного в этой ассоциации файлов, которая бы вызывала такое поведение.

Я также попытался восстановить программу установки, восстановить установку и перезагрузить компьютер.

Это приводит меня к паре вопросов:

  1. Что может заставить Windows открывать приложение на разных мониторах в зависимости от того, как соответствующий файл отправляется в приложение?
  2. Что может вызвать длительную задержку при открытии приложения в Windows, если я открываю его во время повторного связывания файла с ним?

1 ответ1

0

Описанный вами эффект во многом зависит от системного вызова, запускающего файл. Вызов Windows API для выполнения программы имеет много параметров, поэтому все зависит от программиста Microsoft.

Такие различия распространены в Windows, которая имеет огромную базу кода, написанную многими программистами. Нужно изучить различия и адаптироваться, так как Windows - это закрытая система. Вы / мы не можем "починить" Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .