coyote100 (Normal User)
Rookie
Messaggi: 50
Iscritto: 22/04/2013
|
Il programma funziona ma solo con il "notepad", infatti se apro la calcolatrice, quindi inserisco tra le virgolette "calc"(vedi codice) non si sposta.
Se mi potete aiutare..
Codice sorgente - presumibilmente VB.NET |
Public Class Form1 Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr Const HWND_TOPMOST As Integer = -1 Const HWND_NOTOPMOST As Integer = -2 Const SWP_NOSIZE As Integer = &H1 Const SWP_NOACTIVATE As Integer = &H10 Const SWP_SHOWWINDOW As Integer = &H40 Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As IntPtr, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim iHwnd As IntPtr = FindWindow("notepad", vbNullString)''inserire il programma desiderato SetWindowPos(iHwnd, HWND_TOPMOST, 100, 100, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE) End Sub End Class
|
|
|
Dark_light (Member)
Pro
Messaggi: 108
Iscritto: 11/04/2012
|
Ciao coyote100,
Innanzitutto ti invito a studiare il metodo File.Move che puoi trovare su msdn al seguente link http://msdn.microsoft.com/en-us/library/system.io.file.mov ...
Il malloppo che hai scritto(?) può essere sostituito decisamente da questo semplice codice:
Codice sorgente - presumibilmente VB.NET |
Dim filedamuovere As String Dim destinazionefile As String filedamuovere = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Calculator.lnk" destinazionefile = "C:\Users\nomeutente\Desktop\Calculator.lnk" If System. IO. File. Exists(filedamuovere ) = True Then System. IO. File. Move( filedamuovere, destinazionefile ) MsgBox("File spostato") End If
|
|
|
coyote100 (Normal User)
Rookie
Messaggi: 50
Iscritto: 22/04/2013
|
Io parlo di spostare un programma nel desktop, cioè x,y
|
|
coyote100 (Normal User)
Rookie
Messaggi: 50
Iscritto: 22/04/2013
|
C'è qualcuno che è in grado di aiutarmi!!!!!!
|
|
ampeg (Normal User)
Pro
Messaggi: 124
Iscritto: 21/04/2011
|
per la calcolatrice in windows7 devi scrivere "calcframe" e non "calc"
|
|
coyote100 (Normal User)
Rookie
Messaggi: 50
Iscritto: 22/04/2013
|
Ok, ma se volessi muovere programma esempio che si chiama orologio, come faccio?
|
|
ampeg (Normal User)
Pro
Messaggi: 124
Iscritto: 21/04/2011
|
il primo argomento dell'API FindWindow richiederebbe il nome della classe a cui appartiene la finestra da spostare
per poterlo ottenere bisogna fare diverse chiamate ad altre API
ma comunque con la stessa funzione è anche possibile specificare il titolo della finestra e tralasciare il nome della classe (questa va messa = Nothing)
Codice sorgente - presumibilmente VB.NET |
Dim iHwnd As IntPtr = FindWindow(Nothing, "Calcolatrice") ''inserire il programma desiderato SetWindowPos(iHwnd, HWND_TOPMOST, 100, 100, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE)
|
quindi nel secondo argomento metti il titolo esatto e completo come visualizzato nella finestra, l'API non fa distinzione tra maiuscole e minuscole
Ultima modifica effettuata da ampeg il 03/05/2013 alle 21:50 |
|
ampeg (Normal User)
Pro
Messaggi: 124
Iscritto: 21/04/2011
|
ho trovato un altro metodo che utilizza la proprietà MainWindowHandle della classe Process
in questo caso anziché passare il titolo della finestra passi direttamente il nome del processo
Codice sorgente - presumibilmente VB.NET |
' ottengo le istanze del processo specificato Dim proc() As Process = Process.GetProcessesByName("calc") Dim iHwnd As IntPtr For Each p As Process In proc If p.MainWindowHandle <> 0 Then ' ottengo l'hwnd della finestra principale del processo iHwnd = p.MainWindowHandle Exit For End If Next If (iHwnd <> 0) Then SetWindowPos(iHwnd, HWND_TOPMOST, 100, 100, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE) End If
|
Ultima modifica effettuata da ampeg il 03/05/2013 alle 22:31 |
|
coyote100 (Normal User)
Rookie
Messaggi: 50
Iscritto: 22/04/2013
|
BRAVO ampeg HAI RISOLTO IL MIO PROBLEMA.
10° lode
|
|