Focus da restituire a programma chiamante

mercoledì 28 maggio 2008 - 15.13

jesus_was_rasta Profilo | Newbie

Ciao a tutti.
Ho scritto una piccola applicazione .NET, un exe eseguibile da riga di comando.
I miei colleghi la usano da un gestionale COBOL per interrogare web service.
In pratica chiamano questo exe che mostra un piccolo form con dei log sullo stato d'avanzamento delle operazioni, il quale si chiude da solo ad operazione conclusa.
Abbiamo un problema: dopo che il mio exe .net è stato chiamato, non restituisce il focus alla finestra chiamante; ciò è molto fastidioso, perché essendo applicazione da banco di vendita, perdere il focus significa creare disagio all'utente.
Sapete darmi qualche consiglio su come aggirare il problema?

Grazie.

freeteo Profilo | Guru

ciao,
puoi girare nei processi di quella macchina, ed attivare il processo che ti ha lanciato dicendolo a Windows tramite API "SetForegroundWindow" che referenzi tramite "DllImport" (ovvero gli dici che è di windows).

Tradotto in codice:

[DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); private void EsciButton_Click(object sender, EventArgs e) { Process[] processi = Process.GetProcesses(); foreach (var processo in processi) { if (processo.ProcessName == "Skype") SetForegroundWindow(processo.MainWindowHandle); } Application.Exit(); }

come vedi prima di uscire ( "Application.Exit(); " ) dall'applicazione, dice a Windows che il fuoco deve essere dato all'applicazione "Skype".
Nel tuo caso ovviamente sarà il nome di quell'applicazione che ti chiama, e il nome corretto lo trovi debuggando se non lo sai.

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

jesus_was_rasta Profilo | Newbie

Grazie mille, è chiaro sia concettualmente che in pratica.
Verifico appena posso, poi ti dico.
Grazie ancora! :-)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5