Login
Buscar
Quem está conectado
Há 24 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 23 Visitantes :: 2 Motores de buscaalceu11
[ Ver toda a lista ]
O recorde de usuários online foi de 337 em 27/12/2010, 08:00
Brasília
| |
Estamos no Twitter

Nossa Comunidade

Nosso Grupo

Últimos assuntos
Top dos mais postadores
| Marcos Guedes | ||||
| hugo | ||||
| alceu11 | ||||
| Julio | ||||
| m@r<3|o | ||||
| mfelis | ||||
| Tales Ruan | ||||
| Nelson Arcas | ||||
| _batmanvfp_ | ||||
| marcio |
Estatísticas
Temos 3637 usuários registradosO último usuário registrado atende pelo nome de reginaldolimas
Os nossos membros postaram um total de 13978 mensagens em 1958 assuntos
Trazer para frente uma aplicação em execução
Página 1 de 1 • Compartilhe •
Trazer para frente uma aplicação em execução
Amigos, estou com mais uma dúvida.
Em algumas aplicações, preciso permitir apenas uma execução por vez...
Então para verificar se o aplicativo já está sendo executado, utilizo o seguinte código no método Main.
O que ocorre, é que se o programa estiver em execução, é exibido apenas uma mensagem para o usuário, porém eu gostaria de trazer a aplicação para frente.
Alguém saber como faço isto?
Desde já, agradeço.
Em algumas aplicações, preciso permitir apenas uma execução por vez...
Então para verificar se o aplicativo já está sendo executado, utilizo o seguinte código no método Main.
- Código:
static void Main(string[] args)
{
/* Verifica se o programa já está em execução */
Process[] ListaProcessos = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (Process P in ListaProcessos)
if (P.Id != Process.GetCurrentProcess().Id)
{
Console.Write("Este processo já está sendo executado.\nPressione uma tecla para encerrar...");
Console.ReadKey();
return;
}
/* Fim - Verifica se o programa já está em execução */
continuaExecuacao(); // Método chamado para executar a aplicação, caso não esteja em uso
}
O que ocorre, é que se o programa estiver em execução, é exibido apenas uma mensagem para o usuário, porém eu gostaria de trazer a aplicação para frente.
Alguém saber como faço isto?
Desde já, agradeço.
Última edição por Marcos Guedes em 30/7/2010, 14:31, editado 1 vez(es)
_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Trazer para frente uma aplicação em execução
Vasculhando os métodos de 'Process', vi que tem o método Start(), que de acordo com o help, inicia ou "reutiliza" o processo...
Talvez nessa "reutilização" ele venha para frente, não?
ps: Também tenho esse mesmo problema... :-)
Talvez nessa "reutilização" ele venha para frente, não?
ps: Também tenho esse mesmo problema... :-)
_________________
[Você precisa estar registrado e conectado para ver esta imagem.]
Lucy - Hallelujah (Alexandra Burke) --> D.Maria cantando!!!
PalcoMP3/RatoMG
RIK - CD Demo

cabeludo- Participa Bastante

Re: Trazer para frente uma aplicação em execução
Testei, mas não funciona.
Estou tentando encontrar uma solução com API do Windows, utilizando a função BringWindowToTop()
Estou tentando encontrar uma solução com API do Windows, utilizando a função BringWindowToTop()
_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Trazer para frente uma aplicação em execução
Aew, pessoal, consegui!!!
Adaptei o código que postei na primeira mensagem para o seguinte:
Namespaces necessários:
Adaptei o código que postei na primeira mensagem para o seguinte:
- Código:
static void Main()
{
/* Verifica se o programa já está em execução */
Process[] ListaProcessos = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (Process P in ListaProcessos)
{
if (P.Id != Process.GetCurrentProcess().Id)
{
SetForegroundWindow(P.MainWindowHandle);
return;
}
}
/* Fim - Verifica se o programa já está em execução */
continuaExecuacao(); // Método chamado para executar a aplicação, caso não esteja em uso
}
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
Namespaces necessários:
- Código:
using System.Runtime.InteropServices;
using System.Diagnostics;
Última edição por Marcos Guedes em 3/8/2010, 11:22, editado 1 vez(es)
_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Re: Trazer para frente uma aplicação em execução
Parabens bonitão! Essa vai pra biblioteca!
_________________
[Você precisa estar registrado e conectado para ver esta imagem.]
Lucy - Hallelujah (Alexandra Burke) --> D.Maria cantando!!!
PalcoMP3/RatoMG
RIK - CD Demo

cabeludo- Participa Bastante

Re: Trazer para frente uma aplicação em execução
A mesma coisa, mas utilizando LINQ
- Código:
Program.cs
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (checkPreviousRunning() == false) Application.Run(new frmMain());
}
static bool checkPreviousRunning()
{
var process =
(from p in Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)
where p.Id != Process.GetCurrentProcess().Id
select p).FirstOrDefault();
if (process != null)
{
SetForegroundWindow(process.MainWindowHandle);
return true;
}
else
return false;
}
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
}
Última edição por cabeludo em 30/7/2010, 15:33, editado 2 vez(es) (Razão : Faltou a declaração da classe, para facilitar um CTRL+C CTRL+V)
_________________
[Você precisa estar registrado e conectado para ver esta imagem.]
Lucy - Hallelujah (Alexandra Burke) --> D.Maria cantando!!!
PalcoMP3/RatoMG
RIK - CD Demo

cabeludo- Participa Bastante

Re: Trazer para frente uma aplicação em execução
Valeu, cabeludo!


_________________
Marcos Guedes - Programador e desenvolvedor Web.
Convidado, seja nosso seguidor no Twitter:
twitter.com/programacaobras
Marcos Guedes- Webmaster

Página 1 de 1
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
Início
» Criar Variáveis em sequencia
» No final a Impressora não Ejecta cem corta o papel
» Ajuda com Imagens no MySQL
» Instalando MySQL no linux
» Como Criar arquivos de Log`s para certos usuarios
» MySQL X VFP @MEMO
» Dirf
» EXE Instalador Não Executa
» SQL Server Setup
» localizar registro no postgreslq (alterar/incluir)
» Saber se existe uma tabela??
» Empacotar arquivos em um único executável
» VAGAS ANALISTA DE SISTEMAS - VISUAL FOX
» Escrever a DATA por extenso
» ActionScript - Introdução
» Selecionar campo com mais de 9 caracteres
» CEP do BRASIL e dos UFs do brasil com codigo do IBGE para nf - <<<
» Tutorial HTML
» PHP + CSS