Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Handle di finestra non creato
Forum - C# / VB.NET - Handle di finestra non creato

Avatar
Question (Normal User)
Rookie


Messaggi: 58
Iscritto: 14/12/2010

Segnala al moderatore
Postato alle 0:59
Sabato, 12/03/2011
Ciao ragazzi,
avrei un problemino con l'handle di una form...
Praticamente ho bisogno di eseguire un invoke in un'operazione di multithreading e mi restituisce un errore dicendo che l'handle della finestra non è stato creato :/

Sin qui uno potrebbe anche pensare che io non abbia caricato la form, ma non è così!
Questa viene "mostrata" molto prima (circa 5-8 secondi) tanto che io (umano) ho addirittura il tempo di muoverla per lo screen xD
Inoltre le proprietà IsHandleCreated del controllo e della form restituscono True.

Che fare? :-|

Ultima modifica effettuata da Question il 12/03/2011 alle 1:01


Ma ovviamente x64
PM
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1717
Iscritto: 04/05/2008

Up
-1
Down
V
Segnala al moderatore
Postato alle 2:06
Sabato, 12/03/2011
qui trovi un mio progetto vecchiotto con delle funzioni per manipolare finestre attive con il relativo handle, e anche con funzione per ricercare un relativo handles di una finestra, e molto altro materiale utile.

http://www.pierotofy.it/pages/projects/project.php?id=518

se vuoi solo quella funzione te la illustro,
e situata nel progetto stesso

Codice sorgente - presumibilmente C# / VB.NET

  1. /// <summary>
  2.         /// Funzione Usata per trovare l'handle
  3.         /// </summary>
  4.         /// <param name="ZeroOnly">Parametro statico di base</param>
  5.         /// <param name="lpWindowName">Nome della finestra</param>
  6.         /// <returns>Restituisce il valore</returns>
  7.         [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
  8.         static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
  9.  
  10.  
  11.  
  12.  /// <summary>
  13.         /// Cerca l'handle di un applicazione Specificandone il Nome
  14.         /// </summary>
  15.         /// <param name="ApplicationName">Richiede il nome di un Applicazione</param>
  16.         /// <returns>Ritorna l'handles cercato</returns>
  17.         public IntPtr FindWindowText(string ApplicationName)
  18.         {
  19.             IntPtr hWnd = FindWindowByCaption(IntPtr.Zero, ApplicationName);
  20.             HandleSearched = hWnd;
  21.             return hWnd;
  22.         }




poi cliccando su un pulsante


Codice sorgente - presumibilmente C# / VB.NET

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.            
  4.             label3.Text = wd.FindWindowText(textBox1.Text).ToString();
  5.  
  6.         }




Ma veramente non capisco come questo possa tornarmi utile... - Question - 12/03/11 12:59


PM