Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb.Net] Handle di una finestra
Forum - C# / VB.NET - [vb.Net] Handle di una finestra - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 11:15
Domenica, 05/04/2009
girovagando per la rete ho trovato anche l' API FindWindow solo che l' handle trovato con il tuo codice non coincide con quello trovato da questa funzione, come mai? Ho passato tutti e due gli handle delle funzioni a destroywindow ma mi dice divisione per zero come mai? grazie

Codice sorgente - presumibilmente VB.NET

  1. Public Class Form
  2.     Private Function trovahandle() As Boolean
  3.         Dim hwnd As Long = FindWindow(Nothing, "prova")
  4.         DestroyWindow(hwnd)
  5.     End Function
  6.     Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As _
  7. String, ByVal lpWindowName As String) As Long
  8.     Declare Function DestroyWindow Lib "user32.dll" (ByVal hWnd As IntPtr) As Boolean
  9.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  10.         trovahandle()
  11.  
  12.     End Sub



mi dice hwnd (un numero lunghissimo) OverflowException non è stata gestita

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 12:12
Domenica, 05/04/2009
La signature del metodo è sbagliata. Hai usato Long al posto di Integer: fai attenzione da dove copi il codice, poiché quello era per vb6. Hai anche usato FindWindow in modo sbagliato, poiché se passi Nothing al primo parametro non otterrai buoni risultati. Documentati sulla funzione qui:
http://pinvoke.net/default.aspx/user32/FindWindow.html
E prova anche altre varianti più semplici, come ad esempio FindWindowByCaption.

PM Quote
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 14:17
Domenica, 05/04/2009
con il codice riportato nella guida e con i tuoi suggerimenti ottengo l' handle, poi lo passo alla funzione Destroywindow ma non succede nulla , la cartella rimane aperta. dove sbaglio?In che senso il nothing non mi da buoni risultati? Non so cosa metterci, sui vari esempi c' è sempre nothing o al massimo vbnullstring ( vb6), spiegami se puoi!

ecco il codice:


Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.  
  3.     Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  4. (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
  5.     Declare Function DestroyWindow Lib "user32.dll" (ByVal hWnd As IntPtr) As Boolean
  6.     Private Function trovahandle() As Boolean
  7.         Dim hWnd As IntPtr
  8.         Dim titolo As String
  9.         titolo = "prova"
  10.         hWnd = FindWindow(Nothing, titolo)
  11.         MsgBox(hWnd)
  12.         DestroyWindow(hWnd)
  13.     End Function
  14.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  15.         trovahandle()
  16.     End Sub
  17. End Class



forse c' è qualcosa di sbagliato nei tipi di dati?

Ultima modifica effettuata da swet il 06/04/2009 alle 16:03
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo