AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi warten bis anwendung gestartet wird...
Thema durchsuchen
Ansicht
Themen-Optionen

warten bis anwendung gestartet wird...

Ein Thema von agm65 · begonnen am 4. Sep 2005 · letzter Beitrag vom 4. Sep 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#1

warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 12:24
hallo leute, hab da mal ne frage...
also ich möchte, dass mein progg wartet bis zB der IE geöffnet wird und dann sollen erst meine funktionen ausgeführt werden...geht sowas? also ich könne ja checken lasses ob die iexplorer.exe bereits ausgeführt ist und dann erst loslegen. dachte vielleicht gibts dafür ne function.. ? thx cu agm65
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#2

Re: warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 12:31
Vielleicht hilft dir das hier:
Delphi-Quellcode:
uses ..., tlhelp32 ...
function GetProcessID(sProcName: String): Integer;
  var
    hProcSnap: THandle;
    pe32: TProcessEntry32;
  begin
    result := -1;
    hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
    if hProcSnap = INVALID_HANDLE_VALUE then exit;

    pe32.dwSize := SizeOf(ProcessEntry32);

    //wenn es geklappt hat
    if Process32First(hProcSnap, pe32) = true then
      //Prozess suchen
      while Process32Next(hProcSnap, pe32) = true do
      begin
        if pos(sProcName, pe32.szExeFile) <> 0 then
          result := pe32.th32ProcessID;
      end;
    CloseHandle(hProcSnap);
  end;
Ich glaue ich habs sogar hier aus dem Forum...
Jan
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#3

Re: warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 12:58
Hier im Forum suchenShellExecuteAndWait (Direktlink) tut's auch. Einziges Problem: du weißt nie genau ab wann das Programm auch wirklich komplett geladen ist. Mit beiden Methoden nicht.

@Mr_G: Auf NT4 wird das nicht gehen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 13:03
@Mr_G: außerdem müsstest du eine repeat-until-scheilfe nehmen da du sonst den ersten prozess den du bereits mit Process32Fist überspringst bei der Prüfung
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 13:12
Moin Olli,

Zitat von Olli:
Einziges Problem: du weißt nie genau ab wann das Programm auch wirklich komplett geladen ist.
und wenn Du jetzt mal WaitForSingleObject durch WaitForInputIdle austauschst?
Letzteres ist ja schliesslich genau dafür da zu warten, bis der Prozess auf anwenderseitige Eingaben wartet.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von agm65
agm65

Registriert seit: 21. Okt 2003
1.194 Beiträge
 
Delphi 2006 Professional
 
#6

Re: warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 13:15
danke jungs ich werde das heute abend mal testen ...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 13:19
@Christian Seehase: Das ist trotzdem nicht eindeutig. Grund sind da die bösen Programmierer von diversen Programmen. Hat man zum Beispiel einen Splashscreen und aktuallisiert den mit Application.ProcessMessages so werden die ersten Nachrichten abgearbeitet und für Windows müsste es so aussehen als ob das Programm jetzt fertig geladen ist und auf nutzereingaben wartet.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 13:19
Zitat von Christian Seehase:
und wenn Du jetzt mal WaitForSingleObject durch WaitForInputIdle austauschst?
Letzteres ist ja schliesslich genau dafür da zu warten, bis der Prozess auf anwenderseitige Eingaben wartet.
Ja, ist prinzipiell natürlich möglich. Aber die Einschränkung beachten:
Zitat:
If this process is a console application or does not have a message queue, WaitForInputIdle returns immediately.
Beim IE müßte es aber gehen, denke ich.
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#9

Re: warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 13:22
Zitat von SirThornberry:
@Mr_G: außerdem müsstest du eine repeat-until-scheilfe nehmen da du sonst den ersten prozess den du bereits mit Process32Fist überspringst bei der Prüfung
Ich versteh nicht was du mir sagen willst...

P.S.: Hab mich nicht wirklich damit auseinander gesetzt. War nur eine Function die im Rahmen des Prozessekillens brauchte...
Jan
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: warten bis anwendung gestartet wird...

  Alt 4. Sep 2005, 13:23
woran macht dann die funktion WaitForInputIdle intern fest ob die Anwendung fertig ist? Ich hätte gedacht das dies der fall ist sobald die erste message abgearbeitet ist, aber wenn keine message queue vorhanden wäre würde es nach meiner Theorie ewig warten.

@Mr_G:
Delphi-Quellcode:
if Process32First(hProcSnap, pe32) = true then
   //An dieser Stelle wurde bereits der erste prozess in pe32 eingelesen
   while Process32Next(hProcSnap, pe32) = true do //un hier liest du schon den nächsten prozess in pe32 ein. Wenn du also nach dem ersten aufruf (Process32First) in pe32.szExeFile den richtigen Namen hast wird dieser einfach ignoriert und nie gefunden
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz