Здравствуйте, Miem, Вы писали:
M>Здравствуйте, ABCDEFG, Вы писали:
ABC>> Я проверил, действительно SetForegroundWindow не поднимает окно если вызов из другого процесса, неужели остается только Remoting?
M>У меня вот так уже давно работает:
M>M>.......
M>......
M> bool createdNew;
M> System.Threading.Mutex mutex = new System.Threading.Mutex(false, "My mutex", out createdNew);
M> if (!createdNew)
M> {
M> //получаем имя нашего процесса (название файла без расширения '.exe')
M> string processName = System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName;
M> processName = processName.Substring(0, processName.IndexOf(".exe"));
M> System.Diagnostics.Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
M> //перебираем все процессы с искомым именем
M> foreach(System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName(processName))
M> {
M> //текущий экземпляр нас не интересует
M> if (process.Id == currentProcess.Id)
M> continue;
M> //могут быть разные приложения с одинаковым именем
M> //исполняемого файла. Проверяем что-бы это был 'наш' файл
M> if (process.MainModule.FileName != currentProcess.MainModule.FileName)
M> continue;
M> //Активизируем основное окно приложения
M> SetForegroundWindow(process.MainWindowHandle);
M> ShowWindow(process.MainWindowHandle, SW_MAXIMIZED);
M> return;
M> }
M> }
M> ......
M> ......
M> }
M> [System.Runtime.InteropServices.DllImport("User32.dll")]
M> static extern int SetForegroundWindow(IntPtr hWnd);
M> const int SW_MAXIMIZED = 3;
M> [System.Runtime.InteropServices.DllImport("User32.dll")]
M> static extern int ShowWindow(IntPtr hWnd, Int32 Mode);
M>
M>Особых глюков не замечено
M>Вместо SW_MAXIMIZED можно использовать другие константы.
А не подскажете как свое же окно активировать???(После драг дропа в ворд необходимо при навединии мыши на свое окно активиролвать его для следующих операций). Пытаюсь активировать — либо мигает в панели задач либо не рабоатет. Пробовал многими способами — одно и то же. SW_MAXIMIZED — активирует всё как надо — но раскрывать его не нужно, SW_NORMAL,SW_SHOW,SW_RESTORE — не работают — опять моргания...
Help me if you can!