manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Qui non possiamo parlare di vb6, ma anche il codice vb6 che ti ho dato sopra deve funzionare, vb6 o vb.net o c++ o c# o quello che vuoi tu non cambia niente quando si tratta di winapi(e terminiamo qui l'Off-Topic sul vb6).
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
Come dovrebbe essere modificato il tuo codice per fare questo?
-------------------------------------------------------------
Scusami ,credo che mi sono mal espresso.
non intendevo chiedere di convertire il codice in VB6 siamo gia' andati OT pure troppo,ma chiedevo come dovrebbe essere modificato
il codice VB.NET per fare una DLL in NET
per poi richiamare sempre da NET
un qualsiasi EXE tramite una CALL della DLL
e chiedevo di sapere la riga di comando per richiamare la DLL e l'EXE voluto.
Cosi' mi sembra lecita la richiesta ed attinente al Forum.
Ciao,grazie anticipate.
|
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Fare una call da unmanaged a managed è un impiccio(purtroppo). Fai prima(e meglio) a scrivere quelle due righe in vb6(mi scuso per tutto questo ot), non capisco dove sia il problema, le api danno gli stessi risultati con tutti i lang.
Ultima modifica effettuata da manvb.net il 07/08/2009 alle 17:09 |
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
Partendo dal tuo codice NET
Sono riuscito a caricare l 'EXE dentro il Form ,ho 3 problemi pero'
1)Ora quando chiudo il Form non riesco a chiudere l'applicazione
2)Quando apro l'applicazione la devo sempre tirare su' col mouse e vorrei che si aprisse allineata al Form
3) se chiudo il Form e chiudo l'applicazione(a manina per adesso),quando riapro il Form
l'applicazione si carica fuori dal Form.
Ci sto ammattendo da 3 giorni e non ne vengo a capo,se ti va di aiutarmi
la risposta in VB.NET va benissimo.
Ciao
|
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Ti serve che il codice sia convertibile in altri lang(quindi uso solo api) oppure vanno bene le classi vb.net(non convertibili in altri lang)?
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
Se non ti dispiace vanno benissimo le API,visto che sono le stesse per tutti i linguaggi
e le devo usare spesso approfitto per imparare qualcosa.
Grazie,Ciao
|
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Ecco, questo dovrebbe funzionare:
Codice sorgente - presumibilmente VB.NET |
Imports System.Runtime.InteropServices Public Class Form1 <DllImport("user32.dll")> _ Public Shared Function FindWindow(ByVal ZeroOnly As IntPtr, ByVal lpWindowName As String) As IntPtr End Function <DllImport("user32.dll")> _ Public Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr End Function <DllImport("user32.dll")> _ Public Shared Function MoveWindow(ByVal hWnd As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal bRepaint As Boolean) As IntPtr End Function <DllImport("user32.dll")> _ Public Shared Function DestroyWindow(ByVal hWnd As IntPtr) As IntPtr End Function Dim winh As New IntPtr 'Sposto l'handle tra le variabili globali così può essere visto da tutti gli eventi Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing DestroyWindow(winh) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim p As New Process p.StartInfo.FileName = "notepad.exe" p.Start() 'per far partire il processo Threading.Thread.Sleep(2000) 'attendo che il processo si apra winh = FindWindow(winh, "Senza nome - Blocco note") 'Ottengo l'handle con FindWindow SetParent(winh, Me.Handle) 'Setto il Form padre Con SetParent Threading.Thread.Sleep(1000) 'attendo per sicurezza :) MoveWindow(winh, 0, 0, 600, 400, True) End Sub End Class
|
Scusa se ho risposto in ritardo ma avevo da fare.
Ultima modifica effettuata da manvb.net il 08/08/2009 alle 16:01 |
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
Figurati di che ti devi scusare,sono io che devo solo ringraziarti.
Provo e ti faccio sapere.
Ciao,grazie
|
|