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 - Come inserire un *.EXE in un Form o in una Textbox di un form
Forum - C# / VB.NET - Come inserire un *.EXE in un Form o in una Textbox di un form - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 16:08
Mercoledì, 05/08/2009
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).

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 20:21
Mercoledì, 05/08/2009
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.


PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 1:38
Giovedì, 06/08/2009
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
PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 14:33
Venerdì, 07/08/2009
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

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 17:12
Venerdì, 07/08/2009
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)?

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 21:57
Venerdì, 07/08/2009
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

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 16:00
Sabato, 08/08/2009
Ecco, questo dovrebbe funzionare:

Codice sorgente - presumibilmente VB.NET

  1. Imports System.Runtime.InteropServices
  2. Public Class Form1
  3.     <DllImport("user32.dll")> _
  4.     Public Shared Function FindWindow(ByVal ZeroOnly As IntPtr, ByVal lpWindowName As String) As IntPtr
  5.     End Function
  6.     <DllImport("user32.dll")> _
  7.     Public Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
  8.     End Function
  9.     <DllImport("user32.dll")> _
  10.     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
  11.     End Function
  12.     <DllImport("user32.dll")> _
  13.     Public Shared Function DestroyWindow(ByVal hWnd As IntPtr) As IntPtr
  14.     End Function
  15.  
  16.  
  17.  
  18.     Dim winh As New IntPtr 'Sposto l'handle tra le variabili globali così può essere visto da tutti gli eventi
  19.  
  20.     Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
  21.         DestroyWindow(winh)
  22.     End Sub
  23.  
  24.  
  25.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  26.         Dim p As New Process
  27.         p.StartInfo.FileName = "notepad.exe"
  28.         p.Start() 'per far partire il processo
  29.         Threading.Thread.Sleep(2000) 'attendo che il processo si apra
  30.         winh = FindWindow(winh, "Senza nome - Blocco note") 'Ottengo l'handle con FindWindow
  31.         SetParent(winh, Me.Handle) 'Setto il Form padre Con SetParent
  32.         Threading.Thread.Sleep(1000) 'attendo per sicurezza :)
  33.         MoveWindow(winh, 0, 0, 600, 400, True)
  34.     End Sub
  35. 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
PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 16:53
Sabato, 08/08/2009
Figurati di che ti devi scusare,sono io che devo solo ringraziarti.
Provo e ti faccio sapere.

Ciao,grazie

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo