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 - problema finestra
Forum - C# / VB.NET - problema finestra

Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 15:14
Lunedì, 29/09/2008
Questo topic è stato chiuso dal moderatore

un piccolo problemino in vb.net...

avevo intenzione di fare in una parte di programma una funzione ke mi spostasse la finestra (di un altro programma)in un altro punto dello schermo...
cioè di spostare la finestra di un altro programma tramite codice! esiste il modo?

ps, la finestra da spostare è in un punto a caso dello skermo, quindi non posso trascinarla cn il mouse perche non so le coordinate(X,Y)...
so ke ilTotem sapra aiutarmi! almeno lo spero!XD

grazie comunque

Ultima modifica effettuata da gianluca il 29/09/2008 alle 15:15
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:24
Lunedì, 29/09/2008
Usa la funzione SetWindowPos di user32.dll:
http://www.pinvoke.net/default.aspx/coredll/SetWindowPos.html

PM
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 18:03
Lunedì, 29/09/2008
cosa sbaglio???



mi sa ke non mi riconosca il primo valore! cioè "ByVal hwnd As Long" come lo trovo?

Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.  
  3.     Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  4.     Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  5.     Public Const SWP_FRAMECHANGED = &H20
  6.     Public Const HWND_TOP = 0
  7.     Public Const HWND_TOPMOST = -1
  8.     Public Const HWND_NOTOPMOST = -2
  9.     Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED
  10.     Public Const SWP_HIDEWINDOW = &H80
  11.     Public Const SWP_NOACTIVATE = &H10
  12.     Public Const SWP_NOCOPYBITS = &H100
  13.     Public Const SWP_NOMOVE = &H2
  14.     Public Const SWP_NOOWNERZORDER = &H200
  15.     Public Const SWP_NOREDRAW = &H8
  16.     Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
  17.     Public Const SWP_NOSIZE = &H1
  18.     Public Const SWP_NOZORDER = &H4
  19.     Public Const SWP_SHOWWINDOW = &H40
  20.     Dim X, Y As Integer
  21.     Dim Nome As String
  22.  
  23.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  24.         Nome = TextBox3.Text
  25.         X = TextBox1.Text
  26.         Y = TextBox2.Text
  27.         Dim intReturn As Integer = FindWindowA(Nome, "")
  28.         SetWindowPos(intReturn, 0, X, Y, 0, 0, SWP_SHOWWINDOW)
  29.     End Sub
  30. End Class



ho provato questo modo ma non mi cambia nulla anke cambiando i valori di X e Y

Ultima modifica effettuata da gianluca il 29/09/2008 alle 18:08
PM
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 19:41
Lunedì, 29/09/2008
OOOOOOK! c'è l'ho fatta! ho trovato l'handle del programma provando e riprovando! grazie ancora totem:love:

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:10
Martedì, 30/09/2008
Ricordati che gli handle sono sempre interi a 32 bit, mentre Long è a 64 bit: in questi casi basta sostituirlo con Int32 o IntPtr.
Comunque, se hai finito poss anche chiudere...

PM
Avatar
gianluca (Normal User)
Pro


Messaggi: 103
Iscritto: 23/06/2008

Segnala al moderatore
Postato alle 14:35
Mercoledì, 01/10/2008
sisi, fai pure... grazie ancora...

PM