AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

iexplorer starten und beenden

Ein Thema von Bomberbb · begonnen am 4. Feb 2010 · letzter Beitrag vom 4. Feb 2010
Antwort Antwort
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#1

iexplorer starten und beenden

  Alt 4. Feb 2010, 11:26
Hallo,
ich habe ein kleines Problem. Ich möchte den ie nutzen um Radio zu hören. Da ich Ihn aber nicht in der Taskleiste sehen will
rufe ich ihn per Createprocess auf. Der folgende Code funktioniert schon ganz gut. Allerdings mit einer Ausnahme:
SendMessageTimeout bewirkt kein beenden des Prgramms. Mache ich was falsch, oder liegt das am ie???

Gruß

BBB


Delphi-Quellcode:
Procedure TfrmKeyMakro.pmiRadioClick(Sender: TObject);
Var
  si : TStartUpInfo;
  DWResult :Dword;
Begin { Process_Cmd }
  If fPi.hProcess = INVALID_HANDLE_VALUE Then
  Begin
    FillChar(si, SizeOf(StartupInfo), #0);
    si.cb := SizeOf(StartupInfo);
    si.dwFlags := STARTF_USESHOWWINDOW;
    si.wShowWindow := SW_HIDE;

    If CreateProcess(Nil, '"C:\Programme\Internet Explorer\iexplore.exe" "http://edge.download.newmedia.nacamar.net/freestream/download/radiohochstift/frameset.html"'
      , Nil, Nil, False, 0, Nil, Nil, si, fPi) Then
    Begin
      pmiRadio.Caption := 'Radio beenden';
    End;
  End
  Else
  Begin
    SendMessageTimeout(fPi.hProcess, WM_CLOSE, 0, 0, SMTO_ABORTIFHUNG Or SMTO_NORMAL, 5000, DWResult);
    If isWindow(fPi.hProcess) Then
      TerminateProcess(fPi.hProcess, Cardinal(-1));
    fPi.hProcess := INVALID_HANDLE_VALUE;
    pmiRadio.Caption := 'Radio starten';
  End;
End;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
21.050 Beiträge
 
Delphi XE Professional
 
#2

Re: iexplorer starten und beenden

  Alt 4. Feb 2010, 12:01
SendMessageTimeOut erwartet ein Fensterhandle und kein Prozesshandle.
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
Ort: Oberreichenbach
12.628 Beiträge
 
Delphi XE2 Professional
 
#3

Re: iexplorer starten und beenden

  Alt 4. Feb 2010, 12:17
Nimm doch den TWebBrowser und zeite das Fenster nicht an. Du mußt aber mit HandleNeeded eine gültigen Fensterhandle für dein verstecktes Formular sorgen da sonst der IE nicht funktioniert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#4

Re: iexplorer starten und beenden

  Alt 4. Feb 2010, 12:19
kann ich denn aus dem Prozesshandle das Fensterhandle ermitteln?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
Ort: Oberreichenbach
12.628 Beiträge
 
Delphi XE2 Professional
 
#5

Re: iexplorer starten und beenden

  Alt 4. Feb 2010, 12:21
Zitat von Bomberbb:
kann ich denn aus dem Prozesshandle das Fensterhandle ermitteln?
Ja
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
21.050 Beiträge
 
Delphi XE Professional
 
#6

Re: iexplorer starten und beenden

  Alt 4. Feb 2010, 12:22
Aus der Hüfte geschossen: Du könntest mit EnumWindows alle Fenster durchgehen, in der Callback-Funktion mit GetWindowThreadProcessId die zugehörige ProzessId ermitteln und mit Deiner vergleichen. Bei Übereinstimmung dann einfach die Message schicken. Ist aber wie gesagt nur ein erster Gedanke und nicht getestet. Alternative hat Bernhard ja gerade beschrieben.

[edit] Den Gedanken hatte ich wohl nicht alleine [/edit]
Detlef
Wenn Dein Programm nicht macht, was es soll, nenn es einfach "Version 1.0"

Delphi programming is cool
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#7

Re: iexplorer starten und beenden

  Alt 4. Feb 2010, 12:43
ok, danke: ich habs jetzt so gelöst:
Delphi-Quellcode:
  If assigned(fwb) Then
  Begin
    FreeAndNil(fwb);
    pmiRadio.Caption := 'Radio starten';
  End
  Else
  Begin
    fwb := TWebBrowser.Create(Self);
    TWinControl(fwb).Name := 'RadioWebBrowser';
    TWinControl(fwb).Parent := Self;
    fwb.HandleNeeded;
    fwb.Navigate('http://edge.download.newmedia.nacamar.net/freestream/download/radiohochstift/frameset.html');
    pmiRadio.Caption := 'Radio beenden';
  End;
Funzt wie es soll. Und danke auch noch mal auf den Hinweis mit HandleNeeded! Da hätte ich sonst bestimmt ewigkeiten nach gesucht.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
Ort: Oberreichenbach
12.628 Beiträge
 
Delphi XE2 Professional
 
#8

Re: iexplorer starten und beenden

  Alt 4. Feb 2010, 12:46
Zitat von Bomberbb:
ok, danke: ich habs jetzt so gelöst:     TWinControl(fwb).Name := 'RadioWebBrowser';
Diese Zeile ist unnötig

Zitat von Bomberbb:
Funzt wie es soll. Und danke auch noch mal auf den Hinweis mit HandleNeeded! Da hätte ich sonst bestimmt ewigkeiten nach gesucht.
Kannst mir ja ein (virtuelles) Bier ausgeben
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#9

Re: iexplorer starten und beenden

  Alt 4. Feb 2010, 12:51
Nun zumindest werde ich heute abend eins auf Dein Wohl trinken.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2012 by Daniel R. Wolf