Программа уже запущена ранее проверьте возможно она свернута в трей

Наверное, он просто скрыты. Отключите в Свойствах Панели задач опцию «Скрывать неиспользуемые значки».

Отвечает Alkonavt :

Вовсе они не скрыты, это обычный глюк экспишки. Просто, иногда бывает, explorer.exe перезапускается (проподает на несколько мин раб стол) и потом их не видит. Можно сделать следущее — просто убить в диспечере задач эти процессы (те проги, которых ты не видишь в трее)а потом их перезапустить.

Отвечает Shurovik :

У трея есть такая функция, как скрытие неиспользуемых значков. Рядом с треем должна быть кнопочка со стрелкой влево. Нажмите её — и увидите, что скрыто в трее.

Источник: www.izcity.com

Movavi Support

Наиболее вероятно, что программа уже была запущена ранее. В этом случае иконка программы должна присутствовать в системном трее (обычно он находится в правом нижнем углу экрана, рядом с часами).

Что делать если пишет, что приложение уже запущено, а оно нихуя не запущено?

Иконка Screen Capture может находиться как в видимой части,

так и среди скрытых значков в системном трее.

*Иконка программы может выглядеть иначе в зависимости от версии продукта.

Кликните по иконке Screen Capture правой кнопкой мыши и выберите пункт «Показать».

После этого окно программы развернётся и Вы сможете продолжить работу с ней.

Если такого значка нет в системном трее, нажмите Ctrl+Shift+Esc, чтобы запустить Диспетчер задач.

Переключитесь на вкладку Процессы, найдите процесс ScreenCapture.exe или процесс, содержащий в своём названии Movavi, завершите этот процесс и запустите программу еще раз.

Была ли эта статья полезной? Да Нет

К сожалению, мы не смогли помочь вам в разрешении проблемы. Ваш отзыв позволит нам улучшить эту статью.

Читайте также:
Как установить программу на компьютер формата rar

Статьи по теме

To offer you a better experience, this site uses profile cookies, including cookies from third parties. By closing this pop-up, scrolling down the page or clicking on any element on the page, you consent to the use of cookies and agree to Movavi using your personal data in accordance with our Privacy Policy. You also confirm that you meet the minimum age requirements. Read our Privacy Policy.

Источник: movavi.freshdesk.com

Программа запущена но не разворачивается окно

Как при повторном запуске, открыть свернутое приложение?

введите сюда описание изображения

При первом запуске приложения, оно сворачивается в трей. При повторном запуске приложения, отображается уведомление, что приложение уже запущено. Подскажите, как, при повторном запуске открывать приложение из трея? Код внутри Program.cs

static void Main() < Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); bool onlyInstance; Mutex mtx = new Mutex(true, «MyApp», out onlyInstance); if (onlyInstance) < Application.Run(new FormMain()); >else < MessageBox.Show(«Приложение уже запущено», «Сообщение», MessageBoxButtons.OK, MessageBoxIcon.Asterisk); >>

Не получается добавить такой код в Program.cs this.WindowState = FormWindowState.Normal; так как нужно вместо this указать главную форму. Не могу разобраться как это сделать.

Отслеживать
задан 13 мая 2017 в 13:28
513 7 7 серебряных знаков 24 24 бронзовых знака

Тем или иным способом нужно послать сообщение первому (свернутому) экземпляру приложения. Способы есть разные, посмотреть можно здесь.

13 мая 2017 в 15:20

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Решение с использованием Mutex и NamedPipe (без использования DllImport ):

using System; using System.IO.Pipes; using System.Threading; using System.Threading.Tasks; namespace Test < class Program < static void Main(string[] args) < using (Mutex mutex = new Mutex(true, «myApp»)) < if (!mutex.WaitOne(TimeSpan.FromSeconds(0.5), false)) < using (NamedPipeClientStream stream = new NamedPipeClientStream(«myApp»)) < stream.Connect(); stream.WriteByte(100); return; >> using (NamedPipeServerStream stream = new NamedPipeServerStream(«myApp»)) < Task.Run(() =>WaitClientMessage(stream)); try < RunProgramm(); >finally < mutex.ReleaseMutex(); >> > > private static void RunProgramm() < // Здесь нужно запустить программу Console.WriteLine(«Started!»); Console.ReadLine(); >private static void WaitClientMessage(NamedPipeServerStream stream) < while (true) < stream.WaitForConnection(); stream.ReadByte(); // Здесь нужно активировать программу, показать окно или т.п. Console.WriteLine(«Activate me!»); stream.Disconnect(); >> > >

Читайте также:
Как установить программу с расширением dmg

Отслеживать
ответ дан 19 мая 2017 в 11:40
Андрей NOP Андрей NOP
28.3k 4 4 золотых знака 39 39 серебряных знаков 77 77 бронзовых знаков

На линуксах под моно NamedPipe похоже не работает. Не проверяли?

Прямо сейчас исключения нет под рукой.

22 апр 2018 в 18:40
Не, на линуксе .NET вообще не пробовал
22 апр 2018 в 20:18

static class Program < //для FindWindow, чтобы найти хендл нужного окна [DllImportAttribute(«User32.dll»)] private static extern int FindWindow(String ClassName, String WindowName); //SetForeground, чтоб активировать окно по хендлу [DllImportAttribute(«User32.dll»)] private static extern IntPtr SetForegroundWindow(int hWnd); /// /// Главная точка входа для приложения. /// [STAThread] static void Main() < Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //поиск окна по заголовку int hWnd = FindWindow(null, «Form1»); if (hWnd >0) //нашли < SetForegroundWindow(hWnd); //активировали >else//не нашли < Application.Run(new Form1()); >> >
Отслеживать
ответ дан 13 мая 2017 в 14:12

Ivan Kramarchuk Ivan Kramarchuk
2,108 1 1 золотой знак 12 12 серебряных знаков 29 29 бронзовых знаков
Таким образом программа два раза запустится, не?
13 мая 2017 в 14:15
13 мая 2017 в 14:16

13 мая 2017 в 14:27

Спасибо, но код слишком сложный. первый вариант был более понятен, разве нельзя использовать if и else в прошлом коде?

13 мая 2017 в 14:46

Код очень простой. DllImportAttribute загружают функции из dll Windows, их понимать не надо, просто скопируйте. Далее функция FindWindow ищет уже существующее окно по заголовку. SetForegroundWindow вызывает существующее окно на передний план.

13 мая 2017 в 14:50

Когда запускаешь второе приложение, то оно запускается в отдельном процессе, и, соответственно, во втором процессе ты не имеешь прямую ссылку к объекту в первом процессе.

Читайте также:
Топ шахматных программ на компьютер

Чтобы поднять окно из первого процесса нужно использовать межпроцессорное взаимодействие WCF, NetRemoting и т.д. Но в данном случае есть практика регистрации своего сообщения с отсылкой его в Windows очередь. Для этого используется функция win32 RegisterWindowMessage .

using System; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; namespace WindowsFormsApplication1 < static class Program < [DllImport(«user32.dll», SetLastError = true, CharSet = CharSet.Auto)] static extern int RegisterWindowMessage(string lpString); [DllImport(«user32»)] public static extern bool PostMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam); internal static int WM_SHOWFIRSTINSTANCE; [STAThread] static void Main() < const int HWND_BROADCAST = 0xffff; WM_SHOWFIRSTINSTANCE = RegisterWindowMessage(«MY_Message»); bool onlyInstance; Mutex mtx = new Mutex(true, «MyApp», out onlyInstance); if (onlyInstance) < Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); >else < MessageBox.Show(«Приложение уже запущено», «Сообщение», MessageBoxButtons.OK, MessageBoxIcon.Asterisk); PostMessage((IntPtr)HWND_BROADCAST, WM_SHOWFIRSTINSTANCE, IntPtr.Zero,IntPtr.Zero); >> > >
using System.Windows.Forms; namespace WindowsFormsApplication1 < public partial class Form1 : Form < public Form1() < InitializeComponent(); >protected override void WndProc(ref Message m) < if (m.Msg == Program.WM_SHOWFIRSTINSTANCE) < this.WindowState = FormWindowState.Normal; this.Show(); >base.WndProc(ref m); > > >

Источник: ru.stackoverflow.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru