|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
[C#]Problema della nottata da risolvere prima di domani
Ciao a tutti,
mi urge finire un lavoro prima della partenza e pertanto mi resta solo più domani. Vi ricordate quando tempo fa vi ho fatti impazzire perchè volevo integrare la finestra di firefox portable in una finestra wpf? Bene ce l'avevo fatta. Ora al posto di firefox portable mi tornerebbe più ultile il firefox della win pen pack (controparte di applicazioni free portatili). Peccato che lo stesso codice non funzioni! Mi dà questo errore: InvalidOperationException non gestita L'elaborazione del dispatcher è stata sospesa, ma l'elaborazione dei messaggi è ancora in corso. Vi prego aiutatemi! Codice:
protected override HandleRef BuildWindowCore(HandleRef hwndParent) { //Process notePadProc = Process.Start(@"Firefox Portable\FirefoxPortable.exe"); Process notePadProc = Process.Start(@"X-Firefox\X-Firefox.exe"); notePadProc.WaitForInputIdle(); Thread.Sleep(000); Process pr = Process.GetCurrentProcess(); Console.WriteLine("processo corrente: {0}", pr.ProcessName); Process[] procList = Process.GetProcessesByName("firefox"); //Console.WriteLine("nome primo processo per firefox: {0}", procList[0].ProcessName); //Console.WriteLine("nome exe del primo processo per firefox: {0}", procList[0].MainModule.FileName); Process firefox_process = null; foreach (Process p in procList) { //if (p.MainModule.FileName.IndexOf(@"Firefox Portable\App\firefox\firefox.exe") > 0) if (p.MainModule.FileName.IndexOf(@"X-Firefox\Bin\Firefox\firefox.exe") >= 0) //in realtà ci sono le condizoni necessarie quindi firefox_process non dovrebbe rimanere uguale a null! { //Console.WriteLine("file di firefox trovato"); firefox_process = p; } } if (firefox_process == null) { System.Windows.MessageBox.Show("Firefox non è stato aperto o è stato impossibile trovarlo!", "Errore!", MessageBoxButton.OK, MessageBoxImage.Error); //qui ricevo l'errore, inoltre è proprio strano che firefox_process rimanga uguale a null perchè in realtà ci sono le condizioni per soddisfare l'if precendete a quest'ultimo } firefox_process.WaitForInputIdle(); Thread.Sleep(5000); hwndHost = firefox_process.MainWindowHandle; int oldStyle = GetWindowLong(hwndHost, GWL_STYLE); SetWindowLong(hwndHost, GWL_STYLE, oldStyle | WS_CHILD); SetParent(hwndHost, hwndParent.Handle); return new HandleRef(this, hwndHost); } Ultima modifica di Mattyfog : 24-06-2010 alle 21:51. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
Codice:
Process notePadProc = Process.Start(@"X-Firefox\X-Firefox.exe"); ............... if (p.MainModule.FileName.IndexOf(@"X-Firefox\Bin\Firefox\firefox.exe") >= 0) //in realtà ci sono le condizoni necessarie quindi firefox_process non dovrebbe rimanere uguale a null! { ............... mi sembrano due percorsi diversi.... |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
Lo so ma è corretto infatti queste versioni portatibili hanno un exe che avvia l'altro.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:10.