@Alex_LC

Почему FindWindow не возвращает id окна при первом запуске?

Есть WPF приложение которое на вход получает аргументы командной строки при запуске, и передает их через SendMessage первому запущенному экземпляру приложения, вот код:
class Program : Application
    {
        [System.STAThreadAttribute()]
        public static void Main() {
            bool createdNew = true;
            using (Mutex mtx = new Mutex(true, "AudioPlayer", out createdNew)) {
                if (createdNew)
                {
                    Program app = new Program();
                    app.InitializeComponent();
                    app.Run();
                }
                else {
                    MessageHelper msg = new MessageHelper();
                    int result = 0;
                    int hWnd = msg.getWindowId(null, "AudioPlayer");
                    result = msg.sendWindowsStringMessage(hWnd, 0, Environment.GetCommandLineArgs()[1]);
                }
            }
        }

        public void InitializeComponent() {
            this.StartupUri = new Uri("MainWindow.xaml", System.UriKind.Relative);
        }
    }

класс MessageHelper: https://gist.github.com/BoyCook/5075907

так вот, если приложение уже запущенно, то при повторном запуске аргументы спокойно передаются и складируются в List в классе MainWindow.xaml.cs т.к. id совпадают и SendMessage работает,
но в случае первого запуска с несколькими аргументами FindWindow(в нашем случае getWindowId) возвращает ноль и обрабатывается только первый аргумент.
Чего не хватает чтобы все работало как надо?

UPD:
по задумке программа должна открыть несколько выделенных файлов и сохранить пути этих файлов в первом экземпляре программы и использовать их дальше по назначению
  • Вопрос задан
  • 290 просмотров
Решения вопроса 1
Боюсь показаться неконструктивным, но: Ваше "запущенное" приложение может иметь элементарные проверки на результат, который возвращают используемые им функции? Или может debug log? Если бы это присутствовало - вопроса бы не возникло.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы