Mattyfog
24-06-2010, 21:48
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!
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);
}
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!
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);
}