Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
Abbiamo provato per diverse settimane il nuovo Magic V5 di HONOR, uno smartphone pieghevole che ci ha davvero stupito. Il device è il più sottile (solo 4.1mm) ma non gli manca praticamente nulla. Potenza garantita dallo Snapdragon 8 Elite, fotocamere di ottima qualità e batteria in silicio-carbonio che garantisce un'ottima autonomia. E il Prezzo? Vi diciamo tutto nella nostra recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-04-2010, 22:10   #1
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
[C#]Inserire la finestra di un programma esterno al progetto in un altra del progetto

Salve a tutti,
avete presenti quei programmi nei quali compaiono + finestre? Intendo proprio finestre "classiche" con la crocetta per chiudere, la barretta per rimpicciolire a icona e così via... Ad esempio come in questo pezzetto di un immagine:

Bene, non so se è possibile, ma io vorrei semplicemente far apparire la finestra di firefox all'interno del mio programma.
C'è un modo? Se c'è bene se no pazienza ma mi incuriosiva saperlo
Ditemi anche solo cosa cercare su google.
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2010, 16:30   #2
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Come al solito pretendo velocità scherzo.. comunque
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2010, 08:37   #3
nikel
Senior Member
 
L'Avatar di nikel
 
Iscritto dal: Mar 2006
Città: Milano
Messaggi: 832
vuoi aprire una form all'interno di una form? se fosse un form del programma basterebbe dargli dei limiti di coordinate... non credo si posso fare con un programma esterno. (se hai bisogno di aprire pagine internet c'è il controllo webbrowser)
nikel è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2010, 08:57   #4
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Salve a tutti,
avete presenti quei programmi nei quali compaiono + finestre? Intendo proprio finestre "classiche" con la crocetta per chiudere, la barretta per rimpicciolire a icona e così via... Ad esempio come in questo pezzetto di un immagine:

Bene, non so se è possibile, ma io vorrei semplicemente far apparire la finestra di firefox all'interno del mio programma.
C'è un modo? Se c'è bene se no pazienza ma mi incuriosiva saperlo
Ditemi anche solo cosa cercare su google.
Quelli a cui ti riferisci te sono i programmi MDI e per integrare firefox lo devi fare come faresti per qualunque altro programma: scaricare l'sdk di firefox e riuscire ad integrarlo (buona fortuna!).
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2010, 09:05   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Salve a tutti,
avete presenti quei programmi nei quali compaiono + finestre? Intendo proprio finestre "classiche" con la crocetta per chiudere, la barretta per rimpicciolire a icona e così via... Ad esempio come in questo pezzetto di un immagine:

Bene, non so se è possibile, ma io vorrei semplicemente far apparire la finestra di firefox all'interno del mio programma.
C'è un modo? Se c'è bene se no pazienza ma mi incuriosiva saperlo
Ditemi anche solo cosa cercare su google.
Certo che Firefox in C#...
Se fosse internet explorer sarebbe piu' semplice.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2010, 14:45   #6
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
A me interesserebbe solamente aprire firefox, non interagirci.
Guardate qua per esempio: http://bytes.com/topic/c-sharp/answe...ws-forms-panel la domanda che fa l'utente è un altra ma parte dal presupposto di avere "integrato" il notepad in una form. Sempre che non si riferisca a qualcosa tipo la richtextbox (se si chiama così) o comunque controlli presenti già in visual studio...
Ad ogni modo lui ha fatto così:
Codice:
ProcessStartInfo psi = new ProcessStartInfo("notepad");
p = Process.Start(psi);
p.WaitForInputIdle();
SetParent(p.MainWindowHandle, uiAppPanel.Handle);
ShowWindow(p.MainWindowHandle, (int)ShowCommands.SW_MAXIMIZE);
int style = GetWindowLong(p.MainWindowHandle, GWL_STYLE);
SetWindowLong(p.MainWindowHandle, GWL_STYLE, style & ~WS_CAPTION);
Non capisco precisamente tutti i comandi, ad ogni modo credete sia giusto?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2010, 20:23   #7
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
ho provato questo codice:
Codice:
Process p = Process.Start("notepad.exe");
            p.WaitForInputIdle(); 
            SetParent(p.MainWindowHandle, panel1.Handle); 
            MoveWindow(p.MainWindowHandle, 0, 0, panel1.Width, panel1.Height, false); 
            [DllImport("user32.dll")] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 
            [DllImport("user32.dll")] private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int w, int h, bool repaint);
ma in fase di compilazione ho diversi errori, inoltre non so bene neppure a che serve
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2010, 20:20   #8
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2010, 23:14   #9
astorcas
Senior Member
 
L'Avatar di astorcas
 
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
ho provato questo codice:
Codice:
Process p = Process.Start("notepad.exe");
            p.WaitForInputIdle(); 
            SetParent(p.MainWindowHandle, panel1.Handle); 
            MoveWindow(p.MainWindowHandle, 0, 0, panel1.Width, panel1.Height, false); 
            [DllImport("user32.dll")] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 
            [DllImport("user32.dll")] private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int w, int h, bool repaint);
ma in fase di compilazione ho diversi errori, inoltre non so bene neppure a che serve
qua vai di interop, cmq che errori ti dà? Il panel1 che vedo fra i parametri lo hai aggiunto alla tua form, vero?
astorcas è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 18:45   #10
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
A tal proposito che tipo di panel deve essere panel1? Va bene uno stackpanel? (lavoro in wpf)
Comunque ecco gli errori (sono generati dalla penultima riga di codice):
Errore 1 È previsto il segno }
Errore 2 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 3 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 4 È previsto un identificatore
Errore 5 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 6 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 7 È previsto un identificatore
Errore 8 Uno spazio dei nomi non può contenere direttamente membri come campi o metodi
Errore 9 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 10 È previsto un identificatore
Errore 11 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 12 È previsto un identificatore
Errore 13 È previsto un identificatore
Errore 14 Errore di sintassi, è previsto ']'
Errore 15 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 16 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 17 È prevista la definizione del tipo o dello spazio dei nomi oppure la fine del file
Errore 18 '[' è un termine non valido nell'espressione
Errore 19 È previsto un punto e virgola (
Errore 20 ']' è un termine non valido nell'espressione
Errore 21 È previsto un punto e virgola (
Errore 22 È previsto un punto e virgola (
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 19:48   #11
astorcas
Senior Member
 
L'Avatar di astorcas
 
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
A tal proposito che tipo di panel deve essere panel1? Va bene uno stackpanel? (lavoro in wpf)
Comunque ecco gli errori (sono generati dalla penultima riga di codice):
Errore 1 È previsto il segno }
Errore 2 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 3 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 4 È previsto un identificatore
Errore 5 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 6 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 7 È previsto un identificatore
Errore 8 Uno spazio dei nomi non può contenere direttamente membri come campi o metodi
Errore 9 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 10 È previsto un identificatore
Errore 11 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 12 È previsto un identificatore
Errore 13 È previsto un identificatore
Errore 14 Errore di sintassi, è previsto ']'
Errore 15 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 16 È prevista una classe, un delegato, un enum, un'interfaccia o uno struct
Errore 17 È prevista la definizione del tipo o dello spazio dei nomi oppure la fine del file
Errore 18 '[' è un termine non valido nell'espressione
Errore 19 È previsto un punto e virgola (
Errore 20 ']' è un termine non valido nell'espressione
Errore 21 È previsto un punto e virgola (
Errore 22 È previsto un punto e virgola (
non conosco bene wpf ma credo che lo stackpanel possa andare bene, alla fine ne prende le dimensioni, quindi basta che abbia una proprietà Weight e un'altra Height. Quegli errori sembrano derivare dal fatto che hai schiaffato il codice a casaccio.

questa roba

Codice:
[DllImport("user32.dll")] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 
[DllImport("user32.dll")] private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int w, int h, bool repaint);
devi metterla all'interno di una dichiarazione della classe mentre

Codice:
Process p = Process.Start("notepad.exe");
p.WaitForInputIdle(); 
SetParent(p.MainWindowHandle, panel1.Handle); 
MoveWindow(p.MainWindowHandle, 0, 0, panel1.Width, panel1.Height, false);

va messa all'interno di un metodo
astorcas è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 21:06   #12
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Ops
Senti ancora un problema ma cosa devo includere nel progetto?
Intendo using ecc ecc perchè ciò che ho messo io non va.. Mi riferisco a ciò che serve per importare la dll
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 23:17   #13
astorcas
Senior Member
 
L'Avatar di astorcas
 
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Ops
Senti ancora un problema ma cosa devo includere nel progetto?
Intendo using ecc ecc perchè ciò che ho messo io non va.. Mi riferisco a ciò che serve per importare la dll
L'attributo DllImport si trova in System.Runtime.InteropServices
astorcas è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2010, 14:03   #14
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Non trovo il tipo di panel giusto da usare... Ho provato:
Canvas
DockPanel
Grid
StackPanel
ToolBarOverflowPanel
UniformGrid
VirtualizingPanel
VirtualizingStackPanel
WrapPanel
E nessuno funziona...
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2010, 14:32   #15
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Non trovo il tipo di panel giusto da usare... Ho provato:
Canvas
DockPanel
Grid
StackPanel
ToolBarOverflowPanel
UniformGrid
VirtualizingPanel
VirtualizingStackPanel
WrapPanel
E nessuno funziona...
Scusa ma hai idea di cosa stai facendo?
Hai copiato il codice da qualche parte?
Sarà che il codice che hai copiato è per WinForms mentre te stai usando WPF?
Che vuol dire nessuno funziona? Che errori hai? Che codice hai scritto?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2010, 15:08   #16
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Appunto non so che ipo di panel usare su wpf......
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2010, 15:30   #17
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Appunto non so che ipo di panel usare su wpf......
Si ma ripeto:
Che vuol dire nessuno funziona? Che errori hai? Che codice hai scritto?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2010, 15:50   #18
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
panel1 è di tipo StackPanel ed ecco gli errori:
Errore 1 'System.Windows.Controls.StackPanel' non contiene una definizione di 'Handle' e non è stato trovato alcun metodo di estensione 'Handle'che accetta un primo argomento di tipo 'System.Windows.Controls.StackPanel'. Probabilmente manca una direttiva using o un riferimento a un assembly. 133 50
Errore 2 La corrispondenza migliore del metodo di overload per 'Mattyfog_Music_Youtuber.Window1.MoveWindow(System.IntPtr, int, int, int, int, bool)' presenta alcuni argomenti non validi 134 13
Errore 3 Argomento '4': impossibile convertire da 'double' a 'int' 134 50
Errore 4 Argomento '5': impossibile convertire da 'double' a 'int' 134 64

Mentre in un metodo ho scritto questo:
Codice:
Process p = Process.Start("notepad.exe");
            p.WaitForInputIdle(); 
            SetParent(p.MainWindowHandle, panel1.Handle); 
            MoveWindow(p.MainWindowHandle, 0, 0, panel1.Width, panel1.Height, false);
        }
e fuori da metodi ho scritto, nella stessa classe del metodo:
Codice:
        [DllImport("user32.dll")] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
        [DllImport("user32.dll")] private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int w, int h, bool repaint);
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2010, 16:04   #19
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
panel1 è di tipo StackPanel ed ecco gli errori:
Errore 1 'System.Windows.Controls.StackPanel' non contiene una definizione di 'Handle' e non è stato trovato alcun metodo di estensione 'Handle'che accetta un primo argomento di tipo 'System.Windows.Controls.StackPanel'. Probabilmente manca una direttiva using o un riferimento a un assembly. 133 50
Errore 2 La corrispondenza migliore del metodo di overload per 'Mattyfog_Music_Youtuber.Window1.MoveWindow(System.IntPtr, int, int, int, int, bool)' presenta alcuni argomenti non validi 134 13
Errore 3 Argomento '4': impossibile convertire da 'double' a 'int' 134 50
Errore 4 Argomento '5': impossibile convertire da 'double' a 'int' 134 64

Mentre in un metodo ho scritto questo:
Codice:
Process p = Process.Start("notepad.exe");
            p.WaitForInputIdle(); 
            SetParent(p.MainWindowHandle, panel1.Handle); 
            MoveWindow(p.MainWindowHandle, 0, 0, panel1.Width, panel1.Height, false);
        }
Che è ovvio visto che i controlli WPF non sono realizzati tramite finestre Win32 ma disegnati su una scena 2d.
Non esiste alcun Handle di finestra se non quello della finestra principale che può essere recuperato cosi: http://www.codeproject.com/KB/WPF/MessageBox.aspx.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2010, 18:59   #20
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Quindi io ho scritto così:
Codice:
Process p = Process.Start("notepad.exe");
            p.WaitForInputIdle();
            SetParent(new WindowWrapper(p.MainWindowHandle), panel1.Handle); 
            MoveWindow(new WindowWrapper(p.MainWindowHandle), 0, 0, panel1.Width, panel1.Height, false);
e questa classe:
Codice:
public class WindowWrapper : System.Windows.Forms.IWin32Window
{
  public WindowWrapper(IntPtr handle)
  {
    _hwnd = handle;
  }
  
  public IntPtr Handle
  {
    get { return _hwnd; }
  }

  private IntPtr _hwnd;
}
ma ho diversi errori:
Errore 1 'System.Windows.Controls.StackPanel' non contiene una definizione di 'Handle' e non è stato trovato alcun metodo di estensione 'Handle'che accetta un primo argomento di tipo 'System.Windows.Controls.StackPanel'. Probabilmente manca una direttiva using o un riferimento a un assembly. 133 69
Errore 2 La corrispondenza migliore del metodo di overload per 'Mattyfog_Music_Youtuber.Window1.MoveWindow(System.IntPtr, int, int, int, int, bool)' presenta alcuni argomenti non validi 134 13
Errore 3 Argomento '1': impossibile convertire da 'WindowWrapper' a 'System.IntPtr' 134 24
Errore 4 Argomento '4': impossibile convertire da 'double' a 'int' 134 69
Errore 5 Argomento '5': impossibile convertire da 'double' a 'int' 134 83
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
Huawei rinnova la sua gamma di cuffie: e...
La connettività satellitare di Am...
MOVA ha presentato un robot aspirapolver...
Super e-bike con telaio in carbonio e se...
Tineco porta molte novità per la ...
Dreame conquista l’IFA 2025: nuovi V30 e...
BYD Seal 6 DM-i ufficiale in Italia: il ...
Il telescopio spaziale James Webb ha cat...
X Money in stallo: bloccati i piani di E...
OpenAI Jobs: l'intelligenza artificiale ...
Roborock si espande a IFA: una panoramic...
Lenovo Innovation World 2025: l’IA diven...
Amazon Warehouse Seconda Mano: ultime or...
Spielberg voleva dirigere il film di Cal...
Amazon trova il suo primo cliente per Ku...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:01.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v